Bug 4775 - handle cases when tenant-id is an empty string 24/31324/5
authorFlavio Fernandes <ffernand@redhat.com>
Tue, 15 Dec 2015 04:33:25 +0000 (23:33 -0500)
committerFlavio Fernandes <ffernand@redhat.com>
Fri, 18 Dec 2015 23:06:46 +0000 (18:06 -0500)
Enhanced transcriber to check cases when tenantId is an empty
string. Previous check were only looking for cases when tenantId
was null.

When ODL is used with l3 agent and l3_ha, subnet/network created
for handling keep alive traffic contains tenant id set to "".

Patch set 2: code review: Simplify changes by adding logic for
checking on empty string at the base object (NeutronObject).

Patch set 3: code review: Remove check in toMd of NeutronPortInterface
because it is no longer needed.

Patch set 4: add UT

Change-Id: I05b61d74fff9c1d4fe373446f60cf0bd98a54e14
Signed-off-by: Flavio Fernandes <ffernand@redhat.com>
neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronObject.java
neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronNetworkJAXBTest.java
transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronPortInterface.java

index 488b395099575dbf476e06335719caf76d402949..7ccbe695072f91eac5b6e3e64bee349b740678ce 100644 (file)
@@ -32,6 +32,11 @@ public class NeutronObject extends Neutron_ID implements Serializable, INeutronO
 
     @Override
     public String getTenantID() {
+        if (tenantID != null && tenantID.isEmpty()) {
+            // Bug 4775 - Treat empty string tenantId as null, so no attempt is made
+            //            to turn it into a uuid.
+            return null;
+        }
         return tenantID;
     }
 
index 170243c4f1ee0558ed373d3076b6831032459803..6721178300996b61abaefbadae42d7b390c2a254 100644 (file)
@@ -138,4 +138,49 @@ public class NeutronNetworkJAXBTest {
             Assert.assertTrue("Tests failed", false);
         }
     }
+
+    private static final String NeutronNetwork_L3_HA_sourceJson="{" +
+            "\"name\": \"HA network tenant c15340eb65804b20af2dd0fd3beddc8c\", " +
+            "\"provider:physical_network\": null, " +
+            "\"admin_state_up\": true, " +
+            "\"tenant_id\": \"\", " +
+            "\"mtu\": 0, " +
+            "\"router:external\": false, " +
+            "\"shared\": false, " +
+            "\"vlan_transparent\": null, " +
+            "\"port_security_enabled\": true, " +
+            "\"provider:network_type\": \"vxlan\", " +
+            "\"id\": \"d3a2beea-c6ca-4e76-ba7d-e947c5df0c0e\", " +
+            "\"provider:segmentation_id\": 1018 " + "}";
+
+    @Test
+    public void test_NeutronNetwork_L3_HA_JAXB() {
+        NeutronNetwork dummyObject = new NeutronNetwork();
+        try {
+            NeutronNetwork testObject = (NeutronNetwork) JaxbTestHelper.jaxbUnmarshall(dummyObject, NeutronNetwork_L3_HA_sourceJson);
+            Assert.assertEquals("NeutronNetwork JAXB Test 1: Testing id failed",
+                    "d3a2beea-c6ca-4e76-ba7d-e947c5df0c0e", testObject.getID());
+
+            // Bug 4775: tenantId is null when json provides it as empty string
+            Assert.assertNull("NeutronNetwork JAXB Test 2: Testing tenant_id failed",
+                    testObject.getTenantID());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 3: Testing name failed",
+                    "HA network tenant c15340eb65804b20af2dd0fd3beddc8c", testObject.getNetworkName());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 4: Testing admin state up failed",
+                    true, testObject.getAdminStateUp());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 5: Testing router external failed",
+                    false, testObject.getRouterExternal());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 6: Testing shared failed",
+                    false, testObject.getShared());
+
+            Assert.assertEquals("NeutronNetwork JAXB Test 7: Testing provider segmentation id failed",
+                    "1018", testObject.getProviderSegmentationID());
+        } catch (Exception e) {
+            Assert.assertTrue("Tests failed", false);
+        }
+    }
 }
index 1ee6e682c9db4335f608b51e436a5fdfb4b7fd21..ba57f0a9fae426d4d2a113dc3042062ec843e0e2 100644 (file)
@@ -300,7 +300,7 @@ public class NeutronPortInterface extends AbstractNeutronInterface<Port, Ports,
         if (neutronPort.getStatus() != null) {
             portBuilder.setStatus(neutronPort.getStatus());
         }
-        if (neutronPort.getTenantID() != null && neutronPort.getTenantID() != "") {
+        if (neutronPort.getTenantID() != null) {
             portBuilder.setTenantId(toUuid(neutronPort.getTenantID()));
         }
         if (neutronPort.getID() != null) {