Artifact Handler code fixes 11/18411/2
authorRamya Balaji <rb111y@att.com>
Thu, 12 Oct 2017 02:38:03 +0000 (22:38 -0400)
committerSkip Wonnell <skip@att.com>
Thu, 12 Oct 2017 13:12:54 +0000 (13:12 +0000)
Code corrections in Artifact Handler to use vnf type to store capability artifact,
process download dg reference even if it is not sent in reference file,
to not generate capability artifact if reference file is at vnfc level

Issue-ID: APPC-271
Change-Id: If7e436576f9c64c3933ea681355e710ebf82c497
Signed-off-by: Ramya Balaji <rb111y@att.com>
appc-inbound/appc-artifact-handler/provider/src/main/java/org/openecomp/appc/artifact/handler/dbservices/DBService.java
appc-inbound/appc-artifact-handler/provider/src/main/java/org/openecomp/appc/artifact/handler/node/ArtifactHandlerNode.java
appc-inbound/appc-artifact-handler/provider/src/test/java/org/openecomp/appc/artifact/handler/dbservices/DBServiceTest.java
appc-inbound/appc-artifact-handler/provider/src/test/java/org/openecomp/appc/artifact/handler/dbservices/MockSvcLogicResource.java

index 1dcc65e..41ff4a2 100644 (file)
@@ -9,15 +9,15 @@
  * 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=========================================================
  */
@@ -35,6 +35,7 @@ import org.openecomp.appc.artifact.handler.utils.SdcArtifactHandlerConstants;
 
 import java.sql.SQLException;
 import java.util.HashMap;
