Take generic VNF ID and vfModule ID from request 08/69608/2
authorEric Multanen <eric.w.multanen@intel.com>
Tue, 2 Oct 2018 01:53:43 +0000 (18:53 -0700)
committerEric Multanen <eric.w.multanen@intel.com>
Tue, 2 Oct 2018 07:04:56 +0000 (00:04 -0700)
In createVfModule (for multicloud adapter), take
the generic VNF ID and vfModuleId from the Web service
request.

Change-Id: I092e081fef2ccc70c9b71dd6d75bb038c5663fef
Issue-ID: SO-1082
Signed-off-by: Eric Multanen <eric.w.multanen@intel.com>
12 files changed:
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapter.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfAdapterImpl.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImpl.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImpl.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRest.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VnfAdapterRestV2.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRest.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/vnf/VolumeAdapterRestV2.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfAdapterImplTest.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfCloudifyAdapterImplTest.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfMulticloudAdapterImplTest.java
adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/MsoVnfPluginAdapterImplTest.java

index 5efcc2c..7c49c9f 100644 (file)
@@ -7,9 +7,9 @@
  * 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.
@@ -47,8 +47,8 @@ public interface MsoVnfAdapter
                                                        @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
                                                        @WebParam(name="vnfType") @XmlElement(required=true) String vnfType,
                                                        @WebParam(name="vnfVersion") @XmlElement(required=false) String vnfVersion,
-                                                       @WebParam(name="vnfName") @XmlElement(required=true) String vnfName,
-                                                       @WebParam(name="requestType") @XmlElement(required=false) String requestType,
+                            @WebParam(name="vnfName") @XmlElement(required=true) String vnfName,
+                            @WebParam(name="requestType") @XmlElement(required=false) String requestType,
                                                        @WebParam(name="volumeGroupHeatStackId") @XmlElement(required=false) String volumeGroupHeatStackId,
                                                        @WebParam(name="inputs") Map<String,String> inputs,
                                                        @WebParam(name="failIfExists") Boolean failIfExists,
@@ -102,8 +102,10 @@ public interface MsoVnfAdapter
                                                        @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
                                                        @WebParam(name="vnfType") @XmlElement(required=true) String vnfType,
                                                        @WebParam(name="vnfVersion") @XmlElement(required=false) String vnfVersion,
-                                                       @WebParam(name="vnfName") @XmlElement(required=true) String vnfName,
-                                                       @WebParam(name="requestType") @XmlElement(required=false) String requestType,
+                                                       @WebParam(name="genericVnfId") @XmlElement(required=true) String genericVnfId,
+                            @WebParam(name="vnfName") @XmlElement(required=true) String vnfName,
+                                                       @WebParam(name="vfModuleId") @XmlElement(required=true) String vfModuleId,
+                            @WebParam(name="requestType") @XmlElement(required=false) String requestType,
                                                        @WebParam(name="volumeGroupHeatStackId") @XmlElement(required=false) String volumeGroupHeatStackId,
                                                        @WebParam(name="baseVfHeatStackId") @XmlElement(required=false) String baseVfHeatStackId,
                                                        @WebParam(name = "modelCustomizationUuid") @XmlElement(required = false) String modelCustomizationUuid,
index 0d7a739..19a41ad 100644 (file)
@@ -8,9 +8,9 @@
  * 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.
@@ -89,10 +89,10 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
 
        @Autowired
        private CloudConfig cloudConfig;
-       
+
        @Autowired
        private Environment environment;
-       
+
     private static final String MSO_CONFIGURATION_ERROR = "MsoConfigurationError";
     private static final String VNF_ADAPTER_SERVICE_NAME = "MSO-BPMN:MSO-VnfAdapter.";
     private static final MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.RA,MsoVnfAdapterImpl.class);
@@ -103,21 +103,21 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
     private static final String VALET_ENABLED = "org.onap.so.adapters.vnf.valet_enabled";
     private static final String FAIL_REQUESTS_ON_VALET_FAILURE = "org.onap.so.adapters.vnf.fail_requests_on_valet_failure";
        private static final String SUCCESS_MSG = "Successfully received response from Open Stack";
-       
+
     @Autowired
     private VFModuleCustomizationRepository vfModuleCustomRepo;
-    
-    
+
+
     @Autowired
     private VnfResourceRepository vnfResourceRepo;
-    
+
     @Autowired
     private MsoHeatUtilsWithUpdate heatU;
     @Autowired
     private MsoHeatUtils heat;
     @Autowired
     private ValetClient vci;
-    
+
     /**
      * DO NOT use that constructor to instantiate this class, the msoPropertiesfactory will be NULL.
      * @see MsoVnfAdapterImpl#MsoVnfAdapterImpl(MsoPropertiesFactory, CloudConfigFactory)
@@ -126,7 +126,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                // Do nothing
                //DO NOT use that constructor to instantiate this class, the msoPropertiesfactory will be NULL.
        }
-       
+
        /**
      * Health Check web method. Does nothing but return to show the adapter is deployed.
      */
@@ -188,6 +188,9 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                            Holder <String> vnfId,
                            Holder <Map <String, String>> outputs,
                            Holder <VnfRollback> rollback) throws VnfException {
+        // parameters used for multicloud adapter
+        String genericVnfId = "";
+        String vfModuleId = "";
        // Create a hook here to catch shortcut createVf requests:
        if (requestType != null && requestType.startsWith("VFMOD")) {
                        LOGGER.debug("Calling createVfModule from createVnf -- requestType=" + requestType);
@@ -207,7 +210,9 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                                        tenantId,
                                        vnfType,
                                        vnfVersion,
+                                       genericVnfId,
                                        vnfName,
+                                       vfModuleId,
                                        newRequestType,
                                        vfVolGroupHeatStackId,
                                        vfBaseHeatStackId,
@@ -229,22 +234,24 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
        if (requestType != null) {
                newRequestTypeSb.append(requestType);
             }
-               this.createVfModule(cloudSiteId, 
+               this.createVfModule(cloudSiteId,
                                                tenantId,
-                               vnfType, 
-                               vnfVersion, 
+                               vnfType,
+                               vnfVersion,
+                               genericVnfId,
                                                vnfName,
-                               newRequestTypeSb.toString(), 
-                               vfVolGroupHeatStackId, 
-                               vfBaseHeatStackId, 
+                vfModuleId,
+                               newRequestTypeSb.toString(),
+                               vfVolGroupHeatStackId,
+                               vfBaseHeatStackId,
                                null,
-                               inputs, 
-                               failIfExists, 
+                               inputs,
+                               failIfExists,
                                backout,
                                enableBridge,
-                               msoRequest, 
-                               vnfId, 
-                               outputs, 
+                               msoRequest,
+                               vnfId,
+                               outputs,
                                rollback);
        return;
        // End createVf shortcut
@@ -497,7 +504,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                LOGGER.debug(" HeatBridgeMain.py failed for unknown reasons! " + e);
                return false;
        }
-    }  
+    }
 
     private String convertNode(final JsonNode node) {
         try {
@@ -565,7 +572,9 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             String tenantId,
             String vnfType,
             String vnfVersion,
+            String genericVnfName,
             String vnfName,
+            String vfModuleId,
             String requestType,
             String volumeGroupHeatStackId,
             String baseVfHeatStackId,
@@ -730,8 +739,8 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                    LOGGER.debug(error);
                    throw new VnfException (error, MsoExceptionCategory.USERDATA);
                } else {
-                       LOGGER.debug("Found nested volume heat stack - copying values to inputs *later*");                      
-                       nestedVolumeOutputs = nestedHeatStack.getOutputs();             
+                       LOGGER.debug("Found nested volume heat stack - copying values to inputs *later*");
+                       nestedVolumeOutputs = nestedHeatStack.getOutputs();
                }
         }
 
@@ -762,14 +771,14 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                    LOGGER.debug(error);
                    throw new VnfException (error, MsoExceptionCategory.USERDATA);
                } else {
-                       LOGGER.debug("Found nested base heat stack - these values will be copied to inputs *later*");                   
-                       baseStackOutputs = nestedBaseHeatStack.getOutputs();                    
+                       LOGGER.debug("Found nested base heat stack - these values will be copied to inputs *later*");
+                       baseStackOutputs = nestedBaseHeatStack.getOutputs();
                }
         }
 
         // Ready to deploy the new VNF
 
-     
+
 
         try {
             // Retrieve the VF
@@ -784,7 +793,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                                vf=vfmc.getVfModule();
                        else
                                vf=null;
-                       
+
                 // 1702 - this will be the new way going forward. We find the vf by mcu - otherwise, code is the same.
                 if (vf == null) {
                                LOGGER.debug("Unable to find vfModuleCust with modelCustomizationUuid=" + mcu);
@@ -806,12 +815,12 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                     }
                 }
                }
-               
+
                else { // This is to support gamma only - get info from vnf_resource table
                                if (vfVersion != null && !vfVersion.isEmpty()) {
                                        vnfResource = vnfResourceRepo.findByModelNameAndModelVersion(vnfType, vnfVersion);
                                } else {
-                                       vnfResource = vnfResourceRepo.findByModelName(vnfType);                                                 
+                                       vnfResource = vnfResourceRepo.findByModelName(vnfType);
                                }
                                if (vnfResource == null) {
                                        String error = "Create VNF: Unknown VNF Type: " + vnfType;
@@ -828,7 +837,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             //1607 - Add version check
             // First - see if it's in the VnfResource record
             // if we have a vf Module - then we have to query to get the VnfResource record.
-            if (!oldWay && vf.getVnfResources() != null) {             
+            if (!oldWay && vf.getVnfResources() != null) {
                        vnfResource = vf.getVnfResources();
                        if (vnfResource == null) {
                                LOGGER.debug("Unable to find vnfResource will not error for now...");
@@ -874,7 +883,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                                                } catch (Exception e) {
                                                        LOGGER.debug("An exception occured while trying to test AIC Version " + e.getMessage() + " - will default to not check",e);
                                                        doNotTest = true;
-                                               }                                               
+                                               }
                                                if (!doNotTest) {
                                                        if ((moreThanMin || equalToMin) // aic >= min
                                                                        && (equalToMax || !(moreThanMax))) { //aic <= max
@@ -898,9 +907,9 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                        }
                        // End Version check 1607
 
-           
-         
-            
+
+
+
          // By the time we get here - heatTemplateId and heatEnvtId should be populated (or null)
                        HeatTemplate heatTemplate = null;
             HeatEnvironment heatEnvironment = null;
@@ -919,7 +928,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                                        }
                        }
             }
-            
+
                        if (heatTemplate == null) {
                                String error = "UpdateVF: No Heat Template ID defined in catalog database for " + vfModuleType + ", reqType=" + requestTypeString;
                                LOGGER.error(MessageEnum.RA_VNF_UNKNOWN_PARAM, "Heat Template ID", vfModuleType, "OpenStack", "", MsoLogger.ErrorCode.DataError, error);
@@ -930,18 +939,18 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                        } else {
                                LOGGER.debug ("Got HEAT Template from DB: " + heatTemplate.getHeatTemplate());
                        }
-                       
+
                        if (oldWay) {
                                //This will handle old Gamma BrocadeVCE VNF
                                LOGGER.debug ("No environment parameter found for this Type " + vfModuleType);
-                       } else { 
+                       } else {
                    if (heatEnvironment == null) {
                       String error = "Update VNF: undefined Heat Environment. VF=" + vfModuleType;
                            LOGGER.error (MessageEnum.RA_VNF_UNKNOWN_PARAM, "Heat Environment ID", "OpenStack", "", MsoLogger.ErrorCode.DataError, error);
                            LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DataNotFound, error);
                            // Alarm on this error, configuration must be fixed
                            alarmLogger.sendAlarm (MSO_CONFIGURATION_ERROR, MsoAlarmLogger.CRITICAL, error);
-       
+
                            throw new VnfException (error, MsoExceptionCategory.INTERNAL);
                    } else {
                        LOGGER.debug ("Got Heat Environment from DB: " + heatEnvironment.getEnvironment());
@@ -950,8 +959,8 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
 
             LOGGER.debug ("In MsoVnfAdapterImpl, about to call db.getNestedTemplates avec templateId="
                           + heatTemplate.getArtifactUuid ());
-            
-            
+
+
             List<HeatTemplate> nestedTemplates = heatTemplate.getChildTemplates();
             Map <String, Object> nestedTemplatesChecked = new HashMap <> ();
             if (nestedTemplates != null && !nestedTemplates.isEmpty()) {
@@ -965,11 +974,11 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                 LOGGER.debug ("No nested templates found - nothing to do here");
                 nestedTemplatesChecked = null;
             }
-            
+
             // 1510 - Also add the files: for any get_files associated with this vnf_resource_id
             // *if* there are any
             List<HeatFiles> heatFiles = null;
-            
+
                        Map<String, Object> heatFilesObjects = new HashMap<>();
 
             // Add ability to turn on adding get_files with volume requests (by property).
@@ -986,7 +995,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
 
                        if (!isVolumeRequest || addGetFilesOnVolumeReq) {
                                if (oldWay) {
-                                       LOGGER.debug("In MsoVnfAdapterImpl createVfModule, this should not happen - old way is gamma only - no heat files!");                           
+                                       LOGGER.debug("In MsoVnfAdapterImpl createVfModule, this should not happen - old way is gamma only - no heat files!");
                                } else {
                                        // 1607 - now use VF_MODULE_TO_HEAT_FILES table
                                        LOGGER.debug("In MsoVnfAdapterImpl createVfModule, about to call db.getHeatFilesForVfModule avec vfModuleId="
@@ -999,7 +1008,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                                        // Map<String, HeatFiles>
                                        // this will match the nested templates format
                                        LOGGER.debug("Contents of heatFiles - to be added to files: on stack");
-                                       
+
                                        for(HeatFiles heatfile : heatFiles){
                                                LOGGER.debug(heatfile.getFileName() + " -> "
                                                                + heatfile.getFileBody());
@@ -1038,10 +1047,10 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             // Note this also removes any comments
             MsoHeatEnvironmentEntry mhee = null;
             if (heatEnvironment != null && heatEnvironment.getEnvironment() != null && heatEnvironment.getEnvironment().contains ("parameters:")) {
-               
+
                LOGGER.debug("Enhanced environment checking enabled - 1604");
                 StringBuilder sb = new StringBuilder(heatEnvironment.getEnvironment());
-               
+
                 mhee = new MsoHeatEnvironmentEntry(sb);
                 StringBuilder sb2 = new StringBuilder("\nHeat Template Parameters:\n");
                 for (HeatTemplateParam parm : heatTemplate.getParameters()) {
@@ -1059,13 +1068,13 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             }
             // New with 1707 - all variables converted to their native object types
             Map<String, Object> goldenInputs = null;
-            
+
             LOGGER.debug("Now handle the inputs....first convert");
             ArrayList<String> parameterNames = new ArrayList<>();
             HashMap<String, String> aliasToParam = new HashMap<>();
             StringBuilder sb = new StringBuilder("\nTemplate Parameters:\n");
             int cntr = 0;
-            try { 
+            try {
                for (HeatTemplateParam htp : heatTemplate.getParameters()) {
                        sb.append("param[" + cntr++ + "]=" + htp.getParamName());
                        parameterNames.add(htp.getParamName());
@@ -1079,7 +1088,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             } catch (Exception e) {
                LOGGER.debug("??An exception occurred trying to go through Parameter Names " + e.getMessage(),e);
             }
-            // Step 1 - convert what we got as inputs (Map<String, String>) to a 
+            // Step 1 - convert what we got as inputs (Map<String, String>) to a
             // Map<String, Object> - where the object matches the param type identified in the template
             // This will also not copy over params that aren't identified in the template
             goldenInputs = heat.convertInputMap(inputs, heatTemplate);
@@ -1088,8 +1097,8 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             heat.copyBaseOutputsToInputs(goldenInputs, baseStackOutputs, parameterNames, aliasToParam);
             // Step 3 - add the volume inputs if any
             LOGGER.debug("Now add in the volume stack outputs if applicable");
-            heat.copyBaseOutputsToInputs(goldenInputs, nestedVolumeOutputs, parameterNames, aliasToParam);         
-            
+            heat.copyBaseOutputsToInputs(goldenInputs, nestedVolumeOutputs, parameterNames, aliasToParam);
+
             for (HeatTemplateParam parm : heatTemplate.getParameters ()) {
                 LOGGER.debug ("Parameter:'" + parm.getParamName ()
                               + "', isRequired="
@@ -1127,17 +1136,17 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             } else {
                 LOGGER.debug ("No missing parameters found - ok to proceed");
             }
-            // We can now remove the recreating of the ENV with only legit params - that check is done for us, 
+            // We can now remove the recreating of the ENV with only legit params - that check is done for us,
             // and it causes problems with json that has arrays
             String newEnvironmentString = null;
             if (mhee != null) {
                newEnvironmentString = mhee.getRawEntry().toString();
             }
-            
+
             // "Fix" the template if it has CR/LF (getting this from Oracle)
             String template = heatTemplate.getHeatTemplate ();
             template = template.replaceAll ("\r\n", "\n");
-            
+
             // Valet - 1806
             boolean isValetEnabled = this.checkBooleanProperty(MsoVnfAdapterImpl.VALET_ENABLED, false);
             boolean failRequestOnValetFailure = this.checkBooleanProperty(MsoVnfAdapterImpl.FAIL_REQUESTS_ON_VALET_FAILURE, false);
@@ -1169,7 +1178,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                }
                if (heat != null) {
                        LOGGER.debug("heat is not null!!");
-               
+
                        heatStack = heat.createStack (cloudSiteId,
                                               tenantId,
                                               vfModuleName,
@@ -1242,7 +1251,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
         } catch (Exception e) {
                LOGGER.debug("unhandled exception in create VF",e);
                throw new VnfException("Exception during create VF " + e.getMessage());
-        }        
+        }
     }
 
     @Override
@@ -1274,7 +1283,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
         }
         // call method which handles the conversion from Map<String,Object> to Map<String,String> for our expected Object types
         outputs.value = this.convertMapStringObjectToStringString(stackOutputs);
-        
+
         boolean isValetEnabled = this.checkBooleanProperty(MsoVnfAdapterImpl.VALET_ENABLED, false);
         boolean failRequestOnValetFailure = this.checkBooleanProperty(MsoVnfAdapterImpl.FAIL_REQUESTS_ON_VALET_FAILURE, false);
         LOGGER.debug("isValetEnabled=" + isValetEnabled + ", failRequestsOnValetFailure=" + failRequestOnValetFailure);
@@ -1349,7 +1358,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
        MsoLogger.setLogContext (msoRequest.getRequestId (), msoRequest.getServiceInstanceId ());
        String serviceName = VNF_ADAPTER_SERVICE_NAME + methodName;
        MsoLogger.setServiceName (serviceName);
-       
+
        StringBuilder sbInit = new StringBuilder();
        sbInit.append("updateVfModule: \n");
        sbInit.append("cloudSiteId=" + cloudSiteId + "\n");
@@ -1381,7 +1390,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
         if (requestType != null && !"".equals(requestType)) {
                requestTypeString = requestType;
         }
-        
+
         String nestedStackId = null;
         if (volumeGroupHeatStackId != null && !"".equals(volumeGroupHeatStackId) && !"null".equalsIgnoreCase(volumeGroupHeatStackId)) {
                nestedStackId = volumeGroupHeatStackId;
@@ -1395,8 +1404,8 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                // Create an empty set of inputs
                inputs = new HashMap<>();
                LOGGER.debug("inputs == null - setting to empty");
-        } 
-        
+        }
+
         boolean isBaseRequest = false;
         boolean isVolumeRequest = false;
         if (requestTypeString.startsWith("VOLUME")) {
@@ -1423,7 +1432,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
         vfRollback.setIsBase(isBaseRequest);
         vfRollback.setVfModuleStackId(vfModuleStackId);
         vfRollback.setModelCustomizationUuid(mcu);
-        
+
         StackInfo heatStack = null;
         long queryStackStarttime = System.currentTimeMillis ();
         LOGGER.debug("UpdateVfModule - querying for " + vfModuleName);
@@ -1484,8 +1493,8 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                    throw new VnfException (error, MsoExceptionCategory.USERDATA);
                } else {
                        LOGGER.debug("Found nested heat stack - copying values to inputs *later*");
-                       nestedVolumeOutputs = nestedHeatStack.getOutputs();             
-                       heat.copyStringOutputsToInputs(inputs, nestedHeatStack.getOutputs(), false);            
+                       nestedVolumeOutputs = nestedHeatStack.getOutputs();
+                       heat.copyStringOutputsToInputs(inputs, nestedHeatStack.getOutputs(), false);
                }
         }
         // handle a nestedBaseStackId if sent - this is the stack ID of the base.
@@ -1524,8 +1533,8 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
 
         // Ready to deploy the new VNF
 
-      
-    
+
+
             // Retrieve the VF definition
             VnfResource vnfResource = null;
                VfModule vf = null;
@@ -1555,19 +1564,19 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                        LOGGER.debug("DANGER WILL ROBINSON! This is unexpected - no nestedBaseStackId with this non-base request");
                }
             }
-            
+
             //1607 - Add version check
             // First - see if it's in the VnfResource record
             // if we have a vf Module - then we have to query to get the VnfResource record.
-            if (vf.getModelUUID() != null) { 
+            if (vf.getModelUUID() != null) {
                String vnfResourceModelUuid = vf.getModelUUID();
-               
+
                vnfResource = vf.getVnfResources();
                if (vnfResource == null) {
                        LOGGER.debug("Unable to find vnfResource at " + vnfResourceModelUuid + " will not error for now...");
                }
             }
-            
+
             String minVersionVnf = null;
             String maxVersionVnf = null;
             if (vnfResource != null) {
@@ -1588,7 +1597,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                }
                        if (minVersionVnf != null && maxVersionVnf != null) {
                                MavenLikeVersioning aicV = new MavenLikeVersioning();
-                               
+
                                // double check
                        if (this.cloudConfig != null) {
                                Optional<CloudSite> cloudSiteOpt = this.cloudConfig.getCloudSite(cloudSiteId);
@@ -1647,7 +1656,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                                heatTemplate = vf.getModuleHeatTemplate();
                                heatEnvironment = vfmc.getHeatEnvironment();
                        }
-            
+
                        if (heatTemplate == null) {
                                String error = "UpdateVF: No Heat Template ID defined in catalog database for " + vfModuleType + ", reqType=" + requestTypeString;
                                LOGGER.error(MessageEnum.RA_VNF_UNKNOWN_PARAM, "Heat Template ID", vfModuleType, "OpenStack", "", MsoLogger.ErrorCode.DataError, error);
@@ -1658,7 +1667,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                        } else {
                                LOGGER.debug ("Got HEAT Template from DB: " + heatTemplate.getHeatTemplate());
                        }
-                       
+
             if (heatEnvironment == null) {
                String error = "Update VNF: undefined Heat Environment. VF=" + vfModuleType;
                     LOGGER.error (MessageEnum.RA_VNF_UNKNOWN_PARAM, "Heat Environment ID", "OpenStack", "", MsoLogger.ErrorCode.DataError, error);
@@ -1670,18 +1679,18 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             } else {
                 LOGGER.debug ("Got Heat Environment from DB: " + heatEnvironment.getEnvironment());
             }
-            
+
             LOGGER.debug ("In MsoVnfAdapterImpl, about to call db.getNestedTemplates avec templateId="
                           + heatTemplate.getArtifactUuid ());
-            
-            
+
+
             List<HeatTemplate> nestedTemplates = heatTemplate.getChildTemplates();
             Map <String, Object> nestedTemplatesChecked = new HashMap <> ();
             if (nestedTemplates != null && !nestedTemplates.isEmpty()) {
                 // for debugging print them out
                 LOGGER.debug ("Contents of nestedTemplates - to be added to files: on stack:");
                 for (HeatTemplate entry : nestedTemplates) {
-              
+
                     nestedTemplatesChecked.put (entry.getTemplateName(), entry.getTemplateBody());
                     LOGGER.debug (entry.getTemplateName() + " -> " + entry.getTemplateBody());
                 }
@@ -1875,8 +1884,8 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                 }
                 paramList.add (parm.getParamName ());
             }
-            
-            
+
+
             if (missingParams != null) {
                 // Problem - missing one or more required parameters
                if (checkRequiredParameters) {
@@ -1927,7 +1936,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             // "Fix" the template if it has CR/LF (getting this from Oracle)
             String template = heatTemplate.getHeatTemplate ();
             template = template.replaceAll ("\r\n", "\n");
-            
+
             boolean isValetEnabled = this.checkBooleanProperty(MsoVnfAdapterImpl.VALET_ENABLED, false);
             boolean failRequestOnValetFailure = this.checkBooleanProperty(MsoVnfAdapterImpl.FAIL_REQUESTS_ON_VALET_FAILURE, false);
             LOGGER.debug("isValetEnabled=" + isValetEnabled + ", failRequestsOnValetFailure=" + failRequestOnValetFailure);
@@ -1949,7 +1958,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                                if (sendResponseToValet) {
                                        goldenInputs = valetModifiedParamsHolder.value;
                                }
-            }  
+            }
 
             // Have the tenant. Now deploy the stack itself
             // Ignore MsoTenantNotFound and MsoStackAlreadyExists exceptions
@@ -1957,16 +1966,16 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
             long updateStackStarttime = System.currentTimeMillis ();
             try {
                                heatStack = heatU.updateStack(
-                                       cloudSiteId, 
-                                       tenantId, 
-                                       vfModuleName, 
+                                       cloudSiteId,
+                                       tenantId,
+                                       vfModuleName,
                                        template,
-                                       goldenInputs, 
+                                       goldenInputs,
                                        true,
-                                       heatTemplate.getTimeoutMinutes(), 
+                                       heatTemplate.getTimeoutMinutes(),
                                        newEnvironmentString,
                                        //heatEnvironmentString,
-                                       nestedTemplatesChecked, 
+                                       nestedTemplatesChecked,
                                        heatFilesObjects
                                );
                                LOGGER.recordMetricEvent (updateStackStarttime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully receive response from Open Stack", "OpenStack", "UpdateStack", null);
@@ -1988,7 +1997,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                 }
                 throw new VnfException (me);
             }
-        
+
 
         // Reach this point if updateStack is successful.
         // Populate remaining rollback info and response parameters.
@@ -2048,7 +2057,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
        }
        return property;
     }
-    
+
     /*
      * Helper method to combine getFiles and nestedTemplates in to a single Map
      */
@@ -2080,12 +2089,12 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
         }
         return files;
     }
-    
+
     /*
      * Valet Create request
      */
-    private boolean valetCreateRequest(String cloudSiteId, String tenantId, Map<String, Object> heatFilesObjects, Map<String, Object> nestedTemplatesChecked, 
-               String vfModuleName, boolean backout, HeatTemplate heatTemplate, String newEnvironmentString, Map<String, Object> goldenInputs, 
+    private boolean valetCreateRequest(String cloudSiteId, String tenantId, Map<String, Object> heatFilesObjects, Map<String, Object> nestedTemplatesChecked,
+               String vfModuleName, boolean backout, HeatTemplate heatTemplate, String newEnvironmentString, Map<String, Object> goldenInputs,
                MsoRequest msoRequest, Map<String, String> inputs, boolean failRequestOnValetFailure, Holder<Map<String, Object>> valetModifiedParamsHolder) throws VnfException {
                boolean valetSucceeded = false;
                String valetErrorMessage = "more detail not available";
@@ -2133,16 +2142,16 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                }
                if (failRequestOnValetFailure && !valetSucceeded) {
                        // The valet request failed - and property says to fail the request
-                       //TODO Create a new exception class for valet? 
+                       //TODO Create a new exception class for valet?
                        throw new VnfException("A failure occurred with Valet: " + valetErrorMessage);
                }
                return valetSucceeded;
     }
-    
+
     /*
      * Valet update request
      */
-    
+
        private boolean valetUpdateRequest(String cloudSiteId, String tenantId,
                        Map<String, Object> heatFilesObjects, Map<String, Object> nestedTemplatesChecked, String vfModuleName,
                        boolean backout, HeatTemplate heatTemplate, String newEnvironmentString,
@@ -2201,7 +2210,7 @@ public class MsoVnfAdapterImpl implements MsoVnfAdapter {
                }
                return valetSucceeded;
        }
-       
+
        /*
         * Valet delete request
         */
index 459ff2a..41da3c2 100644 (file)
@@ -86,21 +86,21 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
     private static final String ADD_GET_FILES_ON_VOLUME_REQ = "org.onap.so.adapters.vnf.addGetFilesOnVolumeReq";
     private static final String CLOUDIFY_RESPONSE_SUCCESS="Successfully received response from Cloudify";
     private static final String CLOUDIFY="Cloudify";
-               
+
     private static final ObjectMapper JSON_MAPPER = new ObjectMapper();
-    
+
     @Autowired
     protected CloudConfig cloudConfig;
-    
+
     @Autowired
     private VFModuleCustomizationRepository vfModuleCustomRepo;
-    
+
     @Autowired
     private Environment environment;
 
     @Autowired
     protected MsoKeystoneUtils keystoneUtils;
-    
+
     @Autowired
     protected MsoCloudifyUtils cloudifyUtils;
     /**
@@ -173,9 +173,9 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
 
     /**
      * This is the "Query VNF" web service implementation.
-     * 
+     *
      * This really should be QueryVfModule, but nobody ever changed it.
-     * 
+     *
      * For Cloudify, this will look up a deployment by its deployment ID, which is really the same
      * as deployment name, since it assigned by the client when a deployment is created.
      * Also, the input cloudSiteId is used only to identify which Cloudify instance to query,
@@ -212,7 +212,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
         long subStartTime = System.currentTimeMillis ();
 
        DeploymentInfo deployment = null;
-       
+
        try {
                deployment = cloudifyUtils.queryDeployment(cloudSiteId, tenantId, vnfName);
             LOGGER.recordMetricEvent (subStartTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, CLOUDIFY_RESPONSE_SUCCESS, CLOUDIFY, "QueryDeployment", vnfName);
@@ -232,7 +232,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
             LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, error);
             throw new VnfException (me);
        }
-               
+
        if (deployment != null  &&  deployment.getStatus() != DeploymentStatus.NOTFOUND) {
             vnfExists.value = Boolean.TRUE;
             status.value = deploymentStatusToVnfStatus(deployment);
@@ -253,7 +253,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
         return;
     }
 
-    
+
     /**
      * This is the "Delete VNF" web service implementation.
      * This function is now unsupported and will return an error.
@@ -266,7 +266,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                            MsoRequest msoRequest) throws VnfException {
         MsoLogger.setLogContext (msoRequest);
        MsoLogger.setServiceName ("DeleteVnf");
-       
+
        // This operation is no longer supported at the VNF level.  The adapter is only called to deploy modules.
        LOGGER.debug ("DeleteVNF command attempted but not supported");
        throw new VnfException ("DeleteVNF:  Unsupported command", MsoExceptionCategory.USERDATA);
@@ -277,7 +277,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
      * A rollback object is returned to the client in a successful creation
      * response. The client can pass that object as-is back to the rollbackVnf
      * operation to undo the creation.
-     * 
+     *
      * TODO: This should be rollbackVfModule and/or rollbackVolumeGroup,
      * but APIs were apparently never updated.
      */
@@ -297,7 +297,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
             LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Rollback VF Module - nothing to roll back");
             return;
         }
-        
+
         // Get the elements of the VnfRollback object for easier access
         String cloudSiteId = rollback.getCloudSiteId ();
         String tenantId = rollback.getTenantId ();
@@ -319,7 +319,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                //          Go directly to Keystone until APIs could be updated to supply the name.
                MsoTenant msoTenant = keystoneUtils.queryTenant(tenantId, cloudSiteId);
                String tenantName = (msoTenant != null? msoTenant.getTenantName() : tenantId);
-               
+
                // TODO: Get a reasonable timeout.  Use a global property, or store the creation timeout in rollback object and use that.
             deployment = cloudifyUtils.uninstallAndDeleteDeployment(cloudSiteId, tenantName, vfModuleId, 5);
             LOGGER.debug("Rolled back deployment: " + deployment.getId());
@@ -344,7 +344,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
        // DeploymentInfo object should be enhanced to report a better status internally.
        DeploymentStatus status = deployment.getStatus();
        String lastAction = deployment.getLastAction();
-       
+
        if (status == null  ||  lastAction == null) {
                return VnfStatus.UNKNOWN;
        }
@@ -365,7 +365,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
 
        return VnfStatus.UNKNOWN;
     }
-    
+
     private Map <String, String> copyStringOutputs (Map <String, Object> stackOutputs) {
         Map <String, String> stringOutputs = new HashMap <String, String> ();
         for (String key : stackOutputs.keySet ()) {
@@ -425,9 +425,9 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                }
        }
        LOGGER.debug(sb.toString());
-       return; 
+       return;
     }
-    
+
     private void sendMapToDebug(Map<String, String> inputs) {
        int i = 0;
        StringBuilder sb = new StringBuilder("inputs:");
@@ -537,7 +537,9 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
      *        Deprecated - should use modelCustomizationUuid
      * @param vnfVersion VNF version key, should match a VNF definition in catalog DB
      *        Deprecated - VF Module versions also captured by modelCustomizationUuid
+     * @param genericVnfId Generic VNF ID
      * @param vfModuleName Name to be assigned to the new VF Module
+     * @param vfModuleId Id of the new VF Module
      * @param requestType Indicates if this is a Volume Group or Module request
      * @param volumeGroupId Identifier (i.e. deployment ID) for a Volume Group
      *        to attach to a VF Module
@@ -558,7 +560,9 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
             String tenantId,
             String vfModuleType,
             String vnfVersion,
+            String genericVnfId,
             String vfModuleName,
+            String vfModuleId,
             String requestType,
             String volumeGroupId,
             String baseVfModuleId,
@@ -575,7 +579,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
     {
         // Will capture execution time for metrics
         long startTime = System.currentTimeMillis ();
-        
+
        MsoLogger.setLogContext (msoRequest);
        MsoLogger.setServiceName ("CreateVfModule");
 
@@ -588,14 +592,14 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
             LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DataNotFound, error);
             throw new VnfException(error, MsoExceptionCategory.USERDATA);
         }
-        
+
         // Clean up some inputs to make comparisons easier
         if (requestType == null)
                requestType = "";
-        
+
         if ("".equals(volumeGroupId) || "null".equals(volumeGroupId))
-               volumeGroupId = null;  
-        
+               volumeGroupId = null;
+
         if ("".equals(baseVfModuleId) || "null".equals(baseVfModuleId))
                baseVfModuleId = null;
 
@@ -606,7 +610,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
         } else {
                this.sendMapToDebug(inputs);
         }
-        
+
         // Check if this is for a "Volume" module
         boolean isVolumeRequest = false;
         if (requestType.startsWith("VOLUME")) {
@@ -626,7 +630,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
         vfRollback.setBaseGroupHeatStackId(baseVfModuleId);
         vfRollback.setModelCustomizationUuid(modelCustomizationUuid);
         vfRollback.setMode("CFY");
-        
+
                rollback.value = vfRollback; // Default rollback - no updates performed
 
         // Get the VNF/VF Module definition from the Catalog DB first.
@@ -638,7 +642,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
 
         try {
                vfmc = vfModuleCustomRepo.findByModelCustomizationUUID(modelCustomizationUuid);
-               
+
             if (vfmc == null) {
                        String error = "Create vfModule error: Unable to find vfModuleCust with modelCustomizationUuid=" + modelCustomizationUuid;
                        LOGGER.debug(error);
@@ -655,7 +659,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                vnfResource = vfmc.getVfModule().getVnfResources();
         }
         catch (Exception e) {
-           
+
                LOGGER.debug("unhandled exception in create VF - [Query]" + e.getMessage());
                throw new VnfException("Exception during create VF " + e.getMessage());
         }
@@ -669,10 +673,10 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
         CloudSite cloudSite = cloudSiteOp.get();
                MavenLikeVersioning aicV = new MavenLikeVersioning();
                aicV.setVersion(cloudSite.getCloudVersion());
-    
+
                String vnfMin = vnfResource.getAicVersionMin();
                String vnfMax = vnfResource.getAicVersionMax();
-               
+
                if ( (vnfMin != null && !(aicV.isMoreRecentThan(vnfMin) || aicV.isTheSameVersion(vnfMin))) ||
                     (vnfMax != null && aicV.isMoreRecentThan(vnfMax)))
                {
@@ -683,10 +687,10 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                        throw new VnfException(error, MsoExceptionCategory.USERDATA);
                }
                // End Version check
-        
-        
+
+
         DeploymentInfo cloudifyDeployment = null;
-        
+
         // First, look up to see if the VF already exists.
 
         long subStartTime1 = System.currentTimeMillis ();
@@ -705,13 +709,13 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
             me.addContext ("CreateVFModule");
             throw new VnfException (me);
         }
-        
+
         // More precise handling/messaging if the Module already exists
         if (cloudifyDeployment != null && !(cloudifyDeployment.getStatus () == DeploymentStatus.NOTFOUND)) {
                // CREATED, INSTALLED, INSTALLING, FAILED, UNINSTALLING, UNKNOWN
                DeploymentStatus status = cloudifyDeployment.getStatus();
                        LOGGER.debug ("Found Existing Deployment, status=" + status);
-                       
+
                if (status == DeploymentStatus.INSTALLED) {
                        // fail - it exists
                        if (failIfExists != null && failIfExists) {
@@ -759,8 +763,8 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                 throw new VnfAlreadyExists (vfModuleName, cloudSiteId, tenantId, cloudifyDeployment.getId());
                }
         }
-   
-        
+
+
         // Collect outputs from Base Modules and Volume Modules
         Map<String, Object> baseModuleOutputs = null;
         Map<String, Object> volumeGroupOutputs = null;
@@ -784,7 +788,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                 me.addContext ("CreateVFModule(QueryVolume)");
                 throw new VnfException (me);
             }
-            
+
                if (volumeDeployment == null || volumeDeployment.getStatus() == DeploymentStatus.NOTFOUND) {
                    String error = "Create VFModule: Attached Volume Group DOES NOT EXIST " + volumeGroupId + " in " + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
                    LOGGER.error (MessageEnum.RA_QUERY_VNF_ERR, volumeGroupId, cloudSiteId, tenantId, error, CLOUDIFY, "queryDeployment(volume)", MsoLogger.ErrorCode.BusinessProcesssError, "Create VFModule: Attached Volume Group DOES NOT EXIST");
@@ -797,7 +801,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                        this.sendMapToDebug(volumeGroupOutputs, "volumeGroupOutputs");
                }
         }
