Artifact Handler updates for ConfigScaleOut 83/30183/3
authorRamya Balaji <rb111y@att.com>
Sun, 4 Feb 2018 05:47:47 +0000 (00:47 -0500)
committerRanda Maher <rx196w@att.com>
Mon, 5 Feb 2018 22:51:17 +0000 (22:51 +0000)
Code changes and Unit Tests cases for
new code

Issue-ID: APPC-532
Change-Id: Id945354ec476e4f067cb7a1a411d8c77b3271f42
Signed-off-by: Ramya Balaji <rb111y@att.com>
appc-inbound/appc-artifact-handler/provider/src/main/java/org/onap/appc/artifact/handler/dbservices/DBService.java
appc-inbound/appc-artifact-handler/provider/src/main/java/org/onap/appc/artifact/handler/node/ArtifactHandlerNode.java
appc-inbound/appc-artifact-handler/provider/src/main/java/org/onap/appc/artifact/handler/utils/SdcArtifactHandlerConstants.java
appc-inbound/appc-artifact-handler/provider/src/test/java/org/onap/appc/artifact/handler/dbservices/DBServiceTest.java
appc-inbound/appc-artifact-handler/provider/src/test/java/org/onap/appc/artifact/handler/dbservices/MockDBService.java
appc-inbound/appc-artifact-handler/provider/src/test/java/org/onap/appc/artifact/handler/node/ArtifactHandlerNodeTest.java

index 5afe4e5..9b2d80d 100644 (file)
@@ -388,13 +388,19 @@ public class DBService {
         log.info(fn + "Starting DB operation for Vnfc Reference " + isUpdate);
         String key = "";
         int vm_instance = -1;
+        String templateId="";
+
         if (context.getAttribute(SdcArtifactHandlerConstants.VM_INSTANCE) != null) {
             vm_instance = Integer.parseInt(context.getAttribute(SdcArtifactHandlerConstants.VM_INSTANCE));
         }
         int vnfc_instance = -1;
         if (context.getAttribute(SdcArtifactHandlerConstants.VNFC_INSTANCE) != null) {
             vnfc_instance = Integer.parseInt(context.getAttribute(SdcArtifactHandlerConstants.VNFC_INSTANCE));
+        } 
+        if (context.getAttribute(SdcArtifactHandlerConstants.TEMPLATE_ID) != null) {
+            templateId = context.getAttribute(SdcArtifactHandlerConstants.TEMPLATE_ID);
         }
+
         QueryStatus status = null;
         if (isUpdate) {
             key = "update " + SdcArtifactHandlerConstants.DB_VNFC_REFERENCE + " set VM_INSTANCE = " + vm_instance
@@ -413,7 +419,8 @@ public class DBService {
                 + " , VM_INSTANCE = $" + SdcArtifactHandlerConstants.VM_INSTANCE + " , VNFC_INSTANCE = $"
                 + SdcArtifactHandlerConstants.VNFC_INSTANCE + " , VNFC_TYPE = $"
                 + SdcArtifactHandlerConstants.VNFC_TYPE + " , VNFC_FUNCTION_CODE = $"
-                + SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE + " , GROUP_NOTATION_TYPE = $"
+                + SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE + " , TEMPLATE_ID = $"
+                + SdcArtifactHandlerConstants.TEMPLATE_ID + " , GROUP_NOTATION_TYPE = $"
                 + SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE + " , IPADDRESS_V4_OAM_VIP = $"
                 + SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP + " , GROUP_NOTATION_VALUE = $"
                 + SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE;
index 6a365e4..705aa44 100644 (file)
@@ -70,6 +70,7 @@ import static org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants.D
 import static org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants.FILE_CATEGORY;
 import static org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants.GROUP_NOTATION_TYPE;
 import static org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants.GROUP_NOTATION_VALUE;
+import static org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants.TEMPLATE_ID;
 import static org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants.IPADDRESS_V4_OAM_VIP;
 import static org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants.PARAMETER_YANG;
 import static org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants.PD;
@@ -397,26 +398,7 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                             dbservice.isArtifactUpdateRequired(context, DB_SDC_REFERENCE));
                     }
                 }
