Merge "Reorder modifiers"
[so.git] / asdc-controller / src / main / java / org / openecomp / mso / asdc / installer / heat / ToscaResourceInstaller.java
index 8c08d3e..9d986d9 100644 (file)
@@ -21,6 +21,7 @@
 \r
 package org.openecomp.mso.asdc.installer.heat;\r
 \r
+import java.sql.SQLIntegrityConstraintViolationException;\r
 import java.sql.Timestamp;\r
 import java.text.SimpleDateFormat;\r
 import java.util.ArrayList;\r
@@ -32,22 +33,25 @@ import java.util.List;
 import java.util.Map;\r
 import java.util.Set;\r
 import java.util.regex.Pattern;\r
-import java.util.Collections;\r
 import java.util.regex.Matcher;\r
 import java.util.Comparator;\r
 \r
 import org.hibernate.exception.ConstraintViolationException;\r
 import org.hibernate.exception.LockAcquisitionException;\r
+import org.onap.sdc.api.consumer.IComponentDoneStatusMessage;\r
 //import org.openecomp.generic.tosca.parser.model.Metadata;\r
 //import org.openecomp.generic.tosca.parser.model.NodeTemplate;\r
-import org.openecomp.sdc.api.notification.IArtifactInfo;\r
-import org.openecomp.sdc.api.notification.IVfModuleMetadata;\r
-import org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames;\r
-import org.openecomp.sdc.toscaparser.api.Group;\r
-import org.openecomp.sdc.toscaparser.api.NodeTemplate;\r
-import org.openecomp.sdc.toscaparser.api.Property;\r
-import org.openecomp.sdc.toscaparser.api.elements.Metadata;\r
-import org.openecomp.sdc.toscaparser.api.parameters.Input;\r
+import org.onap.sdc.api.notification.IArtifactInfo;\r
+import org.onap.sdc.api.notification.IStatusData;\r
+import org.onap.sdc.api.notification.IVfModuleMetadata;\r
+import org.onap.sdc.api.results.IDistributionClientResult;\r
+import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;\r
+import org.onap.sdc.toscaparser.api.Group;\r
+import org.onap.sdc.toscaparser.api.NodeTemplate;\r
+import org.onap.sdc.toscaparser.api.Property;\r
+import org.onap.sdc.toscaparser.api.elements.Metadata;\r
+import org.onap.sdc.toscaparser.api.parameters.Input;\r
+import org.onap.sdc.utils.DistributionStatusEnum;\r
 import org.openecomp.mso.asdc.client.ASDCConfiguration;\r
 import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException;\r
 import org.openecomp.mso.asdc.installer.ASDCElementInfo;\r
@@ -58,6 +62,9 @@ import org.openecomp.mso.asdc.installer.ToscaResourceStructure;
 import org.openecomp.mso.asdc.installer.VfModuleArtifact;\r
 import org.openecomp.mso.asdc.installer.VfModuleStructure;\r
 import org.openecomp.mso.asdc.installer.VfResourceStructure;\r
+import org.openecomp.mso.asdc.tenantIsolation.DistributionStatus;\r
+import org.openecomp.mso.asdc.tenantIsolation.WatchdogDistribution;\r
+import org.openecomp.mso.asdc.util.ASDCNotificationLogging;\r
 import org.openecomp.mso.asdc.util.YamlEditor;\r
 import org.openecomp.mso.db.catalog.CatalogDatabase;\r
 import org.openecomp.mso.db.catalog.beans.AllottedResource;\r
@@ -82,6 +89,9 @@ import org.openecomp.mso.db.catalog.beans.VnfResource;
 import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;\r
 import org.openecomp.mso.logger.MessageEnum;\r
 import org.openecomp.mso.logger.MsoLogger;\r
+import org.openecomp.mso.requestsdb.WatchdogComponentDistributionStatusDb;\r
+import org.openecomp.mso.requestsdb.WatchdogDistributionStatusDb;\r
+import org.openecomp.mso.requestsdb.WatchdogServiceModVerIdLookupDb;\r
 \r
 public class ToscaResourceInstaller {// implements IVfResourceInstaller {\r
 \r
@@ -135,8 +145,42 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                        throw new ArtifactInstallerException("Exception caught during checking existence of the VNF Resource.", e);\r
                }\r
        }\r
+       \r
+       public void installTheComponentStatus(IStatusData iStatus) throws ArtifactInstallerException {\r
+               \r
+               logger.debug("Entering installTheComponentStatus for distributionId " + iStatus.getDistributionID() + " and ComponentName " + iStatus.getComponentName());\r
+               \r
+               WatchdogComponentDistributionStatusDb wdComponentDistributionStatus = WatchdogComponentDistributionStatusDb.getInstance();\r
+               \r
+               WatchdogDistributionStatusDb wdDistributionStatus = WatchdogDistributionStatusDb.getInstance();\r
+               \r
+               \r
+               try{\r
+                       //Check to make sure the distributionId exists in the Distribution Status table first.  If not then we'll need to add it\r
+                       String distributionId = wdDistributionStatus.getWatchdogDistributionId(iStatus.getDistributionID());\r
+                       \r
+                       if(distributionId == null){\r
+                               // Insert the record into the parent table first - WatchDogDistributionStatus\r
+                               wdDistributionStatus.insertWatchdogDistributionId(iStatus.getDistributionID());  \r
+                       }\r
+               \r
+                       wdComponentDistributionStatus.insertWatchdogComponentDistributionStatus(iStatus.getDistributionID(), iStatus.getComponentName(), iStatus.getStatus().toString());\r
+               \r
+               \r
+                       WatchdogDistribution wd = new WatchdogDistribution();\r
+\r
+                       String distributionStatus = wd.getOverallDistributionStatus(iStatus.getDistributionID());\r
+       \r
+                       logger.debug("Distribution status in installTheComponentStatus is : " + distributionStatus);                                    \r
+                                               \r
+               }catch (Exception e){\r
+                       logger.debug("Exception caught in installTheComponentStatus " + e.getMessage());\r
+                       throw new ArtifactInstallerException("Exception caught in installTheComponentStatus " + e.getMessage());\r
+               }\r
+\r
+       } \r
+       \r
 \r