+import org.apache.commons.lang.StringUtils;
 
 public class DBService {
 
@@ -151,20 +152,21 @@ public class DBService {
         String key = "";
         QueryStatus status = null;
 
-        if (isUpdate && SdcArtifactHandlerConstants.FILE_CATEGORY.equals(SdcArtifactHandlerConstants.CAPABILITY)) {
+        if (isUpdate && context.getAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY).equals(SdcArtifactHandlerConstants.CAPABILITY)) {
+            log.info("Updating capability artifact in ASDC_REFERENCE");
             key = "update " + SdcArtifactHandlerConstants.DB_SDC_REFERENCE + "  set ARTIFACT_NAME = $"
-                    + SdcArtifactHandlerConstants.ARTIFACT_NAME + " where VNFC_TYPE = $"
-                    + SdcArtifactHandlerConstants.VNFC_TYPE + " and FILE_CATEGORY = $"
-                    + SdcArtifactHandlerConstants.FILE_CATEGORY + " and ACTION = null";
+                    + SdcArtifactHandlerConstants.ARTIFACT_NAME + " where " + "FILE_CATEGORY = $"
+                    + SdcArtifactHandlerConstants.FILE_CATEGORY + " and VNF_TYPE = $"
+                    + SdcArtifactHandlerConstants.VNF_TYPE ;
         } else if (isUpdate)
             key = "update " + SdcArtifactHandlerConstants.DB_SDC_REFERENCE + "  set ARTIFACT_NAME = $"
                     + SdcArtifactHandlerConstants.ARTIFACT_NAME + " where VNFC_TYPE = $"
                     + SdcArtifactHandlerConstants.VNFC_TYPE + " and FILE_CATEGORY = $"
                     + SdcArtifactHandlerConstants.FILE_CATEGORY + " and ACTION = $"
-                    + SdcArtifactHandlerConstants.ACTION;
+                    + SdcArtifactHandlerConstants.ACTION + " and VNF_TYPE = $" + SdcArtifactHandlerConstants.VNF_TYPE;
 
         else {
-            if (SdcArtifactHandlerConstants.FILE_CATEGORY.equals(SdcArtifactHandlerConstants.CAPABILITY)) {
+            if (context.getAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY).equals(SdcArtifactHandlerConstants.CAPABILITY)) {
                 key = "insert into " + SdcArtifactHandlerConstants.DB_SDC_REFERENCE + " set VNFC_TYPE = null "
                         + " , FILE_CATEGORY = $" + SdcArtifactHandlerConstants.FILE_CATEGORY + " , VNF_TYPE = $"
                         + SdcArtifactHandlerConstants.VNF_TYPE + " , ACTION = null " + " , ARTIFACT_TYPE = null "
@@ -443,9 +445,9 @@ public class DBService {
             status = serviceLogic.save("SQL", false, false, key, null, null, context);
         if ((status == null) || status.toString().equals("FAILURE"))
             throw new SvcLogicException("Error While processing insertProtocolReference ");
-        
+
     }
-    
+
     public boolean isProtocolReferenceUpdateRequired(SvcLogicContext context, String vnfType, String protocol,
              String action, String action_level, String template) throws SvcLogicException {
         SvcLogicContext localContext = new SvcLogicContext();
@@ -483,4 +485,31 @@ public class DBService {
         return;
     }
 
+    public String getDownLoadDGReference(SvcLogicContext context) throws Exception {
+        String fn = "DBService.setDownLoadDGReference";
+        String downloadConfigDg = null;
+        log.info(fn + "Setting Download DG Reference from DB");
+        String key = "";
+        QueryStatus status = null;
+        String protocol = context.getAttribute(SdcArtifactHandlerConstants.DEVICE_PROTOCOL);
+        if (StringUtils.isBlank(protocol)) {
+            log.info(fn + " :: Protocol is Blank!! Returning without querying DB");
+            throw new Exception(fn+":: Protocol is Blank!! Returning without querying DB");
+        }
+        key = "select download_config_dg from " + SdcArtifactHandlerConstants.DB_DOWNLOAD_DG_REFERENCE
+                + " where protocol = '" + protocol + "'";
+        SvcLogicContext localContext = new SvcLogicContext();
+        status = serviceLogic.query("SQL", false, null, key, null, null, localContext);
+        if (status == QueryStatus.FAILURE) {
+            log.info(fn + ":: Error retrieving download_config_dg");
+            throw new SvcLogicException("Error retrieving download_config_dg");
+        }
+        if (status == QueryStatus.NOT_FOUND) {
+            log.info(fn + ":: NOT_FOUND! No data found for download_config_dg!!");
+            throw new Exception(fn + ":: NOT_FOUND! No data found for download_config_dg!");
+        }
+        downloadConfigDg = localContext.getAttribute("download-config-dg");
+        log.info(fn + "download_config_dg::" + downloadConfigDg);
+        return downloadConfigDg;
+    }
 }
index 5df455a..e53247e 100644 (file)
@@ -9,15 +9,15 @@
  * 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=========================================================
  */
@@ -246,6 +246,7 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
             String vnfType = null;
             JSONObject contentObject = new JSONObject(contentString);
             JSONArray contentArray = contentObject.getJSONArray("reference_data");
+            boolean storeCapabilityArtifact=true;
             for (int a = 0; a < contentArray.length(); a++) {
 
                 JSONObject content = (JSONObject) contentArray.get(a);
@@ -276,9 +277,12 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                     vmActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
                 }
                 if (scope.has(SdcArtifactHandlerConstants.VNFC_TYPE)
-                        && !scope.isNull(SdcArtifactHandlerConstants.VNFC_TYPE))
+                        && !scope.isNull(SdcArtifactHandlerConstants.VNFC_TYPE)) {
                     context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE,
                             scope.getString(SdcArtifactHandlerConstants.VNFC_TYPE));
+                    storeCapabilityArtifact=false;
+                    log.info("No capability Artifact for this reference data as it is ar VNFC level!!");
+                }
                 else
                     context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
                 if (content.has(SdcArtifactHandlerConstants.DEVICE_PROTOCOL))
@@ -330,7 +334,8 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                                 SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
                     }
                 }
