package com.onaro.sanscreen.client.view.task.template.addhost.generator.host;
import com.onaro.sanscreen.task.interfaces.data.template.AddHostTaskTemplateInstance;
import com.onaro.sanscreen.task.interfaces.data.template.AddHostTemplate;
import com.onaro.sanscreen.task.interfaces.data.inventory.ZoneMemberType;
/**
* Describes a port of an adapter and its configuration (zoning and LUN-masking).
*/
public class Port {
private AddHostTaskTemplateInstance instance;
private int adapterIndex;
private int portIndex;
private ConnectedPort connected;
/**
* If not null, LUN masking is applied to the port. Its ileagal that both the adapter
* and its ports will have non-null masking.
*/
private VolumeMapMask masking;
/**
* If not null, zoning is applied to the port. Its ileagal that both the adapter
* and its ports will have non-null zoning.
*/
private PortZoning zoning;
public Port(AddHostTaskTemplateInstance instance, int adapterIndex, int portIndex) {
this.instance = instance;
this.adapterIndex = adapterIndex;
this.portIndex = portIndex;
AddHostTemplate template = instance.getAddHostTemplate();
if (!template.isMaskByAdapter()) {
masking = new VolumeMapMask(instance, adapterIndex, portIndex);
}
if (template.isAddZone() && !template.isSameZoneName() &&
((ZoneMemberType.PORT_WWN.equals(template.getHostZoneMemberType())) ||
(ZoneMemberType.SWITCH_PORT.equals(template.getHostZoneMemberType())))) {
zoning = new PortZoning(instance, adapterIndex, portIndex);
}
connected = new ConnectedPort(instance, adapterIndex, portIndex);
}
public String getWwn() {
return instance.getAdapterPortWwn(adapterIndex, portIndex);
}
public void setWwn(String wwn) {
instance.setAdapterPortWwn(adapterIndex, portIndex,wwn);
}
public ConnectedPort getConnected() {
return connected;
}
public VolumeMapMask getMasking() {
return masking;
}
public PortZoning getZoning() {
return zoning;
}
}