-       //@Override\r
        public void installTheResource(ToscaResourceStructure toscaResourceStruct, VfResourceStructure vfResourceStruct) throws ArtifactInstallerException {\r
                \r
                logger.debug("installTheResource is called");\r
@@ -174,6 +218,12 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                List<ASDCElementInfo> artifactListForLogging = new ArrayList<>();\r
                \r
                CatalogDatabase catalogDB = CatalogDatabase.getInstance();\r
+               \r
+               WatchdogServiceModVerIdLookupDb wdLookupDB = WatchdogServiceModVerIdLookupDb.getInstance();\r
+               \r
+               WatchdogDistributionStatusDb wdDistributionStatus = WatchdogDistributionStatusDb.getInstance();\r
+               \r
+               WatchdogComponentDistributionStatusDb wdComponentDistributionStatus = WatchdogComponentDistributionStatusDb.getInstance();\r
                // 2. Create the VFModules/VNFResource objects by linking them to the\r
                // objects created before and store them in Resource/module structure\r
                // Opening a DB transaction, starting from here\r
@@ -184,9 +234,13 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                        \r
                        catalogDB.saveToscaCsar(toscaResourceStruct.getCatalogToscaCsar());\r
                        \r
-                       ToscaResourceInstaller.createService(toscaResourceStruct);\r
+                       ToscaResourceInstaller.createService(toscaResourceStruct, vfResourceStruct);\r
                        \r
                        catalogDB.saveService(toscaResourceStruct.getCatalogService());\r
+                       \r
+                       wdLookupDB.insertWatchdogServiceModVerIdLookup(vfResourceStructure.getNotification().getDistributionID(), vfResourceStructure.getNotification().getServiceUUID());\r
+                       \r
+                       wdDistributionStatus.insertWatchdogDistributionId(vfResourceStructure.getNotification().getDistributionID());\r
 \r
                        \r
                        /* VNF POPULATION\r
@@ -197,325 +251,340 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
             List<NodeTemplate> vfNodeTemplatesList = toscaResourceStruct.getSdcCsarHelper().getServiceVfList();\r
             int outerLoop = 0;\r
             logger.debug("**vfMondeTEmplatesList.size()=" + vfNodeTemplatesList.size());\r
-            for(NodeTemplate nodeTemplate : vfNodeTemplatesList) {\r
-                logger.debug("nodeTemplate outerLoop=" + outerLoop++);\r
-                // extract VF metadata\r
-\r
-                Metadata metadata = nodeTemplate.getMetaData();\r
-\r
-                String vfCustomizationUUID = toscaResourceStruct.getSdcCsarHelper().getMetadataPropertyValue(metadata,\r
-                        SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);\r
-                logger.debug("vfCustomizationUUID=" + vfCustomizationUUID);\r
-\r
-                // extract VF metadata\r
-                createVnfResource(nodeTemplate, toscaResourceStruct);\r
-\r
-                // check for duplicate record already in the database\r
-                VnfResource vnfResource =\r
-                        catalogDB.getVnfResource(toscaResourceStruct.getCatalogVnfResource().getModelName(),\r
-                                BigDecimalVersion.castAndCheckNotificationVersionToString(\r
-                                        toscaResourceStruct.getCatalogVnfResource().getVersion()));\r
-\r
-                if(vnfResource != null) {\r
-                    toscaResourceStruct.setVnfAlreadyInstalled(true);\r
-                }\r
+            for (NodeTemplate nodeTemplate :  vfNodeTemplatesList) {\r
+               logger.debug("nodeTemplate outerLoop=" + outerLoop++);\r
+               // extract VF metadata\r
+               \r
+                               Metadata metadata = nodeTemplate.getMetaData();\r
+                               \r
+                               \r
+                               \r
+                               //************************Flexware code*******************************************\r
+                                                               \r
+                               String serviceType = toscaResourceStruct.getCatalogService().getServiceType();\r
+               \r
+                               \r
+                               if(serviceType != null && serviceType.equalsIgnoreCase("Flexware")){\r
+                                       \r
+                                       createVnfResource(nodeTemplate, toscaResourceStruct);\r
+                                       \r
+                               // check for duplicate record already in the database\r
+                                       VnfResource vnfResource = catalogDB.getVnfResource(toscaResourceStruct.getCatalogVnfResource().getModelName(),\r
+                                                       BigDecimalVersion.castAndCheckNotificationVersionToString(\r
+                                                                       toscaResourceStruct.getCatalogVnfResource().getVersion()));\r
 \r
-                if(!toscaResourceStruct.isVnfAlreadyInstalled()) {\r
+                                       if (vnfResource != null) {\r
+                                               toscaResourceStruct.setVnfAlreadyInstalled(true);\r
+                                       }\r
+                       \r
+                       \r
+                                       if(!toscaResourceStruct.isVnfAlreadyInstalled()) {\r
+                   \r
+                                                catalogDB.saveOrUpdateVnfResource(toscaResourceStruct.getCatalogVnfResource());\r
+                                               \r
+                                       }\r
+                                       \r
+                                       \r
+                                       boolean saveVnfCustomization = catalogDB.saveVnfResourceCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization());\r
+                                       \r
+                                       if(saveVnfCustomization){\r
+                                          catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVfServiceToResourceCustomization());\r
+                                       }\r
+                                       \r
 \r
-                    catalogDB.saveOrUpdateVnfResource(toscaResourceStruct.getCatalogVnfResource());\r
+                               }\r
+                               \r
+                               \r
+                       // *************************** END of FLEXWARE CODE ****************************************************\r
+                                       \r
+                       String vfCustomizationCategory = toscaResourceStruct.getSdcCsarHelper().getMetadataPropertyValue(metadata, SdcPropertyNames.PROPERTY_NAME_CATEGORY);\r
+                                       \r
+                       if(!vfCustomizationCategory.equalsIgnoreCase("Allotted Resource")) // Do not treat Allotted Resources as VNF resources\r
+                       {\r
 \r
-                }\r
+                               String vfCustomizationUUID = toscaResourceStruct.getSdcCsarHelper().getMetadataPropertyValue(metadata, SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);\r
+                               logger.debug("vfCustomizationUUID=" + vfCustomizationUUID);\r
 \r
-                boolean saveVnfCustomization = catalogDB\r
-                        .saveVnfResourceCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization());\r
+                       \r
+                       /* HEAT TABLE POPULATION\r
+                        * *******************************************************************************************************\r
+                        */\r
+                       \r
+                               int nextLoop = 0;\r
+                       for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()) {\r
+                               logger.debug("vfResourceStructure.getVfModuleStructure() loop, nextLoop = " + nextLoop++);\r
+                               logger.debug("vfModuleStructure:" + vfModuleStructure.toString());\r
+                               \r
+                               // Here we set the right db structure according to the Catalog\r
+                               // DB\r
 \r
-                if(saveVnfCustomization) {\r
-                    catalogDB.saveServiceToResourceCustomization(\r
-                            toscaResourceStruct.getCatalogVfServiceToResourceCustomization());\r
-                }\r
+                               // We expect only one MAIN HEAT per VFMODULE\r
+                               // we can also obtain from it the Env ArtifactInfo, that's why\r
+                               // we\r
+                               // get the Main IArtifactInfo\r
 \r
-                /*\r
-                 * HEAT TABLE POPULATION\r
-                 * *********************************************************************************\r
-                 * **********************\r
-                 */\r
+                               HeatTemplate heatMainTemplate = null;\r
+                               HeatEnvironment heatEnv;\r
+                               \r
+                               HeatTemplate heatVolumeTemplate = null;\r
+                               HeatEnvironment heatVolumeEnv;\r
+                               \r
+                               \r
+                               IVfModuleData vfMetadata = vfModuleStructure.getVfModuleMetadata();\r
+                                                       \r
+                               \r
+                               if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT)) {\r
+                                       \r
+                                       List<VfModuleArtifact> artifacts = vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT);\r
+                                       logger.debug("there are " + artifacts.size() + " artifacts");\r
+                                       IArtifactInfo mainEnvArtifactInfo = null;\r
+                                       for (VfModuleArtifact vfma : artifacts) {\r
+                                               logger.debug("vmfa=" + vfma.toString());\r
+                                               mainEnvArtifactInfo = \r
+                                                               vfma.getArtifactInfo().getGeneratedArtifact();\r
+                                               \r
+                                               // MAIN HEAT\r
+                                               heatMainTemplate = (HeatTemplate) vfma.getCatalogObject(); \r
+                                               \r
+                                               // Set HeatTemplateArtifactUUID to use later when setting the VfModule and NetworkResource\r
+                                               toscaResourceStruct.setHeatTemplateUUID(heatMainTemplate.getArtifactUuid());\r
 \r
-                int nextLoop = 0;\r
-                for(VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()) {\r
-                    logger.debug("vfResourceStructure.getVfMOduleStructure() loop, nextLoop = " + nextLoop++);\r
-                    logger.debug("vfModuleStructure:" + vfModuleStructure.toString());\r
+                                               // Add this one for logging\r
+                                               artifactListForLogging.add(ASDCElementInfo\r
+                                                               .createElementFromVfArtifactInfo(vfma.getArtifactInfo()));\r
+                                               \r
+                                               catalogDB.saveHeatTemplate(heatMainTemplate, heatMainTemplate.getParameters());\r
+                                               // Indicate we have deployed it in the DB\r
+                                               vfma.incrementDeployedInDB();\r
+                                       }\r
+                                       \r
+                                       \r
+                                       // VOLUME HEAT\r
+                                       // We expect only one VOL HEAT per VFMODULE\r
+                                       // we can also obtain from it the Env ArtifactInfo, that's why\r
+                                       // we get the Volume IArtifactInfo\r
+                               \r
+                                       if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_VOL)) {\r
+                                               IArtifactInfo volEnvArtifactInfo = vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0)\r
+                                                               .getArtifactInfo().getGeneratedArtifact();\r
+               \r
+                                               heatVolumeTemplate = (HeatTemplate) vfModuleStructure.getArtifactsMap()\r
+                                                               .get(ASDCConfiguration.HEAT_VOL).get(0).getCatalogObject();\r
+                                               \r
+                                               // Set VolHeatTemplate ArtifactUUID to use later when setting the VfModule \r
+                                               toscaResourceStruct.setVolHeatTemplateUUID(heatVolumeTemplate.getArtifactUuid());\r
+                                               \r
+                                               \r
+                                               // Add this one for logging\r
+                                               artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo()));\r
 \r
