Artifact Handler Updates 25/27525/5
authorDilip kumar Pampana <dp583p@att.com>
Fri, 5 Jan 2018 16:47:22 +0000 (11:47 -0500)
committerPatrick Brady <pb071s@att.com>
Mon, 8 Jan 2018 16:20:14 +0000 (16:20 +0000)
Fixed vnfc_reference table,
Added code to process VM level capabilities for VNF

Issue-ID: APPC-350
Change-Id: If1b8862e1d81c5dc8d3c29b148d5b1d865567951
Signed-off-by: Dilip kumar Pampana <dp583p@att.com>
appc-inbound/appc-artifact-handler/features/pom.xml
appc-inbound/appc-artifact-handler/model/pom.xml
appc-inbound/appc-artifact-handler/provider/pom.xml
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

index 86dc80f..1448dfe 100755 (executable)
@@ -8,6 +8,7 @@
                <version>1.3.0-SNAPSHOT</version>
        </parent>
        <artifactId>appc-artifact-handler-features</artifactId>
+       <name>APPC Artifact Handler - Feature</name>
        <packaging>jar</packaging>
 
        <dependencies>
index 9e2ad41..36acb55 100755 (executable)
@@ -8,6 +8,7 @@
                <version>1.3.0-SNAPSHOT</version>
        </parent>
        <artifactId>appc-artifact-handler-model</artifactId>
+       <name>APPC Artifact Handler - Model</name>
        <packaging>bundle</packaging>
 
        <build>
index e1c132d..204f93d 100755 (executable)
@@ -153,6 +153,11 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.
                        <artifactId>sli-provider</artifactId>
                </dependency>
                <dependency>
+                       <groupId>commons-configuration</groupId>
+                       <artifactId>commons-configuration</artifactId>
+                       <version>1.10</version>
+               </dependency>
+                       <dependency>
                        <groupId>org.onap.appc</groupId>
                        <artifactId>appc-config-params-provider</artifactId>
                        <version>${project.version}</version>
