Merge "Use ${project.version} for internal dependencies"
[ovsdb.git] / openstack / net-virt / src / main / java / org / opendaylight / ovsdb / openstack / netvirt / impl / SecurityServicesImpl.java
index c5f7f58691f429a4f5dc66ee956cf4a9db4487ed..11e8943a1d8d04fe0e465d7c5629a47d633649a9 100644 (file)
@@ -71,7 +71,12 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
         }
         NeutronPort neutronPort = neutronPortCache.getPort(neutronPortId);
         if (neutronPort == null) {
-            return false;
+            neutronPort = neutronL3Adapter.getPortFromCleanupCache(neutronPortId);
+            if (neutronPort == null) {
+                LOG.error("isPortSecurityReady for {}", terminationPointAugmentation.getName()
+                          + "not found");
+                return false;
+            }
         }
         String deviceOwner = neutronPort.getDeviceOwner();
         if (!deviceOwner.contains("compute")) {
@@ -96,7 +101,7 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
             LOG.error("neutron port is null");
             return neutronSecurityGroups;
         }
-        LOG.trace("isPortSecurityReady for {}", terminationPointAugmentation.getName());
+        LOG.trace("getSecurityGroupInPortList for {}", terminationPointAugmentation.getName());
         String neutronPortId = southbound.getInterfaceExternalIdsValue(terminationPointAugmentation,
                                                                        Constants.EXTERNAL_ID_INTERFACE_ID);
         if (neutronPortId == null) {
@@ -104,7 +109,12 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
         }
         NeutronPort neutronPort = neutronPortCache.getPort(neutronPortId);
         if (neutronPort == null) {
-            return neutronSecurityGroups;
+            neutronPort = neutronL3Adapter.getPortFromCleanupCache(neutronPortId);
+            if (neutronPort == null) {
+                LOG.error("getSecurityGroupInPortList for {}", terminationPointAugmentation.getName()
+                          + "not found.");
+                return neutronSecurityGroups;
+            }
         }
         neutronSecurityGroups = neutronPort.getSecurityGroups();
         return neutronSecurityGroups;
@@ -129,11 +139,10 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
                 neutronPort = neutronPortCache.getPort(neutronPortId);
 
             }
