Merge "Reorder modifiers"
[so.git] / asdc-controller / src / main / java / org / openecomp / mso / asdc / installer / heat / ToscaResourceInstaller.java
index 24950db..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
@@ -98,6 +108,11 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                        throws ArtifactInstallerException {\r
                boolean status = false;\r
                VfResourceStructure vfResourceStructure = (VfResourceStructure)vfResourceStruct;\r
+               try {\r
+                   status = vfResourceStructure.isDeployedSuccessfully();\r
+               } catch (RuntimeException e) {\r
+                   status = false;\r
+               }\r
                \r
                try {\r
                        \r
@@ -130,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
@@ -169,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
@@ -179,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
@@ -196,10 +255,55 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                logger.debug("nodeTemplate outerLoop=" + outerLoop++);\r
                // extract VF metadata\r
                \r
-                                       Metadata metadata = nodeTemplate.getMetaData();\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
-                                       String vfCustomizationUUID = toscaResourceStruct.getSdcCsarHelper().getMetadataPropertyValue(metadata, SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);\r
-                                       logger.debug("vfCustomizationUUID=" + vfCustomizationUUID);\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
+                               }\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
+                               String vfCustomizationUUID = toscaResourceStruct.getSdcCsarHelper().getMetadataPropertyValue(metadata, SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);\r
+                               logger.debug("vfCustomizationUUID=" + vfCustomizationUUID);\r
 \r
                        \r
                        /* HEAT TABLE POPULATION\r
@@ -208,7 +312,7 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                        \r
                                int nextLoop = 0;\r
                        for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()) {\r
-                               logger.debug("vfResourceStructure.getVfMOduleStructure() loop, nextLoop = " + nextLoop++);\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
@@ -387,19 +491,15 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                                        }\r
                                        \r
                                                                \r
-                                       boolean saveVnfCustomization = catalogDB.saveVnfResourceCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization());\r
-                                               \r
-                                       if(saveVnfCustomization){\r
-                                               catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVfServiceToResourceCustomization());\r
-                                       }\r
-                                       \r
-                                               List<org.openecomp.sdc.toscaparser.api.Group> vfGroups = toscaResourceStruct.getSdcCsarHelper().getVfModulesByVf(vfCustomizationUUID);\r
+                                       catalogDB.saveVnfResourceCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization());                       \r
+\r
+                                       catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVfServiceToResourceCustomization());\r
+\r
+\r
+                                               List<org.onap.sdc.toscaparser.api.Group> vfGroups = toscaResourceStruct.getSdcCsarHelper().getVfModulesByVf(vfCustomizationUUID);\r
                                                logger.debug("vfGroups:" + vfGroups.toString());\r
                                                \r
-                                               Collections.sort(vfGroups, new Comparator<org.openecomp.sdc.toscaparser.api.Group>() {\r
-                                                       @Override\r
-                                                       public int compare(org.openecomp.sdc.toscaparser.api.Group group1, org.openecomp.sdc.toscaparser.api.Group group2) {\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
@@ -422,8 +522,6 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                                                                }\r
                                                                \r
                                                                return new Integer(thisDigit).compareTo(new Integer(thatDigit));\r
-\r
-                                                       }\r
                                                        });\r
                                                \r
                                                logger.debug("vfGroupsAfter:" + vfGroups.toString());\r
@@ -466,8 +564,6 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                                                           \r
                                        } //Commented out to process VFModules each time \r
                                        \r
-\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
@@ -486,8 +582,8 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                                                }\r
                                        }\r
                                        \r
+                                 }\r
                                }\r
-\r
                }\r
                                \r
                                /* END OF HEAT TABLE POPULATION\r
@@ -500,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
-               List<NodeTemplate> nodeTemplatesVLList = toscaResourceStruct.getSdcCsarHelper().getServiceVlList();\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
+\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
@@ -531,7 +638,10 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                                                createNetworkResource(vlNode, toscaResourceStruct, networkHeatTemplateLookup.get(0));\r
                                        \r
                                        } else {\r
-                                               throw new ArtifactInstallerException("No NetworkResourceName found in TempNetworkHeatTemplateLookup for " + networkResourceModelName);\r
+                            logger.info(MessageEnum.ASDC_GENERAL_INFO,\r
+                                    "No NetworkResourceName found in TempNetworkHeatTemplateLookup for" + networkResourceModelName, "ASDC",\r
+                                    "createVfModuleStructures");\r
+                            createNetworkResource(vlNode, toscaResourceStruct, null);\r
                                        }\r
                                        \r
                                                                                \r
@@ -548,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
@@ -566,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
@@ -601,7 +717,7 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                        return body; \r
                } \r
  \r
-               StringBuffer sb = new StringBuffer(body.length()); \r
+               StringBuilder sb = new StringBuilder(body.length());\r
  \r
                int currentIndex = 0; \r
                int startIndex = 0; \r
@@ -732,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
@@ -741,20 +857,27 @@ 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
                        service.setToscaCsarArtifactUUID(toscaResourceStructure.getToscaArtifact().getArtifactUUID());\r
                        //service.setCreated(getCurrentTimeStamp());\r
                }\r
@@ -792,36 +915,41 @@ 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
                networkResource.setModelVersion(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));\r
                \r
                networkResource.setAicVersionMax(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES)));\r
-               networkResource.setAicVersionMin(networkHeatTemplateLookup.getAicVersionMin());\r
+               String aicVersionMin = networkHeatTemplateLookup != null ? networkHeatTemplateLookup.getAicVersionMin() : "2.5";\r
+               networkResource.setAicVersionMin(aicVersionMin);\r
                networkResource.setToscaNodeType(networkNodeTemplate.getType());\r
                networkResource.setDescription(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));\r
                networkResource.setOrchestrationMode("HEAT");\r
-               networkResource.setHeatTemplateArtifactUUID(networkHeatTemplateLookup.getHeatTemplateArtifactUuid());\r
+               networkResource.setCategory(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
+               networkResource.setSubCategory(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_SUBCATEGORY));\r
+               //for tosca NS ,there is no heat for network VL\r
+               String heatTemplateArtifactUUID = networkHeatTemplateLookup != null ? networkHeatTemplateLookup.getHeatTemplateArtifactUuid() : "null";\r
+               networkResource.setHeatTemplateArtifactUUID(heatTemplateArtifactUUID);\r
                        \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
@@ -837,7 +965,7 @@ public class ToscaResourceInstaller {// implements IVfResourceInstaller {
                String vfModuleModelUUID = vfModuleData.getVfModuleModelUUID();\r
                \r
                \r
-               if(vfModuleModelUUID != null && vfModuleModelUUID.indexOf(".") > -1){\r
+               if(vfModuleModelUUID != null && vfModuleModelUUID.contains(".")){\r
                        vfModuleModelUUID = vfModuleModelUUID.substring(0, vfModuleModelUUID.indexOf("."));\r
                }\r
                                        \r
@@ -977,36 +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.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)));\r
+               vnfResourceCustomization.setAvailabilityZoneMaxCount(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT)));\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.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
@@ -1015,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
@@ -1026,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
                \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
+               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
@@ -1093,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 != null && object.equals("NULL")) {\r
                        return null;\r
-               }else if (object instanceof Integer) {\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
@@ -1121,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