Implementation of INeutronFloatingIPAware introduced 54/20154/7
authorMartin Sunal <msunal@cisco.com>
Tue, 12 May 2015 17:02:14 +0000 (19:02 +0200)
committerMartin Sunal <msunal@cisco.com>
Thu, 14 May 2015 00:01:22 +0000 (02:01 +0200)
Tenant NPE temp fix - REMOVE BEFORE PUBLISH
identification of router-gateway

Change-Id: Ibc84fcee36f7604fc0794f456bf153f21e52c56e
Signed-off-by: Martin Sunal <msunal@cisco.com>
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/NeutronMapper.java
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronFloatingIpAware.java [new file with mode: 0644]
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronPortAware.java

index 724107e61ab83a2a52280ef3820870e1ed411989..e973936fbf76ba496ae6234faf59de4703e1b1cc 100644 (file)
@@ -15,11 +15,13 @@ import java.util.List;
 
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronFloatingIpAware;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronNetworkAware;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronPortAware;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronRouterAware;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronSecurityGroupAware;
 import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.NeutronSubnetAware;
+import org.opendaylight.neutron.spi.INeutronFloatingIPAware;
 import org.opendaylight.neutron.spi.INeutronNetworkAware;
 import org.opendaylight.neutron.spi.INeutronPortAware;
 import org.opendaylight.neutron.spi.INeutronRouterAware;
