Bug 3269 Floating IP association in a model 75/21075/3
authorMartin Sunal <msunal@cisco.com>
Mon, 25 May 2015 21:02:44 +0000 (23:02 +0200)
committerMartin Sunal <msunal@cisco.com>
Mon, 25 May 2015 21:39:12 +0000 (21:39 +0000)
Change-Id: Ieaab358da8f2b37712ec31d5064954d60aa6d30d
Signed-off-by: Martin Sunal <msunal@cisco.com>
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/util/IidFactory.java
neutron-mapper/src/main/yang/neutron-gbp-mapper.yang

index 630d4678d451dc5f52a06a20b7fcc1a70ca11ed6..916d6ea79cac30ec49120ff3e9f1be7fbc037436 100644 (file)
@@ -32,20 +32,33 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Key;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3PrefixKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.FloatingIpAssociationMappings;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.GbpByNeutronMappings;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.NeutronByGbpMappings;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.floating.ip.association.mappings.FloatingIpPortsByInternalPorts;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.floating.ip.association.mappings.InternalPortsByFloatingIpPorts;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.floating.ip.association.mappings.floating.ip.ports.by.internal.ports.FloatingIpPortByInternalPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.floating.ip.association.mappings.floating.ip.ports.by.internal.ports.FloatingIpPortByInternalPortKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.floating.ip.association.mappings.internal.ports.by.floating.ip.ports.InternalPortByFloatingIpPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.floating.ip.association.mappings.internal.ports.by.floating.ip.ports.InternalPortByFloatingIpPortKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.EndpointsByFloatingIpPorts;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.EndpointsByPorts;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.EndpointsByRouterGatewayPorts;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.EndpointsByRouterInterfacePorts;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.floating.ip.ports.EndpointByFloatingIpPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.floating.ip.ports.EndpointByFloatingIpPortKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.ports.EndpointByPort;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.ports.EndpointByPortKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.router._interface.ports.EndpointByRouterInterfacePort;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.router._interface.ports.EndpointByRouterInterfacePortKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.router.gateway.ports.EndpointByRouterGatewayPort;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.gbp.by.neutron.mappings.endpoints.by.router.gateway.ports.EndpointByRouterGatewayPortKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.FloatingIpPortsByEndpoints;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.PortsByEndpoints;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.RouterGatewayPortsByEndpoints;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.RouterInterfacePortsByEndpoints;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.floating.ip.ports.by.endpoints.FloatingIpPortByEndpoint;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.floating.ip.ports.by.endpoints.FloatingIpPortByEndpointKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.ports.by.endpoints.PortByEndpoint;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.ports.by.endpoints.PortByEndpointKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.router._interface.ports.by.endpoints.RouterInterfacePortByEndpoint;
@@ -280,7 +293,8 @@ public class IidFactory {
             .build();
     }
 
