Fix multicloud with no oof or sdnc directives 09/74009/2
authorEric Multanen <eric.w.multanen@intel.com>
Fri, 30 Nov 2018 09:54:59 +0000 (01:54 -0800)
committerMarcus G K Williams <marcus.williams@intel.com>
Fri, 30 Nov 2018 02:38:47 +0000 (18:38 -0800)
Allow the multicloud adapter to work if no
oof or sdnc directives are passed in - use an empty
json node - e.g. {}.

Change-Id: Ia701051de8a3da314957e4a4085963af6aff16b6
Issue-ID: SO-1247
Signed-off-by: Eric Multanen <eric.w.multanen@intel.com>
Signed-off-by: Marcus G K Williams <marcus.williams@intel.com>
adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/MsoMulticloudUtils.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java

index d036468..73e0da1 100644 (file)
@@ -45,6 +45,7 @@ import org.onap.so.adapters.vdu.VduStateType;
 import org.onap.so.adapters.vdu.VduStatus;
 import org.onap.so.openstack.beans.HeatStatus;
 import org.onap.so.openstack.beans.StackInfo;
+import org.onap.so.openstack.exceptions.MsoAdapterException;
 import org.onap.so.openstack.exceptions.MsoCloudSiteNotFound;
 import org.onap.so.openstack.exceptions.MsoException;
 import org.onap.so.openstack.exceptions.MsoOpenstackException;
@@ -149,8 +150,8 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
         logger.trace("Started MsoMulticloudUtils.createStack");
 
         // Get the directives, if present.
-        String oofDirectives = "";
-        String sdncDirectives = "";
+        String oofDirectives = "{}";
+        String sdncDirectives = "{}";
         String genericVnfId = "";
         String vfModuleId = "";
         String templateType = "";
@@ -185,26 +186,17 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
 
         MulticloudRequest multicloudRequest= new MulticloudRequest();
 
-        try {
-            multicloudRequest.setGenericVnfId(genericVnfId);
-            multicloudRequest.setVfModuleId(vfModuleId);
-            multicloudRequest.setOofDirectives(JSON_MAPPER.readTree(oofDirectives));
-            multicloudRequest.setSdncDirectives(JSON_MAPPER.readTree(sdncDirectives));
-            multicloudRequest.setTemplateType(templateType);
-            if (logger.isDebugEnabled()) {
-                logger.debug(String.format("Stack Template Data is: %s", stack.toString().substring(16)));
-            }
-            multicloudRequest.setTemplateData(stack);
-            if (logger.isDebugEnabled()) {
-                logger.debug(String.format("Multicloud Request is: %s", multicloudRequest.toString()));
-            }
-        } catch (Exception e) {
-            logger.debug("ERROR making multicloud JSON body ", e);
-        }
-        String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, null);
+        multicloudRequest.setGenericVnfId(genericVnfId);
+        multicloudRequest.setVfModuleId(vfModuleId);
+        multicloudRequest.setTemplateType(templateType);
+        multicloudRequest.setTemplateData(stack);
+        multicloudRequest.setOofDirectives(getDirectiveNode(oofDirectives));
+        multicloudRequest.setSdncDirectives(getDirectiveNode(sdncDirectives));
         if (logger.isDebugEnabled()) {
-            logger.debug(String.format("Multicloud Endpoint is: %s", multicloudEndpoint));
+            logger.debug(String.format("Multicloud Request is: %s", multicloudRequest.toString()));
         }
+
+        String multicloudEndpoint = getMulticloudEndpoint(cloudSiteId, null);
         RestClient multicloudClient = getMulticloudClient(multicloudEndpoint);
 
         Response response = multicloudClient.post(multicloudRequest);
@@ -617,6 +609,21 @@ public class MsoMulticloudUtils extends MsoHeatUtils implements VduPlugin{
         return client;
     }
 
+    private JsonNode getDirectiveNode(String directives) throws MsoException {
+        try {
+            return JSON_MAPPER.readTree(directives);
+        } catch (Exception e) {
+            logger.error(String.format("%d %s %s %s %d %s",
+                    MessageEnum.RA_CREATE_STACK_ERR,
+                    "Create Stack: " + e, "", "",
+                    MsoLogger.ErrorCode.BusinessProcesssError,
+                    "Exception in Create Stack: Invalid JSON format of directives" + directives));
+            MsoException me = new MsoAdapterException("Invalid JSON format of directives parameter: " + directives);
+            me.addContext(CREATE_STACK);
+            throw me;
+        }
+    }
+
     /**
      * VduPlugin interface for instantiate function.
      *
index b6f1ad1..20c2231 100644 (file)
@@ -67,8 +67,8 @@ public class MsoVnfMulticloudAdapterImplTest extends BaseRestTestUtils{
     public void createVfModule() throws Exception {
         //expectedException.expect(VnfException.class);
         Map<String, String> stackInputs = new HashMap<>();
-        stackInputs.put("oof_directives", "{oofDIRECTIVES}");
-        stackInputs.put("sdnc_directives", "{sdncDIRECTIVES}");
+        stackInputs.put("oof_directives", "{}");
+        stackInputs.put("sdnc_directives", "{}");
         stackInputs.put("generic_vnf_id", "genVNFID");
         stackInputs.put("vf_module_id", "vfMODULEID");