package org.opendaylight.controller.sal.compability; import org.opendaylight.controller.sal.core.*; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; public class ToSalPropertyClassUtils { public static Bandwidth salAdvertisedBandwidthFrom(NodeConnector nodeConnector) { FlowCapableNodeConnector flowCapNodeConn = nodeConnector.getAugmentation(FlowCapableNodeConnector.class); PortFeatures portFeatures = flowCapNodeConn.getAdvertisedFeatures(); return new AdvertisedBandwidth(resolveBandwidth(portFeatures)); } public static Bandwidth salPeerBandwidthFrom(NodeConnector nodeConnector) { FlowCapableNodeConnector flowCapNodeConn = nodeConnector.getAugmentation(FlowCapableNodeConnector.class); PortFeatures portFeatures = flowCapNodeConn.getPeerFeatures(); return new PeerBandwidth(resolveBandwidth(portFeatures)); } public static Bandwidth salSupportedBandwidthFrom(NodeConnector nodeConnector) { FlowCapableNodeConnector flowCapNodeConn = nodeConnector.getAugmentation(FlowCapableNodeConnector.class); PortFeatures portFeatures = flowCapNodeConn.getSupported(); return new SupportedBandwidth(resolveBandwidth(portFeatures)); } public static MacAddress salMacAddressFrom(NodeConnector nodeConnector) { FlowCapableNodeConnector flowCapNodeConn = nodeConnector.getAugmentation(FlowCapableNodeConnector.class); String hwAddress = flowCapNodeConn.getHardwareAddress().getValue(); return new MacAddress(bytesFrom(hwAddress)); } public static Name salNameFrom(NodeConnector nodeConnector) { FlowCapableNodeConnector flowCapNodeConn = nodeConnector.getAugmentation(FlowCapableNodeConnector.class); return new Name(flowCapNodeConn.getName()); } private static byte[] bytesFrom(String hwAddress) { String[] mac = hwAddress.split(":"); byte[] macAddress = new byte[6]; // mac.length == 6 bytes for (int i = 0; i < mac.length; i++) { macAddress[i] = Integer.decode("0x" + mac[i]).byteValue(); } return macAddress; } private static long resolveBandwidth(PortFeatures portFeatures) { if (portFeatures.is_1tbFd()) { return Bandwidth.BW1Tbps; } else if (portFeatures.is_100gbFd()) { return Bandwidth.BW100Gbps; } else if (portFeatures.is_40gbFd()) { return Bandwidth.BW40Gbps; } else if (portFeatures.is_10gbFd()) { return Bandwidth.BW10Gbps; } else if (portFeatures.is_1gbHd() || portFeatures.is_1gbFd()) { return Bandwidth.BW1Gbps; } else if (portFeatures.is_100mbHd() || portFeatures.is_100mbFd()) { return Bandwidth.BW100Mbps; } else if (portFeatures.is_10mbHd() || portFeatures.is_10mbFd()) { return Bandwidth.BW10Mbps; } else { return Bandwidth.BWUNK; } } }