@@ -63,6 +65,10 @@ public class NeutronMapper implements AutoCloseable {
         ServiceRegistration<INeutronRouterAware> neutronRouterAwareRegistration = context.registerService(
                 INeutronRouterAware.class, NeutronRouterAware.getInstance(), null);
         registrations.add(neutronRouterAwareRegistration);
+
+        ServiceRegistration<INeutronFloatingIPAware> neutronFloatingIpAwareRegistration = context.registerService(
+                INeutronFloatingIPAware.class, new NeutronFloatingIpAware(dataProvider), null);
+        registrations.add(neutronFloatingIpAwareRegistration);
     }
 
     /**
diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronFloatingIpAware.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronFloatingIpAware.java
new file mode 100644 (file)
index 0000000..ffecbb3
--- /dev/null
@@ -0,0 +1,54 @@
+package org.opendaylight.groupbasedpolicy.neutron.mapper.mapping;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.neutron.spi.INeutronFloatingIPAware;
+import org.opendaylight.neutron.spi.NeutronFloatingIP;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Preconditions;
+
+
+public class NeutronFloatingIpAware implements INeutronFloatingIPAware {
+
+    public static final Logger LOG = LoggerFactory.getLogger(NeutronFloatingIpAware.class);
+    private final DataBroker dataProvider;
+
+    public NeutronFloatingIpAware(DataBroker dataProvider) {
+        this.dataProvider = Preconditions.checkNotNull(dataProvider);
+    }
+
+    @Override
+    public int canCreateFloatingIP(NeutronFloatingIP floatingIP) {
+        LOG.trace("canCreateFloatingIP - {}", floatingIP);
+        return StatusCode.OK;
+    }
+
+    @Override
+    public void neutronFloatingIPCreated(NeutronFloatingIP floatingIP) {
+        LOG.trace("neutronFloatingIPCreated - {}", floatingIP);
+    }
+
+    @Override
+    public int canUpdateFloatingIP(NeutronFloatingIP delta, NeutronFloatingIP original) {
+        LOG.trace("canUpdateFloatingIP - delta: {} original: {}", delta, original);
+        return StatusCode.OK;
+    }
+
+    @Override
+    public void neutronFloatingIPUpdated(NeutronFloatingIP floatingIP) {
+        LOG.trace("neutronFloatingIPUpdated - {}", floatingIP);
+    }
+
+    @Override
+    public int canDeleteFloatingIP(NeutronFloatingIP floatingIP) {
+        LOG.trace("canDeleteFloatingIP - {}", floatingIP);
+        return StatusCode.OK;
+    }
+
+    @Override
+    public void neutronFloatingIPDeleted(NeutronFloatingIP floatingIP) {
+        LOG.trace("neutronFloatingIPDeleted - {}", floatingIP);
+    }
+
+}
index 4f391e3be5cd9d1999308f62054d99c952d9ebb5..a14e4d0a10022514f4e3a60f00766562a202356b 100644 (file)
@@ -77,6 +77,8 @@ public class NeutronPortAware implements INeutronPortAware {
     public static final Logger LOG = LoggerFactory.getLogger(NeutronPortAware.class);
     private static final String DEVICE_OWNER_DHCP = "network:dhcp";
     private static final String DEVICE_OWNER_ROUTER_IFACE = "network:router_interface";
+    private static final String DEVICE_OWNER_ROUTER_GATEWAY = "network:router_gateway";
+    private static final String DEVICE_OWNER_FLOATING_IP = "network:floatingip";
     private static final int DHCP_CLIENT_PORT = 68;
     private static final int DHCP_SERVER_PORT = 67;
     private final DataBroker dataProvider;
@@ -113,10 +115,22 @@ public class NeutronPortAware implements INeutronPortAware {
                     NeutronPortAware.class.getSimpleName(), NeutronRouterAware.class.getSimpleName());
             return;
         }
+        if (isRouterGatewayPort(port)) {
+            LOG.trace("Port is router gateway - {}", port.getID());
+            return;
+        }
+        if (isFloatingIp(port)) {
+            LOG.trace("Port is floating ip - {}", port.getID());
+            return;
+        }
+        if (Strings.isNullOrEmpty(port.getTenantID())) {
+            LOG.trace("REMOVE ME: Tenant is null - {}", port.getID());
+            return;
+        }
         ReadWriteTransaction rwTx = dataProvider.newReadWriteTransaction();
         TenantId tenantId = new TenantId(Utils.normalizeUuid(port.getTenantID()));
         if (isDhcpPort(port)) {
-            LOG.trace("Port is DHCP port.");
+            LOG.trace("Port is DHCP port. - {}", port.getID());
             List<NeutronSecurityRule> dhcpSecRules = createDhcpSecRules(port, null, rwTx);
             if (dhcpSecRules == null) {
                 rwTx.cancel();
@@ -316,6 +330,19 @@ public class NeutronPortAware implements INeutronPortAware {
                     NeutronPortAware.class.getSimpleName(), NeutronRouterAware.class.getSimpleName());
             return;
         }
+        if (isRouterGatewayPort(port)) {
+            LOG.trace("Port is router gateway - {}", port.getID());
+            return;
+        }
+        if (isFloatingIp(port)) {
+            LOG.trace("Port is floating ip - {}", port.getID());
+            return;
+        }
+        if (Strings.isNullOrEmpty(port.getTenantID())) {
+            LOG.trace("REMOVE ME: Tenant is null - {}", port.getID());
+            return;
+        }
+
         ReadOnlyTransaction rTx = dataProvider.newReadOnlyTransaction();
         TenantId tenantId = new TenantId(Utils.normalizeUuid(port.getTenantID()));
         MacAddress macAddress = new MacAddress(port.getMacAddress());
@@ -532,6 +559,14 @@ public class NeutronPortAware implements INeutronPortAware {
         return DEVICE_OWNER_ROUTER_IFACE.equals(port.getDeviceOwner());
     }
 
+    private static boolean isRouterGatewayPort(NeutronPort port) {
+        return DEVICE_OWNER_ROUTER_GATEWAY.equals(port.getDeviceOwner());
+    }
+
+    private static boolean isFloatingIp(NeutronPort port) {
+        return DEVICE_OWNER_FLOATING_IP.equals(port.getDeviceOwner());
+    }
+
     private UnregisterEndpointInput createUnregisterEndpointInput(Endpoint ep) {
         UnregisterEndpointInputBuilder inputBuilder = new UnregisterEndpointInputBuilder();
         L2 l2Ep = new L2Builder().setL2Context(ep.getL2Context()).setMacAddress(ep.getMacAddress()).build();