-                    // Here we set the right db structure according to the Catalog\r
-                    // DB\r
+                                               catalogDB.saveHeatTemplate(heatVolumeTemplate, heatVolumeTemplate.getParameters());\r
+                                               // Indicate we have deployed it in the DB\r
+                                               vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).incrementDeployedInDB();\r
+                                               \r
+                                               if (volEnvArtifactInfo != null) {\r
+                                                       heatVolumeEnv = (HeatEnvironment) vfResourceStructure.getArtifactsMapByUUID()\r
+                                                                       .get(volEnvArtifactInfo.getArtifactUUID()).getCatalogObject();\r
+                                                       \r
+                                                       // Set VolHeatTemplate ArtifactUUID to use later when setting the VfModule \r
+                                                       toscaResourceStruct.setVolHeatEnvTemplateUUID(heatVolumeEnv.getArtifactUuid());\r
+\r
+                                                       // Add this one for logging\r
+                                                       artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(volEnvArtifactInfo));\r
+                                                                                                               \r
+                                                       catalogDB.saveHeatEnvironment(heatVolumeEnv);\r
+                                                       // Indicate we have deployed it in the DB\r
+                                                       vfResourceStructure.getArtifactsMapByUUID().get(volEnvArtifactInfo.getArtifactUUID()).incrementDeployedInDB();\r
+                                               }\r
+                                               \r
+                                       }\r
+                                       \r
+                                       // NESTED HEAT\r
+                                       // Here we expect many HEAT_NESTED template to be there\r
+                                       // XXX FIX BY PCLO: Defect# -36643 -US666034 - check first if we really have nested heat templates\r
+                                       if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_NESTED)) {\r
+                                               for (VfModuleArtifact heatNestedArtifact : vfModuleStructure.getArtifactsMap()\r
+                                                               .get(ASDCConfiguration.HEAT_NESTED)) {\r
+       \r
+                                                       // Check if this nested is well referenced by the MAIN HEAT\r
+                                                       String parentArtifactType = ToscaResourceInstaller.identifyParentOfNestedTemplate(vfModuleStructure,heatNestedArtifact);\r
+                                                       HeatTemplate heatNestedTemplate = (HeatTemplate) heatNestedArtifact.getCatalogObject();\r
+                                                       \r
+                                                       if (parentArtifactType != null) {\r
+                                                                                                               \r
+                                                               switch (parentArtifactType) {\r
+                                                                       case ASDCConfiguration.HEAT:\r
+                                                                               \r
+                                                                               // Add this one for logging\r
+                                                                               artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));\r
+                                                               \r
+                                                                               catalogDB.saveNestedHeatTemplate (heatMainTemplate.getArtifactUuid(), heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
+                                                                               // Indicate we have deployed it in the DB\r
+                                                                               heatNestedArtifact.incrementDeployedInDB();\r
+                                                                               break;\r
+                                                                       case ASDCConfiguration.HEAT_VOL:\r
+                                                                               \r
+                                                                               // Add this one for logging\r
+                                                                               artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));\r
+                                                                               catalogDB.saveNestedHeatTemplate (heatVolumeTemplate.getArtifactUuid(), heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
+                                                                               // Indicate we have deployed it in the DB\r
+                                                                               heatNestedArtifact.incrementDeployedInDB();\r
+                                                                               break;\r
+                                                                               \r
+                                                                       default:\r
+                                                                               break;\r
 \r
-                    // We expect only one MAIN HEAT per VFMODULE\r
-                    // we can also obtain from it the Env ArtifactInfo, that's why\r
-                    // we\r
-                    // get the Main IArtifactInfo\r
+                                                               }\r
+                                                       } else { // Assume it belongs to HEAT MAIN\r
+                                                               // Add this one for logging\r
+                                                               artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));\r
+                                               \r
+                                                               catalogDB.saveNestedHeatTemplate (heatMainTemplate.getArtifactUuid(), heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
+                                                               // Indicate we have deployed it in the DB\r
+                                                               heatNestedArtifact.incrementDeployedInDB();\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                                       \r
+                                       if (mainEnvArtifactInfo != null) {\r
+                                               heatEnv = (HeatEnvironment) vfResourceStructure.getArtifactsMapByUUID()\r
+                                                               .get(mainEnvArtifactInfo.getArtifactUUID()).getCatalogObject();\r
+                                               \r
+                                               // Set HeatEnvironmentArtifactUUID to use later when setting the VfModule \r
+                                               toscaResourceStruct.setEnvHeatTemplateUUID(heatEnv.getArtifactUuid());\r
 \r
-                    HeatTemplate heatMainTemplate = null;\r
-                    HeatEnvironment heatEnv;\r
+                                               // Add this one for logging\r
+                                               artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(mainEnvArtifactInfo));\r
+                                                                                               \r
+                                               catalogDB.saveHeatEnvironment(heatEnv);\r
+                                               // Indicate we have deployed it in the DB\r
+                                               vfResourceStructure.getArtifactsMapByUUID().get(mainEnvArtifactInfo.getArtifactUUID()).incrementDeployedInDB();\r
+                                       }\r
+                                       \r
+                                       // here we expect one VFModule to be there\r
+                                       //VfResourceInstaller.createVfModule(vfModuleStructure,heatMainTemplate, heatVolumeTemplate, heatEnv, heatVolumeEnv);\r
+                                       //VfModule vfModule = vfModuleStructure.getCatalogVfModule();\r
 \r
