Artifact Handler code changes 11/31511/4
authorRamya Balaji <rb111y@att.com>
Mon, 12 Feb 2018 20:31:38 +0000 (15:31 -0500)
committerPatrick Brady <pb071s@att.com>
Wed, 14 Feb 2018 20:40:27 +0000 (20:40 +0000)
Refactored code for storing reference data
and added unit test cases

Issue-ID: APPC-543
Change-Id: I60ed5e327324403409ec0d9725c5880038a3e186
Signed-off-by: Ramya Balaji <rb111y@att.com>
appc-inbound/appc-artifact-handler/provider/src/main/java/org/onap/appc/artifact/handler/node/ArtifactHandlerNode.java
appc-inbound/appc-artifact-handler/provider/src/test/java/org/onap/appc/artifact/handler/node/ArtifactHandlerNodeTest.java

index 705aa44..a85a313 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Copyright (C) 2017 Amdocs
  * =============================================================================
@@ -315,43 +315,8 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                 String actionLevel = content.getString(ACTION_LEVEL);
                 setAttribute(context, content::getString, ACTION_LEVEL);
                 setAttribute(context, document_information::getString, ARTIFACT_TYPE);
-                if ((null != actionLevel)
-                    && actionLevel.equalsIgnoreCase(ACTION_LEVEL_VNFC)) {
-                    vnfcActionList.put(content.getString(ACTION));
-                }
-                if (null != actionLevel
-                    && actionLevel.equalsIgnoreCase(ACTION_LEVEL_VF_MODULE)) {
-                    vfModuleActionList.put(content.getString(ACTION));
-                }
-                if (null != actionLevel && actionLevel.equalsIgnoreCase(ACTION_LEVEL_VNF)) {
-                    vnfActionList.put(content.getString(ACTION));
-                }
-                if (null != actionLevel && actionLevel.equalsIgnoreCase(ACTION_LEVEL_VM)) {
-                    if (content.has(VNFC_FUNCTION_CODE_LIST)
-                        && !content.isNull(VNFC_FUNCTION_CODE_LIST) && content.get(
-                        VNFC_FUNCTION_CODE_LIST) instanceof JSONArray) {
-                        log.info("Found vnfc-function-code-list!!");
-                        JSONArray vnfcList = content.getJSONArray(VNFC_FUNCTION_CODE_LIST);
-                        JSONObject obj = new JSONObject();
-                        obj.put(content.getString(ACTION), vnfcList);
-                        vmActionVnfcFunctionCodesList.put(obj);
-                    } else {
-                        log.info("Not getting JSONArray for VNFC FUNCTION CODES");
-                    }
-                }
-                if (scope.has(VNFC_TYPE)
-                    && !scope.isNull(VNFC_TYPE)) {
-                    String vnfcTypeScope = scope.getString(VNFC_TYPE);
-                    if (StringUtils.isNotBlank(vnfcTypeScope)) {
-                        setAttribute(context, scope::getString, VNFC_TYPE);
-                        storeCapabilityArtifact = false;
-                        log.info("No capability Artifact for this reference data as it is at VNFC level!!");
-                    } else {
-                        context.setAttribute(VNFC_TYPE, null);
-                    }
-                } else {
-                    context.setAttribute(VNFC_TYPE, null);
-                }
+                processActionLists(content, actionLevel, vnfcActionList, vfModuleActionList,vnfActionList, vmActionVnfcFunctionCodesList);
+                storeCapabilityArtifact=isCapabilityArtifactNeeded(scope, context);
                 if (content.has(DEVICE_PROTOCOL)) {
                     setAttribute(context, content::getString, DEVICE_PROTOCOL);
                 }
@@ -362,42 +327,7 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                     setAttribute(context, content::getString, PORT_NUMBER);
                 }
                 //context.setAttribute(ARTIFACT_TYPE, "");