-            if (neutronPort == null ){
+            if (neutronPort == null{
                 neutronPort = neutronL3Adapter.getPortFromCleanupCache(neutronPortId);
-                if (neutronPort == null)
-                {
-                    LOG.info("getDHCPServerPort: neutron port of {} is not found", neutronPortId);
+                if (neutronPort == null) {
+                    LOG.error("getDHCPServerPort: neutron port of {} is not found", neutronPortId);
                     return null;
                 }
                 LOG.info("getDHCPServerPort: neutron port of {} got from cleanupcache", neutronPortId);
@@ -189,8 +198,11 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
         }
         NeutronPort neutronPort = neutronPortCache.getPort(neutronPortId);
         if (neutronPort == null) {
-            LOG.error("getNeutronPortFromDhcpIntf: neutron port of {} is not found", neutronPortId);
-            return null;
+            neutronPort = neutronL3Adapter.getPortFromCleanupCache(neutronPortId);
+            if (neutronPort == null) {
+                LOG.error("getNeutronPortFromDhcpIntf: neutron port of {} is not found", neutronPortId);
+                return null;
+            }
         }
         /* if the current port is a DHCP port, return true*/
         if (neutronPort.getDeviceOwner().contains("dhcp")) {
@@ -216,19 +228,18 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
                 neutronPort = neutronPortCache.getPort(neutronPortId);
 
             }
-            if (neutronPort == null ){
+            if (neutronPort == null{
                 LOG.trace("getNeutronPortFromCache: neutron port of {} search in cleanupcache", neutronPortId);
 
                 neutronPort = neutronL3Adapter.getPortFromCleanupCache(neutronPortId);
-                if (neutronPort == null)
-                {
-                    LOG.info("getNeutronPortFromCache: neutron port of {} is not found", neutronPortId);
+                if (neutronPort == null) {
+                    LOG.error("getNeutronPortFromCache: neutron port of {} is not found", neutronPortId);
                     return null;
                 }
                 LOG.trace("getNeutronPortFromCache: neutron port of {} got from cleanupcache", neutronPortId);
 
             }
-        }catch (Exception e) {
+        } catch (Exception e) {
             LOG.warn("getNeutronPortFromCache:getNeutronPortFromCache failed due to ", e);
             return null;
         }
@@ -240,7 +251,7 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
     @Override
     public boolean isComputePort(OvsdbTerminationPointAugmentation terminationPointAugmentation) {
         if (neutronPortCache == null) {
-           LOG.warn("isComputePort : neutronPortCache is null");
+            LOG.warn("isComputePort : neutronPortCache is null");
         }
         NeutronPort neutronPort = null;
         LOG.trace("isComputePort for {}", terminationPointAugmentation.getName());
@@ -254,8 +265,9 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
         }
         if (neutronPort == null) {
             neutronPort = getNeutronPortFromCache(terminationPointAugmentation);
-            if (neutronPort == null)
-            return false;
+            if (neutronPort == null) {
+                return false;
+            }
         }
         /*Check the device owner and if it contains compute to identify
          * whether it is a compute port.*/
@@ -385,7 +397,8 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
         /*For every port check whether security grouplist contains the current
          * security group.*/
         try {
-            for (NeutronPort neutronPort:neutronPortCache.getAllPorts()) {
+            for (String neutronPortUuid:neutronL3Adapter.getPortCleanupCache().keySet()) {
+                NeutronPort neutronPort = neutronL3Adapter.getPortCleanupCache().get(neutronPortUuid);
                 if (!neutronPort.getDeviceOwner().contains("compute")) {
                     LOG.debug("getVMListForSecurityGroup : the port {} is not "
                             + "compute port belongs to {}", neutronPort.getID(), neutronPort.getDeviceOwner());
@@ -426,6 +439,9 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
                 return;
             }
             NeutronNetwork neutronNetwork = neutronNetworkCache.getNetwork(port.getNetworkUUID());
+            if (null == neutronNetwork) {
+                neutronNetwork = neutronL3Adapter.getNetworkFromCleanupCache(port.getNetworkUUID());
+            }
             if (neutronNetwork == null) {
                 return;
             }
@@ -468,6 +484,9 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
                 return;
             }
             NeutronNetwork neutronNetwork = neutronNetworkCache.getNetwork(port.getNetworkUUID());
+            if (null == neutronNetwork) {
+                neutronNetwork = neutronL3Adapter.getNetworkFromCleanupCache(port.getNetworkUUID());
+            }
             if (neutronNetwork == null) {
                 return;
             }
@@ -486,15 +505,14 @@ public class SecurityServicesImpl implements ConfigInterface, SecurityServicesMa
             if (dpid == 0L) {
                 return;
             }
-            if ("IPv4".equals(securityRule.getSecurityRuleEthertype())
-                    && "ingress".equals(securityRule.getSecurityRuleDirection())) {
-
-                ingressAclProvider.programPortSecurityRule(dpid, segmentationId, attachedMac, localPort,
-                                                           securityRule, vmIp, write);
-            } else if (securityRule.getSecurityRuleEthertype().equals("IPv4")
-                    && securityRule.getSecurityRuleDirection().equals("egress")) {
-                egressAclProvider.programPortSecurityRule(dpid, segmentationId, attachedMac, localPort,
-                                                          securityRule, vmIp, write);
+            if (NeutronSecurityRule.ETHERTYPE_IPV4.equals(securityRule.getSecurityRuleEthertype())) {
+                if (NeutronSecurityRule.DIRECTION_INGRESS.equals(securityRule.getSecurityRuleDirection())) {
+                    ingressAclProvider.programPortSecurityRule(dpid, segmentationId, attachedMac, localPort,
+                            securityRule, vmIp, write);
+                } else if (NeutronSecurityRule.DIRECTION_EGRESS.equals(securityRule.getSecurityRuleDirection())) {
+                    egressAclProvider.programPortSecurityRule(dpid, segmentationId, attachedMac, localPort,
+                            securityRule, vmIp, write);
+                }
             }
         }
     }