/*
* Copyright (c) 2016 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.storagedriver.model;
import java.util.List;
import com.emc.storageos.storagedriver.storagecapabilities.CapabilityInstance;
public class StoragePort extends StorageObject {
// Defines the supported port types.
public enum PortType {
frontend,
backend,
Unknown
};
public enum TransportType {
FC, // fibre channel networks
IP, // IP networks for iSCSI, NFS, CIFS
Ethernet, // Ethernet networks for FCoE
ScaleIO, // ScaleIO Data Clients
Ceph, // Ceph Data Clients
}
public static enum OperationalStatus {
OK, NOT_OK, UNKNOWN
};
// storage port name
private String portName;
// storage port network identifier e.g. FC - port wwn, IP - network interface identifier
private String portNetworkId;
// storage device this storage port belongs to
private String storageSystemId;
// port type
private TransportType transportType;
// network this storage port is attached to
private String networkId;
// port speed set this to Gbps (Giga bits per sec).
private Long portSpeed;
// port container tag, e.g. for front-end director
private String portGroup;
// port container subgroup tag
private String portSubGroup;
// port failure domain name (high availability zone name)
private String portHAZone;
// average bandwidth through the port
private Long avgBandwidth;
// indicates utilization of the port 0-100%
private Double utilizationMetric;
private OperationalStatus operationalStatus = OperationalStatus.UNKNOWN;
private Long tcpPortNumber;
private String ipAddress;
// port end point id
private String endPointID;
private PortType portType = PortType.frontend;
private List<CapabilityInstance> capabilities;
public String getPortName() {
return portName;
}
public void setPortName(String portName) {
this.portName = portName;
}
public String getPortNetworkId() {
return portNetworkId;
}
public void setPortNetworkId(String portNetworkId) {
this.portNetworkId = portNetworkId;
}
public String getStorageSystemId() {
return storageSystemId;
}
public void setStorageSystemId(String storageSystemId) {
this.storageSystemId = storageSystemId;
}
public String getTransportType() {
return transportType.name();
}
public void setTransportType(TransportType transportType) {
this.transportType = transportType;
}
public String getNetworkId() {
return networkId;
}
public void setNetworkId(String networkId) {
this.networkId = networkId;
}
public Long getPortSpeed() {
return portSpeed;
}
public void setPortSpeed(Long portSpeed) {
this.portSpeed = portSpeed;
}
public String getPortGroup() {
return portGroup;
}
public void setPortGroup(String portGroup) {
this.portGroup = portGroup;
}
public String getPortSubGroup() {
return portSubGroup;
}
public void setPortSubGroup(String portSubGroup) {
this.portSubGroup = portSubGroup;
}
public String getPortHAZone() {
return portHAZone;
}
public void setPortHAZone(String portHAZone) {
this.portHAZone = portHAZone;
}
public Long getAvgBandwidth() {
return avgBandwidth;
}
public void setAvgBandwidth(Long avgBandwidth) {
this.avgBandwidth = avgBandwidth;
}
public Double getUtilizationMetric() {
return utilizationMetric;
}
public void setUtilizationMetric(Double usageMetric) {
this.utilizationMetric = usageMetric;
}
public String getOperationalStatus() {
return operationalStatus.name();
}
public void setOperationalStatus(OperationalStatus operationalStatus) {
this.operationalStatus = operationalStatus;
}
public Long getTcpPortNumber() {
return tcpPortNumber;
}
public void setTcpPortNumber(Long tcpPortNumber) {
this.tcpPortNumber = tcpPortNumber;
}
public String getIpAddress() {
return ipAddress;
}
public void setIpAddress(String ipAddress) {
this.ipAddress = ipAddress;
}
public String getEndPointID() {
return endPointID;
}
public void setEndPointID(String endPointID) {
this.endPointID = endPointID;
}
public String getPortType() {
return portType.name();
}
public void setPortType(PortType portType) {
this.portType = portType;
}
public List<CapabilityInstance> getCapabilities() {
return capabilities;
}
public void setCapabilities(List<CapabilityInstance> capabilities) {
this.capabilities = capabilities;
}
@Override
public boolean equals(Object port) {
if (port != null && (port instanceof StoragePort) && storageSystemId.equals(((StoragePort)port).getStorageSystemId()) &&
getNativeId().equals(((StoragePort) port).getNativeId())) {
return true;
} else {
return false;
}
}
@Override
public int hashCode() {
return toString().hashCode();
}
@Override
public String toString() {
return "StoragePort_"+storageSystemId+"---"+getNativeId();
}
}