/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package models.datatable;
import org.apache.commons.lang.StringUtils;
import com.emc.storageos.db.client.model.DiscoveredDataObject.CompatibilityStatus;
import com.emc.storageos.db.client.model.StoragePort.OperationalStatus;
import com.emc.storageos.model.ports.StoragePortRestRep;
import com.emc.storageos.model.systems.StorageSystemRestRep;
import models.TransportProtocols;
import util.BourneUtil;
import util.datatable.DataTable;
public class StoragePortDataTable extends DataTable {
public StoragePortDataTable() {
addColumn("name");
addColumn("registrationStatus").setRenderFunction("render.registrationStatus");
addColumn("portGroup");
addColumn("storageSystem").hidden();
addColumn("networkIdentifier").setRenderFunction("render.networkIdentifier");
addColumn("iqn");
addColumn("alias");
addColumn("type");
addColumn("network").hidden();
addColumn("allocationDisqualified").setRenderFunction("render.allocationDisqualified");
addColumn("isDRPort").hidden().setRenderFunction("render.boolean");
addColumn("operationalStatus").setRenderFunction("render.operationalStatus");
sortAllExcept("id");
setDefaultSort("name", "asc");
}
public static class StoragePortInfo {
public String id;
public String name;
public String portGroup;
public String storageSystem;
public String networkIdentifier;
public String alias;
public String iqn;
public String type;
public String registrationStatus;
public String operationalStatus;
public String network;
public boolean assigned;
public boolean allocationDisqualified;
public boolean isDRPort;
public StoragePortInfo(StoragePortRestRep storagePort) {
this(storagePort, null);
}
public StoragePortInfo(StoragePortRestRep storagePort, StorageSystemRestRep storageSystem) {
this.id = storagePort.getId().toString();
this.name = storagePort.getPortName();
this.portGroup = storagePort.getAdapterName();
this.storageSystem = storageSystem != null ? storageSystem.getName() : null;
if (TransportProtocols.isIp(storagePort.getTransportType())) {
// for IP networks, we want to use the IP address as the network identifier, if we can find it
String networkID = storagePort.getPortNetworkId();
this.networkIdentifier = storagePort.getIpAddress();
if (StringUtils.isEmpty(this.networkIdentifier) && !StringUtils.startsWithIgnoreCase(networkID, "IQN.")) {
this.networkIdentifier = networkID;
} else if (StringUtils.startsWithIgnoreCase(networkID, "IQN.")) {
this.iqn = networkID;
}
} else {
this.networkIdentifier = storagePort.getPortNetworkId();
}
this.alias = storagePort.getPortAlias();
this.type = TransportProtocols.getDisplayValue(storagePort.getTransportType());
this.registrationStatus = storagePort.getRegistrationStatus();
if (OperationalStatus.OK.name().equals(storagePort.getOperationalStatus())
&& CompatibilityStatus.UNKNOWN.name().equals(storagePort.getCompatibilityStatus())) {
this.operationalStatus = OperationalStatus.UNKNOWN.name();
} else if (OperationalStatus.OK.name().equals(storagePort.getOperationalStatus())
&& CompatibilityStatus.INCOMPATIBLE.name().equals(storagePort.getCompatibilityStatus())) {
this.operationalStatus = OperationalStatus.NOT_OK.name();
} else {
this.operationalStatus = storagePort.getOperationalStatus();
}
this.allocationDisqualified = storagePort.getAllocationDisqualified();
if (BourneUtil.getViprClient().storagePorts().getTags(storagePort.getId()).contains("dr_port")) {
isDRPort = true;
}
}
}
}