/* * Copyright (c) 2008-2013 EMC Corporation * All Rights Reserved */ package com.emc.storageos.model.ports; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import com.emc.storageos.model.RelatedResourceRep; import com.emc.storageos.model.varray.VirtualArrayResourceRestRep; @XmlRootElement(name = "storage_port") @XmlAccessorType(XmlAccessType.PROPERTY) public class StoragePortRestRep extends VirtualArrayResourceRestRep { private String portName; private String portAlias; private String ipAddress; private Long tcpPortNumber; private String portNetworkId; private String portEndPointId; private String transportType; private RelatedResourceRep network; private RelatedResourceRep storageDevice; private Long portSpeed; private String portType; private String portGroup; private Long avgBandwidth; private Long staticLoad; private String registrationStatus; private String operationalStatus; private String compatibilityStatus; private Double allocationMetric; private Double portPercentBusy; private Double cpuPercentBusy; private Long initiatorLoad; private Long volumeLoad; private Boolean allocationDisqualified; private String discoveryStatus; private String adapterName; public StoragePortRestRep() { } /** * The adapter name of the Storage Port * * @return Adapter name of Storage Port */ @XmlElement(name = "adapter_name") public String getAdapterName() { return adapterName; } public void setAdapterName(String adapterName) { this.adapterName = adapterName; } /** * The average bandwidth through the port (Gbps) * */ @XmlElement(name = "avg_band_width") public Long getAvgBandwidth() { return avgBandwidth; } public void setAvgBandwidth(Long avgBandwidth) { this.avgBandwidth = avgBandwidth; } /** * The port's IP address (for IP-based transport) * */ @XmlElement(name = "ip_address") public String getIpAddress() { return ipAddress; } public void setIpAddress(String ipAddress) { this.ipAddress = ipAddress; } /** * ID of the endpoint with which this port is associated. * */ @XmlElement(name = "port_endpoint_id") public String getPortEndPointId() { return portEndPointId; } public void setPortEndPointId(String portEndPointId) { this.portEndPointId = portEndPointId; } /** * The name of this port's group. A port group is a mapping * that is configured on a storage system between a collection * of ports, a collection of volumes and a collection of hosts * that use those volumes. This name is what the storage system * uses to identify the port group. * mapped known by Vipr to this port * */ @XmlElement(name = "port_group") public String getPortGroup() { return portGroup; } public void setPortGroup(String portGroup) { this.portGroup = portGroup; } /** * The native name of the port. This name consists of identifiers that * are used by the hosting storage system. It may also follow a naming * convention that is in common use for that make and model of storage * system. * */ @XmlElement(name = "port_name") public String getPortName() { return portName; } public void setPortName(String portName) { this.portName = portName; } /** * The alias represents port's wwn id * */ @XmlElement(name = "port_alias") public String getPortAlias() { return portAlias; } public void setPortAlias(String portAlias) { this.portAlias = portAlias; } /** * The network address of the port. When Fibre-Channel (FC) is the * transport protocol, the address is a World Wide Name (WWN). * If the port is using an IP-based protocol, this is an IP address, * or name of the port that a storage system uses to identify the port. * */ @XmlElement(name = "port_network_id") public String getPortNetworkId() { return portNetworkId; } public void setPortNetworkId(String portNetworkId) { this.portNetworkId = portNetworkId; } /** * The port's clock speed (Gbps) * */ @XmlElement(name = "port_speed_gbps") public Long getPortSpeed() { return portSpeed; } public void setPortSpeed(Long portSpeed) { this.portSpeed = portSpeed; } /** * How the port connects its storage controller to its network * Valid values: * backend = connects a VPLEX storage controller to another array * frontend = connects the storage controller to the hosts */ @XmlElement(name = "port_type") public String getPortType() { return portType; } public void setPortType(String portType) { this.portType = portType; } /** * The number of exports on the storage port * */ @XmlElement(name = "static_load") public Long getStaticLoad() { return staticLoad; } public void setStaticLoad(Long staticLoad) { this.staticLoad = staticLoad; } /** * The storage system that hosts this port * */ @XmlElement(name = "storage_system") public RelatedResourceRep getStorageDevice() { return storageDevice; } public void setStorageDevice(RelatedResourceRep storageDevice) { this.storageDevice = storageDevice; } /** * The port's TCP port number (for IP-based transport) * */ @XmlElement(name = "tcp_port_number") public Long getTcpPortNumber() { return tcpPortNumber; } public void setTcpPortNumber(Long tcpPortNumber) { this.tcpPortNumber = tcpPortNumber; } /** * The protocol that this port uses to transport disk commands * and responses across its network * Valid values: * FC * IP * */ @XmlElement(name = "transport_type") public String getTransportType() { return transportType; } public void setTransportType(String transportType) { this.transportType = transportType; } /** * The ViPR network that connects to this port * */ @XmlElement(name = "network") public RelatedResourceRep getNetwork() { return network; } public void setNetwork(RelatedResourceRep network) { this.network = network; } /** * Whether or not this port is registered with ViPR. A * port must be registered before it can be managed by * ViPR. Valid values: * REGISTERED * UNREGISTERED * */ @XmlElement(name = "registration_status") public String getRegistrationStatus() { return registrationStatus; } public void setRegistrationStatus(String registrationStatus) { this.registrationStatus = registrationStatus; } /** * The operational status of the port * Valid values: * OK * NOT_OK * UNKNOWN */ @XmlElement(name = "operational_status") public String getOperationalStatus() { return operationalStatus; } public void setOperationalStatus(String operationalStatus) { this.operationalStatus = operationalStatus; } /** * Whether or not this storage port is compatible with ViPR * Valid values: * COMPATIBLE * INCOMPATIBLE * UNKNOWN */ @XmlElement(name = "compatibility_status") public String getCompatibilityStatus() { return compatibilityStatus; } public void setCompatibilityStatus(String compatibilityStatus) { this.compatibilityStatus = compatibilityStatus; } /** * The metric for the Storage Port Allocator. * Lower metric numbers are preferred over higher metric numbers for allocation. */ @XmlElement(name = "allocation_metric") public Double getAllocationMetric() { return allocationMetric; } public void setAllocationMetric(Double allocationMetric) { this.allocationMetric = allocationMetric; } /** * The port percent busy as computed by the kbytes transferred per a given * unit of time versus the maximum number of kbytes that could be transferred * as computed from the port speed. */ @XmlElement(name = "port_percent_busy") public Double getPortPercentBusy() { return portPercentBusy; } public void setPortPercentBusy(Double portPercentBusy) { this.portPercentBusy = portPercentBusy; } /** * The number of non-idle ticks for the cpu that is hosting the port * versus the total number of possible ticks. */ @XmlElement(name = "cpu_percent_busy") public Double getCpuPercentBusy() { return cpuPercentBusy; } public void setCpuPercentBusy(Double cpuPercentBusy) { this.cpuPercentBusy = cpuPercentBusy; } /** * The number of Initiators known by ViPR to be mapped to this port. */ @XmlElement(name = "initiator_load") public Long getInitiatorLoad() { return initiatorLoad; } public void setInitiatorLoad(Long initiatorLoad) { this.initiatorLoad = initiatorLoad; } /** * The number of Volumes known by ViPR to be accessible via this port. */ @XmlElement(name = "volume_load") public Long getVolumeLoad() { return volumeLoad; } public void setVolumeLoad(Long volumeLoad) { this.volumeLoad = volumeLoad; } /** * True if at least one of the port metrics is above its limit value. * This will prevent allocation of the port. */ @XmlElement(name = "allocation_disqualified") public Boolean getAllocationDisqualified() { return allocationDisqualified; } public void setAllocationDisqualified(Boolean allocationDisqualified) { this.allocationDisqualified = allocationDisqualified; } /** * Whether or not this storage pool is visible in discovery * Valid values: * VISIBLE * NOTVISIBLE */ @XmlElement(name = "discovery_status") public String getDiscoveryStatus() { return discoveryStatus; } public void setDiscoveryStatus(String discoveryStatus) { this.discoveryStatus = discoveryStatus; } }