/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.networkcontroller.impl.mds;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Vsan implements Serializable {
public static Map<String, Vsan> wwnToVsan = new HashMap<String, Vsan>();
public static Map<String, Vsan> vsanIdToVsan = new TreeMap<String, Vsan>();
private static final Logger _log = LoggerFactory.getLogger(Vsan.class);
String vsanId;
String vsanName;
String vsanWwn;
List<FCProtocolEndpoint> localEndpoints = new ArrayList<FCProtocolEndpoint>(); // key = wwpn of endpoint
Zoneset activeZoneset = null;
List<Zoneset> inactiveZonesets = new ArrayList<Zoneset>();
public void print() {
_log.info("*************** VSAN " + vsanId + ": ********************");
for (FCProtocolEndpoint ep : localEndpoints) {
for (FCProtocolEndpoint cp : ep.connections.values()) {
_log.info(ep.iface.name + " " + vsanId + " local "
+ formatWwn(ep.wwpn) + " remote " + formatWwn(cp.wwpn) + " " + formatWwn(cp.wwnn));
}
}
if (activeZoneset != null) {
activeZoneset.print();
}
for (Zoneset z : getInactiveZonesets()) {
z.print();
}
}
public Vsan(String vsanId, String vsanName) {
this.vsanId = vsanId;
this.vsanName = vsanName;
vsanIdToVsan.put(vsanId, this);
}
public Zoneset getActiveZoneset() {
return activeZoneset;
}
public void setActiveZoneset(Zoneset activeZoneset) {
this.activeZoneset = activeZoneset;
}
public List<Zoneset> getInactiveZonesets() {
if (inactiveZonesets == null) {
inactiveZonesets = new ArrayList<Zoneset>();
}
return inactiveZonesets;
}
public String formatWwn(String s) {
char[] c = s.toCharArray();
StringBuilder buf = new StringBuilder();
for (int i = 0; i < c.length && i < 16; i++) {
buf.append(c[i]);
if ((i & 1) == 1 && i < 15) {
buf.append(":");
}
}
return buf.toString().toLowerCase();
}
}