Merge "removed unused import 'org.opendaylight.yang.gen.v1.urn.ietf.params.xml. ns...
[ovsdb.git] / hwvtepsouthbound / hwvtepsouthbound-impl / src / main / java / org / opendaylight / ovsdb / hwvtepsouthbound / HwvtepSouthboundMapper.java
index 9ea64e8876142b98dcc63252ef19b8b5eb7d3d78..b98cc0d400d67a4abbf10123e5bb7b026db4780b 100644 (file)
@@ -18,18 +18,25 @@ import org.opendaylight.ovsdb.schema.hardwarevtep.Global;
 import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalSwitch;
 import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalLocator;
 import org.opendaylight.ovsdb.schema.hardwarevtep.PhysicalSwitch;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.ConnectionInfo;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitchesKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical._switch.attributes.Tunnels;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical._switch.attributes.TunnelsKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.port.attributes.VlanBindings;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.port.attributes.VlanBindingsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.EncapsulationTypeBase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.EncapsulationTypeVxlanOverIpv4;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepNodeName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalLocatorRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepPhysicalPortAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.PhysicalSwitchAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.ConnectionInfoBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
@@ -46,6 +53,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableBiMap;
+import com.google.common.net.InetAddresses;
 
 public class HwvtepSouthboundMapper {
     private static final Logger LOG = LoggerFactory.getLogger(HwvtepSouthboundMapper.class);
@@ -76,7 +84,7 @@ public class HwvtepSouthboundMapper {
     }
 
     public static NodeId createManagedNodeId(InstanceIdentifier<Node> iid) {
-        NodeKey nodeKey = iid.firstKeyOf(Node.class, NodeKey.class);
+        NodeKey nodeKey = iid.firstKeyOf(Node.class);
         return nodeKey.getNodeId();
     }
 
@@ -91,8 +99,7 @@ public class HwvtepSouthboundMapper {
     }
 
     public static IpAddress createIpAddress(Inet4Address address) {
-        Ipv4Address ipv4 = new Ipv4Address(address.getHostAddress());
-        return new IpAddress(ipv4);
+        return IetfInetUtil.INSTANCE.ipAddressFor(address);
     }
 
     public static IpAddress createIpAddress(Inet6Address address) {
@@ -118,7 +125,7 @@ public class HwvtepSouthboundMapper {
 
     public static InetAddress createInetAddress(IpAddress ip) throws UnknownHostException {
         if (ip.getIpv4Address() != null) {
-            return InetAddress.getByName(ip.getIpv4Address().getValue());
+            return InetAddresses.forString(ip.getIpv4Address().getValue());
         } else if (ip.getIpv6Address() != null) {
             return InetAddress.getByName(ip.getIpv6Address().getValue());
         } else {
@@ -140,14 +147,25 @@ public class HwvtepSouthboundMapper {
 
     public static InstanceIdentifier<Node> createInstanceIdentifier(HwvtepConnectionInstance client,
                     PhysicalSwitch pSwitch) {
-        String nodeString = client.getNodeKey().getNodeId().getValue() + "/physicalswitch/" + pSwitch.getName();
-        NodeId nodeId = new NodeId(new Uri(nodeString));
-        NodeKey nodeKey = new NodeKey(nodeId);
+        //TODO: Clean this up
+        return createInstanceIdentifier(client, new HwvtepNodeName(pSwitch.getName()));
+    }
+
+    public static InstanceIdentifier<Node> createInstanceIdentifier(HwvtepConnectionInstance client,
+                    HwvtepNodeName psName) {
+        NodeKey nodeKey = new NodeKey(createManagedNodeId(client, psName));
         return InstanceIdentifier.builder(NetworkTopology.class)
                         .child(Topology.class, new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID))
                         .child(Node.class, nodeKey).build();
     }
 
+    public static NodeId createManagedNodeId(HwvtepConnectionInstance client, HwvtepNodeName psName) {
+        String nodeString = client.getNodeKey().getNodeId().getValue()
+                        + "/" + HwvtepSouthboundConstants.PSWITCH_URI_PREFIX + "/" + psName.getValue();
+        NodeId nodeId = new NodeId(new Uri(nodeString));
+        return nodeId;
+    }
+
     public static InstanceIdentifier<LogicalSwitches> createInstanceIdentifier(HwvtepConnectionInstance client,
                     LogicalSwitch lSwitch) {
         InstanceIdentifier<LogicalSwitches> iid = null;
@@ -163,6 +181,16 @@ public class HwvtepSouthboundMapper {
         return iid;
     }
 
+    public static InstanceIdentifier<Tunnels> createInstanceIdentifier( InstanceIdentifier<Node> nodeIid,
+                    InstanceIdentifier<TerminationPoint> localTpIid, InstanceIdentifier<TerminationPoint> remoteTpIid) {
+
+        TunnelsKey tunnelsKey = new TunnelsKey(new HwvtepPhysicalLocatorRef(localTpIid),
+                                               new HwvtepPhysicalLocatorRef(remoteTpIid));
+        InstanceIdentifier<Tunnels> tunnelInstanceId = nodeIid.builder().augmentation(PhysicalSwitchAugmentation.class)
+                                                       .child(Tunnels.class, tunnelsKey).build();
+        return tunnelInstanceId;
+    }
+
     public static Class<? extends EncapsulationTypeBase> createEncapsulationType(String type) {
         Preconditions.checkNotNull(type);
         if (type.isEmpty()) {
@@ -192,4 +220,11 @@ public class HwvtepSouthboundMapper {
     public static String getRandomUUID() {
         return "Random_" + java.util.UUID.randomUUID().toString().replace("-", "");
     }
+
+    public static InstanceIdentifier<VlanBindings> createInstanceIdentifier(HwvtepConnectionInstance client,
+            InstanceIdentifier<TerminationPoint> tpPath, VlanBindings vBindings) {
+                return tpPath.augmentation(HwvtepPhysicalPortAugmentation.class) .child(VlanBindings.class,
+                        new VlanBindingsKey(vBindings.getKey()));
+
+    }
 }