index 031d53e..bd2f6df 100644 (file)
@@ -36,6 +36,8 @@ import org.onap.appc.artifact.handler.utils.SdcArtifactHandlerConstants;
 import java.sql.SQLException;
 import java.util.HashMap;
 import org.apache.commons.lang.StringUtils;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import  org.apache.commons.configuration.ConfigurationException;
 
 public class DBService {
 
@@ -167,6 +169,7 @@ public class DBService {
 
         else {
             if (context.getAttribute(SdcArtifactHandlerConstants.FILE_CATEGORY).equals(SdcArtifactHandlerConstants.CAPABILITY)) {
+      log.info("Inserting new record for capability artifact in ASDC_REFERENCE");
                 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 "
@@ -188,7 +191,7 @@ public class DBService {
         }
     }
 
-    public boolean isArtifactUpdateRequired(SvcLogicContext context, String db) throws SvcLogicException, SQLException {
+    public boolean isArtifactUpdateRequired(SvcLogicContext context, String db) throws SvcLogicException, SQLException, ConfigurationException {
         String fn = "DBService.isArtifactUpdateRequired";
         log.info("Checking if Update required for this data");
 
@@ -236,7 +239,7 @@ public class DBService {
             }
         }
 
-        if (serviceLogic != null && context != null) {
+        if (!db.equals(SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION) && serviceLogic != null && context != null) {
             String key = "select COUNT(*) from " + db + whereClause;
             log.info("SELECT String : " + key);
             status = serviceLogic.query("SQL", false, null, key, null, null, context);
@@ -251,6 +254,31 @@ public class DBService {
             } else
                 return false;
         }
+       if (db.equals(SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION) && serviceLogic != null && context != null) {
+             log.info("Check for update or insert for properties file");
+          String protocol = context.getAttribute(SdcArtifactHandlerConstants.DEVICE_PROTOCOL);
+          String action = context.getAttribute(SdcArtifactHandlerConstants.ACTION);
+          String vnf_type = context.getAttribute(SdcArtifactHandlerConstants.VNF_TYPE);
+          PropertiesConfiguration conf = new PropertiesConfiguration(
+                SdcArtifactHandlerConstants.APPC_CONFIG_DIR + "/appc_southbound.properties");
+          String property ="";
+            if (StringUtils.isNotBlank(vnf_type)) {
+
+            if (StringUtils.isNotBlank(protocol)) {
+               if (StringUtils.isNotBlank(action)) {
+                  property = vnf_type + "." + protocol + "." + action;
+               }
+            }
+            }
+            if (conf.subset(property )!=null) {
+               if (conf.containsKey(property )) {
+                  log.info("Key Exists for property"+property +"in southbound.properties file");
+                  return true;
+               }
+            } else
+               log.info("Key Doesnot exists and need to add the key  for property"+property +"in southbound.properties file");
+                return false;
+        }
         return false;
     }
 
@@ -278,27 +306,64 @@ public class DBService {
 
     }
 
-    public void processDeviceAuthentication(SvcLogicContext context, boolean isUpdate) throws SvcLogicException {
+    public void processDeviceAuthentication(SvcLogicContext context, boolean isUpdate) throws SvcLogicException, ConfigurationException {
         String fn = "DBService.processDeviceAuthentication";
         log.info(fn + "Starting DB operation for Device Authentication " + isUpdate);
-        String key = "";
-        QueryStatus status = null;
-        if (isUpdate)
-            key = "update " + SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION + " set USER_NAME = $"
-                    + SdcArtifactHandlerConstants.USER_NAME +/* " , PASSWORD = 'dummy' " +*/ " , PORT_NUMBER = $"
-                    + SdcArtifactHandlerConstants.PORT_NUMBER + " where VNF_TYPE = $"
-                    + SdcArtifactHandlerConstants.VNF_TYPE;
-        else
-            key = "insert into " + SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION + " set  VNF_TYPE = $"
-                    + SdcArtifactHandlerConstants.VNF_TYPE + " , USER_NAME = $" + SdcArtifactHandlerConstants.USER_NAME
-                    +/* " , PASSWORD = 'dummy' " + */ " , PORT_NUMBER = $" + SdcArtifactHandlerConstants.PORT_NUMBER;
+        String protocol = context.getAttribute(SdcArtifactHandlerConstants.DEVICE_PROTOCOL);
+      String action = context.getAttribute(SdcArtifactHandlerConstants.ACTION);
+      String vnf_type = context.getAttribute(SdcArtifactHandlerConstants.VNF_TYPE);
+      String url = context.getAttribute(SdcArtifactHandlerConstants.URL);
+      String port = context.getAttribute(SdcArtifactHandlerConstants.PORT_NUMBER);
+      String user = context.getAttribute(SdcArtifactHandlerConstants.USER_NAME);
+      String property = vnf_type + "." +protocol + "." + action;
+      log.info("property :"+property);
+      if (StringUtils.isBlank(url)) {
+         url = "";
+      }
+      if (StringUtils.isBlank(port) ) {
+         port = "";
+      }
+      if (StringUtils.isBlank(user)) {
+         user = "";
+      }
+      if (((vnf_type == null) || ("".equals(vnf_type))) && ((action == null) || ("".equals(action)))
+            && ((protocol == null) || ("".equals(protocol))))
+         throw new SvcLogicException(
+               "Error While processing refernce File as few or all of parameters VNF_TYPE,PROTOCOL,ACTION are missing ");
+      PropertiesConfiguration conf = new PropertiesConfiguration(
+            SdcArtifactHandlerConstants.APPC_CONFIG_DIR + "/appc_southbound.properties");
+         log.info("is Updating to southbound  properties : "+isUpdate);
+            if (conf.containsKey(property + "." + "user")) {
+               if(user!=null && !user.isEmpty())
+               conf.setProperty(property + "." + "user", user);
+               } else {
+                                 log.info("is Adding to southbound.properties"+isUpdate);
+
+               conf.addProperty(property + "." + "user", user);
+            }
 
-        if (serviceLogic != null && context != null) {
-            status = serviceLogic.save("SQL", false, false, key, null, null, context);
-            if (status.toString().equals("FAILURE"))
-                throw new SvcLogicException("Error While processing DEVICE_AUTHENTICATION table ");
-        }
-    }
+            if (conf.containsKey(property + "." + "port")) {
+               if (port != null && !port.isEmpty())
+                  conf.setProperty(property + "." + "port", port);
+            } else {
+                  conf.addProperty(property + "." + "port", port);
+            }
+            if (conf.containsKey(property + "." + "password")) {
+            } else {
+               conf.addProperty(property + "." + "password", "");
+            }
+            if (conf.containsKey(property + "." + "url")) {
+               if (url != null && !url.isEmpty())
+                  conf.setProperty(property + "." + "url", url);
+
+            } else {
+
+               conf.addProperty(property + "." + "url", url);
+            }
+            log.info("About to save to properties file");
+             conf.save();
+            log.info("saved to properties file");
+   }
 
     public void processVnfcReference(SvcLogicContext context, boolean isUpdate) throws SvcLogicException {
         String fn = "DBService.processVnfcReference";
@@ -514,18 +579,23 @@ public class DBService {
     }
 
     public void cleanUpVnfcReferencesForVnf(SvcLogicContext context) throws SvcLogicException {
-        String key1 = "delete from " + SdcArtifactHandlerConstants.DB_VNFC_REFERENCE
-                + " where action = 'Configure' and vnf_type = $" + SdcArtifactHandlerConstants.VNF_TYPE;
-        QueryStatus status = null;
-        log.info("cleanUpVnfcReferencesForVnf()::Query:" + key1);
-        if (serviceLogic != null && context != null) {
-            status = serviceLogic.save("SQL", false, false, key1, null, null, context);
-            if (status.toString().equals("FAILURE")) {
-                log.debug("Error deleting from VNFC_REFERENCE table");
-                throw new SvcLogicException("Error While processing VNFC_REFERENCE table ");
-            }
-        }
-    }
-
-
+       try{
+   String key1 = "delete from " + SdcArtifactHandlerConstants.DB_VNFC_REFERENCE
+                 + " where action = $"+ SdcArtifactHandlerConstants.ACTION + " and vnf_type = $" + SdcArtifactHandlerConstants.VNF_TYPE;
+   log.debug("Action : " + context.getAttribute(SdcArtifactHandlerConstants.ACTION));
+   log.debug("vnfType: "+ context.getAttribute(SdcArtifactHandlerConstants.VNF_TYPE));
+   QueryStatus status = null;
+   log.info("cleanUpVnfcReferencesForVnf()::Query:" + key1);
+   if (serviceLogic != null && context != null) {
+      status = serviceLogic.save("SQL", false, false, key1, null, null, context);
+      if (status.toString().equals("FAILURE")) {
+         log.debug("Error deleting from VNFC_REFERENCE table");
+         throw new SvcLogicException("Error While processing VNFC_REFERENCE table ");
+         }
+      status = null;
+      }
+   }catch(Exception e){
+      log.debug("Error deleting from VNFC_REFERENCE table  : "+context.getAttribute(SdcArtifactHandlerConstants.ACTION) +" and " +context.getAttribute(SdcArtifactHandlerConstants.VNF_TYPE));
+      }
+   }
 }
index f01a7f0..be1e0bb 100644 (file)
@@ -242,13 +242,14 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
             JSONArray vnfActionList = new JSONArray();
             JSONArray vfModuleActionList = new JSONArray();
             JSONArray vnfcActionList = new JSONArray();
+        JSONArray vmActionVnfcFunctionCodesList=new JSONArray();
             JSONArray vmActionList = new JSONArray();
             String vnfType = null;
             JSONObject contentObject = new JSONObject(contentString);
             JSONArray contentArray = contentObject.getJSONArray("reference_data");
-            boolean storeCapabilityArtifact=true;
+            boolean storeCapabilityArtifact = true;
             for (int a = 0; a < contentArray.length(); a++) {
-
+        pdFile = false;
                 JSONObject content = (JSONObject) contentArray.get(a);
                 log.info("contentString =" + content.toString());
                 JSONObject scope = content.getJSONObject("scope");
@@ -262,6 +263,8 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                 String actionLevel = content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL);
                 context.setAttribute(SdcArtifactHandlerConstants.ACTION_LEVEL,
                         content.getString(SdcArtifactHandlerConstants.ACTION_LEVEL));
+            context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE,
+                    document_information.getString(SdcArtifactHandlerConstants.ARTIFACT_TYPE));
                 if ((null != actionLevel)
                         && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VNFC)) {
                     vnfcActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
@@ -274,17 +277,30 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                     vnfActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
                 }
                 if (null != actionLevel && actionLevel.equalsIgnoreCase(SdcArtifactHandlerConstants.ACTION_LEVEL_VM)) {
-                    vmActionList.put(content.getString(SdcArtifactHandlerConstants.ACTION));
+                if (content.has(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE_LIST)
+                            && !content.isNull(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE_LIST) && content.get(
+                                    SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE_LIST) instanceof JSONArray) {
+                        log.info("Found vnfc-function-code-list!!");
+                        JSONArray vnfcList = content.getJSONArray(SdcArtifactHandlerConstants.VNFC_FUNCTION_CODE_LIST);
+                        JSONObject obj = new JSONObject();
+                        obj.put(content.getString(SdcArtifactHandlerConstants.ACTION), vnfcList);
+                        vmActionVnfcFunctionCodesList.put(obj);
+                    } else {
+                        log.info("Not getting JSONArray for VNFC FUNCTION CODES");
+                    }
                 }
                 if (scope.has(SdcArtifactHandlerConstants.VNFC_TYPE)
                         && !scope.isNull(SdcArtifactHandlerConstants.VNFC_TYPE)) {
+            String vnfcTypeScope = scope.getString(SdcArtifactHandlerConstants.VNFC_TYPE);
+                    if (StringUtils.isNotBlank(vnfcTypeScope)) {
                     context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE,
                             scope.getString(SdcArtifactHandlerConstants.VNFC_TYPE));
-                    String vnfcTypeScope = scope.getString(SdcArtifactHandlerConstants.VNFC_TYPE);
-                    if (StringUtils.isNotBlank(vnfcTypeScope)) {
-                        storeCapabilityArtifact = false;
+                    storeCapabilityArtifact = false;
                         log.info("No capability Artifact for this reference data as it is at VNFC level!!");
                     }
+            else {
+                         context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
+                    }
                 }
                 else
                     context.setAttribute(SdcArtifactHandlerConstants.VNFC_TYPE, null);
@@ -297,7 +313,7 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                 if (content.has(SdcArtifactHandlerConstants.PORT_NUMBER))
                     context.setAttribute(SdcArtifactHandlerConstants.PORT_NUMBER,
                             content.getString(SdcArtifactHandlerConstants.PORT_NUMBER));
-                context.setAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE, "");
+                //context.setAttribute(SdcArtifactHandlerConstants.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++) {
@@ -317,7 +333,7 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                                     .substring(SdcArtifactHandlerConstants.PD.length());
                             pdFile = true;
                         }