-                    HeatTemplate heatVolumeTemplate = null;\r
-                    HeatEnvironment heatVolumeEnv;\r
+                                       // Add this one for logging\r
+                                       //artifactListForLogging.add(ASDCElementInfo.createElementFromVfModuleStructure(vfModuleStructure));\r
+                                       \r
+                                       //catalogDB.saveOrUpdateVfModule(vfModule);\r
+                                       \r
+                                       \r
+                       // extract VF metadata                  \r
+                                       createVnfResource(nodeTemplate, toscaResourceStruct);\r
+                                       \r
+                               // check for duplicate record already in the database\r
+                                       VnfResource vnfResource = catalogDB.getVnfResource(toscaResourceStruct.getCatalogVnfResource().getModelName(),\r
+                                                       BigDecimalVersion.castAndCheckNotificationVersionToString(\r
+                                                                       toscaResourceStruct.getCatalogVnfResource().getVersion()));\r
 \r
-                    IVfModuleData vfMetadata = vfModuleStructure.getVfModuleMetadata();\r
+                                       if (vnfResource != null) {\r
+                                               toscaResourceStruct.setVnfAlreadyInstalled(true);\r
+                                       }\r
+                       \r
+                       \r
+                                       if(!toscaResourceStruct.isVnfAlreadyInstalled()) {\r
+                   \r
+                                                catalogDB.saveOrUpdateVnfResource(toscaResourceStruct.getCatalogVnfResource());\r
+                                               \r
+                                       }\r
+                                       \r
+                                                               \r
+                                       catalogDB.saveVnfResourceCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization());                       \r
 \r
-                    if(vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT)) {\r
+                                       catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVfServiceToResourceCustomization());\r
 \r
-                        List<VfModuleArtifact> artifacts =\r
-                                vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT);\r
-                        logger.debug("there are " + artifacts.size() + " artifacts");\r
-                        IArtifactInfo mainEnvArtifactInfo = null;\r
-                        for(VfModuleArtifact vfma : artifacts) {\r
-                            logger.debug("vmfa=" + vfma.toString());\r
-                            mainEnvArtifactInfo = vfma.getArtifactInfo().getGeneratedArtifact();\r
-\r
-                            // MAIN HEAT\r
-                            heatMainTemplate = (HeatTemplate)vfma.getCatalogObject();\r
-\r
-                            // Set HeatTemplateArtifactUUID to use later when setting the VfModule\r
-                            // and NetworkResource\r
-                            toscaResourceStruct.setHeatTemplateUUID(heatMainTemplate.getArtifactUuid());\r
-\r
-                            // Add this one for logging\r
-                            artifactListForLogging\r
-                                    .add(ASDCElementInfo.createElementFromVfArtifactInfo(vfma.getArtifactInfo()));\r
-\r
-                            catalogDB.saveHeatTemplate(heatMainTemplate, heatMainTemplate.getParameters());\r
-                            // Indicate we have deployed it in the DB\r
-                            vfma.incrementDeployedInDB();\r
-                        }\r
-\r
-                        // VOLUME HEAT\r
-                        // We expect only one VOL HEAT per VFMODULE\r
-                        // we can also obtain from it the Env ArtifactInfo, that's why\r
-                        // we get the Volume IArtifactInfo\r
-\r
-                        if(vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_VOL)) {\r
-                            IArtifactInfo volEnvArtifactInfo = vfModuleStructure.getArtifactsMap()\r
-                                    .get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getGeneratedArtifact();\r
-\r
-                            heatVolumeTemplate = (HeatTemplate)vfModuleStructure.getArtifactsMap()\r
-                                    .get(ASDCConfiguration.HEAT_VOL).get(0).getCatalogObject();\r
-\r
-                            // Set VolHeatTemplate ArtifactUUID to use later when setting the\r
-                            // VfModule\r
-                            toscaResourceStruct.setVolHeatTemplateUUID(heatVolumeTemplate.getArtifactUuid());\r
-\r
-                            // Add this one for logging\r
-                            artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(vfModuleStructure\r
-                                    .getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo()));\r
-\r
-                            catalogDB.saveHeatTemplate(heatVolumeTemplate, heatVolumeTemplate.getParameters());\r
-                            // Indicate we have deployed it in the DB\r
-                            vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0)\r
-                                    .incrementDeployedInDB();\r
-\r
-                            if(volEnvArtifactInfo != null) {\r
-                                heatVolumeEnv = (HeatEnvironment)vfResourceStructure.getArtifactsMapByUUID()\r
-                                        .get(volEnvArtifactInfo.getArtifactUUID()).getCatalogObject();\r
-\r
-                                // Set VolHeatTemplate ArtifactUUID to use later when setting the\r
-                                // VfModule\r
-                                toscaResourceStruct.setVolHeatEnvTemplateUUID(heatVolumeEnv.getArtifactUuid());\r
-\r
-                                // Add this one for logging\r
-                                artifactListForLogging\r
-                                        .add(ASDCElementInfo.createElementFromVfArtifactInfo(volEnvArtifactInfo));\r
-\r
-                                catalogDB.saveHeatEnvironment(heatVolumeEnv);\r
-                                // Indicate we have deployed it in the DB\r
-                                vfResourceStructure.getArtifactsMapByUUID().get(volEnvArtifactInfo.getArtifactUUID())\r
-                                        .incrementDeployedInDB();\r
-                            }\r
-\r
-                        }\r
-\r
-                        // NESTED HEAT\r
-                        // Here we expect many HEAT_NESTED template to be there\r
-                        // XXX FIX BY PCLO: Defect# -36643 -US666034 - check first if we really have\r
-                        // nested heat templates\r
-                        if(vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_NESTED)) {\r
-                            for(VfModuleArtifact heatNestedArtifact : vfModuleStructure.getArtifactsMap()\r
-                                    .get(ASDCConfiguration.HEAT_NESTED)) {\r
-\r
-                                // Check if this nested is well referenced by the MAIN HEAT\r
-                                String parentArtifactType = ToscaResourceInstaller\r
-                                        .identifyParentOfNestedTemplate(vfModuleStructure, heatNestedArtifact);\r
-                                HeatTemplate heatNestedTemplate = (HeatTemplate)heatNestedArtifact.getCatalogObject();\r
-\r
-                                if(parentArtifactType != null) {\r
-\r
-                                    switch(parentArtifactType) {\r
-                                        case ASDCConfiguration.HEAT:\r
-\r
-                                            // Add this one for logging\r
-                                            artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(\r
-                                                    heatNestedArtifact.getArtifactInfo()));\r
-\r
-                                            catalogDB.saveNestedHeatTemplate(heatMainTemplate.getArtifactUuid(),\r
-                                                    heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
-                                            // Indicate we have deployed it in the DB\r
-                                            heatNestedArtifact.incrementDeployedInDB();\r
-                                            break;\r
-                                        case ASDCConfiguration.HEAT_VOL:\r
-\r
-                                            // Add this one for logging\r
-                                            artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(\r
-                                                    heatNestedArtifact.getArtifactInfo()));\r
-                                            catalogDB.saveNestedHeatTemplate(heatVolumeTemplate.getArtifactUuid(),\r
-                                                    heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
-                                            // Indicate we have deployed it in the DB\r
-                                            heatNestedArtifact.incrementDeployedInDB();\r
-                                            break;\r
-\r
-                                        default:\r
-                                            break;\r
-\r
-                                    }\r
-                                } else { // Assume it belongs to HEAT MAIN\r
-                                    // Add this one for logging\r
-                                    artifactListForLogging.add(ASDCElementInfo\r
-                                            .createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));\r
-\r
-                                    catalogDB.saveNestedHeatTemplate(heatMainTemplate.getArtifactUuid(),\r
-                                            heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
-                                    // Indicate we have deployed it in the DB\r
-                                    heatNestedArtifact.incrementDeployedInDB();\r
-                                }\r
-                            }\r
-                        }\r
-\r
-                        if(mainEnvArtifactInfo != null) {\r
-                            heatEnv = (HeatEnvironment)vfResourceStructure.getArtifactsMapByUUID()\r
-                                    .get(mainEnvArtifactInfo.getArtifactUUID()).getCatalogObject();\r
-\r
-                            // Set HeatEnvironmentArtifactUUID to use later when setting the\r
-                            // VfModule\r
-                            toscaResourceStruct.setEnvHeatTemplateUUID(heatEnv.getArtifactUuid());\r
-\r
-                            // Add this one for logging\r
-                            artifactListForLogging\r
-                                    .add(ASDCElementInfo.createElementFromVfArtifactInfo(mainEnvArtifactInfo));\r
-\r
-                            catalogDB.saveHeatEnvironment(heatEnv);\r
-                            // Indicate we have deployed it in the DB\r
-                            vfResourceStructure.getArtifactsMapByUUID().get(mainEnvArtifactInfo.getArtifactUUID())\r
-                                    .incrementDeployedInDB();\r
-                        }\r
-\r
-                        // here we expect one VFModule to be there\r
-                        // VfResourceInstaller.createVfModule(vfModuleStructure,heatMainTemplate,\r
-                        // heatVolumeTemplate, heatEnv, heatVolumeEnv);\r
-                        // VfModule vfModule = vfModuleStructure.getCatalogVfModule();\r
-\r
-                        // Add this one for logging\r
-                        // artifactListForLogging.add(ASDCElementInfo.createElementFromVfModuleStructure(vfModuleStructure));\r
-\r
-                        // catalogDB.saveOrUpdateVfModule(vfModule);\r
-\r
-                        List<org.openecomp.sdc.toscaparser.api.Group> vfGroups =\r
-                                toscaResourceStruct.getSdcCsarHelper().getVfModulesByVf(vfCustomizationUUID);\r
-                        logger.debug("vfGroups:" + vfGroups.toString());\r
 \r
