import org.opendaylight.controller.configuration.IConfigurationContainerAware;
import org.opendaylight.controller.sal.core.Bandwidth;
import org.opendaylight.controller.sal.core.Config;
+import org.opendaylight.controller.sal.core.Description;
import org.opendaylight.controller.sal.core.Name;
import org.opendaylight.controller.sal.core.Node;
import org.opendaylight.controller.sal.core.NodeConnector;
}
}
+ @Override
public void updateSwitchConfig(SwitchConfig cfgObject) {
boolean modeChange = false;
SwitchConfig sc = nodeConfigList.get(cfgObject.getNodeId());
- if ((sc == null) || !cfgObject.getMode().equals(sc.getMode()))
+ if ((sc == null) || !cfgObject.getMode().equals(sc.getMode())) {
modeChange = true;
+ }
nodeConfigList.put(cfgObject.getNodeId(), cfgObject);
try {
} else {
propMap = new HashMap<String, Property>();
}
- Property name = new Name(cfgObject.getNodeName());
- propMap.put(name.getName(), name);
+ Property desc = new Description(cfgObject.getNodeDescription());
+ propMap.put(desc.getName(), desc);
Property tier = new Tier(Integer.parseInt(cfgObject.getTier()));
propMap.put(tier.getName(), tier);
addNodeProps(node, propMap);
.getMode());
if (modeChange) {
- notifyModeChange(node, (Integer.parseInt(cfgObject
- .getMode()) != 0));
+ notifyModeChange(node, cfgObject.isProactive());
}
}
} catch (Exception e) {
private void addNode(Node node, Set<Property> props) {
log.trace("{} added", node);
- if (nodeProps == null)
+ if (nodeProps == null) {
return;
+ }
Map<String, Property> propMap;
if (nodeProps.get(node) != null) {
}
// copy node properties from config
+ boolean proactiveForwarding = false;
if (nodeConfigList != null) {
- String nodeId = node.getNodeIDString();
+ String nodeId = node.toString();
for (SwitchConfig conf : nodeConfigList.values()) {
if (conf.getNodeId().equals(nodeId)) {
- Property name = new Name(conf.getNodeName());
- propMap.put(name.getName(), name);
+ Property description = new Description(conf.getNodeDescription());
+ propMap.put(description.getName(), description);
Property tier = new Tier(Integer.parseInt(conf.getTier()));
propMap.put(tier.getName(), tier);
+ proactiveForwarding = conf.isProactive();
break;
}
}
// check if span ports are configed
addSpanPorts(node);
- /* notify node listeners */
+ // notify node listeners
notifyNode(node, UpdateType.ADDED, propMap);
+
+ // notify proactive mode forwarding
+ if (proactiveForwarding) {
+ notifyModeChange(node, true);
+ }
}
private void removeNode(Node node) {
log.trace("{} {}", nodeConnector, type);
- if (nodeConnectorProps == null)
+ if (nodeConnectorProps == null) {
return;
+ }
switch (type) {
case ADDED:
Set<Node> nodes = getNodes();
if (nodes != null) {
for (Node node : nodes) {
- if (id == (Long) node.getID()) {
+ if (id.equals((Long)node.getID())) {
return node;
}
}
return (propMap != null) ? propMap.get(propName) : null;
}
- @Override
- public List<Map<String, String>> getListNodeIdNameMap() {
- List<Map<String, String>> list = new ArrayList<Map<String, String>>();
- Set<Node> nset = this.nodeProps.keySet();
- if (nset == null) {
- return list;
- }
- for (Node node : nset) {
- Map<String, String> map = new HashMap<String, String>(2);
- Name nodeName = (Name) getNodeProp(node, Name.NamePropName);
- map.put("nodeId", node.toString());
- map.put("nodeName", ((nodeName == null) || nodeName.getValue()
- .equals("")) ? node.toString() : nodeName.getValue());
- list.add(map);
- }
- return list;
- }
-
private byte[] getHardwareMAC() {
Enumeration<NetworkInterface> nis;
try {
nis = NetworkInterface.getNetworkInterfaces();
} catch (SocketException e1) {
- e1.printStackTrace();
+ log.error("",e1);
return null;
}
byte[] MAC = null;
try {
MAC = ni.getHardwareAddress();
} catch (SocketException e) {
- e.printStackTrace();
+ log.error("",e);
}
if (MAC != null) {
return MAC;
for (Node node : getNodes()) {
SwitchConfig sc = getSwitchConfig(node.toString());
if ((sc != null) && isDefaultContainer) {
- service.modeChangeNotify(node,
- (Integer.parseInt(sc.getMode()) != 0));
+ service.modeChangeNotify(node, sc.isProactive());
}
}
}
StringBuffer help = new StringBuffer();
help.append("---Switch Manager---\n");
help.append("\t pns - Print connected nodes\n");
- help
- .append("\t pncs <node id> - Print node connectors for a given node\n");
- help
- .append("\t pencs <node id> - Print enabled node connectors for a given node\n");
- help
- .append("\t pdm <node id> - Print switch ports in device map\n");
+ help.append("\t pncs <node id> - Print node connectors for a given node\n");
+ help.append("\t pencs <node id> - Print enabled node connectors for a given node\n");
+ help.append("\t pdm <node id> - Print switch ports in device map\n");
help.append("\t snt <node id> <tier> - Set node tier number\n");
- help
- .append("\t hostRefresh <on/off/?> - Enable/Disable/Query host refresh\n");
+ help.append("\t hostRefresh <on/off/?> - Enable/Disable/Query host refresh\n");
help.append("\t hostRetry <count> - Set host retry count\n");
return help.toString();
}
public void _pns(CommandInterpreter ci) {
- ci
- .println(" Node Type Name Tier");
+ ci.println(" Node Type Name Tier");
if (nodeProps == null) {
return;
}
return;
}
for (Node node : nodeSet) {
- Name name = ((Name) getNodeProp(node, Name.NamePropName));
+ Description desc = ((Description) getNodeProp(node, Description.propertyName));
Tier tier = ((Tier) getNodeProp(node, Tier.TierPropName));
- String nodeName = (name == null) ? "" : name.getValue();
+ String nodeName = (desc == null) ? "" : desc.getValue();
int tierNum = (tier == null) ? 0 : tier.getValue();
ci.println(node + " " + node.getType()
+ " " + nodeName + " " + tierNum);
}
+ ci.println("Total number of Nodes: " + nodeSet.size());
}
public void _pencs(CommandInterpreter ci) {
}
ci.println(nodeConnector);
}
+ ci.println("Total number of NodeConnectors: " + nodeConnectorSet.size());
}
public void _pncs(CommandInterpreter ci) {
out += (state != null) ? state.getValue() : " ";
ci.println(out);
}
+ ci.println("Total number of NodeConnectors: " + nodeConnectorSet.size());
}
public void _pdm(CommandInterpreter ci) {
Object id = Long.decode(st);
Switch sw = getSwitchByNode(NodeCreator.createOFNode((Long) id));
- ci
- .println(" NodeConnector Name");
+ ci.println(" NodeConnector Name");
if (sw == null) {
return;
}
}
}
- ci
- .println(nodeConnector
- + " "
- + ((nodeConnectorName == null) ? ""
- : nodeConnectorName) + "("
- + nodeConnector.getID() + ")");
+ ci.println(nodeConnector
+ + " "
+ + ((nodeConnectorName == null) ? ""
+ : nodeConnectorName) + "("
+ + nodeConnector.getID() + ")");
}
+ ci.println("Total number of NodeConnectors: " + nodeConnectorSet.size());
}
}
@Override
public boolean isSpecial(NodeConnector p) {
- if (p.equals(NodeConnectorIDType.CONTROLLER) ||
- p.equals(NodeConnectorIDType.ALL) ||
- p.equals(NodeConnectorIDType.SWSTACK) ||
- p.equals(NodeConnectorIDType.HWPATH)) {
+ if (p.getType().equals(NodeConnectorIDType.CONTROLLER) ||
+ p.getType().equals(NodeConnectorIDType.ALL) ||
+ p.getType().equals(NodeConnectorIDType.SWSTACK) ||
+ p.getType().equals(NodeConnectorIDType.HWPATH)) {
return true;
}
return false;
}
try {
- if (propName.equalsIgnoreCase(Name.NamePropName)) {
- return new Name(propValue);
+ if (propName.equalsIgnoreCase(Description.propertyName)) {
+ return new Description(propValue);
} else if (propName.equalsIgnoreCase(Tier.TierPropName)) {
int tier = Integer.parseInt(propValue);
return new Tier(tier);
return null;
}
+
+ @Override
+ public String getNodeDescription(Node node) {
+ // Check first if user configured a name
+ SwitchConfig config = getSwitchConfig(node.toString());
+ if (config != null) {
+ String configuredDesc = config.getNodeDescription();
+ if (configuredDesc != null && !configuredDesc.isEmpty()) {
+ return configuredDesc;
+ }
+ }
+
+ // No name configured by user, get the node advertised name
+ Description desc = (Description) getNodeProp(node, Description.propertyName);
+ return (desc == null /*|| desc.getValue().equalsIgnoreCase("none")*/) ?
+ "" : desc.getValue();
+ }
}