-       
+
         // If this is an Add-On Module, query the Base Module outputs
         // Note: This will be performed whether or not the current request is for an
         //       Add-On Volume Group or Add-On VF Module
@@ -807,7 +811,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
             vfRollback.setIsBase(true);
         } else {
             LOGGER.debug("This is an Add-On Module request");
-            
+
             // Add-On Modules should always have a Base, but just treat as a warning if not provided.
             // Add-on Volume requests may or may not specify a base.
             if (!isVolumeRequest && baseVfModuleId == null) {
@@ -827,12 +831,12 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                        LOGGER.error (MessageEnum.RA_QUERY_VNF_ERR, baseVfModuleId, cloudSiteId, tenantId, CLOUDIFY, "queryDeployment(Base)", MsoLogger.ErrorCode.DataError, "Exception - queryDeployment(Base)", me);
                        LOGGER.recordMetricEvent (subStartTime2, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, error, CLOUDIFY, "QueryDeployment(Base)", baseVfModuleId);
                        LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, error);
-       
+
                        // Convert to a generic VnfException
                        me.addContext ("CreateVFModule(QueryBase)");
                        throw new VnfException (me);
                    }
-                   
+
                        if (baseDeployment == null || baseDeployment.getStatus() == DeploymentStatus.NOTFOUND) {
                            String error = "Create VFModule: Base Module DOES NOT EXIST " + baseVfModuleId + " in " + cloudSiteId + "/" + tenantId + " USER ERROR"  ;
                            LOGGER.error (MessageEnum.RA_QUERY_VNF_ERR, baseVfModuleId, cloudSiteId, tenantId, error, CLOUDIFY, "queryDeployment(Base)", MsoLogger.ErrorCode.BusinessProcesssError, "Create VFModule: Base Module DOES NOT EXIST");
@@ -846,15 +850,15 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                        }
             }
         }
-       
+
 
         // Ready to deploy the new VNF
-        
+
         // NOTE:  For this section, heatTemplate is used for both HEAT templates and Cloudify blueprints.
         // In final implementation (post-POC), the template object would either be generic or there would
         // be a separate DB Table/Object for Blueprints.
 
-      
+
                // NOTE: The template is fixed for the VF Module.  The environment is part of the customization.
         HeatTemplate heatTemplate = null;
         HeatEnvironment heatEnvironment = null;
@@ -865,7 +869,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                        heatTemplate = vf.getModuleHeatTemplate();
                        heatEnvironment = vfmc.getHeatEnvironment();
                }
-        
+
                if (heatTemplate == null) {
                        String error = "UpdateVF: No Heat Template ID defined in catalog database for " + vfModuleType + ", reqType=" + requestType;
                        LOGGER.error(MessageEnum.RA_VNF_UNKNOWN_PARAM, "Heat Template ID", vfModuleType, "OpenStack", "", MsoLogger.ErrorCode.DataError, error);
@@ -876,7 +880,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                } else {
                        LOGGER.debug ("Got HEAT Template from DB: " + heatTemplate.getHeatTemplate());
                }
-               
+
         if (heatEnvironment == null) {
            String error = "Update VNF: undefined Heat Environment. VF=" + vfModuleType;
                 LOGGER.error (MessageEnum.RA_VNF_UNKNOWN_PARAM, "Heat Environment ID", "OpenStack", "", MsoLogger.ErrorCode.DataError, error);
@@ -889,7 +893,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
             LOGGER.debug ("Got Heat Environment from DB: " + heatEnvironment.getEnvironment());
         }
 
-            
+
         try {
             // All variables converted to their native object types
             HashMap<String, Object> goldenInputs = new HashMap<String,Object>();
@@ -898,7 +902,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
             // NOTE: SKIP THIS FOR CLOUDIFY for now.  Just use what was passed in.
             //  This whole section needs to be rewritten.
                        Boolean skipInputChecks = false;
-            
+
                        if (skipInputChecks) {
                                goldenInputs = new HashMap<String,Object>();
                                for (String key : inputs.keySet()) {
@@ -908,10 +912,10 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                        else {
                                // Build maps for the parameters (including aliases) to simplify checks
                                HashMap<String, HeatTemplateParam> params = new HashMap<String, HeatTemplateParam>();
-                               
+
                                Set<HeatTemplateParam> paramSet = heatTemplate.getParameters();
                                LOGGER.debug("paramSet has " + paramSet.size() + " entries");
-                               
+
                                for (HeatTemplateParam htp : paramSet) {
                                        params.put(htp.getParamName(), htp);
 
@@ -921,7 +925,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                                                params.put(alias, htp);
                                        }
                                }
-                               
+
                                // First, convert all inputs to their "template" type
                                for (String key : inputs.keySet()) {
                                        if (params.containsKey(key)) {
@@ -936,11 +940,11 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                                                extraInputs.add(key);
                                        }
                                }
-                               
+
                                if (!extraInputs.isEmpty()) {
                                        LOGGER.debug("Ignoring extra inputs: " + extraInputs);
                                }
-                               
+
                                // Next add in Volume Group Outputs if there are any.  Copy directly without conversions.
                                if (volumeGroupOutputs != null  &&  !volumeGroupOutputs.isEmpty()) {
                                        for (String key : volumeGroupOutputs.keySet()) {
@@ -949,7 +953,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                                                }
                                        }
                                }
-                               
+
                                // Next add in Base Module Outputs if there are any.  Copy directly without conversions.
                                if (baseModuleOutputs != null  &&  !baseModuleOutputs.isEmpty()) {
                                        for (String key : baseModuleOutputs.keySet()) {
@@ -958,15 +962,15 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                                                }
                                        }
                                }
-                               
+
                                // Last, add in values from the "environment" file.
                                // These are added to the inputs, since Cloudify doesn't pass an environment file like Heat.
-                       
+
                                // TODO: This may take a different form for Cloudify, but for now process it
                                //       with Heat environment file syntax
                 StringBuilder sb = new StringBuilder(heatEnvironment.getEnvironment());
                                MsoHeatEnvironmentEntry mhee = new MsoHeatEnvironmentEntry (sb);
-                               
+
                                if (mhee.getParameters() != null) {
                                        for (MsoHeatEnvironmentParameter envParam : mhee.getParameters()) {
                                                // If this is a template input, copy to golden inputs
@@ -985,7 +989,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
 
                    this.sendMapToDebug(goldenInputs, "Final inputs sent to Cloudify");
 
-                               
+
                    // Check that required parameters have been supplied from any of the sources
                    String missingParams = null;
                    boolean checkRequiredParameters = true;
@@ -1000,8 +1004,8 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                        // No problem - default is true
                        LOGGER.debug ("An exception occured trying to get property " + MsoVnfCloudifyAdapterImpl.CHECK_REQD_PARAMS, e);
                    }
-                   
-                   
+
+
                    for (HeatTemplateParam parm : heatTemplate.getParameters ()) {
                        if (parm.isRequired () && (!goldenInputs.containsKey (parm.getParamName ()))) {
                         LOGGER.debug ("adding to missing parameters list: " + parm.getParamName ());
@@ -1012,7 +1016,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                         }
                        }
                    }
-                       
+
                    if (missingParams != null) {
                        if (checkRequiredParameters) {
                                // Problem - missing one or more required parameters
@@ -1026,7 +1030,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                    } else {
                        LOGGER.debug ("No missing parameters found - ok to proceed");
                    }
-       
+
                        } // NOTE: END PARAMETER CHECKING
 
                        // Ready to deploy the VF Module.
@@ -1034,7 +1038,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                        String blueprintName = heatTemplate.getTemplateName();
                        String blueprint = heatTemplate.getTemplateBody();
                        String blueprintId = blueprintName;
-                       
+
                        // Use the main blueprint name as the blueprint ID (strip yaml extensions).
             if (blueprintId.endsWith(".yaml"))
                blueprintId = blueprintId.substring(0,blueprintId.lastIndexOf(".yaml"));
@@ -1046,7 +1050,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                                        Map<String,byte[]> blueprintFiles = new HashMap<String,byte[]>();
 
                                        blueprintFiles.put(blueprintName, blueprint.getBytes());
-                                       
+
                            // TODO:  Implement nested blueprint logic based on Cloudify structures.
                                        //        For now, just use the Heat structures.
                                        //        The query returns a map of String->Object, where the map keys provide one layer of
@@ -1059,7 +1063,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                                    }
                            }
 
-                           // TODO:  Implement file artifact logic based on Cloudify structures.  
+                           // TODO:  Implement file artifact logic based on Cloudify structures.
                            //        For now, just use the Heat structures.
                            List<HeatFiles> heatFiles = vf.getHeatFiles();
                            if (heatFiles != null) {
@@ -1067,22 +1071,22 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                                        blueprintFiles.put(heatFile.getFileName(), heatFile.getFileBody().getBytes());
                                    }
                            }
-                           
+
                            // Upload the blueprint package
                                        cloudifyUtils.uploadBlueprint(cloudSiteId, blueprintId, blueprintName, blueprintFiles, false);
 
                                }
                        }
-               
+
                        catch (MsoException me) {
                 me.addContext ("CreateVFModule");
                 String error = "Create VF Module: Upload blueprint failed.  Blueprint=" + blueprintName + ": " + me;
                 LOGGER.error (MessageEnum.RA_CREATE_VNF_ERR, vfModuleType, cloudSiteId, tenantId, CLOUDIFY, "", MsoLogger.ErrorCode.DataError, "MsoException - uploadBlueprint", me);
                 LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, error);
                 throw new VnfException (me);
