/* * Copyright (c) 2008-2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.model.vpool; import java.util.LinkedHashSet; import java.util.Set; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "block_vpool") public class BlockVirtualPoolRestRep extends VirtualPoolCommonRestRep { private String autoTieringPolicyName; private String driveType; private Boolean expandable; public Boolean fastExpansion; private Boolean multiVolumeConsistent; private Integer thinVolumePreAllocationPercentage; private BlockVirtualPoolProtectionParam protection; private VirtualPoolHighAvailabilityParam highAvailability; private Set<String> raidLevels; private Boolean uniquePolicyNames; private Integer maxPaths; private Integer minPaths; private Integer pathsPerInitiator; private String placementPolicy; // vmax all flash arrays private Boolean compressionEnabled; // VMAX Host IO Limits attributes private Integer hostIOLimitBandwidth; // Host Front End limit bandwidth. If not specified or 0, indicated unlimited private Integer hostIOLimitIOPs; // Host Front End limit I/O. If not specified or 0, indicated unlimited // De-duplication supported vpool private Boolean dedupCapable; public BlockVirtualPoolRestRep() { } /** * Name of the auto tier policy for the virtual pool. * * * @return The auto tier policy name. */ @XmlElement(name = "auto_tiering_policy_name") public String getAutoTieringPolicyName() { return autoTieringPolicyName; } /** * The supported disk drive type for the virtual pool. * Valid values: * NONE = No specific drive type * SSD = Solid State Drive * FC = Fibre Channel * SAS = Serial Attached SCSI * SATA = Serial Advanced Technology Attachment * * @return The drive type. */ @XmlElement(name = "drive_type") public String getDriveType() { return driveType; } /** * Specifies whether or not volumes can be expanded. * * @return true if volumes are expandable, false otherwise. */ @XmlElement(name = "expandable") public Boolean getExpandable() { return expandable; } /** * Indicates that virtual pool volumes should use concatenated meta volumes, * not striped. * */ @XmlElement(name = "fast_expansion") public Boolean getFastExpansion() { return fastExpansion; } public void setFastExpansion(Boolean fastExpansion) { this.fastExpansion = fastExpansion; } /** * The high availability settings for the virtual pool. * * * @return The high availability settings for the virtual pool. */ @XmlElement(name = "high_availability") public VirtualPoolHighAvailabilityParam getHighAvailability() { return highAvailability; } /** * The preallocation size for VMAX thin volumes. * * * @return The preallocation size for VMAX thin volumes. */ @XmlElement(name = "thin_volume_preallocation_percentage") public Integer getThinVolumePreAllocationPercentage() { return thinVolumePreAllocationPercentage; } /** * Specifies whether or not multi-volume consistency is supported for the * virtual pool. * * * @return true if multi-volume consistency is supported, false otherwise. */ @XmlElement(name = "multi_volume_consistency") public Boolean getMultiVolumeConsistent() { return multiVolumeConsistent; } /** * The protection settings for the virtual pool. * * * @return The protection settings for the virtual pool. */ @XmlElement public BlockVirtualPoolProtectionParam getProtection() { return protection; } @XmlElementWrapper(name = "raid_levels") /** * The RAID levels for storage allocated to your volumes. * RAID levels set the amount of redundancy and striping. * Here is a quick definition of the various RAID levels. * * RAID 0 is a striped set of disks without parity. * RAID 1 is a mirror copy on two disks. * RAID 2 is a stripe at the bit level rather than the block level. Rarely used or supported. * RAID 3 is a byte level striping with a dedicated parity disk. * RAID 4 is block level striping with a dedicated parity disk. * RAID 5 is block level striping with the parity data distributed across all disks. * RAID 6 extends RAID 5 by adding an additional parity block; * thus it uses block level striping with two parity blocks. * RAID 10 is a stripe of mirrors, i.e. a RAID 0 combination of RAID 1 drives. * Valid values: * RAID0 * RAID1 * RAID2 * RAID3 * RAID4 * RAID5 * RAID6 * RAID10 * * @return the supported RAID levels. */ @XmlElement(name = "raid_level") public Set<String> getRaidLevels() { if (raidLevels == null) { raidLevels = new LinkedHashSet<String>(); } return raidLevels; } public void setAutoTieringPolicyName(String autoTieringPolicyName) { this.autoTieringPolicyName = autoTieringPolicyName; } public void setDriveType(String driveType) { this.driveType = driveType; } public void setExpandable(Boolean expandable) { this.expandable = expandable; } public void setHighAvailability(VirtualPoolHighAvailabilityParam highAvailability) { this.highAvailability = highAvailability; } public void setThinVolumePreAllocationPercentage(Integer thinVolumePreAllocationPercentage) { this.thinVolumePreAllocationPercentage = thinVolumePreAllocationPercentage; } public void setMultiVolumeConsistent(Boolean multiVolumeConsistent) { this.multiVolumeConsistent = multiVolumeConsistent; } public void setProtection(BlockVirtualPoolProtectionParam protection) { this.protection = protection; } public void setRaidLevels(Set<String> raidLevels) { this.raidLevels = raidLevels; } /** * Specifies whether or not unique auto tier policy names are required. * * * @return true if unique auto tier policy names are required. */ @XmlElement(name = "unique_auto_tier_policy_names") public Boolean getUniquePolicyNames() { return uniquePolicyNames; } public void setUniquePolicyNames(Boolean uniquePolicyNames) { this.uniquePolicyNames = uniquePolicyNames; } /** * Number of max paths supported by this virtual pool. * */ @XmlElement(name = "max_paths") public Integer getMaxPaths() { return maxPaths; } public void setMaxPaths(Integer maxPaths) { this.maxPaths = maxPaths; } /* * Minimum number of paths to be exported by this virtual pool. * */ @XmlElement(name = "min_paths") public Integer getMinPaths() { return minPaths; } public void setMinPaths(Integer minPaths) { this.minPaths = minPaths; } /** * Number of paths to be provisioned per initiator. * */ @XmlElement(name = "paths_per_initiator") public Integer getPathsPerInitiator() { return pathsPerInitiator; } public void setPathsPerInitiator(Integer pathsPerInitiator) { this.pathsPerInitiator = pathsPerInitiator; } /** * @return the compressionEnabled */ @XmlElement(name = "compression_enabled", required = false) public Boolean getCompressionEnabled() { return compressionEnabled; } /** * @param compressionEnabled the compressionEnabled to set */ public void setCompressionEnabled(Boolean compressionEnabled) { this.compressionEnabled = compressionEnabled; } @XmlElement(name = "host_io_limit_bandwidth", required = false) public Integer getHostIOLimitBandwidth() { return hostIOLimitBandwidth; } public void setHostIOLimitBandwidth(Integer hostIOLimitBandwidth) { this.hostIOLimitBandwidth = hostIOLimitBandwidth; } @XmlElement(name = "host_io_limit_iops", required = false) public Integer getHostIOLimitIOPs() { return hostIOLimitIOPs; } public void setHostIOLimitIOPs(Integer hostIOLimitIOPs) { this.hostIOLimitIOPs = hostIOLimitIOPs; } @XmlElement(name = "dedup_capable", required = false) public Boolean getDedupCapable() { return dedupCapable; } public void setDedupCapable(Boolean dedupCapable) { this.dedupCapable = dedupCapable; } /** * Resource placement policy used by the virtual pool. * Valid values: * default_policy (storage system/pool selection based on metrics and capacity) * array_affinity (storage system/pool selection based on host/cluster's array affinity first, then metrics and capacity) */ @XmlElement(name = "placement_policy") public String getPlacementPolicy() { return placementPolicy; } public void setPlacementPolicy(String placementPolicy) { this.placementPolicy = placementPolicy; } }