/*
* Copyright (c) 2008-2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.model.systems;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import com.emc.storageos.model.DiscoveredSystemObjectRestRep;
import com.emc.storageos.model.RelatedResourceRep;
import com.emc.storageos.model.StringHashMapEntry;
@XmlRootElement(name = "storage_system")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class StorageSystemRestRep extends DiscoveredSystemObjectRestRep {
private String serialNumber;
private String majorVersion;
private String minorVersion;
private String ipAddress;
private Set<String> secondaryIPs;
private Integer portNumber;
private String smisProviderIP;
private Integer smisPortNumber;
private String smisUserName;
private String smisConnectionStatus;
private Boolean smisUseSSL;
private List<StringHashMapEntry> exportMasks;
private Set<String> protocols;
private Boolean reachableStatus;
private String firmwareVersion;
private RelatedResourceRep activeProvider;
private List<RelatedResourceRep> providers;
private String username;
private String model;
private Set<String> associatedSystems;
private String supportedProvisioningType;
private Set<String> supportedAsynchronousActions;
private Integer maxResources;
private Integer numResources;
private Set<String> supportedReplicationTypes;
private Set<String> remotelyConnectedTo;
private Boolean hasSRDFActiveRAGroups;
private Double averagePortMetrics;
private Boolean supportsSoftLimit = false;
private Boolean supportsNotificationLimit = false;
private String arrayAffinityJobStatus;
private String lastArrayAffinityStatusMessage;
private Long lastArrayAffinityRunTime;
private Long nextArrayAffinityRunTime;
private Long successArrayAffinityTime;
public StorageSystemRestRep() {
}
// TODO: We should change this to drop the _uri from the name. It is not a URI
@XmlElement(name = "active_provider_uri")
public RelatedResourceRep getActiveProvider() {
return activeProvider;
}
public void setActiveProvider(RelatedResourceRep activeProvider) {
this.activeProvider = activeProvider;
}
@Deprecated
@XmlElementWrapper(name = "associated_systems")
@XmlElement(name = "associated_system")
public Set<String> getAssociatedSystems() {
if (associatedSystems == null) {
associatedSystems = new LinkedHashSet<String>();
}
return associatedSystems;
}
@Deprecated
public void setAssociatedSystems(Set<String> associatedSystems) {
this.associatedSystems = associatedSystems;
}
@XmlElementWrapper(name = "export_masks")
@XmlElement(name = "export_mask")
public List<StringHashMapEntry> getExportMasks() {
if (exportMasks == null) {
exportMasks = new ArrayList<StringHashMapEntry>();
}
return exportMasks;
}
public void setExportMasks(List<StringHashMapEntry> exportMasks) {
this.exportMasks = exportMasks;
}
@XmlElement(name = "firmware_version")
public String getFirmwareVersion() {
return firmwareVersion;
}
public void setFirmwareVersion(String firmwareVersion) {
this.firmwareVersion = firmwareVersion;
}
@XmlElement(name = "ip_address")
public String getIpAddress() {
return ipAddress;
}
public void setIpAddress(String ipAddress) {
this.ipAddress = ipAddress;
}
@XmlElement(name = "major_version")
public String getMajorVersion() {
return majorVersion;
}
public void setMajorVersion(String majorVersion) {
this.majorVersion = majorVersion;
}
@XmlElement(name = "minor_version")
public String getMinorVersion() {
return minorVersion;
}
public void setMinorVersion(String minorVersion) {
this.minorVersion = minorVersion;
}
@XmlElement(name = "model")
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
@XmlElement(name = "port_number")
public Integer getPortNumber() {
return portNumber;
}
public void setPortNumber(Integer portNumber) {
this.portNumber = portNumber;
}
@XmlElementWrapper(name = "protocols")
@XmlElement(name = "protocol")
public Set<String> getProtocols() {
if (protocols == null) {
protocols = new LinkedHashSet<String>();
}
return protocols;
}
public void setProtocols(Set<String> protocols) {
this.protocols = protocols;
}
@XmlElementWrapper(name = "smis_providers")
@XmlElement(name = "smis_provider")
public List<RelatedResourceRep> getProviders() {
if (providers == null) {
providers = new ArrayList<RelatedResourceRep>();
}
return providers;
}
public void setProviders(List<RelatedResourceRep> providers) {
this.providers = providers;
}
@XmlElement(name = "reachable")
public Boolean getReachableStatus() {
return reachableStatus;
}
public void setReachableStatus(Boolean reachableStatus) {
this.reachableStatus = reachableStatus;
}
@XmlElementWrapper(name = "secondary_ips")
@XmlElement(name = "secondary_ip")
public Set<String> getSecondaryIPs() {
if (secondaryIPs == null) {
secondaryIPs = new LinkedHashSet<String>();
}
return secondaryIPs;
}
public void setSecondaryIPs(Set<String> secondaryIPs) {
this.secondaryIPs = secondaryIPs;
}
@XmlElement(name = "serial_number")
public String getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
@XmlElement(name = "smis_port_number")
public Integer getSmisPortNumber() {
return smisPortNumber;
}
public void setSmisPortNumber(Integer smisPortNumber) {
this.smisPortNumber = smisPortNumber;
}
@XmlElement(name = "smis_provider_ip")
public String getSmisProviderIP() {
return smisProviderIP;
}
public void setSmisProviderIP(String smisProviderIP) {
this.smisProviderIP = smisProviderIP;
}
@XmlElement(name = "smis_use_ssl")
public Boolean getSmisUseSSL() {
return smisUseSSL;
}
public void setSmisUseSSL(Boolean smisUseSSL) {
this.smisUseSSL = smisUseSSL;
}
@XmlElement(name = "user_name")
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@XmlElement(name = "supported_provisioning_type")
public String getSupportedProvisioningType() {
return supportedProvisioningType;
}
public void setSupportedProvisioningType(String supportedProvisioningType) {
this.supportedProvisioningType = supportedProvisioningType;
}
@XmlElementWrapper(name = "async_actions")
@XmlElement(name = "async_action")
public Set<String> getSupportedAsynchronousActions() {
if (associatedSystems == null) {
supportedAsynchronousActions = new LinkedHashSet<String>();
}
return supportedAsynchronousActions;
}
public void setSupportedAsynchronousActions(Set<String> supportedAsynchronousActions) {
this.supportedAsynchronousActions = supportedAsynchronousActions;
}
@XmlElement(name = "smis_user_name")
public String getSmisUserName() {
return smisUserName;
}
public void setSmisUserName(String smisUserName) {
this.smisUserName = smisUserName;
}
@XmlElement(name = "smis_connection_status")
public String getSmisConnectionStatus() {
return smisConnectionStatus;
}
public void setSmisConnectionStatus(String smisConnectionStatus) {
this.smisConnectionStatus = smisConnectionStatus;
}
@XmlElement(name = "max_resources")
public Integer getMaxResources() {
return maxResources;
}
public void setMaxResources(Integer maxResources) {
this.maxResources = maxResources;
}
@XmlElement(name = "num_resources")
public Integer getNumResources() {
return numResources;
}
public void setNumResources(Integer numResources) {
this.numResources = numResources;
}
@XmlElementWrapper(name = "supported_replication_types")
@XmlElement(name = "supported_replication_type")
public Set<String> getSupportedReplicationTypes() {
return supportedReplicationTypes;
}
public void setSupportedReplicationTypes(Set<String> supportedReplicationTypes) {
if (null == supportedReplicationTypes) {
supportedReplicationTypes = new LinkedHashSet<String>();
}
this.supportedReplicationTypes = supportedReplicationTypes;
}
@XmlElementWrapper(name = "connected_systems")
@XmlElement(name = "connected_system")
public Set<String> getRemotelyConnectedTo() {
return remotelyConnectedTo;
}
public void setRemotelyConnectedTo(Set<String> remotelyConnectedTo) {
if (null == remotelyConnectedTo) {
remotelyConnectedTo = new LinkedHashSet<String>();
}
this.remotelyConnectedTo = remotelyConnectedTo;
}
@XmlElement(name = "srdf_active_ra_groups_exist")
public Boolean getHasSRDFRAGroups() {
return hasSRDFActiveRAGroups;
}
public void setHasSRDFRAGroups(Boolean hasSRDFRAGroups) {
this.hasSRDFActiveRAGroups = hasSRDFRAGroups;
}
@XmlElement(name = "average_port_metrics")
public Double getAveragePortMetrics() {
return averagePortMetrics;
}
public void setAveragePortMetrics(Double averagePortMetrics) {
this.averagePortMetrics = averagePortMetrics;
}
@XmlElement(name = "supports_soft_limit", required = false)
public Boolean getSupportsSoftLimit() {
return supportsSoftLimit;
}
public void setSupportsSoftLimit(Boolean supportsSoftLimit) {
this.supportsSoftLimit = supportsSoftLimit;
}
@XmlElement(name = "supports_notification_limit", required = false)
public Boolean getSupportsNotificationLimit() {
return supportsNotificationLimit;
}
public void setSupportsNotificationLimit(Boolean supportsNotificationLimit) {
this.supportsNotificationLimit = supportsNotificationLimit;
}
/**
* The status of the last array affinity job for this system
* Valid values:
* CREATED
* IN_PROGRESS
* COMPLETE
* ERROR
*/
@XmlElement(name = "job_arrayaffinity_status")
public String getArrayAffinityJobStatus() {
return arrayAffinityJobStatus;
}
public void setArrayAffinityJobStatus(String arrayAffinityJobStatus) {
this.arrayAffinityJobStatus = arrayAffinityJobStatus;
}
/**
* The last array affinity status message for this system
*/
@XmlElement(name = "last_arrayaffinity_status_message")
public String getLastArrayAffinityStatusMessage() {
return lastArrayAffinityStatusMessage;
}
public void setLastArrayAffinityStatusMessage(String statusMessage) {
lastArrayAffinityStatusMessage = statusMessage;
}
/**
* The timestamp for the last array affinity job for this system
*/
@XmlElement(name = "last_arrayaffinity_run_time")
public Long getLastArrayAffinityRunTime() {
return lastArrayAffinityRunTime;
}
public void setLastArrayAffinityRunTime(Long lastArrayAffinityRunTime) {
this.lastArrayAffinityRunTime = lastArrayAffinityRunTime;
}
/**
* The timestamp for the next scheduled array affinity job for this system
*/
@XmlElement(name = "next_arrayaffinity_run_time")
public Long getNextArrayAffinityRunTime() {
return nextArrayAffinityRunTime;
}
public void setNextArrayAffinityRunTime(Long nextArrayAffinityRunTime) {
this.nextArrayAffinityRunTime = nextArrayAffinityRunTime;
}
/**
* The latest timestamp when the system run array affinity job successfully
*/
@XmlElement(name = "success_arrayaffinity_time")
public Long getSuccessArrayAffinityTime() {
return successArrayAffinityTime;
}
public void setSuccessArrayAffinityTime(Long successArrayAffinityTime) {
this.successArrayAffinityTime = successArrayAffinityTime;
}
}