-                if (content.getString(ACTION).equals("Configure")
-                    || content.getString(ACTION).equals("ConfigModify")) {
-                    if (content.has(DOWNLOAD_DG_REFERENCE)
-                        && content.getString(DOWNLOAD_DG_REFERENCE).length() > 0) {
-                        setAttribute(context, content::getString, DOWNLOAD_DG_REFERENCE);
-                        dbservice.processDownloadDgReference(context,
-                            dbservice.isArtifactUpdateRequired(context, DB_DOWNLOAD_DG_REFERENCE));
-                    }
-                    if (StringUtils.isBlank(context.getAttribute(DOWNLOAD_DG_REFERENCE))) {
-                        context.setAttribute(DOWNLOAD_DG_REFERENCE,
-                            dbservice.getDownLoadDGReference(context));
-                    }
-                    dbservice.processConfigActionDg(context, dbservice.isArtifactUpdateRequired(context,
-                        DB_CONFIG_ACTION_DG));
-                    if (content.getString(ACTION).equals("Configure")) {
-                        dbservice.processDeviceInterfaceProtocol(context, dbservice.isArtifactUpdateRequired(context,
-                            DB_DEVICE_INTERFACE_PROTOCOL));
-                    }
-
-                }
+                processConfigTypeActions(content,dbservice,context);
                 dbservice.processDeviceAuthentication(context,
                     dbservice.isArtifactUpdateRequired(context, DB_DEVICE_AUTHENTICATION));
 
@@ -426,38 +408,7 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
 
                 if (content.has(VM)
                     && content.get(VM) instanceof JSONArray) {
-                    JSONArray vmList = (JSONArray) content.get(VM);
-                    dbservice.cleanUpVnfcReferencesForVnf(context);
-                    for (int i = 0; i < vmList.length(); i++) {
-                        JSONObject vmInstance = (JSONObject) vmList.get(i);
-                        setAttribute(context, s -> String.valueOf(vmInstance.getInt(s)), VM_INSTANCE);
-                        log.info("VALUE = " + context.getAttribute(VM_INSTANCE));
-                        if (vmInstance.get(VNFC) instanceof JSONArray) {
-                            JSONArray vnfcInstanceList = (JSONArray) vmInstance.get(VNFC);
-                            for (int k = 0; k < vnfcInstanceList.length(); k++) {
-                                JSONObject vnfcInstance = (JSONObject) vnfcInstanceList.get(k);
-
-                                setAttribute(context, s -> String.valueOf(vnfcInstance.getInt(s)), VNFC_INSTANCE);
-                                setAttribute(context, vnfcInstance::getString, VNFC_TYPE);
-                                setAttribute(context, vnfcInstance::getString, VNFC_FUNCTION_CODE);
-
-                                if (vnfcInstance.has(IPADDRESS_V4_OAM_VIP)) {
-                                    setAttribute(context, vnfcInstance::getString, IPADDRESS_V4_OAM_VIP);
-                                }
-                                if (vnfcInstance.has(GROUP_NOTATION_TYPE)) {
-                                    setAttribute(context, vnfcInstance::getString, GROUP_NOTATION_TYPE);
-                                }
-                                if (vnfcInstance.has(GROUP_NOTATION_VALUE)) {
-                                    setAttribute(context, vnfcInstance::getString, GROUP_NOTATION_VALUE);
-                                }
-                                if (content.getString(ACTION).equals("Configure")) {
-                                    dbservice.processVnfcReference(context, false);
-                                }
-                                cleanVnfcInstance(context);
-                            }
-                            context.setAttribute(VM_INSTANCE, null);
-                        }
-                    }
+                    processVmList(content, context, dbservice);
                 }
 
 
@@ -481,6 +432,73 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
         return true;
     }
 
