All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.emc.storageos.model.pools.StoragePoolRestRep Maven / Gradle / Ivy

There is a newer version: 3.5.0.0
Show newest version
/*
 * Copyright (c) 2008-2013 EMC Corporation
 * All Rights Reserved
 */

package com.emc.storageos.model.pools;

import com.emc.storageos.model.RelatedResourceRep;
import com.emc.storageos.model.StringHashMapEntry;
import com.emc.storageos.model.varray.VirtualArrayResourceRestRep;

import javax.xml.bind.annotation.*;

import java.util.*;

@XmlRootElement(name = "storage_pool")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class StoragePoolRestRep extends VirtualArrayResourceRestRep {
    private Set protocols;
    private List controllerParams;
    private String operationalStatus;
    private String registrationStatus;
    private Long totalCapacity;
    private Long freeCapacity;
    private Long usedCapacity;
    private Long percentUsed;
    private Long subscribedCapacity;
    private Long percentSubscribed;
    private Integer maxResources;
    private Integer numResources;
    private Long maximumThinVolumeSize;
    private Long minimumThinVolumeSize;
    private Long maximumThickVolumeSize;
    private Long minimumThickVolumeSize;
    private Set raidLevels;
    private Set driveTypes;
    private Set copyTypes;
    private List tierUtilizationPercentage;
    private String poolName;
    private String poolServiceType;
    private Boolean longTermRetention;
    private String supportedResourceTypes;
    private RelatedResourceRep storageSystem;
    private Integer maxThinPoolSubscriptionPercentage;
    private Integer maxPoolUtilizationPercentage;
    private Boolean thinVolumePreAllocationSupported;
    private Boolean autoTieringSupported;
    private String compatibilityStatus;
    private String discoveryStatus;

    public StoragePoolRestRep() {
    }

    @XmlElementWrapper(name = "controller_params")
    /**
     * The list of optional parameters
     * 
     * @valid none
     */
    @XmlElement(name = "controller_param")
    public List getControllerParams() {
        if (controllerParams == null) {
            controllerParams = new ArrayList();
        }
        return controllerParams;
    }

    public void setControllerParams(List controllerParams) {
        this.controllerParams = controllerParams;
    }

    /**
     * The supported local replication types for this pool
     * 
     * @valid none
     */
    @XmlElementWrapper(name = "copy_types")
    /**
     * The type of replication
     *
     * @valid ASYNC          = A copy can be maintained asynchronously
     * @valid SYNC           = A copy can be maintained synchronously
     * @valid UNSYNC_UNASSOC = A full copy can be made, but there is no association between the source and target after making the copy
     * @valid UNSYNC_ASSOC   = A full copy can be made, and there is an association between the source and target after making the copy
     */
    @XmlElement(name = "copy_type")
    public Set getCopyTypes() {
        if (copyTypes == null) {
            copyTypes = new LinkedHashSet();
        }
        return copyTypes;
    }

    public void setCopyTypes(Set copyTypes) {
        this.copyTypes = copyTypes;
    }

    /**
     * The disk drives types in the pool
     * 
     * @valid none
     */
    @XmlElementWrapper(name = "drive_types")
    /**
     * The disk drive type
     *
     * @valid FC   = Fibre-Channel
     * @valid SAS  = Serial Attached SCSI
     * @valid SATA = Serial ATA
     */
    @XmlElement(name = "drive_type")
    public Set getDriveTypes() {
        if (driveTypes == null) {
            driveTypes = new LinkedHashSet();
        }
        return driveTypes;
    }

    public void setDriveTypes(Set driveTypes) {
        this.driveTypes = driveTypes;
    }

    /**
     * The amount of free space in the pool (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "free_gb")
    public Long getFreeCapacity() {
        return freeCapacity;
    }

    public void setFreeCapacity(Long freeCapacity) {
        this.freeCapacity = freeCapacity;
    }

    /**
     * The maximum number of ViPR storage resources that
     * can exist in this pool
     * 
     * @valid none
     */
    @XmlElement(name = "max_resources")
    public Integer getMaxResources() {
        return maxResources;
    }

    public void setMaxResources(Integer maxResources) {
        this.maxResources = maxResources;
    }

    /**
     * The number of ViPR storage resources that exist
     * in this pool
     * 
     * @valid none
     */
    @XmlElement(name = "num_resources")
    public Integer getNumResources() {
        return numResources;
    }

    public void setNumResources(Integer numResources) {
        this.numResources = numResources;
    }

    /**
     * The operational status of the pool
     * 
     * @valid NOT_READY
     * @valid READY
     * 
     */
    @XmlElement(name = "operational_status")
    public String getOperationalStatus() {
        return operationalStatus;
    }

    public void setOperationalStatus(String operationalStatus) {
        this.operationalStatus = operationalStatus;
    }

    /**
     * Whether or not this pool is registered with ViPR. A pool must be
     * registered before it can be managed by ViPR.
     * 
     * @valid REGISTERED
     * @valid UNREGISTERED
     */
    @XmlElement(name = "registration_status")
    public String getRegistrationStatus() {
        return registrationStatus;
    }

    public void setRegistrationStatus(String registrationStatus) {
        this.registrationStatus = registrationStatus;
    }

    /**
     * The percentage of usable space that has been assigned to all volumes
     * in the pool and visible to attached hosts. This includes primary
     * and snapshot space. (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "percent_subscribed")
    public Long getPercentSubscribed() {
        return percentSubscribed;
    }

    public void setPercentSubscribed(Long percentSubscribed) {
        this.percentSubscribed = percentSubscribed;
    }

    /**
     * The percentage of consumed usable space in the pool (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "percent_used")
    public Long getPercentUsed() {
        return percentUsed;
    }

    public void setPercentUsed(Long percentUsed) {
        this.percentUsed = percentUsed;
    }

    /**
     * The maximum size for thin volumes in this pool (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "maximum_thin_volume_size_gb")
    public Long getMaximumThinVolumeSize() {
        return maximumThinVolumeSize;
    }

    public void setMaximumThinVolumeSize(Long maximumThinVolumeSize) {
        this.maximumThinVolumeSize = maximumThinVolumeSize;
    }

    /**
     * The minimum size for thin volumes in this pool (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "minimum_thin_volume_size_gb")
    public Long getMinimumThinVolumeSize() {
        return minimumThinVolumeSize;
    }

    public void setMinimumThinVolumeSize(Long minimumThinVolumeSize) {
        this.minimumThinVolumeSize = minimumThinVolumeSize;
    }

    /**
     * The maximum size for thick volumes in this pool (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "maximum_thick_volume_size_gb")
    public Long getMaximumThickVolumeSize() {
        return maximumThickVolumeSize;
    }

    public void setMaximumThickVolumeSize(Long maximumThickVolumeSize) {
        this.maximumThickVolumeSize = maximumThickVolumeSize;
    }

    /**
     * The minimum size for thick volumes in this pool (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "minimum_thick_volume_size_gb")
    public Long getMinimumThickVolumeSize() {
        return minimumThickVolumeSize;
    }

    public void setMinimumThickVolumeSize(Long minimumThickVolumeSize) {
        this.minimumThickVolumeSize = minimumThickVolumeSize;
    }

    /**
     * The native name of the pool. This name is what the hosting storage
     * system uses to identify the pool.
     * 
     * @valid none
     */
    @XmlElement(name = "pool_name")
    public String getPoolName() {
        return poolName;
    }

    public void setPoolName(String poolName) {
        this.poolName = poolName;
    }

    /**
     * The ViPR storage resource type that can be provisioned in this pool
     * 
     * @valid block = Volume
     * @valid file = File System
     * @valid object = Object Store
     */
    @XmlElement(name = "pool_service_type")
    public String getPoolServiceType() {
        return poolServiceType;
    }

    public void setPoolServiceType(String poolServiceType) {
        this.poolServiceType = poolServiceType;
    }

    /**
     * The Long term retention policy is available on this pool
     * 
     * @valid block = Volume
     * @valid file = File System
     * @valid object = Object Store
     */
    @XmlElement(name = "long_term_retention")
    public Boolean getLongTermRetention() {
        return longTermRetention;
    }

    public void setLongTermRetention(boolean longTermRetention) {
        this.longTermRetention = longTermRetention;
    }

    /**
     * The protocols this pool uses to transport disk commands and
     * responses across its attached networks.
     * 
     * @valid none
     */
    @XmlElementWrapper(name = "protocols")
    /**
     * @valid FC = Fibre-Channel
     * @valid IP
     */
    @XmlElement(name = "protocol")
    public Set getProtocols() {
        if (protocols == null) {
            protocols = new LinkedHashSet();
        }
        return protocols;
    }

    public void setProtocols(Set protocols) {
        this.protocols = protocols;
    }

    /**
     * The supported RAID levels for this pool
     * 
     * @valid none
     */
    @XmlElementWrapper(name = "raid_levels")
    /**
     * @valid RAID1
     * @valid RAID2
     * @valid RAID3
     * @valid RAID4
     * @valid RAID5
     * @valid RAID6
     * @valid RAID10 = RAID 1/0
     */
    @XmlElement(name = "raid_level")
    public Set getRaidLevels() {
        if (raidLevels == null) {
            raidLevels = new LinkedHashSet();
        }
        return raidLevels;
    }

    public void setRaidLevels(Set raidLevels) {
        this.raidLevels = raidLevels;
    }

    /**
     * The hosting storage system for this pool
     * 
     * @valid none
     */
    @XmlElement(name = "storage_system")
    public RelatedResourceRep getStorageSystem() {
        return storageSystem;
    }

    public void setStorageSystem(RelatedResourceRep storageSystem) {
        this.storageSystem = storageSystem;
    }

    /**
     * The total amount of usable space that is configured in the pool
     * and is associated with resources provisioned in the pool. (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "subscribed_gb")
    public Long getSubscribedCapacity() {
        return subscribedCapacity;
    }

    public void setSubscribedCapacity(Long subscribedCapacity) {
        this.subscribedCapacity = subscribedCapacity;
    }

    /**
     * The volume types that can be created in this pool. A thin volume
     * allocates a portion of its assigned capacity when it is created
     * and grows as needed. A thick volume allocates all of its
     * assigned capacity when created.
     * 
     * @valid THICK_ONLY
     * @valid THIN_ONLY
     * @valid THIN_AND_THICK
     */
    @XmlElement(name = "supported_resource_types")
    public String getSupportedResourceTypes() {
        return supportedResourceTypes;
    }

    public void setSupportedResourceTypes(String supportedResourceTypes) {
        this.supportedResourceTypes = supportedResourceTypes;
    }

    @XmlElementWrapper(name = "tier_utilization_percentages")
    /**
     * The utilization percentages of each storage tier
     * 
     * @valid none
     */
    @XmlElement(name = "tier_utilization_percentage")
    public List getTierUtilizationPercentage() {
        if (tierUtilizationPercentage == null) {
            tierUtilizationPercentage = new ArrayList();
        }
        return tierUtilizationPercentage;
    }

    public void setTierUtilizationPercentage(List tierUtilizationPercentage) {
        this.tierUtilizationPercentage = tierUtilizationPercentage;
    }

    /**
     * The amount of usable space in the pool (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "usable_gb")
    public Long getTotalCapacity() {
        return totalCapacity;
    }

    public void setTotalCapacity(Long totalCapacity) {
        this.totalCapacity = totalCapacity;
    }

    /**
     * The amount of consumed usable space in the pool (GB)
     * 
     * @valid none
     */
    @XmlElement(name = "used_gb")
    public Long getUsedCapacity() {
        return usedCapacity;
    }

    public void setUsedCapacity(Long usedCapacity) {
        this.usedCapacity = usedCapacity;
    }

    /**
     * The user-defined limit for this pool's utilization
     * 
     * @valid none
     */
    @XmlElement(name = "max_pool_utilization_percentage")
    public Integer getMaxPoolUtilizationPercentage() {
        return maxPoolUtilizationPercentage;
    }

    public void setMaxPoolUtilizationPercentage(Integer maxPoolUtilizationPercentage) {
        this.maxPoolUtilizationPercentage = maxPoolUtilizationPercentage;
    }

    /**
     * The maximum percentage of usable space that can be assigned to thin volumes
     * 
     * @valid none
     */
    @XmlElement(name = "max_thin_pool_subscription_percentage")
    public Integer getMaxThinPoolSubscriptionPercentage() {
        return maxThinPoolSubscriptionPercentage;
    }

    public void setMaxThinPoolSubscriptionPercentage(Integer maxThinPoolSubscription) {
        this.maxThinPoolSubscriptionPercentage = maxThinPoolSubscription;
    }

    /**
     * Determines whether pre-allocation of thin volume is supported on this storage pool
     * 
     * @valid true
     * @valid false
     * 
     */
    @XmlElement(name = "thin_volume_preallocation_supported")
    public Boolean getThinVolumePreAllocationSupported() {
        return thinVolumePreAllocationSupported;
    }

    public void setThinVolumePreAllocationSupported(Boolean thinVolumePreAllocationSupported) {
        this.thinVolumePreAllocationSupported = thinVolumePreAllocationSupported;
    }

    /**
     * Determines whether auto-tiering is supported on this storage pool
     * 
     * @valid true
     * @valid false
     */
    @XmlElement(name = "auto_tiering_supported")
    public Boolean getAutoTieringSupported() {
        return autoTieringSupported;
    }

    /**
     * @param autoTieringEnabled the autoTieringEnabled to set
     */
    public void setAutoTieringSupported(Boolean autoTieringSupported) {
        this.autoTieringSupported = autoTieringSupported;
    }

    /**
     * Whether or not this storage pool is compatible with ViPR
     * 
     * @valid COMPATIBLE
     * @valid INCOMPATIBLE
     * @valid UNKNOWN
     */
    @XmlElement(name = "compatibility_status")
    public String getCompatibilityStatus() {
        return compatibilityStatus;
    }

    public void setCompatibilityStatus(String compatibilityStatus) {
        this.compatibilityStatus = compatibilityStatus;
    }

    /**
     * Whether or not this storage pool is visible in discovery
     * 
     * @valid VISIBLE
     * @valid NOTVISIBLE
     */
    @XmlElement(name = "discovery_status")
    public String getDiscoveryStatus() {
        return discoveryStatus;
    }

    public void setDiscoveryStatus(String discoveryStatus) {
        this.discoveryStatus = discoveryStatus;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy