8c08d3eb268ddb86fc7cf0c44223893cdea4565d
[so.git] / asdc-controller / src / main / java / org / openecomp / mso / asdc / installer / heat / ToscaResourceInstaller.java
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * ONAP - SO\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
6  * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.\r
7  * ================================================================================\r
8  * Licensed under the Apache License, Version 2.0 (the "License");\r
9  * you may not use this file except in compliance with the License.\r
10  * You may obtain a copy of the License at\r
11  * \r
12  *      http://www.apache.org/licenses/LICENSE-2.0\r
13  * \r
14  * Unless required by applicable law or agreed to in writing, software\r
15  * distributed under the License is distributed on an "AS IS" BASIS,\r
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17  * See the License for the specific language governing permissions and\r
18  * limitations under the License.\r
19  * ============LICENSE_END=========================================================\r
20  */\r
21 \r
22 package org.openecomp.mso.asdc.installer.heat;\r
23 \r
24 import java.sql.Timestamp;\r
25 import java.text.SimpleDateFormat;\r
26 import java.util.ArrayList;\r
27 import java.util.Date;\r
28 import java.util.HashMap;\r
29 import java.util.Iterator;\r
30 import java.util.LinkedHashMap;\r
31 import java.util.List;\r
32 import java.util.Map;\r
33 import java.util.Set;\r
34 import java.util.regex.Pattern;\r
35 import java.util.Collections;\r
36 import java.util.regex.Matcher;\r
37 import java.util.Comparator;\r
38 \r
39 import org.hibernate.exception.ConstraintViolationException;\r
40 import org.hibernate.exception.LockAcquisitionException;\r
41 //import org.openecomp.generic.tosca.parser.model.Metadata;\r
42 //import org.openecomp.generic.tosca.parser.model.NodeTemplate;\r
43 import org.openecomp.sdc.api.notification.IArtifactInfo;\r
44 import org.openecomp.sdc.api.notification.IVfModuleMetadata;\r
45 import org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames;\r
46 import org.openecomp.sdc.toscaparser.api.Group;\r
47 import org.openecomp.sdc.toscaparser.api.NodeTemplate;\r
48 import org.openecomp.sdc.toscaparser.api.Property;\r
49 import org.openecomp.sdc.toscaparser.api.elements.Metadata;\r
50 import org.openecomp.sdc.toscaparser.api.parameters.Input;\r
51 import org.openecomp.mso.asdc.client.ASDCConfiguration;\r
52 import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException;\r
53 import org.openecomp.mso.asdc.installer.ASDCElementInfo;\r
54 import org.openecomp.mso.asdc.installer.BigDecimalVersion;\r
55 import org.openecomp.mso.asdc.installer.IVfModuleData;\r
56 import org.openecomp.mso.asdc.installer.IVfResourceInstaller;\r
57 import org.openecomp.mso.asdc.installer.ToscaResourceStructure;\r
58 import org.openecomp.mso.asdc.installer.VfModuleArtifact;\r
59 import org.openecomp.mso.asdc.installer.VfModuleStructure;\r
60 import org.openecomp.mso.asdc.installer.VfResourceStructure;\r
61 import org.openecomp.mso.asdc.util.YamlEditor;\r
62 import org.openecomp.mso.db.catalog.CatalogDatabase;\r
63 import org.openecomp.mso.db.catalog.beans.AllottedResource;\r
64 import org.openecomp.mso.db.catalog.beans.HeatEnvironment;\r
65 import org.openecomp.mso.db.catalog.beans.HeatFiles;\r
66 import org.openecomp.mso.db.catalog.beans.HeatTemplate;\r
67 import org.openecomp.mso.db.catalog.beans.HeatTemplateParam;\r
68 import org.openecomp.mso.db.catalog.beans.NetworkResource;\r
69 import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization;\r
70 import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;\r
71 import org.openecomp.mso.db.catalog.beans.Service;\r
72 import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources;\r
73 import org.openecomp.mso.db.catalog.beans.ServiceToNetworks;\r
74 import org.openecomp.mso.db.catalog.beans.ServiceToResourceCustomization;\r
75 import org.openecomp.mso.db.catalog.beans.TempNetworkHeatTemplateLookup;\r
76 import org.openecomp.mso.db.catalog.beans.ToscaCsar;\r
77 import org.openecomp.mso.db.catalog.beans.VfModule;\r
78 import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;\r
79 import org.openecomp.mso.db.catalog.beans.VfModuleToHeatFiles;\r
80 import org.openecomp.mso.db.catalog.beans.VnfResCustomToVfModuleCustom;\r
81 import org.openecomp.mso.db.catalog.beans.VnfResource;\r
82 import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;\r
83 import org.openecomp.mso.logger.MessageEnum;\r
84 import org.openecomp.mso.logger.MsoLogger;\r
85 \r
86 public class ToscaResourceInstaller {// implements IVfResourceInstaller {\r
87 \r
88         private MsoLogger logger;\r
89         \r
90         private static final Pattern lastDigit = Pattern.compile("(\\d+)$");\r
91 \r
92         public ToscaResourceInstaller()  {\r
93                 logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.ASDC);\r
94         }\r
95 \r
96         //@Override\r
97         public boolean isResourceAlreadyDeployed(VfResourceStructure vfResourceStruct)\r
98                         throws ArtifactInstallerException {\r
99                 boolean status = false;\r
100                 VfResourceStructure vfResourceStructure = (VfResourceStructure)vfResourceStruct;\r
101                 try {\r
102                     status = vfResourceStructure.isDeployedSuccessfully();\r
103                 } catch (RuntimeException e) {\r
104                     status = false;\r
105                 }\r
106                 \r
107                 try {\r
108                         \r
109                         String serviceUUID = vfResourceStruct.getNotification().getServiceUUID();                       \r
110 \r
111                         if (status) {\r
112                                 logger.info(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED_DETAIL,\r
113                                                 vfResourceStructure.getResourceInstance().getResourceInstanceName(),\r
114                                                 vfResourceStructure.getResourceInstance().getResourceCustomizationUUID(),\r
115                                                 vfResourceStructure.getNotification().getServiceName(),\r
116                                                 BigDecimalVersion.castAndCheckNotificationVersionToString(\r
117                                                                 vfResourceStructure.getNotification().getServiceVersion()),\r
118                                                 vfResourceStructure.getNotification().getServiceUUID(),\r
119                                                 vfResourceStructure.getResourceInstance().getResourceName(),"", "");\r
120                         } else {\r
121                                 logger.info(MessageEnum.ASDC_ARTIFACT_NOT_DEPLOYED_DETAIL,\r
122                                                 vfResourceStructure.getResourceInstance().getResourceInstanceName(),\r
123                                                 vfResourceStructure.getResourceInstance().getResourceCustomizationUUID(),\r
124                                                 vfResourceStructure.getNotification().getServiceName(),\r
125                                                 BigDecimalVersion.castAndCheckNotificationVersionToString(\r
126                                                                 vfResourceStructure.getNotification().getServiceVersion()),\r
127                                                 vfResourceStructure.getNotification().getServiceUUID(), \r
128                                                 vfResourceStructure.getResourceInstance().getResourceName(),"", "");\r
129                         }\r
130 \r
131                         return status;\r
132 \r
133                 } catch (Exception e) {\r
134                         logger.error(MessageEnum.ASDC_ARTIFACT_CHECK_EXC, "", "", MsoLogger.ErrorCode.SchemaError, "Exception - isResourceAlreadyDeployed");\r
135                         throw new ArtifactInstallerException("Exception caught during checking existence of the VNF Resource.", e);\r
136                 }\r
137         }\r
138 \r
139         //@Override\r
140         public void installTheResource(ToscaResourceStructure toscaResourceStruct, VfResourceStructure vfResourceStruct) throws ArtifactInstallerException {\r
141                 \r
142                 logger.debug("installTheResource is called");\r
143                 \r
144                 VfResourceStructure vfResourceStructure = (VfResourceStructure)vfResourceStruct;\r
145 \r
146                 for (VfModuleArtifact vfModuleArtifact : vfResourceStructure.getArtifactsMapByUUID().values()) {\r
147 \r
148                         switch (vfModuleArtifact.getArtifactInfo().getArtifactType()) {\r
149                         case ASDCConfiguration.HEAT:\r
150                         case ASDCConfiguration.HEAT_VOL:\r
151                         case ASDCConfiguration.HEAT_NESTED:\r
152                                 ToscaResourceInstaller.createHeatTemplateFromArtifact(vfResourceStructure, toscaResourceStruct, vfModuleArtifact);\r
153                                 break;\r
154                         case ASDCConfiguration.HEAT_ENV:\r
155                                 ToscaResourceInstaller.createHeatEnvFromArtifact(vfResourceStructure, vfModuleArtifact);\r
156                                 break;\r
157                         case ASDCConfiguration.HEAT_ARTIFACT:\r
158                                 ToscaResourceInstaller.createHeatFileFromArtifact(vfResourceStructure, vfModuleArtifact, toscaResourceStruct);\r
159                                 break;\r
160                         case ASDCConfiguration.HEAT_NET:\r
161                         case ASDCConfiguration.OTHER:\r
162                                 logger.warn(MessageEnum.ASDC_ARTIFACT_TYPE_NOT_SUPPORT, vfModuleArtifact.getArtifactInfo().getArtifactType()+"(Artifact Name:"+vfModuleArtifact.getArtifactInfo().getArtifactName()+")", "", "", MsoLogger.ErrorCode.DataError, "Artifact type not supported");\r
163                                 break;\r
164                         default:\r
165                                 break;\r
166 \r
167                         }\r
168                 }\r
169                 // Those objects could be reused by different VfModule\r
170                 \r
171 \r
172                 \r
173                 // PCLO: in case of deployment failure, use a string that will represent the type of artifact that failed...\r
174                 List<ASDCElementInfo> artifactListForLogging = new ArrayList<>();\r
175                 \r
176                 CatalogDatabase catalogDB = CatalogDatabase.getInstance();\r
177                 // 2. Create the VFModules/VNFResource objects by linking them to the\r
178                 // objects created before and store them in Resource/module structure\r
179                 // Opening a DB transaction, starting from here\r
180                 try {\r
181 \r
182                         \r
183                         createToscaCsar(toscaResourceStruct);\r
184                         \r
185                         catalogDB.saveToscaCsar(toscaResourceStruct.getCatalogToscaCsar());\r
186                         \r
187                         ToscaResourceInstaller.createService(toscaResourceStruct);\r
188                         \r
189                         catalogDB.saveService(toscaResourceStruct.getCatalogService());\r
190 \r
191                         \r
192                         /* VNF POPULATION\r
193                          * ************************************************************************************************************\r
194                          */\r
195                         \r
196             // Ingest (VNF) Data - 1707\r
197             List<NodeTemplate> vfNodeTemplatesList = toscaResourceStruct.getSdcCsarHelper().getServiceVfList();\r
198             int outerLoop = 0;\r
199             logger.debug("**vfMondeTEmplatesList.size()=" + vfNodeTemplatesList.size());\r
200             for(NodeTemplate nodeTemplate : vfNodeTemplatesList) {\r
201                 logger.debug("nodeTemplate outerLoop=" + outerLoop++);\r
202                 // extract VF metadata\r
203 \r
204                 Metadata metadata = nodeTemplate.getMetaData();\r
205 \r
206                 String vfCustomizationUUID = toscaResourceStruct.getSdcCsarHelper().getMetadataPropertyValue(metadata,\r
207                         SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);\r
208                 logger.debug("vfCustomizationUUID=" + vfCustomizationUUID);\r
209 \r
210                 // extract VF metadata\r
211                 createVnfResource(nodeTemplate, toscaResourceStruct);\r
212 \r
213                 // check for duplicate record already in the database\r
214                 VnfResource vnfResource =\r
215                         catalogDB.getVnfResource(toscaResourceStruct.getCatalogVnfResource().getModelName(),\r
216                                 BigDecimalVersion.castAndCheckNotificationVersionToString(\r
217                                         toscaResourceStruct.getCatalogVnfResource().getVersion()));\r
218 \r
219                 if(vnfResource != null) {\r
220                     toscaResourceStruct.setVnfAlreadyInstalled(true);\r
221                 }\r
222 \r
223                 if(!toscaResourceStruct.isVnfAlreadyInstalled()) {\r
224 \r
225                     catalogDB.saveOrUpdateVnfResource(toscaResourceStruct.getCatalogVnfResource());\r
226 \r
227                 }\r
228 \r
229                 boolean saveVnfCustomization = catalogDB\r
230                         .saveVnfResourceCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization());\r
231 \r
232                 if(saveVnfCustomization) {\r
233                     catalogDB.saveServiceToResourceCustomization(\r
234                             toscaResourceStruct.getCatalogVfServiceToResourceCustomization());\r
235                 }\r
236 \r
237                 /*\r
238                  * HEAT TABLE POPULATION\r
239                  * *********************************************************************************\r
240                  * **********************\r
241                  */\r
242 \r
243                 int nextLoop = 0;\r
244                 for(VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()) {\r
245                     logger.debug("vfResourceStructure.getVfMOduleStructure() loop, nextLoop = " + nextLoop++);\r
246                     logger.debug("vfModuleStructure:" + vfModuleStructure.toString());\r
247 \r
248                     // Here we set the right db structure according to the Catalog\r
249                     // DB\r
250 \r
251                     // We expect only one MAIN HEAT per VFMODULE\r
252                     // we can also obtain from it the Env ArtifactInfo, that's why\r
253                     // we\r
254                     // get the Main IArtifactInfo\r
255 \r
256                     HeatTemplate heatMainTemplate = null;\r
257                     HeatEnvironment heatEnv;\r
258 \r
259                     HeatTemplate heatVolumeTemplate = null;\r
260                     HeatEnvironment heatVolumeEnv;\r
261 \r
262                     IVfModuleData vfMetadata = vfModuleStructure.getVfModuleMetadata();\r
263 \r
264                     if(vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT)) {\r
265 \r
266                         List<VfModuleArtifact> artifacts =\r
267                                 vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT);\r
268                         logger.debug("there are " + artifacts.size() + " artifacts");\r
269                         IArtifactInfo mainEnvArtifactInfo = null;\r
270                         for(VfModuleArtifact vfma : artifacts) {\r
271                             logger.debug("vmfa=" + vfma.toString());\r
272                             mainEnvArtifactInfo = vfma.getArtifactInfo().getGeneratedArtifact();\r
273 \r
274                             // MAIN HEAT\r
275                             heatMainTemplate = (HeatTemplate)vfma.getCatalogObject();\r
276 \r
277                             // Set HeatTemplateArtifactUUID to use later when setting the VfModule\r
278                             // and NetworkResource\r
279                             toscaResourceStruct.setHeatTemplateUUID(heatMainTemplate.getArtifactUuid());\r
280 \r
281                             // Add this one for logging\r
282                             artifactListForLogging\r
283                                     .add(ASDCElementInfo.createElementFromVfArtifactInfo(vfma.getArtifactInfo()));\r
284 \r
285                             catalogDB.saveHeatTemplate(heatMainTemplate, heatMainTemplate.getParameters());\r
286                             // Indicate we have deployed it in the DB\r
287                             vfma.incrementDeployedInDB();\r
288                         }\r
289 \r
290                         // VOLUME HEAT\r
291                         // We expect only one VOL HEAT per VFMODULE\r
292                         // we can also obtain from it the Env ArtifactInfo, that's why\r
293                         // we get the Volume IArtifactInfo\r
294 \r
295                         if(vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_VOL)) {\r
296                             IArtifactInfo volEnvArtifactInfo = vfModuleStructure.getArtifactsMap()\r
297                                     .get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getGeneratedArtifact();\r
298 \r
299                             heatVolumeTemplate = (HeatTemplate)vfModuleStructure.getArtifactsMap()\r
300                                     .get(ASDCConfiguration.HEAT_VOL).get(0).getCatalogObject();\r
301 \r
302                             // Set VolHeatTemplate ArtifactUUID to use later when setting the\r
303                             // VfModule\r
304                             toscaResourceStruct.setVolHeatTemplateUUID(heatVolumeTemplate.getArtifactUuid());\r
305 \r
306                             // Add this one for logging\r
307                             artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(vfModuleStructure\r
308                                     .getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo()));\r
309 \r
310                             catalogDB.saveHeatTemplate(heatVolumeTemplate, heatVolumeTemplate.getParameters());\r
311                             // Indicate we have deployed it in the DB\r
312                             vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0)\r
313                                     .incrementDeployedInDB();\r
314 \r
315                             if(volEnvArtifactInfo != null) {\r
316                                 heatVolumeEnv = (HeatEnvironment)vfResourceStructure.getArtifactsMapByUUID()\r
317                                         .get(volEnvArtifactInfo.getArtifactUUID()).getCatalogObject();\r
318 \r
319                                 // Set VolHeatTemplate ArtifactUUID to use later when setting the\r
320                                 // VfModule\r
321                                 toscaResourceStruct.setVolHeatEnvTemplateUUID(heatVolumeEnv.getArtifactUuid());\r
322 \r
323                                 // Add this one for logging\r
324                                 artifactListForLogging\r
325                                         .add(ASDCElementInfo.createElementFromVfArtifactInfo(volEnvArtifactInfo));\r
326 \r
327                                 catalogDB.saveHeatEnvironment(heatVolumeEnv);\r
328                                 // Indicate we have deployed it in the DB\r
329                                 vfResourceStructure.getArtifactsMapByUUID().get(volEnvArtifactInfo.getArtifactUUID())\r
330                                         .incrementDeployedInDB();\r
331                             }\r
332 \r
333                         }\r
334 \r
335                         // NESTED HEAT\r
336                         // Here we expect many HEAT_NESTED template to be there\r
337                         // XXX FIX BY PCLO: Defect# -36643 -US666034 - check first if we really have\r
338                         // nested heat templates\r
339                         if(vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_NESTED)) {\r
340                             for(VfModuleArtifact heatNestedArtifact : vfModuleStructure.getArtifactsMap()\r
341                                     .get(ASDCConfiguration.HEAT_NESTED)) {\r
342 \r
343                                 // Check if this nested is well referenced by the MAIN HEAT\r
344                                 String parentArtifactType = ToscaResourceInstaller\r
345                                         .identifyParentOfNestedTemplate(vfModuleStructure, heatNestedArtifact);\r
346                                 HeatTemplate heatNestedTemplate = (HeatTemplate)heatNestedArtifact.getCatalogObject();\r
347 \r
348                                 if(parentArtifactType != null) {\r
349 \r
350                                     switch(parentArtifactType) {\r
351                                         case ASDCConfiguration.HEAT:\r
352 \r
353                                             // Add this one for logging\r
354                                             artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(\r
355                                                     heatNestedArtifact.getArtifactInfo()));\r
356 \r
357                                             catalogDB.saveNestedHeatTemplate(heatMainTemplate.getArtifactUuid(),\r
358                                                     heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
359                                             // Indicate we have deployed it in the DB\r
360                                             heatNestedArtifact.incrementDeployedInDB();\r
361                                             break;\r
362                                         case ASDCConfiguration.HEAT_VOL:\r
363 \r
364                                             // Add this one for logging\r
365                                             artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(\r
366                                                     heatNestedArtifact.getArtifactInfo()));\r
367                                             catalogDB.saveNestedHeatTemplate(heatVolumeTemplate.getArtifactUuid(),\r
368                                                     heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
369                                             // Indicate we have deployed it in the DB\r
370                                             heatNestedArtifact.incrementDeployedInDB();\r
371                                             break;\r
372 \r
373                                         default:\r
374                                             break;\r
375 \r
376                                     }\r
377                                 } else { // Assume it belongs to HEAT MAIN\r
378                                     // Add this one for logging\r
379                                     artifactListForLogging.add(ASDCElementInfo\r
380                                             .createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));\r
381 \r
382                                     catalogDB.saveNestedHeatTemplate(heatMainTemplate.getArtifactUuid(),\r
383                                             heatNestedTemplate, heatNestedTemplate.getTemplateName());\r
384                                     // Indicate we have deployed it in the DB\r
385                                     heatNestedArtifact.incrementDeployedInDB();\r
386                                 }\r
387                             }\r
388                         }\r
389 \r
390                         if(mainEnvArtifactInfo != null) {\r
391                             heatEnv = (HeatEnvironment)vfResourceStructure.getArtifactsMapByUUID()\r
392                                     .get(mainEnvArtifactInfo.getArtifactUUID()).getCatalogObject();\r
393 \r
394                             // Set HeatEnvironmentArtifactUUID to use later when setting the\r
395                             // VfModule\r
396                             toscaResourceStruct.setEnvHeatTemplateUUID(heatEnv.getArtifactUuid());\r
397 \r
398                             // Add this one for logging\r
399                             artifactListForLogging\r
400                                     .add(ASDCElementInfo.createElementFromVfArtifactInfo(mainEnvArtifactInfo));\r
401 \r
402                             catalogDB.saveHeatEnvironment(heatEnv);\r
403                             // Indicate we have deployed it in the DB\r
404                             vfResourceStructure.getArtifactsMapByUUID().get(mainEnvArtifactInfo.getArtifactUUID())\r
405                                     .incrementDeployedInDB();\r
406                         }\r
407 \r
408                         // here we expect one VFModule to be there\r
409                         // VfResourceInstaller.createVfModule(vfModuleStructure,heatMainTemplate,\r
410                         // heatVolumeTemplate, heatEnv, heatVolumeEnv);\r
411                         // VfModule vfModule = vfModuleStructure.getCatalogVfModule();\r
412 \r
413                         // Add this one for logging\r
414                         // artifactListForLogging.add(ASDCElementInfo.createElementFromVfModuleStructure(vfModuleStructure));\r
415 \r
416                         // catalogDB.saveOrUpdateVfModule(vfModule);\r
417 \r
418                         List<org.openecomp.sdc.toscaparser.api.Group> vfGroups =\r
419                                 toscaResourceStruct.getSdcCsarHelper().getVfModulesByVf(vfCustomizationUUID);\r
420                         logger.debug("vfGroups:" + vfGroups.toString());\r
421 \r
422                                                 vfGroups.sort((group1, group2) -> {\r
423 \r
424                                                         // Field name1Field = group1.class.getDeclaredField("name");\r
425                                                         // name1Field.setAccessible(true);\r
426                                                         String thisName = group1.getName(); // (String)\r
427                                                         // name1Field.get(group1);\r
428                                                         String thatName = group2.getName(); // (String)\r
429                                                         // name1Field.get(group2);\r
430 \r
431                                                         Matcher m = lastDigit.matcher(thisName);\r
432                                                         Matcher m2 = lastDigit.matcher(thatName);\r
433 \r
434                                                         String thisDigit = "0";\r
435                                                         String thatDigit = "0";\r
436                                                         if (m.find()) {\r
437                                                                 thisDigit = m.group();\r
438                                                         } else {\r
439                                                                 return -1;\r
440                                                         }\r
441                                                         if (m2.find()) {\r
442                                                                 thatDigit = m2.group();\r
443                                                         } else {\r
444                                                                 return 1;\r
445                                                         }\r
446 \r
447                                                         return new Integer(thisDigit).compareTo(new Integer(thatDigit));\r
448 \r
449                                                 });\r
450 \r
451                         logger.debug("vfGroupsAfter:" + vfGroups.toString());\r
452 \r
453                         for(Group group : vfGroups) {\r
454 \r
455                             // boolean saveVFModule = createVFModule(group, nodeTemplate,\r
456                             // toscaResourceStruct, vfMetadata);\r
457                             if(vfMetadata.getVfModuleModelCustomizationUUID() == null) {\r
458                                 logger.debug("NULL 1");\r
459                             } else {\r
460                                 logger.debug("vfMetadata.getMCU=" + vfMetadata.getVfModuleModelCustomizationUUID());\r
461                             }\r
462                             if(group.getMetadata() == null) {\r
463                                 logger.debug("NULL 3");\r
464                             } else {\r
465                                 logger.debug("group.getMetadata().getValue() = "\r
466                                         + group.getMetadata().getValue("vfModuleModelCustomizationUUID"));\r
467                             }\r
468                             if(vfMetadata.getVfModuleModelCustomizationUUID()\r
469                                     .equals(group.getMetadata().getValue("vfModuleModelCustomizationUUID"))) {\r
470                                 logger.debug("Found a match at " + vfMetadata.getVfModuleModelCustomizationUUID());\r
471                                 createVFModule(group, nodeTemplate, toscaResourceStruct, vfResourceStructure,\r
472                                         vfMetadata);\r
473 \r
474                                 catalogDB.saveOrUpdateVfModule(toscaResourceStruct.getCatalogVfModule());\r
475 \r
476                                 catalogDB.saveOrUpdateVfModuleCustomization(\r
477                                         toscaResourceStruct.getCatalogVfModuleCustomization());\r
478 \r
479                                 catalogDB.saveVnfResourceToVfModuleCustomization(\r
480                                         toscaResourceStruct.getCatalogVnfResourceCustomization(),\r
481                                         toscaResourceStruct.getCatalogVfModuleCustomization());\r
482 \r
483                             } else {\r
484                                 if(toscaResourceStruct.getCatalogVfModuleCustomization() != null) {\r
485                                     logger.debug("No match for " + toscaResourceStruct.getCatalogVfModuleCustomization()\r
486                                             .getModelCustomizationUuid());\r
487                                 } else {\r
488                                     logger.debug("No match for vfModuleModelCustomizationUUID");\r
489                                 }\r
490                             }\r
491 \r
492                         }\r
493 \r
494                     } // Commented out to process VFModules each time\r
495 \r
496                     // Here we expect many HEAT_TEMPLATE files to be there\r
497                     if(vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_ARTIFACT)) {\r
498                         for(VfModuleArtifact heatArtifact : vfModuleStructure.getArtifactsMap()\r
499                                 .get(ASDCConfiguration.HEAT_ARTIFACT)) {\r
500 \r
501                             HeatFiles heatFile = (HeatFiles)heatArtifact.getCatalogObject();\r
502 \r
503                             // Add this one for logging\r
504                             artifactListForLogging.add(\r
505                                     ASDCElementInfo.createElementFromVfArtifactInfo(heatArtifact.getArtifactInfo()));\r
506 \r
507                             if(toscaResourceStruct.getCatalogVfModule() != null && heatFile != null) {\r
508                                 catalogDB.saveVfModuleToHeatFiles(\r
509                                         toscaResourceStruct.getCatalogVfModule().getModelUUID(), heatFile);\r
510                             }\r
511                             // Indicate we will deploy it in the DB\r
512                             heatArtifact.incrementDeployedInDB();\r
513                         }\r
514                     }\r
515 \r
516                 }\r
517 \r
518             }\r
519                                 \r
520                                 /* END OF HEAT TABLE POPULATION\r
521                                  * ***************************************************************************************************\r
522                                  */\r
523             \r
524             \r
525           //  throw new ArtifactInstallerException("TESTING");\r
526             \r
527             \r
528             List<NodeTemplate> allottedResourceList = toscaResourceStruct.getSdcCsarHelper().getAllottedResources();\r
529                 \r
530                         if(allottedResourceList != null){\r
531                         \r
532                                 for(NodeTemplate allottedNode : allottedResourceList){\r
533                                         \r
534                                         createAllottedResource(allottedNode, toscaResourceStruct);\r
535                                         \r
536                                         catalogDB.saveAllottedResource(toscaResourceStruct.getAllottedResource());\r
537                                         \r
538                                         catalogDB.saveAllottedResourceCustomization(toscaResourceStruct.getCatalogAllottedResourceCustomization());\r
539                                         \r
540                                         catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogAllottedServiceToResourceCustomization());\r
541                                         \r
542                                 }\r
543                         }\r
544                         \r
545 \r
546                 List<NodeTemplate> nodeTemplatesVLList = toscaResourceStruct.getSdcCsarHelper().getServiceVlList();\r
547                                 \r
548                         if(nodeTemplatesVLList != null){\r
549                                 \r
550                                 for(NodeTemplate vlNode : nodeTemplatesVLList){\r
551                                         \r
552                                         String networkResourceModelName = vlNode.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim();\r
553 \r
554                                         List<TempNetworkHeatTemplateLookup> networkHeatTemplateLookup = catalogDB.getTempNetworkHeatTemplateLookup(networkResourceModelName);\r
555                                         \r
556                                         if(networkHeatTemplateLookup != null && networkHeatTemplateLookup.size() > 0 ){\r
557                                         \r
558                                                 createNetworkResource(vlNode, toscaResourceStruct, networkHeatTemplateLookup.get(0));\r
559                                         \r
560                                         } else {\r
561                             logger.info(MessageEnum.ASDC_GENERAL_INFO,\r
562                                     "No NetworkResourceName found in TempNetworkHeatTemplateLookup for" + networkResourceModelName, "ASDC",\r
563                                     "createVfModuleStructures");\r
564                             createNetworkResource(vlNode, toscaResourceStruct, null);\r
565                                         }\r
566                                         \r
567                                                                                 \r
568                                                 catalogDB.saveNetworkResource(toscaResourceStruct.getCatalogNetworkResource());\r
569                                                 \r
570                                                 catalogDB.saveNetworkResourceCustomization(toscaResourceStruct.getCatalogNetworkResourceCustomization());\r
571                                                 \r
572                                                 catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVlServiceToResourceCustomization());\r
573 \r
574                                 }\r
575                         }       \r
576             \r
577                 \r
578                    //createServiceToResourceCustomization(toscaResourceStruct.getCatalogService(), toscaResourceStruct.getCatalogVnfResourceCustomization(), toscaResourceStruct);\r
579                    \r
580            // catalogDB.saveToscaCsar(toscaResourceStruct.getCatalogToscaCsar());\r
581                 \r
582  \r
583                         catalogDB.commit();     \r
584                         vfResourceStructure.setSuccessfulDeployment();\r
585                         \r
586                 }catch(Exception e){\r
587                         logger.debug("Exception :",e);\r
588                         \r
589                         Throwable dbExceptionToCapture = e;\r
590                         while (!(dbExceptionToCapture instanceof ConstraintViolationException || dbExceptionToCapture instanceof LockAcquisitionException)\r
591                                         && (dbExceptionToCapture.getCause() != null)) {\r
592                                 dbExceptionToCapture = dbExceptionToCapture.getCause();\r
593                         }\r
594 \r
595                         if (dbExceptionToCapture instanceof ConstraintViolationException || dbExceptionToCapture instanceof LockAcquisitionException) {\r
596                                 logger.warn(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED, vfResourceStructure.getResourceInstance().getResourceName(),\r
597                                                 vfResourceStructure.getNotification().getServiceVersion(), "", "", MsoLogger.ErrorCode.DataError, "Exception - ASCDC Artifact already deployed", e);\r
598                         } else {\r
599                             String elementToLog = (artifactListForLogging.size() > 0 ? artifactListForLogging.get(artifactListForLogging.size()-1).toString() : "No element listed");\r
600                                 logger.error(MessageEnum.ASDC_ARTIFACT_INSTALL_EXC, elementToLog, "", "", MsoLogger.ErrorCode.DataError, "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback", e);\r
601                                 catalogDB.rollback();\r
602                                 throw new ArtifactInstallerException(\r
603                                                 "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback.", e);\r
604                         }\r
605 \r
606                 } finally {\r
607                         catalogDB.close();\r
608                 }\r
609                                 \r
610         }               \r
611 \r
612                 \r
613         public static String verifyTheFilePrefixInArtifacts(String filebody, VfResourceStructure vfResourceStructure, List<String> listTypes) {\r
614                 String newFileBody = filebody;\r
615                 for (VfModuleArtifact moduleArtifact:vfResourceStructure.getArtifactsMapByUUID().values()) {\r
616                         \r
617                         if (listTypes.contains(moduleArtifact.getArtifactInfo().getArtifactType())) {\r
618                                 \r
619                                 newFileBody = verifyTheFilePrefixInString(newFileBody,moduleArtifact.getArtifactInfo().getArtifactName());\r
620                         }\r
621                 }\r
622                 return newFileBody;\r
623         }\r
624         \r
625         public static String verifyTheFilePrefixInString(final String body, final String filenameToVerify) {\r
626                 \r
627                 String needlePrefix = "file:///";\r
628                 String prefixedFilenameToVerify = needlePrefix+filenameToVerify;\r
629                 \r
630                 if ((body == null) || (body.length() == 0) || (filenameToVerify == null) || (filenameToVerify.length() == 0)) { \r
631                         return body; \r
632                 } \r
633  \r
634                 StringBuilder sb = new StringBuilder(body.length());\r
635  \r
636                 int currentIndex = 0; \r
637                 int startIndex = 0; \r
638  \r
639                 while (currentIndex != -1) { \r
640                         startIndex = currentIndex; \r
641                         currentIndex = body.indexOf(prefixedFilenameToVerify, startIndex); \r
642  \r
643                         if (currentIndex == -1) { \r
644                                 break; \r
645                         } \r
646  \r
647                         // We append from the startIndex up to currentIndex (start of File Name) \r
648                         sb.append(body.substring(startIndex, currentIndex)); \r
649                         sb.append(filenameToVerify); \r
650  \r
651                         currentIndex += prefixedFilenameToVerify.length(); \r
652                 } \r
653  \r
654                 sb.append(body.substring(startIndex)); \r
655  \r
656                 return sb.toString();\r
657         }\r
658         \r
659         \r
660         private static void createHeatTemplateFromArtifact(VfResourceStructure vfResourceStructure,ToscaResourceStructure toscaResourceStruct,\r
661                         VfModuleArtifact vfModuleArtifact) {\r
662                 HeatTemplate heatTemplate = new HeatTemplate();\r
663 \r
664                 // TODO Set the label\r
665 //              heatTemplate.setAsdcLabel("label");\r
666                 // Use the ResourceName of the ASDC template because the HEAT could be\r
667                 // reused\r
668 //              heatTemplate.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName());\r
669                 heatTemplate.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
670                 \r
671                 List<String> typeList = new ArrayList<>();\r
672                 typeList.add(ASDCConfiguration.HEAT_NESTED);\r
673                 typeList.add(ASDCConfiguration.HEAT_ARTIFACT);\r
674                 \r
675                 heatTemplate.setTemplateBody(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList));\r
676                 heatTemplate.setTemplateName(vfModuleArtifact.getArtifactInfo().getArtifactName());\r
677 \r
678                 if (vfModuleArtifact.getArtifactInfo().getArtifactTimeout() != null) {\r
679                         heatTemplate.setTimeoutMinutes(vfModuleArtifact.getArtifactInfo().getArtifactTimeout());\r
680                 } else {\r
681                         heatTemplate.setTimeoutMinutes(240);\r
682                 }\r
683                 \r
684                 //toscaResourceStruct.setHeatFilesUUID(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
685 \r
686                 heatTemplate.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());\r
687                 heatTemplate.setVersion(BigDecimalVersion\r
688                                 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));\r
689                 heatTemplate.setArtifactUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
690                 \r
691                 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){\r
692                         heatTemplate.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());\r
693                 } else {\r
694                         heatTemplate.setArtifactChecksum("MANUAL_RECORD");\r
695                 }\r
696                 \r
697                 Set<HeatTemplateParam> heatParam = ToscaResourceInstaller\r
698                                 .extractHeatTemplateParameters(vfModuleArtifact.getResult(), vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
699                 heatTemplate.setParameters(heatParam);\r
700                 //heatTemplate.setCreated(getCurrentTimeStamp());\r
701 \r
702                 vfModuleArtifact.setCatalogObject(heatTemplate);\r
703         }\r
704 \r
705         private static void createHeatEnvFromArtifact(VfResourceStructure vfResourceStructure,\r
706                         VfModuleArtifact vfModuleArtifact) {\r
707                 HeatEnvironment heatEnvironment = new HeatEnvironment();\r
708 \r
709                 heatEnvironment.setName(vfModuleArtifact.getArtifactInfo().getArtifactName());\r
710                 // TODO Set the label\r
711 //              heatEnvironment.setAsdcLabel("Label");\r
712                 \r
713                 List<String> typeList = new ArrayList<>();\r
714                 typeList.add(ASDCConfiguration.HEAT);\r
715                 typeList.add(ASDCConfiguration.HEAT_VOL);\r
716                 \r
717                 heatEnvironment.setEnvironment(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList));\r
718 //              heatEnvironment.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
719                 heatEnvironment.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());\r
720                 heatEnvironment.setVersion(BigDecimalVersion\r
721                                 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));\r
722 //              heatEnvironment.setAsdcResourceName(VfResourceInstaller.createVNFName(vfResourceStructure));\r
723                 heatEnvironment.setArtifactUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
724                 \r
725                 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){\r
726                         heatEnvironment.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());\r
727                 } else{\r
728                         heatEnvironment.setArtifactChecksum("MANUAL_RECORD");\r
729                 }\r
730                 //heatEnvironment.setCreated(getCurrentTimeStamp());\r
731 \r
732                 vfModuleArtifact.setCatalogObject(heatEnvironment);\r
733                 \r
734         }\r
735 \r
736         private static void createHeatFileFromArtifact(VfResourceStructure vfResourceStructure,\r
737                         VfModuleArtifact vfModuleArtifact, ToscaResourceStructure toscaResourceStruct) {\r
738 \r
739                 HeatFiles heatFile = new HeatFiles();\r
740                 // TODO Set the label\r
741 //              heatFile.setAsdcLabel("Label");\r
742                 heatFile.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
743                 heatFile.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());\r
744                 heatFile.setFileBody(vfModuleArtifact.getResult());\r
745                 heatFile.setFileName(vfModuleArtifact.getArtifactInfo().getArtifactName());\r
746                 heatFile.setVersion(BigDecimalVersion\r
747                                 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));\r
748                 \r
749                 toscaResourceStruct.setHeatFilesUUID(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
750                 //heatFile.setCreated(getCurrentTimeStamp());\r
751 \r
752 //              heatFile.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName());\r
753                 \r
754                 \r
755                 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){\r
756                         heatFile.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());\r
757                 } else {\r
758                         heatFile.setArtifactChecksum("MANUAL_RECORD");\r
759                 }\r
760                 \r
761                 vfModuleArtifact.setCatalogObject(heatFile);\r
762                 \r
763         }\r
764 \r
765         private static void createService(ToscaResourceStructure toscaResourceStructure) {\r
766                 \r
767                 toscaResourceStructure.getServiceMetadata();\r
768                 \r
769                 Metadata serviceMetadata = toscaResourceStructure.getServiceMetadata();\r
770                         \r
771                 Service service = new Service();\r
772                 \r
773                 //  Service     \r
774                 if(serviceMetadata != null){    \r
775                         \r
776                         if(toscaResourceStructure.getServiceVersion() != null){\r
777                                 service.setVersion(toscaResourceStructure.getServiceVersion());\r
778                         }\r
779                         \r
780                         service.setServiceType(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceType"));\r
781                         service.setServiceRole(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceRole"));\r
782                         \r
783                         service.setDescription(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION));\r
784                         service.setModelName(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));\r
785                         service.setModelUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));\r
786                         //service.setVersion(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));\r
787                         service.setModelInvariantUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));\r
788                         service.setCategory(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
789                         service.setToscaCsarArtifactUUID(toscaResourceStructure.getToscaArtifact().getArtifactUUID());\r
790                         //service.setCreated(getCurrentTimeStamp());\r
791                 }\r
792                                 \r
793                 toscaResourceStructure.setCatalogService(service);\r
794         }\r
795         \r
796         private static void createToscaCsar(ToscaResourceStructure toscaResourceStructure) {\r
797                 \r
798                 ToscaCsar toscaCsar = new ToscaCsar();\r
799                 if(toscaResourceStructure.getToscaArtifact().getArtifactChecksum() != null){\r
800                         toscaCsar.setArtifactChecksum(toscaResourceStructure.getToscaArtifact().getArtifactChecksum());\r
801                 } else {\r
802                         toscaCsar.setArtifactChecksum("MANUAL_RECORD");\r
803                 }\r
804                 toscaCsar.setArtifactUUID(toscaResourceStructure.getToscaArtifact().getArtifactUUID());\r
805                 toscaCsar.setName(toscaResourceStructure.getToscaArtifact().getArtifactName());\r
806                 toscaCsar.setVersion(toscaResourceStructure.getToscaArtifact().getArtifactVersion());\r
807                 toscaCsar.setDescription(toscaResourceStructure.getToscaArtifact().getArtifactDescription());\r
808                 toscaCsar.setUrl(toscaResourceStructure.getToscaArtifact().getArtifactURL());\r
809                                 \r
810                 toscaResourceStructure.setCatalogToscaCsar(toscaCsar);\r
811         }\r
812         \r
813         private static void createNetworkResource(NodeTemplate networkNodeTemplate, ToscaResourceStructure toscaResourceStructure, TempNetworkHeatTemplateLookup networkHeatTemplateLookup) {\r
814                 NetworkResourceCustomization networkResourceCustomization = new NetworkResourceCustomization();\r
815                 \r
816                 NetworkResource networkResource = new NetworkResource();\r
817                 \r
818                 String providerNetwork = toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_PROVIDERNETWORK_ISPROVIDERNETWORK);\r
819                 \r
820                 if("true".equalsIgnoreCase(providerNetwork)){\r
821                         networkResource.setNeutronNetworkType("PROVIDER");\r
822                 } else {\r
823                         networkResource.setNeutronNetworkType("BASIC");\r
824                 }\r
825                 \r
826                 networkResource.setModelName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
827                 \r
828                 networkResource.setModelInvariantUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));\r
829                 networkResource.setModelUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));\r
830                 networkResource.setModelVersion(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));\r
831                 \r
832                 networkResource.setAicVersionMax(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES)));\r
833                 String aicVersionMin = networkHeatTemplateLookup != null ? networkHeatTemplateLookup.getAicVersionMin() : "2.5";\r
834                 networkResource.setAicVersionMin(aicVersionMin);\r
835                 networkResource.setToscaNodeType(networkNodeTemplate.getType());\r
836                 networkResource.setDescription(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));\r
837                 networkResource.setOrchestrationMode("HEAT");\r
838                 networkResource.setCategory(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
839                 networkResource.setSubCategory(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_SUBCATEGORY));\r
840                 //for tosca NS ,there is no heat for network VL\r
841                 String heatTemplateArtifactUUID = networkHeatTemplateLookup != null ? networkHeatTemplateLookup.getHeatTemplateArtifactUuid() : "null";\r
842                 networkResource.setHeatTemplateArtifactUUID(heatTemplateArtifactUUID);\r
843                         \r
844                 toscaResourceStructure.setCatalogNetworkResource(networkResource); \r
845                 \r
846                 networkResourceCustomization.setModelInstanceName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
847                 networkResourceCustomization.setModelCustomizationUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
848                 networkResourceCustomization.setNetworkResourceModelUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
849                 \r
850                                 \r
851                 networkResourceCustomization.setNetworkTechnology(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTECHNOLOGY)).trim());\r
852                 networkResourceCustomization.setNetworkType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTYPE)).trim());\r
853                 networkResourceCustomization.setNetworkRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());\r
854                 networkResourceCustomization.setNetworkScope(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());\r
855                         \r
856                 toscaResourceStructure.setCatalogNetworkResourceCustomization(networkResourceCustomization);\r
857                 \r
858                 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
859                 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
860                 serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
861                 serviceToResourceCustomization.setModelType("network");\r
862 \r
863                 toscaResourceStructure.setCatalogVlServiceToResourceCustomization(serviceToResourceCustomization);\r
864                 \r
865                 \r
866         }\r
867         \r
868         private static void createVFModule(Group group, NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure, VfResourceStructure vfResourceStructure, IVfModuleData vfModuleData) {\r
869                 VfModule vfModule = new VfModule();\r
870                 \r
871                 Metadata vfMetadata = group.getMetadata();\r
872                 \r
873                 String vfModuleModelUUID = vfModuleData.getVfModuleModelUUID();\r
874                 \r
875                 \r
876                 if(vfModuleModelUUID != null && vfModuleModelUUID.contains(".")){\r
877                         vfModuleModelUUID = vfModuleModelUUID.substring(0, vfModuleModelUUID.indexOf("."));\r
878                 }\r
879                                         \r
880                         \r
881                         for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()){\r
882                                 \r
883                                 String vfModelUUID = vfModuleStructure.getVfModuleMetadata().getVfModuleModelUUID();\r
884                                                                                                 \r
885                                 if(vfModelUUID != null && vfModelUUID.equalsIgnoreCase(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID))){\r
886                                         \r
887                                         List<String> artifacts = vfModuleStructure.getVfModuleMetadata().getArtifacts();\r
888                                         \r
889                                         for(String artifact: artifacts){\r
890 \r
891                                                 \r
892                                                 for (VfModuleArtifact vfModuleArtifact : vfResourceStructure.getArtifactsMapByUUID().values()) {\r
893                                                         \r
894                                                         \r
895                                                         if(artifact.equals(vfModuleArtifact.getArtifactInfo().getArtifactUUID())){\r
896                                                                 //if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT_ARTIFACT)){\r
897                                                                 if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT)){\r
898                                                                         vfModule.setHeatTemplateArtifactUUId(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
899                                                                 }\r
900                                                                 \r
901                                                                 if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT_VOL)){\r
902                                                                         vfModule.setVolHeatTemplateArtifactUUId(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
903                                                                         \r
904                                                                 }\r
905                                                         }\r
906                                                         \r
907                                                 }\r
908                                                 \r
909                                                 \r
910                                         }\r
911                                         \r
912         \r
913                                 }\r
914                                 \r
915                                 \r
916                         }\r
917                                                         \r
918                         vfModule.setModelInvariantUuid(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)));\r
919                         vfModule.setModelName(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELNAME)));\r
920                         vfModule.setModelUUID(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID)));\r
921                         vfModule.setVersion(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELVERSION)));\r
922                         vfModule.setDescription(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));\r
923                         //vfModule.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());\r
924                         //vfModule.setVolHeatTemplateArtifactUUId(toscaResourceStructure.getVolHeatTemplateUUID());\r
925                                                 \r
926                         vfModule.setVnfResourceModelUUId(toscaResourceStructure.getCatalogVnfResource().getModelUuid());                \r
927                         \r
928                         String vfModuleType = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_VFMODULETYPE);\r
929                         if(vfModuleType != null && "Base".equalsIgnoreCase(vfModuleType)){\r
930                                 vfModule.setIsBase(1);  \r
931                         }else {\r
932                                 vfModule.setIsBase(0);\r
933                         }\r
934                         \r
935 \r
936                         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();\r
937                         vfModuleCustomization.setModelCustomizationUuid(vfModuleData.getVfModuleModelCustomizationUUID());\r
938                 \r
939                         \r
940                         vfModuleCustomization.setVfModuleModelUuid(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata,SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID));\r
941                         \r
942                         vfModuleCustomization.setHeatEnvironmentArtifactUuid(toscaResourceStructure.getEnvHeatTemplateUUID());\r
943                         \r
944 \r
945                         vfModuleCustomization.setVolEnvironmentArtifactUuid(toscaResourceStructure.getVolHeatEnvTemplateUUID());\r
946                         \r
947                         String initialCount = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_INITIALCOUNT);\r
948                         if(initialCount != null && initialCount.length() > 0){\r
949                                 vfModuleCustomization.setInitialCount(Integer.valueOf(initialCount));\r
950                         }\r
951                 \r
952                         vfModuleCustomization.setInitialCount(Integer.valueOf(toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_INITIALCOUNT)));\r
953                         \r
954                         String availabilityZoneCount = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT);\r
955                         if(availabilityZoneCount != null && availabilityZoneCount.length() > 0){\r
956                                 vfModuleCustomization.setAvailabilityZoneCount(Integer.valueOf(availabilityZoneCount));\r
957                         }\r
958                         \r
959 \r
960                         vfModuleCustomization.setLabel(toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_VFMODULELABEL));\r
961                         \r
962                         String maxInstances = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_MAXVFMODULEINSTANCES);\r
963                         if(maxInstances != null && maxInstances.length() > 0){\r
964                                 vfModuleCustomization.setMaxInstances(Integer.valueOf(maxInstances));\r
965                         }\r
966                         \r
967                         String minInstances = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_MINVFMODULEINSTANCES);\r
968                         if(minInstances != null && minInstances.length() > 0){\r
969                                 vfModuleCustomization.setMinInstances(Integer.valueOf(minInstances));\r
970                         }\r
971         \r
972                         toscaResourceStructure.setCatalogVfModule(vfModule); \r
973                 \r
974                         toscaResourceStructure.setCatalogVfModuleCustomization(vfModuleCustomization);\r
975                         \r
976         }\r
977         \r
978         private static void createVnfResourceToVfModuleCustomization(VnfResourceCustomization vnfResourceCustomization, \r
979                                                                              VfModuleCustomization vfModuleCustomization, \r
980                                                                              ToscaResourceStructure toscaResourceStructure) {\r
981                 \r
982                 VnfResCustomToVfModuleCustom vnfResCustomToVfModuleCustom = new VnfResCustomToVfModuleCustom();\r
983                 \r
984                 vnfResCustomToVfModuleCustom.setVfModuleCustModelCustomizationUuid(vfModuleCustomization.getModelCustomizationUuid());\r
985                 vnfResCustomToVfModuleCustom.setVnfResourceCustModelCustomizationUuid(vnfResourceCustomization.getModelCustomizationUuid());\r
986                 \r
987                 toscaResourceStructure.setCatalogVnfResCustomToVfModuleCustom(vnfResCustomToVfModuleCustom);\r
988                 \r
989 \r
990                         \r
991         }\r
992         \r
993         \r
994         private static void createTempNetworkHeatTemplateLookup(NetworkResource networkResource, \r
995             VfModule vfModule, \r
996             ToscaResourceStructure toscaResourceStructure) {\r
997                 \r
998                         TempNetworkHeatTemplateLookup tempNetworkHeatTemplateLookup = new TempNetworkHeatTemplateLookup();\r
999 \r
1000                         tempNetworkHeatTemplateLookup.setNetworkResourceModelName(networkResource.getModelName());\r
1001                         tempNetworkHeatTemplateLookup.setHeatTemplateArtifactUuid(vfModule.getHeatTemplateArtifactUUId());\r
1002                         tempNetworkHeatTemplateLookup.setAicVersionMin("1");\r
1003 \r
1004                         toscaResourceStructure.setCatalogTempNetworkHeatTemplateLookup(tempNetworkHeatTemplateLookup);\r
1005 \r
1006 \r
1007 \r
1008         }\r
1009         \r
1010         private static void createVnfResource(NodeTemplate vfNodeTemplate, ToscaResourceStructure toscaResourceStructure) {\r
1011                 VnfResource vnfResource = new VnfResource();\r
1012                 \r
1013                 \r
1014                 //toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT)\r
1015                 \r
1016                 vnfResource.setModelInvariantUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));\r
1017                 vnfResource.setModelName(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
1018                 vnfResource.setModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1019 \r
1020                 vnfResource.setVersion(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));\r
1021                 vnfResource.setDescription(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION).trim()));\r
1022                 vnfResource.setOrchestrationMode("HEAT");\r
1023                 vnfResource.setToscaNodeType(testNull(vfNodeTemplate.getType()));\r
1024                 vnfResource.setAicVersionMax(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));\r
1025                 vnfResource.setAicVersionMin(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));\r
1026         // vnfResource.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());\r
1027         vnfResource.setCategory(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
1028         vnfResource.setSubCategory(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_SUBCATEGORY));\r
1029         // vfNodeTemplate.getProperties()\r
1030         toscaResourceStructure.setCatalogVnfResource(vnfResource);\r
1031 \r
1032                 VnfResourceCustomization vnfResourceCustomization = new VnfResourceCustomization();\r
1033                 vnfResourceCustomization.setModelCustomizationUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
1034                 vnfResourceCustomization.setModelInstanceName(vfNodeTemplate.getName());\r
1035                 \r
1036                 vnfResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());\r
1037                 vnfResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());\r
1038                 vnfResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());\r
1039                 vnfResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());\r
1040                 \r
1041                 \r
1042                 vnfResourceCustomization.setVnfResourceModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1043                 vnfResourceCustomization.setAvailabilityZoneMaxCount(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT).trim()));\r
1044 \r
1045                 vnfResourceCustomization.setMaxInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));\r
1046                 vnfResourceCustomization.setMinInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));\r
1047 \r
1048 \r
1049                 \r
1050                 toscaResourceStructure.setCatalogVnfResourceCustomization(vnfResourceCustomization);\r
1051                 \r
1052                 \r
1053                 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
1054                 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
1055                 serviceToResourceCustomization.setResourceModelCustomizationUUID(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim());\r
1056                 serviceToResourceCustomization.setModelType("vnf");\r
1057 \r
1058                 toscaResourceStructure.setCatalogVfServiceToResourceCustomization(serviceToResourceCustomization);\r
1059                 \r
1060                 \r
1061         }\r
1062                 \r
1063         private static void createAllottedResource(NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure) {\r
1064                 AllottedResource allottedResource = new AllottedResource();\r
1065                 \r
1066                 allottedResource.setModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1067                 allottedResource.setModelInvariantUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));\r
1068                 allottedResource.setModelName(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
1069                 allottedResource.setModelVersion(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));\r
1070                 allottedResource.setToscaNodeType(testNull(nodeTemplate.getType()));\r
1071                 \r
1072                 toscaResourceStructure.setAllottedResource(allottedResource);\r
1073                 \r
1074                 AllottedResourceCustomization allottedResourceCustomization = new AllottedResourceCustomization();\r
1075                 allottedResourceCustomization.setModelCustomizationUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
1076                 allottedResourceCustomization.setModelInstanceName(nodeTemplate.getName());\r
1077                 allottedResourceCustomization.setArModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1078                 \r
1079                 allottedResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());\r
1080                 allottedResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());\r
1081                 allottedResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());\r
1082                 allottedResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());\r
1083                 \r
1084                 toscaResourceStructure.setCatalogAllottedResourceCustomization(allottedResourceCustomization);\r
1085                 \r
1086                 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
1087                 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
1088                 serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
1089                 serviceToResourceCustomization.setModelType("allottedResource");\r
1090 \r
1091                 toscaResourceStructure.setCatalogAllottedServiceToResourceCustomization(serviceToResourceCustomization);\r
1092                 \r
1093         }\r
1094         \r
1095         private static Set<HeatTemplateParam> extractHeatTemplateParameters(String yamlFile, String artifactUUID) {\r
1096 \r
1097                 // Scan the payload downloadResult and extract the HeatTemplate\r
1098                 // parameters\r
1099                 YamlEditor yamlEditor = new YamlEditor(yamlFile.getBytes());\r
1100                 return yamlEditor.getParameterList(artifactUUID);\r
1101 \r
1102         }\r
1103         \r
1104         private static String identifyParentOfNestedTemplate(VfModuleStructure vfModuleStructure,VfModuleArtifact heatNestedArtifact) {\r
1105 \r
1106                 if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT) != null \r
1107                                 && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0).getArtifactInfo().getRelatedArtifacts() != null) {\r
1108                         for (IArtifactInfo unknownArtifact : vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0)\r
1109                                         .getArtifactInfo().getRelatedArtifacts()) {\r
1110                                 if (heatNestedArtifact.getArtifactInfo().getArtifactUUID().equals(unknownArtifact.getArtifactUUID())) {\r
1111                                         return ASDCConfiguration.HEAT;\r
1112                                 }\r
1113 \r
1114                         }\r
1115                 } \r
1116                 \r
1117                 if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL) != null \r
1118                                 && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts() != null) {\r
1119                         for (IArtifactInfo unknownArtifact:vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts()) {\r
1120                                 if (heatNestedArtifact.getArtifactInfo().getArtifactUUID().equals(unknownArtifact.getArtifactUUID())) {\r
1121                                         return ASDCConfiguration.HEAT_VOL;\r
1122                                 }\r
1123                         \r
1124                         }\r
1125                 }\r
1126                 \r
1127                 // Does not belong to anything\r
1128                 return null;\r
1129                         \r
1130         }\r
1131         \r
1132         private static String testNull(Object object) {\r
1133                 if (object == null) {\r
1134                         return "";\r
1135                 } else if ("null".equals(object)) {\r
1136                         return null;\r
1137                 }else if (object instanceof Integer) {\r
1138                         return object.toString();\r
1139                 } else if (object instanceof String) {\r
1140                         return (String)object;\r
1141                 } else {\r
1142                         return "Type not recognized";\r
1143                 }\r
1144         }\r
1145                 \r
1146         private static String createVNFName(VfResourceStructure vfResourceStructure) {\r
1147 \r
1148                 return vfResourceStructure.getNotification().getServiceName() + "/" + vfResourceStructure.getResourceInstance().getResourceInstanceName();\r
1149         }\r
1150 \r
1151         private static String createVfModuleName(VfModuleStructure vfModuleStructure) {\r
1152                 \r
1153                 return createVNFName(vfModuleStructure.getParentVfResource())+"::"+vfModuleStructure.getVfModuleMetadata().getVfModuleModelName();\r
1154         }\r
1155         \r
1156         \r
1157         private static Timestamp getCurrentTimeStamp() {\r
1158                 \r
1159                 return new Timestamp(new Date().getTime());\r
1160         }\r
1161 \r
1162 }