Merge "Bug 4550 - always rebuild security group rule in security group"
authorSam Hague <shague@redhat.com>
Fri, 12 Feb 2016 00:36:28 +0000 (00:36 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Fri, 12 Feb 2016 00:36:28 +0000 (00:36 +0000)
openstack/net-virt/src/main/java/org/opendaylight/ovsdb/openstack/netvirt/translator/crud/impl/NeutronSecurityGroupInterface.java

index 9c72959492e3c0ae0c39e0c37f764fb06598fe3b..9498dd77cdb0c210d6d2077fe11743054b1639c3 100644 (file)
@@ -115,17 +115,24 @@ public class NeutronSecurityGroupInterface extends AbstractNeutronInterface<Secu
         if (group.getTenantId() != null) {
             answer.setSecurityGroupTenantID(group.getTenantId().getValue().replace("-",""));
         }
-        if (group.getSecurityRules() != null) {
-            NeutronCRUDInterfaces interfaces = new NeutronCRUDInterfaces()
-                .fetchINeutronSecurityRuleCRUD(this);
-            INeutronSecurityRuleCRUD srCrud = interfaces.getSecurityRuleInterface();
-
-            List<NeutronSecurityRule> rules = new ArrayList<>();
-            for (Uuid uuid: group.getSecurityRules()) {
-                 rules.add(srCrud.getNeutronSecurityRule(uuid.getValue()));
+
+        // Bug 4550
+        // https://bugs.opendaylight.org/show_bug.cgi?id=4550
+        // Now SecurityGroup::securityGroupRule isn't updated.
+        // always rebuid it from security group rules
+        NeutronCRUDInterfaces interfaces = new NeutronCRUDInterfaces()
+            .fetchINeutronSecurityRuleCRUD(this);
+        INeutronSecurityRuleCRUD srCrud = interfaces.getSecurityRuleInterface();
+
+        List<NeutronSecurityRule> rules = new ArrayList<NeutronSecurityRule>();
+        String sgId = group.getUuid().getValue();
+        for (NeutronSecurityRule rule: srCrud.getAllNeutronSecurityRules()) {
+            if (rule.getSecurityRuleGroupID() == sgId) {
+                rules.add(rule);
             }
-            answer.setSecurityRules(rules);
         }
+        answer.setSecurityRules(rules);
+
         if (group.getUuid() != null) {
             answer.setID(group.getUuid().getValue());
         }
@@ -144,15 +151,12 @@ public class NeutronSecurityGroupInterface extends AbstractNeutronInterface<Secu
         if (securityGroup.getSecurityGroupTenantID() != null) {
             securityGroupBuilder.setTenantId(toUuid(securityGroup.getSecurityGroupTenantID()));
         }
-        if (securityGroup.getSecurityRules() != null) {
-            List<Uuid> neutronSecurityRule = new ArrayList<>();
-            for (NeutronSecurityRule securityRule : securityGroup.getSecurityRules()) {
-                if (securityRule.getID() != null) {
-                    neutronSecurityRule.add(toUuid(securityRule.getID()));
-                }
-            }
-            securityGroupBuilder.setSecurityRules(neutronSecurityRule);
-        }
+
+        // don't update security group rule, always empty list
+        // Bug 4550
+        // https://bugs.opendaylight.org/show_bug.cgi?id=4550
+        securityGroupBuilder.setSecurityRules(new ArrayList<Uuid>());
+
         if (securityGroup.getID() != null) {
             securityGroupBuilder.setUuid(toUuid(securityGroup.getID()));
         } else {