+    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")) {
+                if (content.has(DOWNLOAD_DG_REFERENCE)
+                    && content.getString(DOWNLOAD_DG_REFERENCE).length() > 0) {
+                    setAttribute(context, content::getString, DOWNLOAD_DG_REFERENCE);
+                    dbservice.processDownloadDgReference(context,
+                        dbservice.isArtifactUpdateRequired(context, DB_DOWNLOAD_DG_REFERENCE));
+                }
+                if (StringUtils.isBlank(context.getAttribute(DOWNLOAD_DG_REFERENCE))) {
+                    context.setAttribute(DOWNLOAD_DG_REFERENCE,
+                        dbservice.getDownLoadDGReference(context));
+                }
+                dbservice.processConfigActionDg(context, dbservice.isArtifactUpdateRequired(context,
+                    DB_CONFIG_ACTION_DG));
+                if (content.getString(ACTION).equals("Configure") || content.getString(ACTION).equals("ConfigScaleOut")) {
+                    boolean isPresent=dbservice.isArtifactUpdateRequired(context,DB_DEVICE_INTERFACE_PROTOCOL);
+                    if (content.getString(ACTION).equals("Configure") || (content.getString(ACTION).equals("ConfigScaleOut") && !isPresent))
+                        dbservice.processDeviceInterfaceProtocol(context, isPresent);
+                }
+
+            }
+
+    }
+
+    public void processVmList(JSONObject content, SvcLogicContext context, DBService dbservice) throws Exception{
+        JSONArray vmList = (JSONArray) content.get(VM);
+        dbservice.cleanUpVnfcReferencesForVnf(context);
+        for (int i = 0; i < vmList.length(); i++) {
+            JSONObject vmInstance = (JSONObject) vmList.get(i);
+            setAttribute(context, s -> String.valueOf(vmInstance.getInt(s)), VM_INSTANCE);
+            log.info("VALUE = " + context.getAttribute(VM_INSTANCE));
+            String templateId = vmInstance.optString(TEMPLATE_ID);
+            if (StringUtils.isNotBlank(templateId)) {
+                setAttribute(context, vmInstance::optString, TEMPLATE_ID);
+            }
+            if (vmInstance.get(VNFC) instanceof JSONArray) {
+                JSONArray vnfcInstanceList = (JSONArray) vmInstance.get(VNFC);
+                for (int k = 0; k < vnfcInstanceList.length(); k++) {
+                    JSONObject vnfcInstance = (JSONObject) vnfcInstanceList.get(k);
+
+                    setAttribute(context, s -> String.valueOf(vnfcInstance.getInt(s)), VNFC_INSTANCE);
+                    setAttribute(context, vnfcInstance::getString, VNFC_TYPE);
+                    setAttribute(context, vnfcInstance::getString, VNFC_FUNCTION_CODE);
+
+                    if (vnfcInstance.has(IPADDRESS_V4_OAM_VIP)) {
+                        setAttribute(context, vnfcInstance::getString, IPADDRESS_V4_OAM_VIP);
+                    }
+                    if (vnfcInstance.has(GROUP_NOTATION_TYPE)) {
+                        setAttribute(context, vnfcInstance::getString, GROUP_NOTATION_TYPE);
+                    }
+                    if (vnfcInstance.has(GROUP_NOTATION_VALUE)) {
+                        setAttribute(context, vnfcInstance::getString, GROUP_NOTATION_VALUE);
+                    }
+                    if (content.getString(ACTION).equals("Configure")
+                            || content.getString(ACTION).equals("ConfigScaleOut")) {
+                        dbservice.processVnfcReference(context, false);
+                    }
+                    cleanVnfcInstance(context);
+                }
+                context.setAttribute(VM_INSTANCE, null);
+                context.setAttribute(TEMPLATE_ID, null);
+            }
+        }
+
+    }
+
     private void cleanArtifactInstanceData(SvcLogicContext context) {
         context.setAttribute(ARTIFACT_NAME, null);
         context.setAttribute(FILE_CATEGORY, null);
index 4f4525d..5051bb1 100644 (file)
@@ -62,6 +62,7 @@ public class SdcArtifactHandlerConstants {
     public static final String IPADDRESS_V4_OAM_VIP  = "ipaddress-v4-oam-vip";
     public static final String GROUP_NOTATION_TYPE  = "group-notation-type";
     public static final String GROUP_NOTATION_VALUE = "group-notation-value";
+    public static final String TEMPLATE_ID = "template-id";
     public static final String REFERENCE = "reference";
     public static final String VNFC_INSTANCE = "vnfc-instance";
     public static final String DEVICE_PROTOCOL = "device-protocol";
index f123fcc..0ea4a44 100644 (file)
@@ -182,7 +182,7 @@ public class DBServiceTest {
         MockDBService dbService = MockDBService.initialise();
         SvcLogicContext ctx = new SvcLogicContext();
         ctx.setAttribute("test", "test");
-        boolean isUpdate = true;
+        boolean isUpdate = false;
         dbService.processVnfcReference(ctx, isUpdate);
     }
 
index c7f18d7..0f0f0a0 100644 (file)
@@ -174,5 +174,36 @@ public class ArtifactHandlerNodeTest {
         String yangContents = "SomeContent";
         Whitebox.invokeMethod(artifactHandlerNode, "updateYangContents", artifactId, yangContents);
     }
-    
+
+    @Test
+    public void testProcessVmList() 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.processVmList(content, context, dbService);
+    }
+
+    @Test
+    public void testProcessConfigTypeActions() throws Exception{
+        String contentStr = "{\"action\": \"ConfigScaleOut\"}";
+        JSONObject content=new JSONObject(contentStr);
+        MockDBService dbService = MockDBService.initialise();
+        SvcLogicContext context = new SvcLogicContext();
+        context.setAttribute(SdcArtifactHandlerConstants.DEVICE_PROTOCOL,"Test");
+        artifactHandlerNode.processConfigTypeActions(content, dbService, context);
+    }
+
 }