-                if (content.has("artifact-list") && content.get("artifact-list") instanceof JSONArray) {
-                    JSONArray artifactLists = (JSONArray) content.get("artifact-list");
-                    for (int i = 0; i < artifactLists.length(); i++) {
-                        JSONObject artifact = (JSONObject) artifactLists.get(i);
-                        log.info("artifact is " + artifact);
-                        setAttribute(context, artifact::getString, ARTIFACT_NAME);
-                        context.setAttribute(FILE_CATEGORY,
-                            artifact.getString(ARTIFACT_TYPE));
-
-                        if (artifact.getString(ARTIFACT_NAME) != null
-                            && artifact.getString(ARTIFACT_NAME).toLowerCase()
-                            .startsWith(PD)) {
-                            suffix = artifact.getString(ARTIFACT_NAME)
-                                .substring(PD.length());
-                            categorySuffix = artifact.getString(ARTIFACT_TYPE)
-                                .substring(PD.length());
-                            pdFile = true;
-                        }
-                        log.info("Artifact-type = " + context.getAttribute(ARTIFACT_TYPE));
-                        dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context,
-                            DB_SDC_REFERENCE));
-
-                        cleanArtifactInstanceData(context);
-                    }
-
-                    if (pdFile) {
-                        context.setAttribute(ARTIFACT_NAME, "Tosca".concat(suffix));
-                        context.setAttribute(FILE_CATEGORY, TOSCA_MODEL);
-                        dbservice.processSdcReferences(context,
-                            dbservice.isArtifactUpdateRequired(context, DB_SDC_REFERENCE));
-                        context.setAttribute(ARTIFACT_NAME, "Yang".concat(suffix));
-                        context.setAttribute(FILE_CATEGORY, PARAMETER_YANG);
-                        dbservice.processSdcReferences(context,
-                            dbservice.isArtifactUpdateRequired(context, DB_SDC_REFERENCE));
-                    }
-                }
+                processArtifactList(content,dbservice,context);
                 processConfigTypeActions(content,dbservice,context);
                 dbservice.processDeviceAuthentication(context,
                     dbservice.isArtifactUpdateRequired(context, DB_DEVICE_AUTHENTICATION));
@@ -432,6 +362,96 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
         return true;
     }
 