-
+            log.info("Artifact-type = " + context.getAttribute(SdcArtifactHandlerConstants.ARTIFACT_TYPE));
                         dbservice.processSdcReferences(context, dbservice.isArtifactUpdateRequired(context,
                                 SdcArtifactHandlerConstants.DB_SDC_REFERENCE));
 
@@ -346,20 +362,20 @@ 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)))
+                    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));
                     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));
                     }
 
                 }
-
+        dbservice.processDeviceAuthentication(context, dbservice.isArtifactUpdateRequired(context,
+                                SdcArtifactHandlerConstants.DB_DEVICE_AUTHENTICATION));
 
                 populateProtocolReference(dbservice, content);
 
@@ -409,7 +425,7 @@ public class ArtifactHandlerNode implements SvcLogicJavaPlugin {
                 capabilities.put("vnf", vnfActionList);
                 capabilities.put("vf-module", vfModuleActionList);
                 capabilities.put("vnfc", vnfcActionList);
-                capabilities.put("vm", vmActionList);
+                capabilities.put("vm", vmActionVnfcFunctionCodesList);
                 processAndStoreCapablitiesArtifact(dbservice, document_information, capabilities, capabilityArtifactName,
                     vnfType);
             }
index c045ee7..5268f29 100644 (file)
@@ -57,6 +57,7 @@ public class SdcArtifactHandlerConstants {
     public static final String VM = "vm";
     public static final String VNFC = "vnfc";
     public static final String VNFC_FUNCTION_CODE = "vnfc-function-code";
+    public static final String VNFC_FUNCTION_CODE_LIST = "vnfc-function-code-list";
     public static final String GROUP_NOTATION = "group-notation";
     public static final String IPADDRESS_V4_OAM_VIP  = "ipaddress-v4-oam-vip";
     public static final String GROUP_NOTATION_TYPE  = "group-notation-type";
@@ -89,5 +90,7 @@ public class SdcArtifactHandlerConstants {
     public static final String TEMPLATE = "template";
     public static final String ARTIFACT_NAME_REFERENCE = "reference";
     public static final String ARTIFACT_NAME_CAPABILITY = "capability";
+    public static final String APPC_CONFIG_DIR="/opt/appcauth";
+    public static final String URL="url";
 }
 
index d5e86a0..f123fcc 100644 (file)
@@ -195,7 +195,7 @@ public class DBServiceTest {
         dbService.processVnfcReference(ctx, isUpdate);
     }
 
-    @Test
+    //@Test
     public void testProcessDeviceAuthentication() throws Exception {
         MockDBService dbService = MockDBService.initialise();
         SvcLogicContext ctx = new SvcLogicContext();
@@ -204,7 +204,7 @@ public class DBServiceTest {
         dbService.processDeviceAuthentication(ctx, isUpdate);
     }
 
-    @Test
+    //@Test
     public void testProcessDeviceAuthenticationException() throws Exception {
         MockDBService dbService = MockDBService.initialise();
         SvcLogicContext ctx = new SvcLogicContext();