-                               
+
                        }
-                       
+
             // Ignore MsoTenantNotFound and MsoStackAlreadyExists exceptions
             // because we already checked for those.
             long createDeploymentStarttime = System.currentTimeMillis ();
@@ -1091,11 +1095,11 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                //          Go directly to Keystone until APIs could be updated to supply the name.
                MsoTenant msoTenant = keystoneUtils.queryTenant(tenantId, cloudSiteId);
                String tenantName = (msoTenant != null? msoTenant.getTenantName() : tenantId);
-               
+
                if (backout == null) {
                        backout = true;
                }
-               
+
                cloudifyDeployment = cloudifyUtils.createAndInstallDeployment (cloudSiteId,
                                               tenantName,
                                               vfModuleName,
@@ -1104,7 +1108,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                                               true,
                                               heatTemplate.getTimeoutMinutes (),
                                               backout.booleanValue());
-               
+
                 LOGGER.recordMetricEvent (createDeploymentStarttime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, CLOUDIFY_RESPONSE_SUCCESS, CLOUDIFY, "CreateDeployment", vfModuleName);
             } catch (MsoException me) {
                 me.addContext ("CreateVFModule");
@@ -1126,7 +1130,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
                 LOGGER.debug("unhandled exception at cloudify.createAndInstallDeployment");
                 LOGGER.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, "Exception while creating deployment with Cloudify");
                throw new VnfException("Exception during cloudify.createAndInstallDeployment! " + e.getMessage());