-    public static InstanceIdentifier<RouterGatewayPortByEndpoint> routerGatewayPortByEndpointIid(L2BridgeDomainId l2BdId, MacAddress mac) {
+    public static InstanceIdentifier<RouterGatewayPortByEndpoint> routerGatewayPortByEndpointIid(
+            L2BridgeDomainId l2BdId, MacAddress mac) {
         return InstanceIdentifier.builder(
                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings.class)
             .child(NeutronByGbpMappings.class)
@@ -298,7 +312,8 @@ public class IidFactory {
             .build();
     }
 
-    public static InstanceIdentifier<RouterInterfacePortByEndpoint> routerInterfacePortByEndpointIid(L2BridgeDomainId l2BdId, MacAddress mac) {
+    public static InstanceIdentifier<RouterInterfacePortByEndpoint> routerInterfacePortByEndpointIid(
+            L2BridgeDomainId l2BdId, MacAddress mac) {
         return InstanceIdentifier.builder(
                 org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings.class)
             .child(NeutronByGbpMappings.class)
@@ -306,4 +321,43 @@ public class IidFactory {
             .child(RouterInterfacePortByEndpoint.class, new RouterInterfacePortByEndpointKey(l2BdId, mac))
             .build();
     }
+
+    public static InstanceIdentifier<EndpointByFloatingIpPort> endpointByFloatingIpPortIid(UniqueId portId) {
+        return InstanceIdentifier.builder(
+                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings.class)
+            .child(GbpByNeutronMappings.class)
+            .child(EndpointsByFloatingIpPorts.class)
+            .child(EndpointByFloatingIpPort.class, new EndpointByFloatingIpPortKey(portId))
+            .build();
+    }
+
+    public static InstanceIdentifier<FloatingIpPortByEndpoint> floatingIpPortByEndpointIid(L2BridgeDomainId l2BdId,
+            MacAddress mac) {
+        return InstanceIdentifier.builder(
+                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings.class)
+            .child(NeutronByGbpMappings.class)
+            .child(FloatingIpPortsByEndpoints.class)
+            .child(FloatingIpPortByEndpoint.class, new FloatingIpPortByEndpointKey(l2BdId, mac))
+            .build();
+    }
+
+    public static InstanceIdentifier<InternalPortByFloatingIpPort> internalPortByFloatingIpPortIid(
+            UniqueId floatingIpPortId) {
+        return InstanceIdentifier.builder(
+                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings.class)
+            .child(FloatingIpAssociationMappings.class)
+            .child(InternalPortsByFloatingIpPorts.class)
+            .child(InternalPortByFloatingIpPort.class, new InternalPortByFloatingIpPortKey(floatingIpPortId))
+            .build();
+    }
+
+    public static InstanceIdentifier<FloatingIpPortByInternalPort> floatingIpPortByInternalPortIid(
+            UniqueId floatingIpPortId) {
+        return InstanceIdentifier.builder(
+                org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.Mappings.class)
+            .child(FloatingIpAssociationMappings.class)
+            .child(FloatingIpPortsByInternalPorts.class)
+            .child(FloatingIpPortByInternalPort.class, new FloatingIpPortByInternalPortKey(floatingIpPortId))
+            .build();
+    }
 }
index 9aeb0ec6227a1e6b5e9c65f066c472cbc0fbc1c3..af849e218c515a1283a046f76176f1327edcc0ac 100644 (file)
@@ -55,6 +55,15 @@ module neutron-gbp-mapper {
                     uses neutron-port-key;
                 }
             }
+            container floating-ip-ports-by-endpoints {
+                description "Neutron floating IP ports by groupbasedpolicy endpoint";
+                list floating-ip-port-by-endpoint {
+                    description "Neutron floating ip port key by groupbasedpolicy endpoint key";
+                    key "l2-context mac-address";
+                    uses gbp-endpoint:l2-key;
+                    uses neutron-port-key;
+                }
+            }
         }
 
         container gbp-by-neutron-mappings {
@@ -86,6 +95,65 @@ module neutron-gbp-mapper {
                     uses gbp-endpoint:l2-key;
                 }
             }
+            container endpoints-by-floating-ip-ports {
+                description "Groupbasedpolicy endpoints by neutron floating IP ports";
+                list endpoint-by-floating-ip-port {
+                    description "Groupbasedpolicy endpoint key by neutron floating IP port key";
+                    key port-id;
+                    uses neutron-port-key;
+                    uses gbp-endpoint:l2-key;
+                }
+            }
+        }
+
+        container floating-ip-association-mappings {
+            description "Mapping of association between neutron port representing floating IP and internal neutron port";
+            container internal-ports-by-floating-ip-ports {
+                list internal-port-by-floating-ip-port {
+                    key floating-ip-port-id;
+                    leaf floating-ip-port-id {
+                        description "A unique ID for the neutron port";
+                        type gbp-common:unique-id;
+                        mandatory true;
+                    }
+                    leaf floating-ip-port-ip-address {
+                        type inet:ip-address;
+                        mandatory true;
+                    }
+                    leaf internal-port-id {
+                        description "A unique ID for the neutron port";
+                        type gbp-common:unique-id;
+                        mandatory true;
+                    }
+                    leaf internal-port-ip-address {
+                        type inet:ip-address;
+                        mandatory true;
+                    }
+                }
+            }
+            container floating-ip-ports-by-internal-ports {
+                list floating-ip-port-by-internal-port {
+                    key internal-port-id;
+                    leaf internal-port-id {
+                        description "A unique ID for the neutron port";
+                        type gbp-common:unique-id;
+                        mandatory true;
+                    }
+                    leaf internal-port-ip-address {
+                        type inet:ip-address;
+                        mandatory true;
+                    }
+                    leaf floating-ip-port-id {
+                        description "A unique ID for the neutron port";
+                        type gbp-common:unique-id;
+                        mandatory true;
+                    }
+                    leaf floating-ip-port-ip-address {
+                        type inet:ip-address;
+                        mandatory true;
+                    }
+                }
+            }
         }
     }