Added the support for Shared-Range Policy Flag 13/74613/1
authorPaira, Saurav (sp694w) sp694w@att.com <sp694w@att.com>
Thu, 13 Dec 2018 13:41:05 +0000 (13:41 +0000)
committerPaira, Saurav (sp694w) sp694w@att.com <sp694w@att.com>
Thu, 13 Dec 2018 13:41:05 +0000 (13:41 +0000)
With Shared-Range Flag multiple Keys can share the same vlantag value

Change-Id: I62c9f1ebb504430f0b0fe2932cd26dffa5cc4aed
Issue-ID: CCSDK-823
Signed-off-by: Paira, Saurav (sp694w) sp694w@att.com <sp694w@att.com>
ms/vlantag-api/src/main/java/org/onap/ccsdk/apps/ms/vlantagapi/core/extinf/pm/model/Elements.java
ms/vlantag-api/src/main/java/org/onap/ccsdk/apps/ms/vlantagapi/core/service/VlantagApiServiceImpl.java
ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlantagapi/core/extinf/pm/model/ElementsTest.java
ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlantagapi/core/service/TestVlantagApiServiceImpl.java
ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlantagapi/util/MockPolicyClient.java [new file with mode: 0644]

index 2060463..5ad8561 100644 (file)
@@ -40,6 +40,9 @@ public class Elements {
        @JsonProperty("allowed-range")\r
        private List<AllowedRanges> allowedRanges;\r
        \r
+       @JsonProperty("shared-range")\r
+    private String sharedRange;\r
+       \r
        @JsonProperty("element-vlan-role")\r
        String elementVlanRole;\r
        \r
@@ -76,7 +79,15 @@ public class Elements {
                this.allowedRanges = allowedRanges;\r
        }\r
 \r
-       public String getElementVlanRole() {\r
+       public String getSharedRange() {\r
+        return sharedRange;\r
+    }\r
+\r
+    public void setSharedRange(String sharedRange) {\r
+        this.sharedRange = sharedRange;\r
+    }\r
+\r
+    public String getElementVlanRole() {\r
                return elementVlanRole;\r
        }\r
 \r
@@ -84,12 +95,14 @@ public class Elements {
                this.elementVlanRole = elementVlanRole;\r
        }\r
 \r
-       @Override\r
-       public String toString() {\r
-               return "Elements [recycleVlantagRange=" + recycleVlantagRange + ", overwrite=" + overwrite + ", vlantagName="\r
-                               + vlantagName + ", allowedRanges=" + allowedRanges + ", elementVlanRole=" + elementVlanRole + "]";\r
-       }\r
+    @Override\r
+    public String toString() {\r
+        return "Elements [recycleVlantagRange=" + recycleVlantagRange + ", overwrite=" + overwrite + ", vlantagName="\r
+                + vlantagName + ", allowedRanges=" + allowedRanges + ", sharedRange=" + sharedRange\r
+                + ", elementVlanRole=" + elementVlanRole + "]";\r
+    }\r
 \r
+       \r
 \r
        \r
        \r
index 358241e..93f8a21 100644 (file)
@@ -165,6 +165,8 @@ public class VlantagApiServiceImpl implements VlantagApiService {
                rr.applicationId = "SDNC";\r
                rr.rangeMaxOverride = -1;\r
                rr.rangeMinOverride = -1;\r
+               if("TRUE".equalsIgnoreCase(element.getSharedRange()))\r
+                   rr.resourceShareGroup = input.getScopeId();\r
 \r
                List<Range> rangeList = new ArrayList<>();\r
                for (AllowedRanges allowedRange : element.getAllowedRanges()) {\r
index 6d534ff..c531adf 100644 (file)
@@ -48,6 +48,12 @@ public class ElementsTest {
                elements.setElementVlanRole("elementVlanRole");
                assertEquals("elementVlanRole", elements.getElementVlanRole());
        }
+       
+       @Test
+    public void testGetSetSharedRange() {
+        elements.setSharedRange("TRUE");
+        assertEquals("TRUE", elements.getSharedRange());
+    }
 
        @Test
        public void testToString() {
index 18aa302..b731b6a 100644 (file)
@@ -35,7 +35,6 @@ import org.mockito.junit.MockitoJUnitRunner;
 import org.onap.ccsdk.apps.ms.vlantagapi.core.exception.VlantagApiException;\r
 import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.AllowedRanges;\r
 import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.Elements;\r
-import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.PolicyEngineResponse;\r
 import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.ResourceModel;\r
 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.AssignVlanTagRequest;\r
 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.AssignVlanTagRequestInput;\r
@@ -45,7 +44,7 @@ import org.onap.ccsdk.apps.ms.vlantagapi.core.model.UnassignVlanTagRequest;
 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.UnassignVlanTagRequestInput;\r
 import org.onap.ccsdk.apps.ms.vlantagapi.core.model.UnassignVlanTagResponse;\r
 import org.onap.ccsdk.apps.ms.vlantagapi.core.service.VlantagApiServiceImpl;\r
-import org.onap.ccsdk.apps.ms.vlantagapi.extinf.pm.PolicyManagerClient;\r
+import org.onap.ccsdk.apps.ms.vlantagapi.util.MockPolicyClient;\r
 import org.onap.ccsdk.apps.ms.vlantagapi.util.MockResourceAllocator;\r
 import org.onap.ccsdk.sli.adaptors.ra.comp.ResourceResponse;\r
 import org.onap.ccsdk.sli.adaptors.util.str.StrUtil;\r
@@ -62,11 +61,11 @@ private static final Logger log = LoggerFactory.getLogger(TestVlantagApiServiceI
        @InjectMocks\r
        VlantagApiServiceImpl serviceSpy;\r
        \r
-       @Spy\r
-       private PolicyManagerClient policyEngineSpy;\r
-       \r
        @Spy\r
        protected static MockResourceAllocator mockRA2;\r
+       \r
+       @Spy \r
+       protected static MockPolicyClient policyClient; \r
 \r
        \r
        @Rule\r
@@ -75,13 +74,6 @@ private static final Logger log = LoggerFactory.getLogger(TestVlantagApiServiceI
        @Before\r
        public void setup() throws Exception {\r
                service = new VlantagApiServiceImpl();\r
-\r
-               PolicyEngineResponse peResponse = new PolicyEngineResponse();\r
-               peResponse.setConfig("{\"riskLevel\":\"4\",\"riskType\":\"test\",\"policyName\":\"Internet_VlanTag_1810_US_VPE\",\"service\":\"vlantagResourceModel\",\"guard\":\"False\",\"description\":\"Internet_VlanTag_1810_US_VPE\",\"templateVersion\":\"1607\",\"priority\":\"4\",\"version\":\"20180709\",\"content\":{\"policy-instance-name\":\"Internet_VlanTag_1810_US_VPE\",\"resource-models\":[{\"data-store\":\"FALSE\",\"elements\":[{\"allowed-range\":[{\"min\":\"3553\",\"max\":\"3562\"}],\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Cust\"}],\"scope\":\"SITE\",\"vlan-type\":\"vlan-id-outer\",\"resource-resolution-recipe\":\"#BSB# VPE-Cust #ESB#\",\"resource-vlan-role\":\"outer-tag\"},{\"data-store\":\"TRUE\",\"elements\":[{\"allowed-range\":[{\"min\":\"3503\",\"max\":\"3503\"}],\"element-vlan-role\":\"outer-tag\",\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Cust-Outer\"},{\"allowed-range\":[{\"min\":\"4001\",\"max\":\"4012\"}],\"element-vlan-role\":\"outer-tag\",\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Core1\"},{\"allowed-range\":[{\"min\":\"4001\",\"max\":\"4012\"}],\"element-vlan-role\":\"outer-tag\",\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Core2\"}],\"scope\":\"SITE\",\"vlan-type\":\"vlan-id-filter\",\"resource-resolution-recipe\":\"#BSB# VPE-Cust-Outer, VPE-Core1, VPE-Core2 #ESB#\"}]}}");\r
-               PolicyEngineResponse[] peResponses = new PolicyEngineResponse[1];\r
-               peResponses[0] = peResponse;\r
-\r
-               Mockito.doReturn(peResponses).when(policyEngineSpy).getConfigUsingPost(any());\r
        }\r
        \r
        @Test\r
@@ -120,6 +112,26 @@ private static final Logger log = LoggerFactory.getLogger(TestVlantagApiServiceI
                StrUtil.info(log, response);\r
        }\r
        \r
+       @Test(expected = Test.None.class /* no exception expected */)\r
+    public void test_assign_sucess_002() throws Exception {\r
+        \r
+        AssignVlanTagRequestInput input = new AssignVlanTagRequestInput();\r
+        input.setPolicyInstanceName("some-policy-instance");\r
+        input.setVlanType("vlan-id-filter");\r
+        input.setScopeId("some-scope-id");\r
+        input.setVlanTagKey("some-key");\r
+        \r
+        AssignVlanTagRequest request = new AssignVlanTagRequest();\r
+        List<AssignVlanTagRequestInput> inputs = new ArrayList<>();\r
+        inputs.add(input);\r
+        request.setInput(inputs);\r
+        \r
+        //PowerMockito.doReturn(mockStatus.Success).when(mockRA).reserve(any(), any(), any(), any());       \r
+        AssignVlanTagResponse response = serviceSpy.assignVlanTag(request);\r
+        \r
+        StrUtil.info(log, response);\r
+    }\r
+       \r
        @Test(expected = Test.None.class /* no exception expected */)\r
        public void test_unassign_sucess_001() throws Exception {\r
                \r
@@ -943,7 +955,7 @@ private static final Logger log = LoggerFactory.getLogger(TestVlantagApiServiceI
        \r
           @Test(expected = VlantagApiException.class)\r
            public void testGetPolicyFromPDPFailure() throws Exception {\r
-               Mockito.doThrow(new VlantagApiException()).when(policyEngineSpy).getConfigUsingPost(any());\r
-               policyEngineSpy.getPolicyFromPDP("sonme_random_policy_name");\r
+               Mockito.doThrow(new VlantagApiException()).when(policyClient).getConfigUsingPost(any());\r
+               policyClient.getPolicyFromPDP("sonme_random_policy_name");\r
            }\r
 }\r
diff --git a/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlantagapi/util/MockPolicyClient.java b/ms/vlantag-api/src/test/java/org/onap/ccsdk/apps/ms/vlantagapi/util/MockPolicyClient.java
new file mode 100644 (file)
index 0000000..bd95b2f
--- /dev/null
@@ -0,0 +1,40 @@
+/*******************************************************************************\r
+ * Copyright © 2017-2018 AT&T Intellectual Property.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ * \r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ ******************************************************************************/\r
+\r
+package org.onap.ccsdk.apps.ms.vlantagapi.util;\r
+\r
+import org.onap.ccsdk.apps.ms.vlantagapi.core.exception.VlantagApiException;\r
+import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.PolicyEngineResponse;\r
+import org.onap.ccsdk.apps.ms.vlantagapi.core.extinf.pm.model.RequestObject;\r
+import org.onap.ccsdk.apps.ms.vlantagapi.extinf.pm.PolicyManagerClient;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+public class MockPolicyClient extends PolicyManagerClient{\r
+       protected static final Logger logger = LoggerFactory.getLogger(MockPolicyClient.class);\r
+\r
+    \r
+    \r
+    public PolicyEngineResponse[] getConfigUsingPost(RequestObject requestObject) throws VlantagApiException {\r
+        \r
+        PolicyEngineResponse peResponse = new PolicyEngineResponse();\r
+        peResponse.setConfig("{\"riskLevel\":\"4\",\"riskType\":\"test\",\"policyName\":\"Internet_VlanTag_1810_US_VPE\",\"service\":\"vlantagResourceModel\",\"guard\":\"False\",\"description\":\"Internet_VlanTag_1810_US_VPE\",\"templateVersion\":\"1607\",\"priority\":\"4\",\"version\":\"20180709\",\"content\":{\"policy-instance-name\":\"Internet_VlanTag_1810_US_VPE\",\"resource-models\":[{\"data-store\":\"FALSE\",\"elements\":[{\"allowed-range\":[{\"min\":\"3553\",\"max\":\"3562\"}],\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Cust\"}],\"scope\":\"SITE\",\"vlan-type\":\"vlan-id-outer\",\"resource-resolution-recipe\":\"#BSB# VPE-Cust #ESB#\",\"resource-vlan-role\":\"outer-tag\"},{\"data-store\":\"TRUE\",\"elements\":[{\"allowed-range\":[{\"min\":\"3503\",\"max\":\"3503\"}],\"shared-range\":\"TRUE\",\"element-vlan-role\":\"outer-tag\",\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Cust-Outer\"},{\"allowed-range\":[{\"min\":\"4001\",\"max\":\"4012\"}],\"element-vlan-role\":\"outer-tag\",\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Core1\"},{\"allowed-range\":[{\"min\":\"4001\",\"max\":\"4012\"}],\"element-vlan-role\":\"outer-tag\",\"recycle-vlantag-range\":\"TRUE\",\"overwrite\":\"FALSE\",\"vlantag-name\":\"VPE-Core2\"}],\"scope\":\"SITE\",\"vlan-type\":\"vlan-id-filter\",\"resource-resolution-recipe\":\"#BSB# VPE-Cust-Outer, VPE-Core1, VPE-Core2 #ESB#\"}]}}");\r
+        PolicyEngineResponse[] peResponses = new PolicyEngineResponse[1];\r
+        peResponses[0] = peResponse;\r
+        \r
+        return peResponses;\r
+    }\r
+}\r