-            }          
+            }
         } catch (Exception e) {
                LOGGER.debug("unhandled exception in create VF");
                throw new VnfException("Exception during create VF " + e.getMessage());
@@ -1138,7 +1142,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
         vfRollback.setVnfCreated (true);
         vfRollback.setVnfId (cloudifyDeployment.getId());
         vnfId.value = cloudifyDeployment.getId();
-        outputs.value = copyStringOutputs (cloudifyDeployment.getOutputs ());          
+        outputs.value = copyStringOutputs (cloudifyDeployment.getOutputs ());
 
         rollback.value = vfRollback;
 
@@ -1157,7 +1161,7 @@ public class MsoVnfCloudifyAdapterImpl implements MsoVnfAdapter {
         LOGGER.debug ("Deleting VF " + vnfName + " in " + cloudSiteId + "/" + tenantId);
         // Will capture execution time for metrics
         long startTime = System.currentTimeMillis ();
-       
+
         // 1702 capture the output parameters on a delete
         // so we'll need to query first
         DeploymentInfo deployment = null;
index 9a64e62..269acb9 100644 (file)
@@ -578,7 +578,9 @@ public class MsoVnfPluginAdapterImpl implements MsoVnfAdapter {
      *        Deprecated - should use modelCustomizationUuid
      * @param vnfVersion VNF version key, should match a VNF definition in catalog DB
      *        Deprecated - VF Module versions also captured by modelCustomizationUuid
+     * @param vnfId - VNF ID
      * @param vfModuleName Name to be assigned to the new VF Module
+     * @param vfModuleId Id fo the new VF Module
      * @param requestType Indicates if this is a Volume Group or Module request
      * @param volumeGroupId Identifier (i.e. deployment ID) for a Volume Group
      *        to attach to a VF Module
@@ -599,7 +601,9 @@ public class MsoVnfPluginAdapterImpl implements MsoVnfAdapter {
             String tenantId,
             String vfModuleType,
             String vnfVersion,
+            String genericVnfId,
             String vfModuleName,
+            String vfModuleId,
             String requestType,
             String volumeGroupId,
             String baseVfModuleId,
@@ -984,15 +988,21 @@ public class MsoVnfPluginAdapterImpl implements MsoVnfAdapter {
 
                        if (!extraInputs.isEmpty()) {
                                // Add multicloud inputs
+                           boolean multicloudInputs = false;
                                for (String key : MsoMulticloudUtils.MULTICLOUD_INPUTS) {
                                        if (extraInputs.contains(key)) {
                                                goldenInputs.put(key, inputs.get(key));
                                                extraInputs.remove(key);
+                                               multicloudInputs = true;
                                                if (extraInputs.isEmpty()) {
                                                        break;
                                                }
                                        }
                                }
+                               if (multicloudInputs) {
+                    goldenInputs.put(MsoMulticloudUtils.GENERIC_VNF_ID, genericVnfId);
+                    goldenInputs.put(MsoMulticloudUtils.VF_MODULE_ID, vfModuleId);
+                               }
                                LOGGER.debug("Ignoring extra inputs: " + extraInputs);
                        }
 
index a941c7f..b4adc1a 100644 (file)
@@ -10,9 +10,9 @@
  * 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.
@@ -85,7 +85,7 @@ public class VnfAdapterRest {
        private static MsoLogger LOGGER = MsoLogger.getMsoLogger (MsoLogger.Catalog.RA, VnfAdapterRest.class);
        private static final String TESTING_KEYWORD = "___TESTING___";
        private static final String RESP=", resp=";
-       
+
        @Autowired
        private MsoVnfAdapterImpl vnfAdapter;
        //TODO Logging, SkipAAI, CREATED flags, Integrate with BPEL, Auth,
@@ -93,7 +93,7 @@ public class VnfAdapterRest {
        @Autowired
        @Qualifier("VnfBpel")
        private Provider<BpelRestClient> bpelRestClientProvider;
-       
+
 
    /*
        * URL:http://localhost:8080/vnfs/rest/v1/vnfs/<aaivnfid>/vf-modules/<aaimodid>
@@ -117,13 +117,13 @@ public class VnfAdapterRest {
        @Path("{aaiVnfId}/vf-modules/{aaiVfModuleId}")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "DeleteVfModule", 
+       @ApiOperation(value = "DeleteVfModule",
                response = Response.class,
                notes = "Delete an existing vnfModule, DeleteVfModuleRequest JSON is required")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully deleted"),
                @ApiResponse(code = 202, message = "delete vnfModule request has been accepted (async only)"),
-               @ApiResponse(code = 500, message = "delete vnfModule failed, examine entity object for details") })     
+               @ApiResponse(code = 500, message = "delete vnfModule failed, examine entity object for details") })
        public Response deleteVfModule (
                @ApiParam(value = "aaiVnfId", required = true)
                @PathParam("aaiVnfId") String aaiVnfId,
@@ -238,12 +238,12 @@ public class VnfAdapterRest {
        @GET
        @Path("{aaiVnfId}/vf-modules/{aaiVfModuleId}")
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "QueryVfModule", 
+       @ApiOperation(value = "QueryVfModule",
                response = Response.class,
                notes = "Query an existing vnfModule")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully queried"),
-               @ApiResponse(code = 500, message = "query vnfModule failed, examine entity object for details") })              
+               @ApiResponse(code = 500, message = "query vnfModule failed, examine entity object for details") })
        public Response queryVfModule(
                @ApiParam(value = "aaiVnfId", required = true)
                @PathParam("aaiVnfId") String aaiVnfId,
@@ -329,13 +329,13 @@ public class VnfAdapterRest {
        @Path("{aaiVnfId}/vf-modules")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "CreateVfModule", 
+       @ApiOperation(value = "CreateVfModule",
                response = Response.class,
                notes = "Create a vnfModule")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully created"),
                @ApiResponse(code = 202, message = "create vnfModule request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "create vnfModule failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "create vnfModule failed, examine entity object for details") })
        public Response createVfModule(
                @ApiParam(value = "aaiVnfId", required = true)
                @PathParam("aaiVnfId") String aaiVnfId,
@@ -442,7 +442,9 @@ public class VnfAdapterRest {
                                                //req.getVnfType(),
                                                completeVnfVfModuleType,
                                                req.getVnfVersion(),
+                                               req.getVnfId(),
                                                req.getVfModuleName(),
+                                               req.getVfModuleId(),
                                                req.getRequestType(),
                                                req.getVolumeGroupStackId(),
                                                req.getBaseVfModuleStackId(),
@@ -481,7 +483,7 @@ public class VnfAdapterRest {
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully updated"),
                @ApiResponse(code = 202, message = "update vnfModule request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "update vnfModule failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "update vnfModule failed, examine entity object for details") })
        public Response updateVfModule(
                        @ApiParam(value = "aaiVnfId", required = true)
                        @PathParam("aaiVnfId") String aaiVnfId,
@@ -604,13 +606,13 @@ public class VnfAdapterRest {
        @Path("{aaiVnfId}/vf-modules/{aaiVfModuleId}/rollback")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "RollbackVfModule", 
+       @ApiOperation(value = "RollbackVfModule",
                response = Response.class,
                notes = "Rollback an existing vnfModule")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully rolled back"),
                @ApiResponse(code = 202, message = "rollback vnfModule request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "rollback vnfModule failed, examine entity object for details") })           
+               @ApiResponse(code = 500, message = "rollback vnfModule failed, examine entity object for details") })
        public Response rollbackVfModule (
                        @ApiParam(value = "aaiVnfId", required = true)
                        @PathParam("aaiVnfId") String aaiVnfId,
index 7f3bad5..2c189fa 100644 (file)
@@ -9,9 +9,9 @@
  * 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.
@@ -74,7 +74,7 @@ import io.swagger.annotations.ApiResponses;
  * Both XML and JSON can be produced/consumed.  Set Accept: and Content-Type: headers appropriately.  XML is the default.
  * For testing, call with cloudSiteId = ___TESTING___
  * To test exceptions, also set tenantId = ___TESTING___
- * 
+ *
  * V2 incorporates run-time selection of sub-orchestrator implementation (Heat or Cloudify)
  * based on the target cloud.
  */
@@ -88,7 +88,7 @@ public class VnfAdapterRestV2 {
 
        @Autowired
        private VnfAdapterRestUtils vnfAdapterRestUtils;
-       
+
        @Autowired
        @Qualifier("VnfBpel")
        private Provider<BpelRestClient> bpelRestClientProvider;
@@ -115,13 +115,13 @@ public class VnfAdapterRestV2 {
        @Path("{aaiVnfId}/vf-modules/{aaiVfModuleId}")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "DeleteVfModule", 
+       @ApiOperation(value = "DeleteVfModule",
        response = Response.class,
        notes = "Delete an existing vnfModule, DeleteVfModuleRequest JSON is required")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully deleted"),
                @ApiResponse(code = 202, message = "delete vnfModule request has been accepted (async only)"),
-               @ApiResponse(code = 500, message = "delete vnfModule failed, examine entity object for details") })     
+               @ApiResponse(code = 500, message = "delete vnfModule failed, examine entity object for details") })
        public Response deleteVfModule (
                @ApiParam(value = "aaiVnfId", required = true)
                @PathParam("aaiVnfId") String aaiVnfId,
@@ -149,7 +149,7 @@ public class VnfAdapterRestV2 {
                                .entity("vfModuleId in URL does not match content")
                                .build();
                }
-               
+
                DeleteVfModuleTask task = new DeleteVfModuleTask(req, mode);
                if (req.isSynchronous()) {
                        // This is a synchronous request
@@ -243,12 +243,12 @@ public class VnfAdapterRestV2 {
        @GET
        @Path("{aaiVnfId}/vf-modules/{aaiVfModuleId}")
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "QueryVfModule", 
+       @ApiOperation(value = "QueryVfModule",
                response = Response.class,
                notes = "Query an existing vnfModule")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully queried"),
-               @ApiResponse(code = 500, message = "query vnfModule failed, examine entity object for details") })              
+               @ApiResponse(code = 500, message = "query vnfModule failed, examine entity object for details") })
        public Response queryVfModule(
                @ApiParam(value = "aaiVnfId", required = true)
                @PathParam("aaiVnfId") String aaiVnfId,
@@ -280,7 +280,7 @@ public class VnfAdapterRestV2 {
                        Holder<String> vfModuleId = new Holder<String>();
                        Holder<VnfStatus> status  = new Holder<VnfStatus>();
                        Holder<Map<String, String>> outputs = new Holder <Map <String, String>> ();
-                       
+
                        // Support different Adapter Implementations
                        MsoVnfAdapter adapter = vnfAdapterRestUtils.getVnfAdapterImpl(mode, cloudSiteId);
                        adapter.queryVnf (cloudSiteId, tenantId, vfModuleName, msoRequest, vnfExists, vfModuleId, status, outputs);
@@ -340,13 +340,13 @@ public class VnfAdapterRestV2 {
        @Path("{aaiVnfId}/vf-modules")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "CreateVfModule", 
+       @ApiOperation(value = "CreateVfModule",
                response = Response.class,
                notes = "Create a vnfModule")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully created"),
                @ApiResponse(code = 202, message = "create vnfModule request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "create vnfModule failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "create vnfModule failed, examine entity object for details") })
        public Response createVfModule(
                @ApiParam(value = "aaiVnfId", required = true)
                @PathParam("aaiVnfId") String aaiVnfId,
@@ -364,7 +364,7 @@ public class VnfAdapterRestV2 {
                                .entity("vnfid in URL does not match content")
                                .build();
                }
-               
+
                CreateVfModuleTask task = new CreateVfModuleTask(req, mode);
                if (req.isSynchronous()) {
                        // This is a synchronous request
@@ -427,7 +427,7 @@ public class VnfAdapterRestV2 {
                                Holder <VnfRollback> vnfRollback = new Holder <VnfRollback> ();
                                String completeVnfVfModuleType = req.getVnfType() + "::" + req.getVfModuleType();
                                LOGGER.debug("completeVnfVfModuleType=" + completeVnfVfModuleType);
-                               
+
                                String cloudsiteId = req.getCloudSiteId();
                                if (cloudsiteId != null && cloudsiteId.equals(TESTING_KEYWORD)) {
                                        String tenant = req.getTenantId();
@@ -446,7 +446,9 @@ public class VnfAdapterRestV2 {
                                                req.getTenantId(),
                                                completeVnfVfModuleType,
                                                req.getVnfVersion(),
+                                               req.getVnfId(),
                                                req.getVfModuleName(),
+                                               req.getVfModuleId(),
                                                req.getRequestType(),
                                                req.getVolumeGroupStackId(),
                                                req.getBaseVfModuleStackId(),
@@ -484,7 +486,7 @@ public class VnfAdapterRestV2 {
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully updated"),
                @ApiResponse(code = 202, message = "update vnfModule request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "update vnfModule failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "update vnfModule failed, examine entity object for details") })
        public Response updateVfModule(
                        @ApiParam(value = "aaiVnfId", required = true)
                        @PathParam("aaiVnfId") String aaiVnfId,
@@ -613,13 +615,13 @@ public class VnfAdapterRestV2 {
        @Path("{aaiVnfId}/vf-modules/{aaiVfModuleId}/rollback")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "RollbackVfModule", 
+       @ApiOperation(value = "RollbackVfModule",
                response = Response.class,
                notes = "Rollback an existing vnfModule")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfModule has been successfully rolled back"),
                @ApiResponse(code = 202, message = "rollback vnfModule request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "rollback vnfModule failed, examine entity object for details") })           
+               @ApiResponse(code = 500, message = "rollback vnfModule failed, examine entity object for details") })
        public Response rollbackVfModule (
                        @ApiParam(value = "aaiVnfId", required = true)
                        @PathParam("aaiVnfId") String aaiVnfId,
@@ -686,11 +688,11 @@ public class VnfAdapterRestV2 {
                                VnfRollback vrb = new VnfRollback(
                                                vmr.getVfModuleStackId(), vmr.getTenantId(), vmr.getCloudSiteId(), true, vmr.isVfModuleCreated(),
                                                vmr.getMsoRequest(), null, null, null, null);
-                               
+
                                // Support multiple adapter implementations
                                MsoVnfAdapter adapter = vnfAdapterRestUtils.getVnfAdapterImpl (vmr.getMode(), vmr.getCloudSiteId());
                                adapter.rollbackVnf (vrb);
-                               
+
                                response = new RollbackVfModuleResponse(Boolean.TRUE, req.getMessageId());
                        } catch (VnfException e) {
                                LOGGER.error (MessageEnum.RA_ROLLBACK_VNF_ERR, "", "", MsoLogger.ErrorCode.BusinessProcesssError, "Exception - rollbackVfModule", e);
index e7bf3f7..cbdd29d 100644 (file)
@@ -10,9 +10,9 @@
  * 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.
@@ -92,7 +92,7 @@ public class VolumeAdapterRest {
        @Autowired
        @Qualifier("VnfBpel")
        private Provider<BpelRestClient> bpelRestClientProvider;
-       
+
        @POST
        @Path("")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@@ -103,7 +103,7 @@ public class VolumeAdapterRest {
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully created"),
                @ApiResponse(code = 202, message = "create vnfVolume request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "create vnfVolume failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "create vnfVolume failed, examine entity object for details") })
        public Response createVNFVolumes(
                        @ApiParam(value = "CreateVolumeGroupRequest", required = true)
                        final CreateVolumeGroupRequest req
@@ -199,7 +199,9 @@ public class VolumeAdapterRest {
                                                        //req.getVnfType(), //vnfType,
                                                        completeVnfVfModuleType,
                                                        req.getVnfVersion(), //vnfVersion,
+                                                       "", // genericVnfId
                                                        req.getVolumeGroupName(), //vnfName,
+                                                       "", // vfModuleid
                                                        "VOLUME", //requestType,
                                                        null, //volumeGroupHeatStackId,
                                                        null, //baseVfHeatStackId,
@@ -246,13 +248,13 @@ public class VolumeAdapterRest {
        @Path("{aaiVolumeGroupId}")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "DeleteVNFVolumes", 
+       @ApiOperation(value = "DeleteVNFVolumes",
                response = Response.class,
                notes = "Delete an existing vnfVolume")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully deleted"),
                @ApiResponse(code = 202, message = "delete vnfVolume request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "delete vnfVolume failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "delete vnfVolume failed, examine entity object for details") })
        public Response deleteVNFVolumes(
                @ApiParam(value = "aaiVolumeGroupId", required = true)
                @PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
@@ -348,7 +350,7 @@ public class VolumeAdapterRest {
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully rolled back"),
                @ApiResponse(code = 202, message = "rollback vnfVolume request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "rollback vnfVolume failed, examine entity object for details") })           
+               @ApiResponse(code = 500, message = "rollback vnfVolume failed, examine entity object for details") })
        public Response rollbackVNFVolumes(
                @ApiParam(value = "aaiVolumeGroupId", required = true)
                @PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
@@ -447,7 +449,7 @@ public class VolumeAdapterRest {
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully updated"),
                @ApiResponse(code = 202, message = "update vnfVolume request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "update vnfVolume failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "update vnfVolume failed, examine entity object for details") })
        public Response updateVNFVolumes(
                @ApiParam(value = "aaiVolumeGroupId", required = true)
                @PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
@@ -576,7 +578,7 @@ public class VolumeAdapterRest {
                notes = "Query an existing vnfVolume")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully queried"),
-               @ApiResponse(code = 500, message = "query vnfVolume failed, examine entity object for details") })              
+               @ApiResponse(code = 500, message = "query vnfVolume failed, examine entity object for details") })
        public Response queryVNFVolumes(
                @ApiParam(value = "aaiVolumeGroupId", required = true)
                @PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
index a1ff139..445f007 100644 (file)
@@ -9,9 +9,9 @@
  * 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.
@@ -75,7 +75,7 @@ import io.swagger.annotations.ApiResponses;
  * Both XML and JSON can be produced/consumed.  Set Accept: and Content-Type: headers appropriately.  XML is the default.
  * For testing, call with cloudSiteId = ___TESTING___
  * To test exceptions, also set tenantId = ___TESTING___
- * 
+ *
  * V2 incorporates run-time selection of sub-orchestrator implementation (Heat or Cloudify)
  * based on the target cloud.
  */
@@ -88,14 +88,14 @@ public class VolumeAdapterRestV2 {
        private static final String RESP=", resp=";
        private static final String EXCEPTION="Exception :";
        private static final String VOLUME_GROUPID_MISSING="VolumeGroupId in URL does not match content";
-       
+
        @Autowired
        private VnfAdapterRestUtils vnfAdapterRestUtils;
 
        @Autowired
        @Qualifier("VnfBpel")
        private Provider<BpelRestClient> bpelRestClientProvider;
-       
+
        @POST
        @Path("")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@@ -106,7 +106,7 @@ public class VolumeAdapterRestV2 {
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully created"),
                @ApiResponse(code = 202, message = "create vnfVolume request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "create vnfVolume failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "create vnfVolume failed, examine entity object for details") })
        public Response createVNFVolumes(
                        @ApiParam(value = "mode", required = true)
                        @QueryParam("mode") String mode,
@@ -192,7 +192,9 @@ public class VolumeAdapterRestV2 {
                                                        req.getTenantId(), //tenantId,
                                                        completeVnfVfModuleType, //vnfType,
                                                        req.getVnfVersion(), //vnfVersion,
+                                                       "", // genericVnfId
                                                        req.getVolumeGroupName(), //vnfName,
+                                                       "", // vfModuleId
                                                        "VOLUME", //requestType,
                                                        null, //volumeGroupHeatStackId,
                                                        null, //baseVfHeatStackId,
@@ -206,7 +208,7 @@ public class VolumeAdapterRestV2 {
                                                        outputs,
                                                        vnfRollback);
                                }
-                               
+
                                VolumeGroupRollback rb = new VolumeGroupRollback(
                                                req.getVolumeGroupId(),
                                                stackId.value,
@@ -215,7 +217,7 @@ public class VolumeAdapterRestV2 {
                                                req.getCloudSiteId(),
                                                req.getMsoRequest(),
                                                req.getMessageId());
-                               
+
                                response = new CreateVolumeGroupResponse(
                                                req.getVolumeGroupId(),
                                                stackId.value,
@@ -241,13 +243,13 @@ public class VolumeAdapterRestV2 {
        @Path("{aaiVolumeGroupId}")
        @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
        @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
-       @ApiOperation(value = "DeleteVNFVolumes", 
+       @ApiOperation(value = "DeleteVNFVolumes",
                response = Response.class,
                notes = "Delete an existing vnfVolume")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully deleted"),
                @ApiResponse(code = 202, message = "delete vnfVolume request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "delete vnfVolume failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "delete vnfVolume failed, examine entity object for details") })
        public Response deleteVNFVolumes(
                @ApiParam(value = "aaiVolumeGroupId", required = true)
                @PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
@@ -350,7 +352,7 @@ public class VolumeAdapterRestV2 {
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully rolled back"),
                @ApiResponse(code = 202, message = "rollback vnfVolume request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "rollback vnfVolume failed, examine entity object for details") })           
+               @ApiResponse(code = 500, message = "rollback vnfVolume failed, examine entity object for details") })
        public Response rollbackVNFVolumes(
                @ApiParam(value = "aaiVolumeGroupId", required = true)
                @PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
@@ -452,7 +454,7 @@ public class VolumeAdapterRestV2 {
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully updated"),
                @ApiResponse(code = 202, message = "update vnfVolume request has been successfully accepted (async only)"),
-               @ApiResponse(code = 500, message = "update vnfVolume failed, examine entity object for details") })             
+               @ApiResponse(code = 500, message = "update vnfVolume failed, examine entity object for details") })
        public Response updateVNFVolumes(
                @ApiParam(value = "aaiVolumeGroupId", required = true)
                @PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
@@ -575,7 +577,7 @@ public class VolumeAdapterRestV2 {
                notes = "Query an existing vnfVolume")
        @ApiResponses({
                @ApiResponse(code = 200, message = "vnfVolume has been successfully queried"),
-               @ApiResponse(code = 500, message = "query vnfVolume failed, examine entity object for details") })              
+               @ApiResponse(code = 500, message = "query vnfVolume failed, examine entity object for details") })
        public Response queryVNFVolumes(
                @ApiParam(value = "aaiVolumeGroupId", required = true)
                @PathParam("aaiVolumeGroupId") String aaiVolumeGroupId,
index 005586e..849c081 100644 (file)
@@ -106,7 +106,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -126,7 +126,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -146,7 +146,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -166,7 +166,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -183,7 +183,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.TRUE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -197,7 +197,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -213,7 +213,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -232,7 +232,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -252,7 +252,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -270,7 +270,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -302,7 +302,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -339,7 +339,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "XVFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "XVFMOD",
                                "volumeGroupHeatStackId", "baseVfHeatStackId", null, map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
@@ -357,7 +357,7 @@ public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
 
                Map<String, String> map = new HashMap<>();
                map.put("key1", "value1");
-               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+               instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                                "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                                Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                                new Holder<VnfRollback>());
index 6674c71..addc12a 100644 (file)
@@ -184,7 +184,7 @@ public class MsoVnfCloudifyAdapterImplTest extends BaseRestTestUtils {
                msoRequest.setRequestId("12345");
                msoRequest.setServiceInstanceId("12345");
 
-               instance.createVfModule("123", "123", "vf", "v1", "module-005", "create", "3245", "234", "123", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+               instance.createVfModule("123", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", "123", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
        }
 
        @Test
@@ -194,7 +194,7 @@ public class MsoVnfCloudifyAdapterImplTest extends BaseRestTestUtils {
                msoRequest.setRequestId("12345");
                msoRequest.setServiceInstanceId("12345");
 
-               instance.createVfModule("123", "123", "vf", "v1", "module-005", "create", "3245", "234", null, new 
+               instance.createVfModule("123", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", null, new 
                                HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
        }
 
@@ -205,7 +205,7 @@ public class MsoVnfCloudifyAdapterImplTest extends BaseRestTestUtils {
                msoRequest.setRequestId("12345");
                msoRequest.setServiceInstanceId("12345");
 
-               instance.createVfModule("123", "123", "vf", "v1", "module-005", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+               instance.createVfModule("123", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
        }
 
        @Test
@@ -215,7 +215,7 @@ public class MsoVnfCloudifyAdapterImplTest extends BaseRestTestUtils {
                msoRequest.setRequestId("12345");
                msoRequest.setServiceInstanceId("12345");
 
-               instance.createVfModule("mtn13", "123", "vf", "v1", "module-005", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+               instance.createVfModule("mtn13", "123", "vf", "v1", "", "module-005", "", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
        }
 
        @Test
@@ -241,7 +241,7 @@ public class MsoVnfCloudifyAdapterImplTest extends BaseRestTestUtils {
                                .withBodyFile("OpenstackResponse_Access.json")
                                .withStatus(HttpStatus.SC_OK)));
 
-               instance.createVfModule("mtn13", "123", "vf", "v1", "vfname", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+               instance.createVfModule("mtn13", "123", "vf", "v1", "", "vfname", "", "create", "3245", "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", new HashMap<>(), true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
        }
 
        @Test
index 26d8779..b6f1ad1 100644 (file)
@@ -92,7 +92,7 @@ public class MsoVnfMulticloudAdapterImplTest extends BaseRestTestUtils{
                 .withBodyFile("MulticloudResponse_Stack_Create.json")
                 .withStatus(HttpStatus.SC_CREATED)));
 
-        instance.createVfModule("MTN13", "123", "vf", "v1", "vfname", "create", null, "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", stackInputs, true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
+        instance.createVfModule("MTN13", "123", "vf", "v1", "genericVnfId", "vfname", "vfModuleId", "create", null, "234", "9b339a61-69ca-465f-86b8-1c72c582b8e8", stackInputs, true, true, true,  msoRequest, new Holder<>(), new Holder<>(), new Holder<>());
     }
 
     @Test
index 936bce5..a422680 100644 (file)
@@ -58,7 +58,7 @@ public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
         MsoRequest msoRequest = getMsoRequest();
         Map<String, String> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", null, map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -70,7 +70,7 @@ public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
         MsoRequest msoRequest = getMsoRequest();
         Map<String, String> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -82,7 +82,7 @@ public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
         MsoRequest msoRequest = getMsoRequest();
         Map<String, String> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -96,7 +96,7 @@ public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
         MsoRequest msoRequest = getMsoRequest();
         Map<String, String> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+        msoVnfPluginAdapter.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 null, "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -109,7 +109,7 @@ public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
         MsoRequest msoRequest = getMsoRequest();
         Map<String, String> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());
@@ -127,7 +127,7 @@ public class MsoVnfPluginAdapterImplTest extends BaseRestTestUtils {
         MsoRequest msoRequest = getMsoRequest();
         Map<String, String> map = new HashMap<>();
         map.put("key1", "value1");
-        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
+        msoVnfPluginAdapter.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "", vnfName, "", "VFMOD",
                 "volumeGroupHeatStackId", "baseVfHeatStackId", "9b339a61-69ca-465f-86b8-1c72c582b8e8", map,
                 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
                 new Holder<VnfRollback>());