-                if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")) {
+                if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")
+                    || content.getString(SdcArtifactHandlerConstants.ACTION).equals("ConfigModify")) {
                     if (content.has(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE)
                             && content.getString(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE).length() > 0) {
                         context.setAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE,
@@ -338,13 +343,17 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                         dbservice.processDownloadDgReference(context, dbservice.isArtifactUpdateRequired(context,
                                 SdcArtifactHandlerConstants.DB_DOWNLOAD_DG_REFERENCE));
                     }
-
+                    if (StringUtils.isBlank(context.getAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE)))
+                        context.setAttribute(SdcArtifactHandlerConstants.DOWNLOAD_DG_REFERENCE,
+                                dbservice.getDownLoadDGReference(context));
                     dbservice.processConfigActionDg(context, dbservice.isArtifactUpdateRequired(context,
                             SdcArtifactHandlerConstants.DB_CONFIG_ACTION_DG));
-                    dbservice.processDeviceInterfaceProtocol(context, dbservice.isArtifactUpdateRequired(context,
-                            SdcArtifactHandlerConstants.DB_DEVICE_INTERFACE_PROTOCOL));
-                    dbservice.processDeviceAuthentication(context, dbservice.isArtifactUpdateRequired(context,
-                            SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION));
+                    if (content.getString(SdcArtifactHandlerConstants.ACTION).equals("Configure")) {
+                        dbservice.processDeviceInterfaceProtocol(context, dbservice.isArtifactUpdateRequired(context,
+                                SdcArtifactHandlerConstants.DB_DEVICE_INTERFACE_PROTOCOL));
+                        dbservice.processDeviceAuthentication(context, dbservice.isArtifactUpdateRequired(context,
+                                SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION));
+                    }
 
                 }
 
@@ -391,12 +400,14 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
 
 
             }
-            capabilities.put("vnf", vnfActionList);
-            capabilities.put("vf-module", vfModuleActionList);
-            capabilities.put("vnfc", vnfcActionList);
-            capabilities.put("vm", vmActionList);
-            processAndStoreCapablitiesArtifact(dbservice, document_information, capabilities, capabilityArtifactName,
+            if (storeCapabilityArtifact) {
+                capabilities.put("vnf", vnfActionList);
+                capabilities.put("vf-module", vfModuleActionList);
+                capabilities.put("vnfc", vnfcActionList);
+                capabilities.put("vm", vmActionList);
+                processAndStoreCapablitiesArtifact(dbservice, document_information, capabilities, capabilityArtifactName,
                     vnfType);
+            }
 
         } catch (Exception e) {
             e.printStackTrace();
index 043283f..5ca6ec3 100644 (file)
@@ -9,15 +9,15 @@
  * 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=========================================================
  */
@@ -30,6 +30,7 @@ import org.junit.Test;
 import org.openecomp.appc.artifact.handler.utils.SdcArtifactHandlerConstants;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.powermock.reflect.Whitebox;
+import static org.junit.Assert.assertEquals;
 
 public class DBServiceTest {
 
@@ -234,6 +235,7 @@ public class DBServiceTest {
         MockDBService dbService = MockDBService.initialise();
         SvcLogicContext ctx = new SvcLogicContext();
         ctx.setAttribute("test", "test");
+        ctx.setAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY, "testCategory");
         boolean isUpdate = true;
         dbService.processSdcReferences(ctx, isUpdate);
     }
@@ -283,5 +285,13 @@ public class DBServiceTest {
         String db = "db";
         dbService.getArtifactID(ctx, db);
     }
+    @Test
+    public void testGetDownLoadDGReference() throws Exception {
+        MockDBService dbService = MockDBService.initialise();
+        SvcLogicContext ctx = new SvcLogicContext();
+        ctx.setAttribute("test", "test");
+        ctx.setAttribute(SdcArtifactHandlerConstants.DEVICE_PROTOCOL, "CLI");
+        assertEquals("TestDG", dbService.getDownLoadDGReference(ctx));
+    }
 }
 
index ae09e45..1a07117 100644 (file)
@@ -40,6 +40,7 @@ public class MockSvcLogicResource extends SqlResource {
         ctx.setAttribute("VNF_TYPE", "testvnf");
         ctx.setAttribute("maximum", "1");
         ctx.setAttribute("COUNT(*)", "1");
+        ctx.setAttribute("download-config-dg", "TestDG");
         return status;
     }