package com.onaro.sanscreen.client.view.task.template.addhost.generator.host; import com.onaro.sanscreen.task.interfaces.data.inventory.Port; import com.onaro.sanscreen.task.interfaces.data.inventory.Device; import com.onaro.sanscreen.task.interfaces.data.template.*; /** * Describes the connection of a port of the adapter. */ public class ConnectedPort { private AddHostTaskTemplateInstance instance; private int adapterIndex; private int portIndex; public ConnectedPort(AddHostTaskTemplateInstance instance, int adapterIndex, int portIndex) { this.instance = instance; this.adapterIndex = adapterIndex; this.portIndex = portIndex; } public String getWwn() { return instance.getConnectedPortWwn(adapterIndex, portIndex); } public String getName() { return instance.getConnectedPortName(adapterIndex, portIndex); } public String getFabricWwn() { return instance.getConnectedPortFabric(adapterIndex, portIndex); } public void setPort(Port port, Device fabric) { String name = null; String wwn = null; String switchWwn = null; String switchName = null; String fabricWwn = null; if (port != null) { wwn = port.getWwn(); switchWwn = port.getRootIdentifier(); switchName = port.getRootAlias(); name = port.getName() != null ? port.getName() : wwn; } if (fabric != null) { fabricWwn = fabric.getWwn(); if (fabric.isVsanEnabled()) { instance.setPortVsanWwn(adapterIndex, portIndex, fabricWwn, fabric.getVsanId(), fabric.getAlias()); } } /** * Reset the fabric/vsan only if the selected port is diffrenet from the previous one */ else { String oldWwn = instance.getConnectedPortWwn(adapterIndex, portIndex); if (oldWwn != null && !oldWwn.equals(wwn) || wwn != null && !wwn.equals(oldWwn)) { instance.setPortVsanWwn(adapterIndex, portIndex, fabricWwn, Integer.MIN_VALUE, null); instance.removePortVsanWwn(adapterIndex, portIndex); } } instance.setConnectedPort(adapterIndex,portIndex,wwn,name,fabricWwn, switchWwn, switchName); } public void setVsan(Device vsan) { if (vsan != null) { assert vsan.isVsanEnabled() : "should be a vsan["+vsan+"]"; //$NON-NLS-1$ //$NON-NLS-2$ instance.setPortVsanWwn(adapterIndex, portIndex, vsan.getWwn(), vsan.getVsanId(), vsan.getAlias()); } else { instance.setPortVsanWwn(adapterIndex, portIndex, null, Integer.MIN_VALUE, null); } } public boolean isVsanEnabled(){ return instance.isVsanEnabled(adapterIndex, portIndex); } public String getVsanName() { return instance.getPortVsanName(adapterIndex, portIndex); } public String getVsanWwn() { return instance.getPortVsanWwn(adapterIndex, portIndex); } public String getSwitchWwn() { return instance.getConnectedPortSwitchWwn(adapterIndex, portIndex); } public String getSwitchName() { return instance.getConnectedPortSwitchName(adapterIndex, portIndex); } public int getVsanId() { return instance.getPortVsanId(adapterIndex, portIndex); } public String getFabricDescription() { if (isVsanEnabled()) { if (getVsanName()!=null && getVsanWwn()!=null) return new StringBuilder().append(getVsanName()).append('(').append(getVsanWwn()).append(')').toString(); else return null; } else { return getFabricWwn(); } } }