From 0d04dfd0657b0124450915d8526685362648379a Mon Sep 17 00:00:00 2001 From: Shashidhar Raja Date: Mon, 21 May 2018 15:06:49 +0530 Subject: [PATCH] NEUTRON-162: vlan_transparent attribute is missing in network_attributes Added support for vlan_transparent in network_attributes Change-Id: I9006f3a63baa8edf9d72eafef866793451720036 Signed-off-by: Shashidhar Raja --- .../neutron/e2etest/NeutronNetworkTests.java | 21 +++++++++----- model/src/main/yang/neutron-networks.yang | 7 +++++ .../neutron/spi/NeutronNetwork.java | 12 +++++--- .../neutron/spi/NeutronNetworkJAXBTest.java | 29 ++++++++++++------- .../transcriber/NeutronNetworkInterface.java | 6 ++++ 5 files changed, 54 insertions(+), 21 deletions(-) diff --git a/integration/test-standalone/src/main/java/org/opendaylight/neutron/e2etest/NeutronNetworkTests.java b/integration/test-standalone/src/main/java/org/opendaylight/neutron/e2etest/NeutronNetworkTests.java index 9610b022a..32a7c84a7 100644 --- a/integration/test-standalone/src/main/java/org/opendaylight/neutron/e2etest/NeutronNetworkTests.java +++ b/integration/test-standalone/src/main/java/org/opendaylight/neutron/e2etest/NeutronNetworkTests.java @@ -65,7 +65,8 @@ public class NeutronNetworkTests { + " \"provider:network_type\": \"vlan\" }, { " + " \"provider:segmentation_id\": null, " + " \"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", " + " \"provider:network_type\": \"stt\" } ], " - + " \"shared\": false, \"id\": \"4e8e5957-649f-477b-9e5b-f1f75b21c03c\" " + " } } "; + + " \"shared\": false, \"vlan_transparent\": false, " + + " \"id\": \"4e8e5957-649f-477b-9e5b-f1f75b21c03c\" " + " } } "; HttpUtils.test_create(url, content, "Singleton Network Post Failed NB"); return content; } @@ -106,6 +107,12 @@ public class NeutronNetworkTests { jsonObjectOutput = jsonObjectOutput.getAsJsonObject("network"); jsonElementValue = jsonObjectOutput.get(element); Assert.assertEquals(context, false, jsonElementValue.getAsBoolean()); + element = "vlan_transparent"; + url = base + "/networks/de8e5957-d49f-d77b-de5b-d1f75b21c03c?fields=" + element; + jsonObjectOutput = HttpUtils.test_fetch_gson(url, context); + jsonObjectOutput = jsonObjectOutput.getAsJsonObject("network"); + jsonElementValue = jsonObjectOutput.get(element); + Assert.assertEquals(context, false, jsonElementValue.getAsBoolean()); } //TODO handle SB check @@ -114,7 +121,7 @@ public class NeutronNetworkTests { String content = "{ \"network\": {" + " \"status\": \"ACTIVE\", \"subnets\": [], " + " \"name\": \"external1\", \"admin_state_up\": true, " + " \"tenant_id\": \"9bacb3c5d39d41a79512987f338cf177\", " - + " \"router:external\": true, \"shared\": false, " + + " \"router:external\": true, \"shared\": false, \"vlan_transparent\": false," + " \"id\": \"8ca37218-28ff-41cb-9b10-039601ea7e6b\" } } "; HttpUtils.test_create(url, content, "External Network Post Failed NB"); } @@ -125,13 +132,13 @@ public class NeutronNetworkTests { String content = "{ \"networks\": [ { " + "\"status\": \"ACTIVE\", \"subnets\": [], " + "\"name\": \"sample_network3\", " + "\"provider:physical_network\": null, " + "\"admin_state_up\": true, " + "\"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\", " - + "\"provider:network_type\": \"local\", " + "\"shared\": false, " + + "\"provider:network_type\": \"local\", " + "\"shared\": false, \"vlan_transparent\": false, " + "\"id\": \"bc1a76cb-8767-4c3a-bb95-018b822f2130\", " + "\"provider:segmentation_id\": null }, { " + "\"status\": \"ACTIVE\", " + "\"subnets\": [], " + "\"name\": \"sample_network4\", " + "\"provider:physical_network\": null, " + "\"admin_state_up\": true, " + "\"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\", " + "\"provider:network_type\": \"local\", " - + "\"shared\": false, " + "\"id\": \"af374017-c9ae-4a1d-b799-ab73111476e2\", " - + "\"provider:segmentation_id\": null } ] } "; + + "\"shared\": false, " + "\"vlan_transparent\": false, " + + "\"id\": \"af374017-c9ae-4a1d-b799-ab73111476e2\", " + "\"provider:segmentation_id\": null } ] } "; HttpUtils.test_create(url, content, "Bulk Network Post Failed"); } @@ -142,7 +149,7 @@ public class NeutronNetworkTests { + "\"name\": \"sample_network_5_updated\", " + "\"provider:physical_network\": null, " + "\"admin_state_up\": true, " + "\"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\", " + "\"provider:network_type\": \"local\", " + "\"router:external\": false, " + "\"shared\": false, " - + "\"provider:segmentation_id\": null } } "; + + "\"vlan_transparent\": false, " + "\"provider:segmentation_id\": null } } "; HttpUtils.test_modify(url, content, "Network Put Failed"); } @@ -161,7 +168,7 @@ public class NeutronNetworkTests { + "?fields=status&fields=subnets&fields=name" + "&fields=provider:physical_network&fields=admin_state_up" + "&fields=tenant_id&fields=provides:network_type" - + "&fields=router:external&fields=shared&fields=provider:segmentation_id"; + + "&fields=router:external&fields=shared&fields=vlan_transparent&fields=provider:segmentation_id"; HttpUtils.test_fetch(url, true, "Network Element with query Get Failed"); } diff --git a/model/src/main/yang/neutron-networks.yang b/model/src/main/yang/neutron-networks.yang index 58555ba0e..d065fdd82 100644 --- a/model/src/main/yang/neutron-networks.yang +++ b/model/src/main/yang/neutron-networks.yang @@ -81,6 +81,13 @@ module neutron-networks { value."; } + leaf vlan-transparent { + type boolean; + default "false"; + description "The state of the network, which is VLAN transparent (true) or + not VLAN transparent (false)"; + } + uses attrs:base-attributes; uses attrs:admin-attributes; } diff --git a/neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork.java b/neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork.java index 174575163..40acdb669 100644 --- a/neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork.java +++ b/neutron-spi/src/main/java/org/opendaylight/neutron/spi/NeutronNetwork.java @@ -172,6 +172,9 @@ public final class NeutronNetwork extends NeutronAdminAttributes case "shared": ans.setShared(isShared()); break; + case "vlan_transparent": + ans.setVlanTransparent(this.getVlanTransparent()); + break; case "external": ans.setRouterExternal(this.getRouterExternal()); break; @@ -196,9 +199,10 @@ public final class NeutronNetwork extends NeutronAdminAttributes @Override public String toString() { return "NeutronNetwork [networkUUID=" + uuid + ", networkName=" + name + ", adminStateUp=" + adminStateUp - + ", shared=" + shared + ", tenantID=" + tenantID + ", routerExternal=" + routerExternal - + ", providerNetworkType=" + providerNetworkType + ", providerPhysicalNetwork=" - + providerPhysicalNetwork + ", providerSegmentationID=" + providerSegmentationID + ", status=" + status - + ", qosPolicyId =" + qosPolicyId + ", segments = " + segments + "]"; + + ", shared=" + shared + ", vlanTransparent=" + vlanTransparent + ", tenantID=" + tenantID + + ", routerExternal=" + routerExternal + ", providerNetworkType=" + providerNetworkType + + ", providerPhysicalNetwork=" + providerPhysicalNetwork + ", providerSegmentationID=" + + providerSegmentationID + ", status=" + status + ", qosPolicyId =" + qosPolicyId + + ", segments = " + segments + "]"; } } diff --git a/neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronNetworkJAXBTest.java b/neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronNetworkJAXBTest.java index af4cb5998..f8e344dad 100644 --- a/neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronNetworkJAXBTest.java +++ b/neutron-spi/src/test/java/org/opendaylight/neutron/spi/NeutronNetworkJAXBTest.java @@ -20,7 +20,7 @@ public class NeutronNetworkJAXBTest { + "\"admin_state_up\": true, " + "\"tenant_id\": \"9bacb3c5d39d41a79512987f338cf177\", " + "\"router:external\": false, " + "\"provider:segmentation_id\": \"2\", " + "\"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", " - + "\"provider:network_type\": \"vlan\", " + "\"shared\": false, " + + "\"provider:network_type\": \"vlan\", " + "\"shared\": false, " + "\"vlan_transparent\": false, " + "\"id\": \"4e8e5957-649f-477b-9e5b-f1f75b21c03c\" }"; @Test @@ -51,6 +51,9 @@ public class NeutronNetworkJAXBTest { Assert.assertEquals("NeutronNetwork JAXB Test 11: Testing shared failed", false, testObject.getShared()); + Assert.assertEquals("NeutronNetwork JAXB Test 12: Testing vlan_transparent failed", false, + testObject.getVlanTransparent()); + Assert.assertEquals("NeutronNetwork JAXB Test 2: Testing tenant_id failed", "9bacb3c5d39d41a79512987f338cf177", testObject.getTenantID()); } @@ -62,7 +65,7 @@ public class NeutronNetworkJAXBTest { + "\"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", " + "\"provider:network_type\": \"vlan\" }, " + "{ \"provider:segmentation_id\": null, " + "\"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50454\", " - + "\"provider:network_type\": \"stt\" } ], " + "\"shared\": false, " + + "\"provider:network_type\": \"stt\" } ], " + "\"shared\": false, " + "\"vlan_transparent\": false, " + "\"id\": \"4e8e5957-649f-477b-9e5b-f1f75b21c03c\" }"; @Test @@ -84,26 +87,29 @@ public class NeutronNetworkJAXBTest { Assert.assertEquals("NeutronNetwork JAXB Test 8: Testing shared failed", false, testObject.getShared()); + Assert.assertEquals("NeutronNetwork JAXB Test 9: Testing vlan_transparent failed", false, + testObject.getVlanTransparent()); + List segments = testObject.getSegments(); - Assert.assertEquals("NeutronNetwork JAXB Test 9.1: Testing segments list length failed", 2, + Assert.assertEquals("NeutronNetwork JAXB Test 10.1: Testing segments list length failed", 2, segments.size()); - Assert.assertEquals("NeutronNetwork JAXB Test 9.2: Testing segment index 0 segmentation id failed", "2", + Assert.assertEquals("NeutronNetwork JAXB Test 10.2: Testing segment index 0 segmentation id failed", "2", segments.get(0).getProviderSegmentationID()); - Assert.assertEquals("NeutronNetwork JAXB Test 9.3: Testing segment index 0 physical network failed", + Assert.assertEquals("NeutronNetwork JAXB Test 10.3: Testing segment index 0 physical network failed", "8bab8453-1bc9-45af-8c70-f83aa9b50453", segments.get(0).getProviderPhysicalNetwork()); - Assert.assertEquals("NeutronNetwork JAXB Test 9.4: Testing segment index 0 network type failed", "vlan", + Assert.assertEquals("NeutronNetwork JAXB Test 10.4: Testing segment index 0 network type failed", "vlan", segments.get(0).getProviderNetworkType()); - Assert.assertEquals("NeutronNetwork JAXB Test 9.5: Testing segment index 1 segmentation id failed", null, + Assert.assertEquals("NeutronNetwork JAXB Test 10.5: Testing segment index 1 segmentation id failed", null, segments.get(1).getProviderSegmentationID()); - Assert.assertEquals("NeutronNetwork JAXB Test 9.3: Testing segment index 1 physical network failed", + Assert.assertEquals("NeutronNetwork JAXB Test 10.3: Testing segment index 1 physical network failed", "8bab8453-1bc9-45af-8c70-f83aa9b50454", segments.get(1).getProviderPhysicalNetwork()); - Assert.assertEquals("NeutronNetwork JAXB Test 9.4: Testing segment index 1 network type failed", "stt", + Assert.assertEquals("NeutronNetwork JAXB Test 10.4: Testing segment index 1 network type failed", "stt", segments.get(1).getProviderNetworkType()); Assert.assertEquals("NeutronNetwork JAXB Test 2: Testing tenant_id failed", @@ -113,7 +119,7 @@ public class NeutronNetworkJAXBTest { private static final String NEUTRON_NETWORK_L3_HA_SOURCE_JSON = "{" + "\"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, " + + "\"mtu\": 0, " + "\"router:external\": false, " + "\"shared\": false, " + "\"vlan_transparent\": false, " + "\"port_security_enabled\": true, " + "\"provider:network_type\": \"vxlan\", " + "\"id\": \"d3a2beea-c6ca-4e76-ba7d-e947c5df0c0e\", " + "\"provider:segmentation_id\": 1018 " + "}"; @@ -138,6 +144,9 @@ public class NeutronNetworkJAXBTest { Assert.assertEquals("NeutronNetwork JAXB Test 7: Testing provider segmentation id failed", "1018", testObject.getProviderSegmentationID()); + Assert.assertEquals("NeutronNetwork JAXB Test 8: Testing vlan_transparent failed", false, + testObject.getVlanTransparent()); + // Bug 4775: tenantId is null when json provides it as empty string Assert.assertNull("NeutronNetwork JAXB Test 2: Testing tenant_id failed", testObject.getTenantID()); } diff --git a/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronNetworkInterface.java b/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronNetworkInterface.java index 7075e7221..8e9894e0c 100644 --- a/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronNetworkInterface.java +++ b/transcriber/src/main/java/org/opendaylight/neutron/transcriber/NeutronNetworkInterface.java @@ -63,6 +63,7 @@ public final class NeutronNetworkInterface result.initDefaults(); fromMdAdminAttributes(network, result); result.setShared(network.isShared()); + result.setVlanTransparent(network.isVlanTransparent()); final NetworkL3Extension l3Extension = network.getAugmentation(NetworkL3Extension.class); result.setRouterExternal(l3Extension.isExternal()); @@ -150,6 +151,11 @@ public final class NeutronNetworkInterface if (network.getShared() != null) { networkBuilder.setShared(network.getShared()); } + + if (network.getVlanTransparent() != null) { + networkBuilder.setVlanTransparent(network.getVlanTransparent()); + } + return networkBuilder.build(); } } -- 2.36.6