@Override public void ndlInterface( Resource intf, OntModel om, Resource conn, Resource node, String ip, String mask) { // ignore request items // if (requestPhase) // return; // System.out.println("Interface " + l + " has IP/netmask" + ip + "/" + mask); // logger.debug("Interface " + intf + " between " + node + " and " + conn + " has IP/netmask " + // ip + "/" + mask); if (intf == null) return; OrcaNode on = null; OrcaLink ol = null; OrcaCrossconnect crs = null; if (node != null) on = nodes.get(getTrueName(node)); if (conn != null) { ol = links.get(getTrueName(conn)); if (ol == null) // maybe it is a crossconnect and not a link connection crs = (OrcaCrossconnect) nodes.get(getTrueName(conn)); } // extract the IP address from label, if it is not set on // the interface in the request (basically we favor manifest // setting over the request because in node groups that's the // correct one) String nmInt = null; if (ip == null) { String ifIpLabel = NdlCommons.getLabelID(intf); // x.y.z.w/24 if (ifIpLabel != null) { String[] ipnm = ifIpLabel.split("/"); if (ipnm.length == 2) { ip = ipnm[0]; nmInt = ipnm[1]; } } } else { if (mask != null) nmInt = "" + RequestSaver.netmaskStringToInt(mask); } // check mirrored storage interfaces if ((ip == null) && (sharedStorageLinkInterfaceEquivalence.containsKey(intf))) { String ifIpLabel = NdlCommons.getLabelID(sharedStorageLinkInterfaceEquivalence.get(intf)); // x.y.z.w/24 if (ifIpLabel != null) { String[] ipnm = ifIpLabel.split("/"); if (ipnm.length == 2) { ip = ipnm[0]; nmInt = ipnm[1]; } } } if (on != null) { if (ol != null) { on.setIp(ol, ip, nmInt); on.setInterfaceName(ol, getTrueName(intf)); on.setMac(ol, NdlCommons.getAddressMAC(intf)); } else if (crs != null) { // for individual nodes // create link from node to crossconnect and assign IP if it doesn't exist // check if the nodes are listed in the map if (interfaceToNode.get(getTrueName(intf)) != null) { // logger.debug(" Creating a link from " + on + " to " + crs); ol = new OrcaLink("Unnamed"); pg.addEdgeLater(on, crs, null, ol); } else { // logger.debug(" Skipping a link from " + on + " to " + crs + " as interface isn't // remembered"); } on.setIp(ol, ip, nmInt); on.setInterfaceName(ol, getTrueName(intf)); on.setMac(ol, NdlCommons.getAddressMAC(intf)); } else { // this could be a disconnected node group if (on instanceof OrcaNodeGroup) { OrcaNodeGroup ong = (OrcaNodeGroup) on; ong.setInternalIp(ip, "" + RequestSaver.netmaskStringToInt(mask)); } } } }