+    public boolean isCapabilityArtifactNeeded(JSONObject scope, SvcLogicContext context) {
+        boolean storeCapabilityArtifact=true;
+        if (scope.has(VNFC_TYPE)
+                && !scope.isNull(VNFC_TYPE)) {
+                String vnfcTypeScope = scope.getString(VNFC_TYPE);
+                if (StringUtils.isNotBlank(vnfcTypeScope)) {
+                    setAttribute(context, scope::getString, VNFC_TYPE);
+                    storeCapabilityArtifact = false;
+                    log.info("No capability Artifact for this reference data as it is at VNFC level!!");
+                } else {
+                    context.setAttribute(VNFC_TYPE, null);
+                }
+            } else {
+                context.setAttribute(VNFC_TYPE, null);
+            }
+        return storeCapabilityArtifact;
+    }
+
+    public void processActionLists(JSONObject content, String actionLevel, JSONArray vnfcActionList, JSONArray vfModuleActionList,
+            JSONArray vnfActionList, JSONArray vmActionVnfcFunctionCodesList) {
+        if ((null != actionLevel)
+                && actionLevel.equalsIgnoreCase(ACTION_LEVEL_VNFC)) {
+                vnfcActionList.put(content.getString(ACTION));
+            }
+            if (null != actionLevel
+                && actionLevel.equalsIgnoreCase(ACTION_LEVEL_VF_MODULE)) {
+                vfModuleActionList.put(content.getString(ACTION));
+            }
+            if (null != actionLevel && actionLevel.equalsIgnoreCase(ACTION_LEVEL_VNF)) {
+                vnfActionList.put(content.getString(ACTION));
+            }
+            if (null != actionLevel && actionLevel.equalsIgnoreCase(ACTION_LEVEL_VM)) {
+                if (content.has(VNFC_FUNCTION_CODE_LIST)
+                    && !content.isNull(VNFC_FUNCTION_CODE_LIST) && content.get(
+                    VNFC_FUNCTION_CODE_LIST) instanceof JSONArray) {
+                    log.info("Found vnfc-function-code-list!!");
+                    JSONArray vnfcList = content.getJSONArray(VNFC_FUNCTION_CODE_LIST);
+                    JSONObject obj = new JSONObject();
+                    obj.put(content.getString(ACTION), vnfcList);
+                    vmActionVnfcFunctionCodesList.put(obj);
+                } else {
+                    log.info("Not getting JSONArray for VNFC FUNCTION CODES");
+                }
+            }
+
+    }
+
+    public void processArtifactList(JSONObject content, DBService dbservice, SvcLogicContext context) throws Exception {
+        boolean pdFile = false;
+        String suffix = null;
+        String categorySuffix = null;
+        if (content.has("artifact-list") && content.get("artifact-list") instanceof JSONArray) {
+            JSONArray artifactLists = (JSONArray) content.get("artifact-list");
+            for (int i = 0; i < artifactLists.length(); i++) {
+                JSONObject artifact = (JSONObject) artifactLists.get(i);
+                log.info("artifact is " + artifact);
+                setAttribute(context, artifact::getString, ARTIFACT_NAME);
+                context.setAttribute(FILE_CATEGORY,
+                    artifact.getString(ARTIFACT_TYPE));
+
+                if (artifact.getString(ARTIFACT_NAME) != null
+                    && artifact.getString(ARTIFACT_NAME).toLowerCase()
+                    .startsWith(PD)) {
+                    suffix = artifact.getString(ARTIFACT_NAME)
+                        .substring(PD.length());
+                    categorySuffix = artifact.getString(ARTIFACT_TYPE)
+                        .substring(PD.length());
+                    pdFile = true;
+                }
+                log.info("Artifact-type = " + context.getAttribute(ARTIFACT_TYPE));
+                dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context,
+                    DB_SDC_REFERENCE));
+
+                cleanArtifactInstanceData(context);
+            }
+
+            if (pdFile) {
+                context.setAttribute(ARTIFACT_NAME, "Tosca".concat(suffix));
+                context.setAttribute(FILE_CATEGORY, TOSCA_MODEL);
+                dbservice.processSdcReferences(context,
+                    dbservice.isArtifactUpdateRequired(context, DB_SDC_REFERENCE));
+                context.setAttribute(ARTIFACT_NAME, "Yang".concat(suffix));
+                context.setAttribute(FILE_CATEGORY, PARAMETER_YANG);
+                dbservice.processSdcReferences(context,
+                    dbservice.isArtifactUpdateRequired(context, DB_SDC_REFERENCE));
+            }
+        }
+
+    }
+
     public void processConfigTypeActions(JSONObject content, DBService dbservice, SvcLogicContext context)throws Exception {
         if (content.getString(ACTION).equals("Configure")
                 || content.getString(ACTION).equals("ConfigModify") || content.getString(ACTION).equals("ConfigScaleOut")) {
index 0f0f0a0..65f354a 100644 (file)
@@ -2,22 +2,22 @@
  * ============LICENSE_START=======================================================
  * ONAP : APPC
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Copyright (C) 2017 Amdocs
  * =============================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- * 
+ *
  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
  * ============LICENSE_END=========================================================
  */
@@ -25,6 +25,7 @@
 package org.onap.appc.artifact.handler.node;
 
 import org.apache.commons.io.IOUtils;
+import org.json.JSONArray;
 import org.json.JSONObject;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -39,6 +40,7 @@ import java.util.Map;
 import java.util.HashMap;
 import java.nio.charset.Charset;
 
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 public class ArtifactHandlerNodeTest {
@@ -206,4 +208,53 @@ public class ArtifactHandlerNodeTest {
         artifactHandlerNode.processConfigTypeActions(content, dbService, context);
     }
 
+    @Test
+    public void testProcessArtifactLists() throws Exception{
+        String contentStr = "{\r\n\t\"action\": \"ConfigScaleOut\",\r\n\t\"action-level\": \"VNF\",\r\n\t\"scope\": "
+                + "{\r\n\t\t\"vnf-type\": \"ScaleOutVNF\",\r\n\t\t\"vnfc-type\": \"\"\r\n\t},\r\n\t\"template\": \"Y\",\r\n\t\"vm\": "
+                + "[\r\n\t{ \r\n\t\t\"vm-instance\": 1,\r\n\t\t\"template-id\":\"id1\",\r\n\t\t\r\n\t\t\"vnfc\": [{\r\n\t\t\t\"vnfc-instance\": 1,\r\n\t\t\t\"vnfc-type\": \"t1\",\r\n\t\t\t\"vnfc-function-code\": "
+                + "\"Testdbg\",\r\n\t\t\t\"group-notation-type\": \"GNType\",\r\n\t\t\t\"ipaddress-v4-oam-vip\": \"N\",\r\n\t\t\t\"group-notation-value\": "
+                + "\"GNValue\"\r\n\t\t}]\r\n\t},\r\n\t{ \r\n\t\t\"vm-instance\": 1,\r\n\t\t\"template-id\":\"id2\",\r\n\t\t\r\n\t\t\"vnfc\": [{\r\n\t\t\t\"vnfc-instance\": 1,\r\n\t\t\t\"vnfc-type\": "
+                + "\"t1\",\r\n\t\t\t\"vnfc-function-code\": \"Testdbg\",\r\n\t\t\t\"group-notation-type\": \"GNType\",\r\n\t\t\t\"ipaddress-v4-oam-vip\": \"N\",\r\n\t\t\t\"group-notation-value\": "
+                + "\"GNValue\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"vnfc-instance\": 2,\r\n\t\t\t\"vnfc-type\": \"t2\",\r\n\t\t\t\"vnfc-function-code\": \"Testdbg\",\r\n\t\t\t\"group-notation-type\": "
+                + "\"GNType\",\r\n\t\t\t\"ipaddress-v4-oam-vip\": \"Y\",\r\n\t\t\t\"group-notation-value\": \"GNValue\"\r\n\t\t}]\r\n\t},\r\n\t{\r\n\t\t\"vm-instance\": 2,\r\n\t\t\"template-id\":\"id3\",\r\n\t\t\"vnfc\": "
+                + "[{\r\n\t\t\t\"vnfc-instance\": 1,\r\n\t\t\t\"vnfc-type\": \"t3\",\r\n\t\t\t\"vnfc-function-code\": \"Testdbg\",\r\n\t\t\t\"group-notation-type\": "
+                + "\"GNType\",\r\n\t\t\t\"ipaddress-v4-oam-vip\": \"Y\",\r\n\t\t\t\"group-notation-value\": \"GNValue\"\r\n\t\t}]\r\n\t}],\r\n\t\"device-protocol\": "
+                + "\"TEST-PROTOCOL\",\r\n\t\"user-name\": \"Testnetconf\",\r\n\t\"port-number\": \"22\",\r\n\t\"artifact-list\": [{\r\n\t\t\"artifact-name\": \"Testv_template.json\",\r\n\t\t\"artifact-type\": "
+                + "\"Testconfig_template\"\r\n\t},\r\n\t{\r\n\t\t\"artifact-name\": \"TESTv_parameter_definitions.json\",\r\n\t\t\"artifact-type\": \"Testparameter_definitions\"\r\n\t},\r\n\t{\r\n\t\t\"artifact-name\": "
+                + "\"PD_JunitTESTv_parameter_yang.json\",\r\n\t\t\"artifact-type\": \"PD_definations\"\r\n\t}]\r\n}";
+        JSONObject content=new JSONObject(contentStr);
+        MockDBService dbService = MockDBService.initialise();
+        SvcLogicContext context = new SvcLogicContext();
+        artifactHandlerNode.processArtifactList(content,dbService,context);
+     }
+
+    @Test
+    public void testProcessActionLists() throws Exception {
+        String contentStr = "{\r\n\t\"action\": \"HealthCheck\",\r\n\t\"action-level\": \"vm\",\r\n\t\"scope\":"
+                + " {\r\n\t\t\"vnf-type\": \"vDBE-I\",\r\n\t\t\"vnfc-type\": null\r\n\t},\r\n\t\"template\": "
+                + "\"N\",\r\n\t\"device-protocol\": \"REST\",\r\n\t\"vnfc-function-code-list\": [\"SSC\", \"MMSC\"]\r\n}";
+        JSONObject content = new JSONObject(contentStr);
+        JSONArray vmActionVnfcFunctionCodesList = new JSONArray();
+        JSONArray vnfActionList = new JSONArray();
+        JSONArray vfModuleActionList = new JSONArray();
+        JSONArray vnfcActionList = new JSONArray();
+        String[] actionLevels = { "vnf", "vm", "vf-module", "vnfc" };
+        for (String actionLevel : actionLevels) {
+            artifactHandlerNode.processActionLists(content, actionLevel, vnfcActionList, vfModuleActionList,
+                    vnfActionList, vmActionVnfcFunctionCodesList);
+        }
+    }
+    
+    @Test
+    public void testIsCapabilityArtifactNeeded() throws Exception {
+        String scopeObjStr1= "{\"vnf-type\":\"someVnf\",\"vnfc-type\":\"somVnfc\"}";
+        String scopeObjStr2= "{\"vnf-type\":\"someVnf\",\"vnfc-type\":\"\"}";
+        JSONObject scope1 = new JSONObject(scopeObjStr1);
+        JSONObject scope2 = new JSONObject(scopeObjStr2);
+        SvcLogicContext context = new SvcLogicContext();
+        assertFalse(artifactHandlerNode.isCapabilityArtifactNeeded(scope1, context));
+        assertTrue(artifactHandlerNode.isCapabilityArtifactNeeded(scope2, context));
+    }
+
 }