+                                               List<org.onap.sdc.toscaparser.api.Group> vfGroups = toscaResourceStruct.getSdcCsarHelper().getVfModulesByVf(vfCustomizationUUID);\r
+                                               logger.debug("vfGroups:" + vfGroups.toString());\r
+                                               \r
                                                vfGroups.sort((group1, group2) -> {\r
+                                                               //Field name1Field = group1.class.getDeclaredField("name");\r
+                                                               //name1Field.setAccessible(true);\r
+                                                               String thisName = group1.getName(); //(String) name1Field.get(group1);\r
+                                                               String thatName = group2.getName(); // (String) name1Field.get(group2);\r
+                                                               \r
+                                                               Matcher m = lastDigit.matcher(thisName);\r
+                                                               Matcher m2 = lastDigit.matcher(thatName);\r
+                                                               \r
+                                                               String thisDigit = "0";\r
+                                                               String thatDigit = "0";\r
+                                                               if (m.find()) {\r
+                                                                       thisDigit = m.group();\r
+                                                               } else {\r
+                                                                       return -1;\r
+                                                               }\r
+                                                               if (m2.find()) {\r
+                                                                       thatDigit = m2.group();\r
+                                                               } else {\r
+                                                                       return 1;\r
+                                                               }\r
+                                                               \r
+                                                               return new Integer(thisDigit).compareTo(new Integer(thatDigit));\r
+                                                       });\r
+                                               \r
+                                               logger.debug("vfGroupsAfter:" + vfGroups.toString());\r
 \r
-                                                       // Field name1Field = group1.class.getDeclaredField("name");\r
-                                                       // name1Field.setAccessible(true);\r
-                                                       String thisName = group1.getName(); // (String)\r
-                                                       // name1Field.get(group1);\r
-                                                       String thatName = group2.getName(); // (String)\r
-                                                       // name1Field.get(group2);\r
-\r
-                                                       Matcher m = lastDigit.matcher(thisName);\r
-                                                       Matcher m2 = lastDigit.matcher(thatName);\r
-\r
-                                                       String thisDigit = "0";\r
-                                                       String thatDigit = "0";\r
-                                                       if (m.find()) {\r
-                                                               thisDigit = m.group();\r
+                                               \r
+                                               for(Group group : vfGroups){\r
+                                                       \r
+                               \r
+                                                       //boolean saveVFModule = createVFModule(group, nodeTemplate, toscaResourceStruct, vfMetadata);\r
+                                                       if (vfMetadata.getVfModuleModelCustomizationUUID() == null) {\r
+                                                               logger.debug("NULL 1");\r
                                                        } else {\r
-                                                               return -1;\r
+                                                               logger.debug("vfMetadata.getMCU=" + vfMetadata.getVfModuleModelCustomizationUUID());\r
                                                        }\r
-                                                       if (m2.find()) {\r
-                                                               thatDigit = m2.group();\r
+                                                       if (group.getMetadata() == null) {\r
+                                                               logger.debug("NULL 3");\r
                                                        } else {\r
-                                                               return 1;\r
+                                                               logger.debug("group.getMetadata().getValue() = " + group.getMetadata().getValue("vfModuleModelCustomizationUUID"));\r
                                                        }\r
+                                                       if (vfMetadata.getVfModuleModelCustomizationUUID().equals(group.getMetadata().getValue("vfModuleModelCustomizationUUID"))) {\r
+                                                               logger.debug("Found a match at " + vfMetadata.getVfModuleModelCustomizationUUID());\r
+                                                          createVFModule(group, nodeTemplate, toscaResourceStruct, vfResourceStructure, vfMetadata);\r
+                               \r
+                                                               catalogDB.saveOrUpdateVfModule(toscaResourceStruct.getCatalogVfModule());\r
+                               \r
+                                                               catalogDB.saveOrUpdateVfModuleCustomization(toscaResourceStruct.getCatalogVfModuleCustomization());\r
+                                                               \r
+                                                               catalogDB.saveVnfResourceToVfModuleCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization(), toscaResourceStruct.getCatalogVfModuleCustomization());\r
+                               \r
 \r
-                                                       return new Integer(thisDigit).compareTo(new Integer(thatDigit));\r
-\r
-                                               });\r
-\r
-                        logger.debug("vfGroupsAfter:" + vfGroups.toString());\r
-\r
-                        for(Group group : vfGroups) {\r
-\r
-                            // boolean saveVFModule = createVFModule(group, nodeTemplate,\r
-                            // toscaResourceStruct, vfMetadata);\r
-                            if(vfMetadata.getVfModuleModelCustomizationUUID() == null) {\r
-                                logger.debug("NULL 1");\r
-                            } else {\r
-                                logger.debug("vfMetadata.getMCU=" + vfMetadata.getVfModuleModelCustomizationUUID());\r
-                            }\r
-                            if(group.getMetadata() == null) {\r
-                                logger.debug("NULL 3");\r
-                            } else {\r
-                                logger.debug("group.getMetadata().getValue() = "\r
-                                        + group.getMetadata().getValue("vfModuleModelCustomizationUUID"));\r
-                            }\r
-                            if(vfMetadata.getVfModuleModelCustomizationUUID()\r
-                                    .equals(group.getMetadata().getValue("vfModuleModelCustomizationUUID"))) {\r
-                                logger.debug("Found a match at " + vfMetadata.getVfModuleModelCustomizationUUID());\r
-                                createVFModule(group, nodeTemplate, toscaResourceStruct, vfResourceStructure,\r
-                                        vfMetadata);\r
-\r
-                                catalogDB.saveOrUpdateVfModule(toscaResourceStruct.getCatalogVfModule());\r
-\r
-                                catalogDB.saveOrUpdateVfModuleCustomization(\r
-                                        toscaResourceStruct.getCatalogVfModuleCustomization());\r
-\r
-                                catalogDB.saveVnfResourceToVfModuleCustomization(\r
-                                        toscaResourceStruct.getCatalogVnfResourceCustomization(),\r
-                                        toscaResourceStruct.getCatalogVfModuleCustomization());\r
-\r
-                            } else {\r
-                                if(toscaResourceStruct.getCatalogVfModuleCustomization() != null) {\r
-                                    logger.debug("No match for " + toscaResourceStruct.getCatalogVfModuleCustomization()\r
-                                            .getModelCustomizationUuid());\r
-                                } else {\r
-                                    logger.debug("No match for vfModuleModelCustomizationUUID");\r
-                                }\r
-                            }\r
-\r
-                        }\r
-\r
-                    } // Commented out to process VFModules each time\r
-\r
-                    // Here we expect many HEAT_TEMPLATE files to be there\r
-                    if(vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_ARTIFACT)) {\r
-                        for(VfModuleArtifact heatArtifact : vfModuleStructure.getArtifactsMap()\r
-                                .get(ASDCConfiguration.HEAT_ARTIFACT)) {\r
-\r
-                            HeatFiles heatFile = (HeatFiles)heatArtifact.getCatalogObject();\r
-\r
-                            // Add this one for logging\r
-                            artifactListForLogging.add(\r
-                                    ASDCElementInfo.createElementFromVfArtifactInfo(heatArtifact.getArtifactInfo()));\r
-\r
-                            if(toscaResourceStruct.getCatalogVfModule() != null && heatFile != null) {\r
-                                catalogDB.saveVfModuleToHeatFiles(\r
-                                        toscaResourceStruct.getCatalogVfModule().getModelUUID(), heatFile);\r
-                            }\r
-                            // Indicate we will deploy it in the DB\r
-                            heatArtifact.incrementDeployedInDB();\r
-                        }\r
-                    }\r
-\r
-                }\r
-\r
-            }\r
+                                                       } else {\r
+                                                               if(toscaResourceStruct.getCatalogVfModuleCustomization() != null){\r
+                                                                       logger.debug("No match for " + toscaResourceStruct.getCatalogVfModuleCustomization().getModelCustomizationUuid());\r
+                                                               } else {\r
+                                                                       logger.debug("No match for vfModuleModelCustomizationUUID");\r
+                                                               }\r
+                                                       }\r
+                               \r
+                                               }\r
+                                                          \r
+                                       } //Commented out to process VFModules each time \r
+                                       \r
+                                       // Here we expect many HEAT_TEMPLATE files to be there\r
+                                       if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_ARTIFACT)) {\r
+                                               for (VfModuleArtifact heatArtifact : vfModuleStructure.getArtifactsMap()\r
+                                                               .get(ASDCConfiguration.HEAT_ARTIFACT)) {\r
+               \r
+                                                       HeatFiles heatFile = (HeatFiles) heatArtifact.getCatalogObject();\r
+                                                                                               \r
+                                                       // Add this one for logging\r
+                                                       artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatArtifact.getArtifactInfo()));\r
+                                               \r
+                                                       if(toscaResourceStruct.getCatalogVfModule() != null && heatFile != null){\r
+                                                               catalogDB.saveVfModuleToHeatFiles (toscaResourceStruct.getCatalogVfModule().getModelUUID(), heatFile);\r
+                                                       }\r
+                                                       // Indicate we will deploy it in the DB\r
+                                                       heatArtifact.incrementDeployedInDB();\r
+                                               }\r
+                                       }\r
+                                       \r
+                                 }\r
+                               }\r
+               }\r
                                \r
                                /* END OF HEAT TABLE POPULATION\r
                                 * ***************************************************************************************************\r
@@ -527,29 +596,40 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
             \r
             List<NodeTemplate> allottedResourceList = toscaResourceStruct.getSdcCsarHelper().getAllottedResources();\r
                \r
-                       if(allottedResourceList != null){\r
-                       \r
-                               for(NodeTemplate allottedNode : allottedResourceList){\r
-                                       \r
-                                       createAllottedResource(allottedNode, toscaResourceStruct);\r
-                                       \r
-                                       catalogDB.saveAllottedResource(toscaResourceStruct.getAllottedResource());\r
-                                       \r
-                                       catalogDB.saveAllottedResourceCustomization(toscaResourceStruct.getCatalogAllottedResourceCustomization());\r
-                                       \r
-                                       catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogAllottedServiceToResourceCustomization());\r
-                                       \r
-                               }\r
-                       }\r
-                       \r
+                       if(allottedResourceList != null){\r
+\r
+                               for(NodeTemplate allottedNode : allottedResourceList){\r
+\r
+                                       createAllottedResource(allottedNode, toscaResourceStruct);\r
+\r
+                                       catalogDB.saveAllottedResource(toscaResourceStruct.getAllottedResource());\r
+\r
+                                       catalogDB.saveAllottedResourceCustomization(toscaResourceStruct.getCatalogAllottedResourceCustomization());\r
+\r
+                                       catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogAllottedServiceToResourceCustomization());\r
+\r
+                               }\r
+                       }\r
+\r
+                       // handle VF resource\r
+                       List<NodeTemplate> serviceVfList = toscaResourceStruct.getSdcCsarHelper().getServiceVfList();\r
+                       if (serviceVfList != null) {\r
+                               for (NodeTemplate vfNode : serviceVfList) {\r
+                                       createVnfResource(vfNode, toscaResourceStruct);\r
+                                       catalogDB.saveVnfResource(toscaResourceStruct.getCatalogVnfResource());\r
+                                       catalogDB.saveVnfResourceCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization());\r
+                                       catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVfServiceToResourceCustomization());\r
+                               }\r
+                       }\r
 \r
-               List<NodeTemplate> nodeTemplatesVLList = toscaResourceStruct.getSdcCsarHelper().getServiceVlList();\r
+\r
+                       List<NodeTemplate> nodeTemplatesVLList = toscaResourceStruct.getSdcCsarHelper().getServiceVlList();\r
                                \r
                        if(nodeTemplatesVLList != null){\r
                                \r
                                for(NodeTemplate vlNode : nodeTemplatesVLList){\r
                                        \r
-                                       String networkResourceModelName = vlNode.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim();\r
+                                       String networkResourceModelName = vlNode.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME);\r
 \r
                                        List<TempNetworkHeatTemplateLookup> networkHeatTemplateLookup = catalogDB.getTempNetworkHeatTemplateLookup(networkResourceModelName);\r
                                        \r
@@ -578,14 +658,20 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                   //createServiceToResourceCustomization(toscaResourceStruct.getCatalogService(), toscaResourceStruct.getCatalogVnfResourceCustomization(), toscaResourceStruct);\r
                   \r
            // catalogDB.saveToscaCsar(toscaResourceStruct.getCatalogToscaCsar());\r
-               \r
+               wdComponentDistributionStatus.insertWatchdogComponentDistributionStatus(vfResourceStruct.getNotification().getDistributionID(), "SO", DistributionStatusEnum.COMPONENT_DONE_OK.name());         \r
  \r
                        catalogDB.commit();     \r
-                       vfResourceStructure.setSuccessfulDeployment();\r
+                       toscaResourceStruct.setSuccessfulDeployment();\r
                        \r
                }catch(Exception e){\r
                        logger.debug("Exception :",e);\r
                        \r
+                       wdDistributionStatus.insertWatchdogDistributionId(vfResourceStructure.getNotification().getDistributionID());\r
+                       \r
+                       wdComponentDistributionStatus.insertWatchdogComponentDistributionStatus(vfResourceStruct.getNotification().getDistributionID(), "SO", DistributionStatusEnum.COMPONENT_DONE_ERROR.name());\r
+                       \r
+                       wdDistributionStatus.updateWatchdogDistributionIdStatus(vfResourceStruct.getNotification().getDistributionID(), DistributionStatusEnum.DISTRIBUTION_COMPLETE_ERROR.name());             \r
+                       \r
                        Throwable dbExceptionToCapture = e;\r
                        while (!(dbExceptionToCapture instanceof ConstraintViolationException || dbExceptionToCapture instanceof LockAcquisitionException)\r
                                        && (dbExceptionToCapture.getCause() != null)) {\r
@@ -596,7 +682,7 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                                logger.warn(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED, vfResourceStructure.getResourceInstance().getResourceName(),\r
                                                vfResourceStructure.getNotification().getServiceVersion(), "", "", MsoLogger.ErrorCode.DataError, "Exception - ASCDC Artifact already deployed", e);\r
                        } else {\r
-                           String elementToLog = (artifactListForLogging.size() > 0 ? artifactListForLogging.get(artifactListForLogging.size()-1).toString() : "No element listed");\r
+                               String elementToLog = (artifactListForLogging.size() > 0 ? artifactListForLogging.get(artifactListForLogging.size()-1).toString() : "No element listed");\r
                                logger.error(MessageEnum.ASDC_ARTIFACT_INSTALL_EXC, elementToLog, "", "", MsoLogger.ErrorCode.DataError, "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback", e);\r
                                catalogDB.rollback();\r
                                throw new ArtifactInstallerException(\r
@@ -762,7 +848,7 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                \r
        }\r
 \r
-       private static void createService(ToscaResourceStructure toscaResourceStructure) {\r
+       private static void createService(ToscaResourceStructure toscaResourceStructure, VfResourceStructure vfResourceStructure) {\r
                \r
                toscaResourceStructure.getServiceMetadata();\r
                \r
@@ -771,18 +857,24 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                Service service = new Service();\r
                \r
                //  Service     \r
-               if(serviceMetadata != null)   \r
+               if(serviceMetadata != null) {   \r
                        \r
                        if(toscaResourceStructure.getServiceVersion() != null){\r
                                service.setVersion(toscaResourceStructure.getServiceVersion());\r
                        }\r
-                       \r
-                       service.setServiceType(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceType"));\r
-                       service.setServiceRole(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceRole"));\r
+                                               \r
+                       service.setServiceType(serviceMetadata.getValue("serviceType"));\r
+                       service.setServiceRole(serviceMetadata.getValue("serviceRole"));\r
                        \r
                        service.setDescription(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION));\r
                        service.setModelName(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));\r
                        service.setModelUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));\r
+                       service.setEnvironmentContext(serviceMetadata.getValue("environmentContext"));\r
+                       \r
+                       \r
+                       if(vfResourceStructure != null){\r
+                               service.setWorkloadContext(vfResourceStructure.getNotification().getWorkloadContext());\r
+                       }\r
                        //service.setVersion(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));\r
                        service.setModelInvariantUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));\r
                        service.setCategory(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
@@ -823,7 +915,7 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                        networkResource.setNeutronNetworkType("BASIC");\r
                }\r
                \r
-               networkResource.setModelName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
+               networkResource.setModelName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));\r
                \r
                networkResource.setModelInvariantUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));\r
                networkResource.setModelUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));\r
@@ -843,21 +935,21 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                        \r
                toscaResourceStructure.setCatalogNetworkResource(networkResource); \r
                \r
-               networkResourceCustomization.setModelInstanceName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
-               networkResourceCustomization.setModelCustomizationUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
-               networkResourceCustomization.setNetworkResourceModelUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
+               networkResourceCustomization.setModelInstanceName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));\r
+               networkResourceCustomization.setModelCustomizationUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));\r
+               networkResourceCustomization.setNetworkResourceModelUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));\r
                \r
                                \r
-               networkResourceCustomization.setNetworkTechnology(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTECHNOLOGY)).trim());\r
-               networkResourceCustomization.setNetworkType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTYPE)).trim());\r
-               networkResourceCustomization.setNetworkRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());\r
-               networkResourceCustomization.setNetworkScope(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());\r
+               networkResourceCustomization.setNetworkTechnology(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTECHNOLOGY)));\r
+               networkResourceCustomization.setNetworkType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTYPE)));\r
+               networkResourceCustomization.setNetworkRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)));\r
+               networkResourceCustomization.setNetworkScope(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)));\r
                        \r
                toscaResourceStructure.setCatalogNetworkResourceCustomization(networkResourceCustomization);\r
                \r
                ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
                serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
-               serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
+               serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));\r
                serviceToResourceCustomization.setModelType("network");\r
 \r
                toscaResourceStructure.setCatalogVlServiceToResourceCustomization(serviceToResourceCustomization);\r
@@ -1013,37 +1105,45 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                \r
                //toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT)\r
                \r
-               vnfResource.setModelInvariantUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));\r
-               vnfResource.setModelName(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
-               vnfResource.setModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
+               vnfResource.setModelInvariantUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));\r
+               vnfResource.setModelName(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));\r
+               vnfResource.setModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));\r
 \r
-               vnfResource.setVersion(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));\r
-               vnfResource.setDescription(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION).trim()));\r
+               vnfResource.setVersion(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));\r
+               vnfResource.setDescription(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));\r
                vnfResource.setOrchestrationMode("HEAT");\r
                vnfResource.setToscaNodeType(testNull(vfNodeTemplate.getType()));\r
-               vnfResource.setAicVersionMax(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));\r
-               vnfResource.setAicVersionMin(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));\r
-        // vnfResource.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());\r
-        vnfResource.setCategory(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
-        vnfResource.setSubCategory(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_SUBCATEGORY));\r
-        // vfNodeTemplate.getProperties()\r
-        toscaResourceStructure.setCatalogVnfResource(vnfResource);\r
-\r
+               vnfResource.setAicVersionMax(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES)));\r
+               vnfResource.setAicVersionMin(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES)));\r
+               vnfResource.setCategory(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
+               vnfResource.setSubCategory(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_SUBCATEGORY));\r
+               //vnfResource.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());\r
+               \r
+       //      vfNodeTemplate.getProperties()\r
+               toscaResourceStructure.setCatalogVnfResource(vnfResource); \r
+               \r
                VnfResourceCustomization vnfResourceCustomization = new VnfResourceCustomization();\r
-               vnfResourceCustomization.setModelCustomizationUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
+               vnfResourceCustomization.setModelCustomizationUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));\r
                vnfResourceCustomization.setModelInstanceName(vfNodeTemplate.getName());\r
                \r
-               vnfResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());\r
-               vnfResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());\r
-               vnfResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());\r
-               vnfResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());\r
+               vnfResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)));\r
+               vnfResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)));\r
+               vnfResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)));\r
+               vnfResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)));\r
+               \r
+               \r
+               vnfResourceCustomization.setMultiStageDesign(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, "multi_stage_design"));\r
                \r
                \r
-               vnfResourceCustomization.setVnfResourceModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
-               vnfResourceCustomization.setAvailabilityZoneMaxCount(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT).trim()));\r
+               vnfResourceCustomization.setVnfResourceModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));\r
+               vnfResourceCustomization.setAvailabilityZoneMaxCount(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT)));\r
+               \r
+               //vnfResourceCustomization.setMultiStageDesign(vfNodeTemplate.getMetaData().getValue("multi_stage_design"));\r
+               //vnfResourceCustomization.setMultiStageDesign(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT).trim());\r
+                               \r
 \r
-               vnfResourceCustomization.setMaxInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));\r
-               vnfResourceCustomization.setMinInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));\r
+               vnfResourceCustomization.setMaxInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES)));\r
+               vnfResourceCustomization.setMinInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES)));\r
 \r
 \r
                \r
@@ -1052,7 +1152,7 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                \r
                ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
                serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
-               serviceToResourceCustomization.setResourceModelCustomizationUUID(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim());\r
+               serviceToResourceCustomization.setResourceModelCustomizationUUID(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));\r
                serviceToResourceCustomization.setModelType("vnf");\r
 \r
                toscaResourceStructure.setCatalogVfServiceToResourceCustomization(serviceToResourceCustomization);\r
@@ -1063,29 +1163,38 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
        private static void createAllottedResource(NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure) {\r
                AllottedResource allottedResource = new AllottedResource();\r
                \r
-               allottedResource.setModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
-               allottedResource.setModelInvariantUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));\r
-               allottedResource.setModelName(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
-               allottedResource.setModelVersion(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));\r
+               allottedResource.setModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));\r
+               allottedResource.setModelInvariantUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));\r
+               allottedResource.setModelName(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME)));\r
+               allottedResource.setModelVersion(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));\r
                allottedResource.setToscaNodeType(testNull(nodeTemplate.getType()));\r
+               allottedResource.setSubcategory(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_SUBCATEGORY)));\r
+               allottedResource.setDescription(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION));\r
                \r
                toscaResourceStructure.setAllottedResource(allottedResource);\r
                \r
                AllottedResourceCustomization allottedResourceCustomization = new AllottedResourceCustomization();\r
-               allottedResourceCustomization.setModelCustomizationUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
+               allottedResourceCustomization.setModelCustomizationUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));\r
                allottedResourceCustomization.setModelInstanceName(nodeTemplate.getName());\r
-               allottedResourceCustomization.setArModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
+               allottedResourceCustomization.setArModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));\r
                \r
-               allottedResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());\r
-               allottedResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());\r
-               allottedResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());\r
-               allottedResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());\r
+               \r
+               allottedResourceCustomization.setProvidingServiceModelInvariantUuid(toscaResourceStructure.getCatalogService().getModelInvariantUUID());\r
+               allottedResourceCustomization.setProvidingServiceModelUuid(toscaResourceStructure.getCatalogService().getModelUUID());\r
+               allottedResourceCustomization.setProvidingServiceModelName(toscaResourceStructure.getCatalogService().getModelName());\r
+               allottedResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)));\r
+               allottedResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)));\r
+               allottedResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)));\r
+               allottedResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)));\r
+               allottedResourceCustomization.setMinInstances(Integer.getInteger(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES)));\r
+               allottedResourceCustomization.setMaxInstances(Integer.getInteger(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES)));\r
+               allottedResourceCustomization.setTargetNetworkRole(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NETWORKROLE));\r
                \r
                toscaResourceStructure.setCatalogAllottedResourceCustomization(allottedResourceCustomization);\r
                \r
                ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
                serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
-               serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
+               serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)));\r
                serviceToResourceCustomization.setModelType("allottedResource");\r
 \r
                toscaResourceStructure.setCatalogAllottedServiceToResourceCustomization(serviceToResourceCustomization);\r
@@ -1130,13 +1239,15 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
        }\r
        \r
        private static String testNull(Object object) {\r
-               if (object == null) {\r
-                       return "";\r
-               } else if ("null".equals(object)) {\r
+               \r
+               \r
+               if(object == null){\r
                        return null;\r
-               }else if (object instanceof Integer) {\r
+               }else if (object != null && object.equals("NULL")) {\r
+                       return null;\r
+               }else if (object != null && object instanceof Integer) {\r
                        return object.toString();\r
-               } else if (object instanceof String) {\r
+               } else if (object != null && object instanceof String) {\r
                        return (String)object;\r
                } else {\r
                        return "Type not recognized";\r
@@ -1158,5 +1269,4 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                \r
                return new Timestamp(new Date().getTime());\r
        }\r
-\r
-}
\ No newline at end of file
+}\r