591db355c5e6598b2e2eaa1895e4afd6cfa7d0e7
[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(new Comparator<Group>() {\r
423 \r
424                             @Override\r
425                             public int compare(Group group1,\r
426                                 Group group2) {\r
427 \r
428                                 // Field name1Field = group1.class.getDeclaredField("name");\r
429                                 // name1Field.setAccessible(true);\r
430                                 String thisName = group1.getName(); // (String)\r
431                                 // name1Field.get(group1);\r
432                                 String thatName = group2.getName(); // (String)\r
433                                 // name1Field.get(group2);\r
434 \r
435                                 Matcher m = lastDigit.matcher(thisName);\r
436                                 Matcher m2 = lastDigit.matcher(thatName);\r
437 \r
438                                 String thisDigit = "0";\r
439                                 String thatDigit = "0";\r
440                                 if (m.find()) {\r
441                                     thisDigit = m.group();\r
442                                 } else {\r
443                                     return -1;\r
444                                 }\r
445                                 if (m2.find()) {\r
446                                     thatDigit = m2.group();\r
447                                 } else {\r
448                                     return 1;\r
449                                 }\r
450 \r
451                                 return new Integer(thisDigit).compareTo(new Integer(thatDigit));\r
452 \r
453                             }\r
454                         });\r
455 \r
456                         logger.debug("vfGroupsAfter:" + vfGroups.toString());\r
457 \r
458                         for(Group group : vfGroups) {\r
459 \r
460                             // boolean saveVFModule = createVFModule(group, nodeTemplate,\r
461                             // toscaResourceStruct, vfMetadata);\r
462                             if(vfMetadata.getVfModuleModelCustomizationUUID() == null) {\r
463                                 logger.debug("NULL 1");\r
464                             } else {\r
465                                 logger.debug("vfMetadata.getMCU=" + vfMetadata.getVfModuleModelCustomizationUUID());\r
466                             }\r
467                             if(group.getMetadata() == null) {\r
468                                 logger.debug("NULL 3");\r
469                             } else {\r
470                                 logger.debug("group.getMetadata().getValue() = "\r
471                                         + group.getMetadata().getValue("vfModuleModelCustomizationUUID"));\r
472                             }\r
473                             if(vfMetadata.getVfModuleModelCustomizationUUID()\r
474                                     .equals(group.getMetadata().getValue("vfModuleModelCustomizationUUID"))) {\r
475                                 logger.debug("Found a match at " + vfMetadata.getVfModuleModelCustomizationUUID());\r
476                                 createVFModule(group, nodeTemplate, toscaResourceStruct, vfResourceStructure,\r
477                                         vfMetadata);\r
478 \r
479                                 catalogDB.saveOrUpdateVfModule(toscaResourceStruct.getCatalogVfModule());\r
480 \r
481                                 catalogDB.saveOrUpdateVfModuleCustomization(\r
482                                         toscaResourceStruct.getCatalogVfModuleCustomization());\r
483 \r
484                                 catalogDB.saveVnfResourceToVfModuleCustomization(\r
485                                         toscaResourceStruct.getCatalogVnfResourceCustomization(),\r
486                                         toscaResourceStruct.getCatalogVfModuleCustomization());\r
487 \r
488                             } else {\r
489                                 if(toscaResourceStruct.getCatalogVfModuleCustomization() != null) {\r
490                                     logger.debug("No match for " + toscaResourceStruct.getCatalogVfModuleCustomization()\r
491                                             .getModelCustomizationUuid());\r
492                                 } else {\r
493                                     logger.debug("No match for vfModuleModelCustomizationUUID");\r
494                                 }\r
495                             }\r
496 \r
497                         }\r
498 \r
499                     } // Commented out to process VFModules each time\r
500 \r
501                     // Here we expect many HEAT_TEMPLATE files to be there\r
502                     if(vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_ARTIFACT)) {\r
503                         for(VfModuleArtifact heatArtifact : vfModuleStructure.getArtifactsMap()\r
504                                 .get(ASDCConfiguration.HEAT_ARTIFACT)) {\r
505 \r
506                             HeatFiles heatFile = (HeatFiles)heatArtifact.getCatalogObject();\r
507 \r
508                             // Add this one for logging\r
509                             artifactListForLogging.add(\r
510                                     ASDCElementInfo.createElementFromVfArtifactInfo(heatArtifact.getArtifactInfo()));\r
511 \r
512                             if(toscaResourceStruct.getCatalogVfModule() != null && heatFile != null) {\r
513                                 catalogDB.saveVfModuleToHeatFiles(\r
514                                         toscaResourceStruct.getCatalogVfModule().getModelUUID(), heatFile);\r
515                             }\r
516                             // Indicate we will deploy it in the DB\r
517                             heatArtifact.incrementDeployedInDB();\r
518                         }\r
519                     }\r
520 \r
521                 }\r
522 \r
523             }\r
524                                 \r
525                                 /* END OF HEAT TABLE POPULATION\r
526                                  * ***************************************************************************************************\r
527                                  */\r
528             \r
529             \r
530           //  throw new ArtifactInstallerException("TESTING");\r
531             \r
532             \r
533             List<NodeTemplate> allottedResourceList = toscaResourceStruct.getSdcCsarHelper().getAllottedResources();\r
534                 \r
535                         if(allottedResourceList != null){\r
536                         \r
537                                 for(NodeTemplate allottedNode : allottedResourceList){\r
538                                         \r
539                                         createAllottedResource(allottedNode, toscaResourceStruct);\r
540                                         \r
541                                         catalogDB.saveAllottedResource(toscaResourceStruct.getAllottedResource());\r
542                                         \r
543                                         catalogDB.saveAllottedResourceCustomization(toscaResourceStruct.getCatalogAllottedResourceCustomization());\r
544                                         \r
545                                         catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogAllottedServiceToResourceCustomization());\r
546                                         \r
547                                 }\r
548                         }\r
549                         \r
550 \r
551                 List<NodeTemplate> nodeTemplatesVLList = toscaResourceStruct.getSdcCsarHelper().getServiceVlList();\r
552                                 \r
553                         if(nodeTemplatesVLList != null){\r
554                                 \r
555                                 for(NodeTemplate vlNode : nodeTemplatesVLList){\r
556                                         \r
557                                         String networkResourceModelName = vlNode.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim();\r
558 \r
559                                         List<TempNetworkHeatTemplateLookup> networkHeatTemplateLookup = catalogDB.getTempNetworkHeatTemplateLookup(networkResourceModelName);\r
560                                         \r
561                                         if(networkHeatTemplateLookup != null && networkHeatTemplateLookup.size() > 0 ){\r
562                                         \r
563                                                 createNetworkResource(vlNode, toscaResourceStruct, networkHeatTemplateLookup.get(0));\r
564                                         \r
565                                         } else {\r
566                             logger.info(MessageEnum.ASDC_GENERAL_INFO,\r
567                                     "No NetworkResourceName found in TempNetworkHeatTemplateLookup for" + networkResourceModelName, "ASDC",\r
568                                     "createVfModuleStructures");\r
569                             createNetworkResource(vlNode, toscaResourceStruct, null);\r
570                                         }\r
571                                         \r
572                                                                                 \r
573                                                 catalogDB.saveNetworkResource(toscaResourceStruct.getCatalogNetworkResource());\r
574                                                 \r
575                                                 catalogDB.saveNetworkResourceCustomization(toscaResourceStruct.getCatalogNetworkResourceCustomization());\r
576                                                 \r
577                                                 catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVlServiceToResourceCustomization());\r
578 \r
579                                 }\r
580                         }       \r
581             \r
582                 \r
583                    //createServiceToResourceCustomization(toscaResourceStruct.getCatalogService(), toscaResourceStruct.getCatalogVnfResourceCustomization(), toscaResourceStruct);\r
584                    \r
585            // catalogDB.saveToscaCsar(toscaResourceStruct.getCatalogToscaCsar());\r
586                 \r
587  \r
588                         catalogDB.commit();     \r
589                         vfResourceStructure.setSuccessfulDeployment();\r
590                         \r
591                 }catch(Exception e){\r
592                         logger.debug("Exception :",e);\r
593                         \r
594                         Throwable dbExceptionToCapture = e;\r
595                         while (!(dbExceptionToCapture instanceof ConstraintViolationException || dbExceptionToCapture instanceof LockAcquisitionException)\r
596                                         && (dbExceptionToCapture.getCause() != null)) {\r
597                                 dbExceptionToCapture = dbExceptionToCapture.getCause();\r
598                         }\r
599 \r
600                         if (dbExceptionToCapture instanceof ConstraintViolationException || dbExceptionToCapture instanceof LockAcquisitionException) {\r
601                                 logger.warn(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED, vfResourceStructure.getResourceInstance().getResourceName(),\r
602                                                 vfResourceStructure.getNotification().getServiceVersion(), "", "", MsoLogger.ErrorCode.DataError, "Exception - ASCDC Artifact already deployed", e);\r
603                         } else {\r
604                             String elementToLog = (artifactListForLogging.size() > 0 ? artifactListForLogging.get(artifactListForLogging.size()-1).toString() : "No element listed");\r
605                                 logger.error(MessageEnum.ASDC_ARTIFACT_INSTALL_EXC, elementToLog, "", "", MsoLogger.ErrorCode.DataError, "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback", e);\r
606                                 catalogDB.rollback();\r
607                                 throw new ArtifactInstallerException(\r
608                                                 "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback.", e);\r
609                         }\r
610 \r
611                 } finally {\r
612                         catalogDB.close();\r
613                 }\r
614                                 \r
615         }               \r
616 \r
617                 \r
618         public static String verifyTheFilePrefixInArtifacts(String filebody, VfResourceStructure vfResourceStructure, List<String> listTypes) {\r
619                 String newFileBody = filebody;\r
620                 for (VfModuleArtifact moduleArtifact:vfResourceStructure.getArtifactsMapByUUID().values()) {\r
621                         \r
622                         if (listTypes.contains(moduleArtifact.getArtifactInfo().getArtifactType())) {\r
623                                 \r
624                                 newFileBody = verifyTheFilePrefixInString(newFileBody,moduleArtifact.getArtifactInfo().getArtifactName());\r
625                         }\r
626                 }\r
627                 return newFileBody;\r
628         }\r
629         \r
630         public static String verifyTheFilePrefixInString(final String body, final String filenameToVerify) {\r
631                 \r
632                 String needlePrefix = "file:///";\r
633                 String prefixedFilenameToVerify = needlePrefix+filenameToVerify;\r
634                 \r
635                 if ((body == null) || (body.length() == 0) || (filenameToVerify == null) || (filenameToVerify.length() == 0)) { \r
636                         return body; \r
637                 } \r
638  \r
639                 StringBuilder sb = new StringBuilder(body.length());\r
640  \r
641                 int currentIndex = 0; \r
642                 int startIndex = 0; \r
643  \r
644                 while (currentIndex != -1) { \r
645                         startIndex = currentIndex; \r
646                         currentIndex = body.indexOf(prefixedFilenameToVerify, startIndex); \r
647  \r
648                         if (currentIndex == -1) { \r
649                                 break; \r
650                         } \r
651  \r
652                         // We append from the startIndex up to currentIndex (start of File Name) \r
653                         sb.append(body.substring(startIndex, currentIndex)); \r
654                         sb.append(filenameToVerify); \r
655  \r
656                         currentIndex += prefixedFilenameToVerify.length(); \r
657                 } \r
658  \r
659                 sb.append(body.substring(startIndex)); \r
660  \r
661                 return sb.toString();\r
662         }\r
663         \r
664         \r
665         private static void createHeatTemplateFromArtifact(VfResourceStructure vfResourceStructure,ToscaResourceStructure toscaResourceStruct,\r
666                         VfModuleArtifact vfModuleArtifact) {\r
667                 HeatTemplate heatTemplate = new HeatTemplate();\r
668 \r
669                 // TODO Set the label\r
670 //              heatTemplate.setAsdcLabel("label");\r
671                 // Use the ResourceName of the ASDC template because the HEAT could be\r
672                 // reused\r
673 //              heatTemplate.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName());\r
674                 heatTemplate.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
675                 \r
676                 List<String> typeList = new ArrayList<>();\r
677                 typeList.add(ASDCConfiguration.HEAT_NESTED);\r
678                 typeList.add(ASDCConfiguration.HEAT_ARTIFACT);\r
679                 \r
680                 heatTemplate.setTemplateBody(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList));\r
681                 heatTemplate.setTemplateName(vfModuleArtifact.getArtifactInfo().getArtifactName());\r
682 \r
683                 if (vfModuleArtifact.getArtifactInfo().getArtifactTimeout() != null) {\r
684                         heatTemplate.setTimeoutMinutes(vfModuleArtifact.getArtifactInfo().getArtifactTimeout());\r
685                 } else {\r
686                         heatTemplate.setTimeoutMinutes(240);\r
687                 }\r
688                 \r
689                 //toscaResourceStruct.setHeatFilesUUID(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
690 \r
691                 heatTemplate.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());\r
692                 heatTemplate.setVersion(BigDecimalVersion\r
693                                 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));\r
694                 heatTemplate.setArtifactUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
695                 \r
696                 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){\r
697                         heatTemplate.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());\r
698                 } else {\r
699                         heatTemplate.setArtifactChecksum("MANUAL_RECORD");\r
700                 }\r
701                 \r
702                 Set<HeatTemplateParam> heatParam = ToscaResourceInstaller\r
703                                 .extractHeatTemplateParameters(vfModuleArtifact.getResult(), vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
704                 heatTemplate.setParameters(heatParam);\r
705                 //heatTemplate.setCreated(getCurrentTimeStamp());\r
706 \r
707                 vfModuleArtifact.setCatalogObject(heatTemplate);\r
708         }\r
709 \r
710         private static void createHeatEnvFromArtifact(VfResourceStructure vfResourceStructure,\r
711                         VfModuleArtifact vfModuleArtifact) {\r
712                 HeatEnvironment heatEnvironment = new HeatEnvironment();\r
713 \r
714                 heatEnvironment.setName(vfModuleArtifact.getArtifactInfo().getArtifactName());\r
715                 // TODO Set the label\r
716 //              heatEnvironment.setAsdcLabel("Label");\r
717                 \r
718                 List<String> typeList = new ArrayList<>();\r
719                 typeList.add(ASDCConfiguration.HEAT);\r
720                 typeList.add(ASDCConfiguration.HEAT_VOL);\r
721                 \r
722                 heatEnvironment.setEnvironment(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList));\r
723 //              heatEnvironment.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
724                 heatEnvironment.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());\r
725                 heatEnvironment.setVersion(BigDecimalVersion\r
726                                 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));\r
727 //              heatEnvironment.setAsdcResourceName(VfResourceInstaller.createVNFName(vfResourceStructure));\r
728                 heatEnvironment.setArtifactUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
729                 \r
730                 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){\r
731                         heatEnvironment.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());\r
732                 } else{\r
733                         heatEnvironment.setArtifactChecksum("MANUAL_RECORD");\r
734                 }\r
735                 //heatEnvironment.setCreated(getCurrentTimeStamp());\r
736 \r
737                 vfModuleArtifact.setCatalogObject(heatEnvironment);\r
738                 \r
739         }\r
740 \r
741         private static void createHeatFileFromArtifact(VfResourceStructure vfResourceStructure,\r
742                         VfModuleArtifact vfModuleArtifact, ToscaResourceStructure toscaResourceStruct) {\r
743 \r
744                 HeatFiles heatFile = new HeatFiles();\r
745                 // TODO Set the label\r
746 //              heatFile.setAsdcLabel("Label");\r
747                 heatFile.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
748                 heatFile.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());\r
749                 heatFile.setFileBody(vfModuleArtifact.getResult());\r
750                 heatFile.setFileName(vfModuleArtifact.getArtifactInfo().getArtifactName());\r
751                 heatFile.setVersion(BigDecimalVersion\r
752                                 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));\r
753                 \r
754                 toscaResourceStruct.setHeatFilesUUID(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
755                 //heatFile.setCreated(getCurrentTimeStamp());\r
756 \r
757 //              heatFile.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName());\r
758                 \r
759                 \r
760                 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){\r
761                         heatFile.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());\r
762                 } else {\r
763                         heatFile.setArtifactChecksum("MANUAL_RECORD");\r
764                 }\r
765                 \r
766                 vfModuleArtifact.setCatalogObject(heatFile);\r
767                 \r
768         }\r
769 \r
770         private static void createService(ToscaResourceStructure toscaResourceStructure) {\r
771                 \r
772                 toscaResourceStructure.getServiceMetadata();\r
773                 \r
774                 Metadata serviceMetadata = toscaResourceStructure.getServiceMetadata();\r
775                         \r
776                 Service service = new Service();\r
777                 \r
778                 //  Service     \r
779                 if(serviceMetadata != null){    \r
780                         \r
781                         if(toscaResourceStructure.getServiceVersion() != null){\r
782                                 service.setVersion(toscaResourceStructure.getServiceVersion());\r
783                         }\r
784                         \r
785                         service.setServiceType(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceType"));\r
786                         service.setServiceRole(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceRole"));\r
787                         \r
788                         service.setDescription(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION));\r
789                         service.setModelName(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));\r
790                         service.setModelUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));\r
791                         //service.setVersion(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));\r
792                         service.setModelInvariantUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));\r
793                         service.setCategory(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
794                         service.setToscaCsarArtifactUUID(toscaResourceStructure.getToscaArtifact().getArtifactUUID());\r
795                         //service.setCreated(getCurrentTimeStamp());\r
796                 }\r
797                                 \r
798                 toscaResourceStructure.setCatalogService(service);\r
799         }\r
800         \r
801         private static void createToscaCsar(ToscaResourceStructure toscaResourceStructure) {\r
802                 \r
803                 ToscaCsar toscaCsar = new ToscaCsar();\r
804                 if(toscaResourceStructure.getToscaArtifact().getArtifactChecksum() != null){\r
805                         toscaCsar.setArtifactChecksum(toscaResourceStructure.getToscaArtifact().getArtifactChecksum());\r
806                 } else {\r
807                         toscaCsar.setArtifactChecksum("MANUAL_RECORD");\r
808                 }\r
809                 toscaCsar.setArtifactUUID(toscaResourceStructure.getToscaArtifact().getArtifactUUID());\r
810                 toscaCsar.setName(toscaResourceStructure.getToscaArtifact().getArtifactName());\r
811                 toscaCsar.setVersion(toscaResourceStructure.getToscaArtifact().getArtifactVersion());\r
812                 toscaCsar.setDescription(toscaResourceStructure.getToscaArtifact().getArtifactDescription());\r
813                 toscaCsar.setUrl(toscaResourceStructure.getToscaArtifact().getArtifactURL());\r
814                                 \r
815                 toscaResourceStructure.setCatalogToscaCsar(toscaCsar);\r
816         }\r
817         \r
818         private static void createNetworkResource(NodeTemplate networkNodeTemplate, ToscaResourceStructure toscaResourceStructure, TempNetworkHeatTemplateLookup networkHeatTemplateLookup) {\r
819                 NetworkResourceCustomization networkResourceCustomization = new NetworkResourceCustomization();\r
820                 \r
821                 NetworkResource networkResource = new NetworkResource();\r
822                 \r
823                 String providerNetwork = toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_PROVIDERNETWORK_ISPROVIDERNETWORK);\r
824                 \r
825                 if("true".equalsIgnoreCase(providerNetwork)){\r
826                         networkResource.setNeutronNetworkType("PROVIDER");\r
827                 } else {\r
828                         networkResource.setNeutronNetworkType("BASIC");\r
829                 }\r
830                 \r
831                 networkResource.setModelName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
832                 \r
833                 networkResource.setModelInvariantUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));\r
834                 networkResource.setModelUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));\r
835                 networkResource.setModelVersion(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));\r
836                 \r
837                 networkResource.setAicVersionMax(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES)));\r
838                 String aicVersionMin = networkHeatTemplateLookup != null ? networkHeatTemplateLookup.getAicVersionMin() : "2.5";\r
839                 networkResource.setAicVersionMin(aicVersionMin);\r
840                 networkResource.setToscaNodeType(networkNodeTemplate.getType());\r
841                 networkResource.setDescription(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));\r
842                 networkResource.setOrchestrationMode("HEAT");\r
843                 networkResource.setCategory(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
844                 networkResource.setSubCategory(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_SUBCATEGORY));\r
845                 //for tosca NS ,there is no heat for network VL\r
846                 String heatTemplateArtifactUUID = networkHeatTemplateLookup != null ? networkHeatTemplateLookup.getHeatTemplateArtifactUuid() : "null";\r
847                 networkResource.setHeatTemplateArtifactUUID(heatTemplateArtifactUUID);\r
848                         \r
849                 toscaResourceStructure.setCatalogNetworkResource(networkResource); \r
850                 \r
851                 networkResourceCustomization.setModelInstanceName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
852                 networkResourceCustomization.setModelCustomizationUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
853                 networkResourceCustomization.setNetworkResourceModelUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
854                 \r
855                                 \r
856                 networkResourceCustomization.setNetworkTechnology(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTECHNOLOGY)).trim());\r
857                 networkResourceCustomization.setNetworkType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTYPE)).trim());\r
858                 networkResourceCustomization.setNetworkRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());\r
859                 networkResourceCustomization.setNetworkScope(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());\r
860                         \r
861                 toscaResourceStructure.setCatalogNetworkResourceCustomization(networkResourceCustomization);\r
862                 \r
863                 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
864                 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
865                 serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
866                 serviceToResourceCustomization.setModelType("network");\r
867 \r
868                 toscaResourceStructure.setCatalogVlServiceToResourceCustomization(serviceToResourceCustomization);\r
869                 \r
870                 \r
871         }\r
872         \r
873         private static void createVFModule(Group group, NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure, VfResourceStructure vfResourceStructure, IVfModuleData vfModuleData) {\r
874                 VfModule vfModule = new VfModule();\r
875                 \r
876                 Metadata vfMetadata = group.getMetadata();\r
877                 \r
878                 String vfModuleModelUUID = vfModuleData.getVfModuleModelUUID();\r
879                 \r
880                 \r
881                 if(vfModuleModelUUID != null && vfModuleModelUUID.contains(".")){\r
882                         vfModuleModelUUID = vfModuleModelUUID.substring(0, vfModuleModelUUID.indexOf("."));\r
883                 }\r
884                                         \r
885                         \r
886                         for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()){\r
887                                 \r
888                                 String vfModelUUID = vfModuleStructure.getVfModuleMetadata().getVfModuleModelUUID();\r
889                                                                                                 \r
890                                 if(vfModelUUID != null && vfModelUUID.equalsIgnoreCase(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID))){\r
891                                         \r
892                                         List<String> artifacts = vfModuleStructure.getVfModuleMetadata().getArtifacts();\r
893                                         \r
894                                         for(String artifact: artifacts){\r
895 \r
896                                                 \r
897                                                 for (VfModuleArtifact vfModuleArtifact : vfResourceStructure.getArtifactsMapByUUID().values()) {\r
898                                                         \r
899                                                         \r
900                                                         if(artifact.equals(vfModuleArtifact.getArtifactInfo().getArtifactUUID())){\r
901                                                                 //if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT_ARTIFACT)){\r
902                                                                 if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT)){\r
903                                                                         vfModule.setHeatTemplateArtifactUUId(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
904                                                                 }\r
905                                                                 \r
906                                                                 if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT_VOL)){\r
907                                                                         vfModule.setVolHeatTemplateArtifactUUId(vfModuleArtifact.getArtifactInfo().getArtifactUUID());\r
908                                                                         \r
909                                                                 }\r
910                                                         }\r
911                                                         \r
912                                                 }\r
913                                                 \r
914                                                 \r
915                                         }\r
916                                         \r
917         \r
918                                 }\r
919                                 \r
920                                 \r
921                         }\r
922                                                         \r
923                         vfModule.setModelInvariantUuid(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)));\r
924                         vfModule.setModelName(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELNAME)));\r
925                         vfModule.setModelUUID(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID)));\r
926                         vfModule.setVersion(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELVERSION)));\r
927                         vfModule.setDescription(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));\r
928                         //vfModule.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());\r
929                         //vfModule.setVolHeatTemplateArtifactUUId(toscaResourceStructure.getVolHeatTemplateUUID());\r
930                                                 \r
931                         vfModule.setVnfResourceModelUUId(toscaResourceStructure.getCatalogVnfResource().getModelUuid());                \r
932                         \r
933                         String vfModuleType = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_VFMODULETYPE);\r
934                         if(vfModuleType != null && "Base".equalsIgnoreCase(vfModuleType)){\r
935                                 vfModule.setIsBase(1);  \r
936                         }else {\r
937                                 vfModule.setIsBase(0);\r
938                         }\r
939                         \r
940 \r
941                         VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();\r
942                         vfModuleCustomization.setModelCustomizationUuid(vfModuleData.getVfModuleModelCustomizationUUID());\r
943                 \r
944                         \r
945                         vfModuleCustomization.setVfModuleModelUuid(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata,SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID));\r
946                         \r
947                         vfModuleCustomization.setHeatEnvironmentArtifactUuid(toscaResourceStructure.getEnvHeatTemplateUUID());\r
948                         \r
949 \r
950                         vfModuleCustomization.setVolEnvironmentArtifactUuid(toscaResourceStructure.getVolHeatEnvTemplateUUID());\r
951                         \r
952                         String initialCount = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_INITIALCOUNT);\r
953                         if(initialCount != null && initialCount.length() > 0){\r
954                                 vfModuleCustomization.setInitialCount(Integer.valueOf(initialCount));\r
955                         }\r
956                 \r
957                         vfModuleCustomization.setInitialCount(Integer.valueOf(toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_INITIALCOUNT)));\r
958                         \r
959                         String availabilityZoneCount = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT);\r
960                         if(availabilityZoneCount != null && availabilityZoneCount.length() > 0){\r
961                                 vfModuleCustomization.setAvailabilityZoneCount(Integer.valueOf(availabilityZoneCount));\r
962                         }\r
963                         \r
964 \r
965                         vfModuleCustomization.setLabel(toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_VFMODULELABEL));\r
966                         \r
967                         String maxInstances = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_MAXVFMODULEINSTANCES);\r
968                         if(maxInstances != null && maxInstances.length() > 0){\r
969                                 vfModuleCustomization.setMaxInstances(Integer.valueOf(maxInstances));\r
970                         }\r
971                         \r
972                         String minInstances = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_MINVFMODULEINSTANCES);\r
973                         if(minInstances != null && minInstances.length() > 0){\r
974                                 vfModuleCustomization.setMinInstances(Integer.valueOf(minInstances));\r
975                         }\r
976         \r
977                         toscaResourceStructure.setCatalogVfModule(vfModule); \r
978                 \r
979                         toscaResourceStructure.setCatalogVfModuleCustomization(vfModuleCustomization);\r
980                         \r
981         }\r
982         \r
983         private static void createVnfResourceToVfModuleCustomization(VnfResourceCustomization vnfResourceCustomization, \r
984                                                                              VfModuleCustomization vfModuleCustomization, \r
985                                                                              ToscaResourceStructure toscaResourceStructure) {\r
986                 \r
987                 VnfResCustomToVfModuleCustom vnfResCustomToVfModuleCustom = new VnfResCustomToVfModuleCustom();\r
988                 \r
989                 vnfResCustomToVfModuleCustom.setVfModuleCustModelCustomizationUuid(vfModuleCustomization.getModelCustomizationUuid());\r
990                 vnfResCustomToVfModuleCustom.setVnfResourceCustModelCustomizationUuid(vnfResourceCustomization.getModelCustomizationUuid());\r
991                 \r
992                 toscaResourceStructure.setCatalogVnfResCustomToVfModuleCustom(vnfResCustomToVfModuleCustom);\r
993                 \r
994 \r
995                         \r
996         }\r
997         \r
998         \r
999         private static void createTempNetworkHeatTemplateLookup(NetworkResource networkResource, \r
1000             VfModule vfModule, \r
1001             ToscaResourceStructure toscaResourceStructure) {\r
1002                 \r
1003                         TempNetworkHeatTemplateLookup tempNetworkHeatTemplateLookup = new TempNetworkHeatTemplateLookup();\r
1004 \r
1005                         tempNetworkHeatTemplateLookup.setNetworkResourceModelName(networkResource.getModelName());\r
1006                         tempNetworkHeatTemplateLookup.setHeatTemplateArtifactUuid(vfModule.getHeatTemplateArtifactUUId());\r
1007                         tempNetworkHeatTemplateLookup.setAicVersionMin("1");\r
1008 \r
1009                         toscaResourceStructure.setCatalogTempNetworkHeatTemplateLookup(tempNetworkHeatTemplateLookup);\r
1010 \r
1011 \r
1012 \r
1013         }\r
1014         \r
1015         private static void createVnfResource(NodeTemplate vfNodeTemplate, ToscaResourceStructure toscaResourceStructure) {\r
1016                 VnfResource vnfResource = new VnfResource();\r
1017                 \r
1018                 \r
1019                 //toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT)\r
1020                 \r
1021                 vnfResource.setModelInvariantUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));\r
1022                 vnfResource.setModelName(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
1023                 vnfResource.setModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1024 \r
1025                 vnfResource.setVersion(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));\r
1026                 vnfResource.setDescription(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION).trim()));\r
1027                 vnfResource.setOrchestrationMode("HEAT");\r
1028                 vnfResource.setToscaNodeType(testNull(vfNodeTemplate.getType()));\r
1029                 vnfResource.setAicVersionMax(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));\r
1030                 vnfResource.setAicVersionMin(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));\r
1031         // vnfResource.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());\r
1032         vnfResource.setCategory(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY));\r
1033         vnfResource.setSubCategory(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_SUBCATEGORY));\r
1034         // vfNodeTemplate.getProperties()\r
1035         toscaResourceStructure.setCatalogVnfResource(vnfResource);\r
1036 \r
1037                 VnfResourceCustomization vnfResourceCustomization = new VnfResourceCustomization();\r
1038                 vnfResourceCustomization.setModelCustomizationUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
1039                 vnfResourceCustomization.setModelInstanceName(vfNodeTemplate.getName());\r
1040                 \r
1041                 vnfResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());\r
1042                 vnfResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());\r
1043                 vnfResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());\r
1044                 vnfResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());\r
1045                 \r
1046                 \r
1047                 vnfResourceCustomization.setVnfResourceModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1048                 vnfResourceCustomization.setAvailabilityZoneMaxCount(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT).trim()));\r
1049 \r
1050                 vnfResourceCustomization.setMaxInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));\r
1051                 vnfResourceCustomization.setMinInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));\r
1052 \r
1053 \r
1054                 \r
1055                 toscaResourceStructure.setCatalogVnfResourceCustomization(vnfResourceCustomization);\r
1056                 \r
1057                 \r
1058                 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
1059                 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
1060                 serviceToResourceCustomization.setResourceModelCustomizationUUID(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim());\r
1061                 serviceToResourceCustomization.setModelType("vnf");\r
1062 \r
1063                 toscaResourceStructure.setCatalogVfServiceToResourceCustomization(serviceToResourceCustomization);\r
1064                 \r
1065                 \r
1066         }\r
1067                 \r
1068         private static void createAllottedResource(NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure) {\r
1069                 AllottedResource allottedResource = new AllottedResource();\r
1070                 \r
1071                 allottedResource.setModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1072                 allottedResource.setModelInvariantUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));\r
1073                 allottedResource.setModelName(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));\r
1074                 allottedResource.setModelVersion(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));\r
1075                 allottedResource.setToscaNodeType(testNull(nodeTemplate.getType()));\r
1076                 \r
1077                 toscaResourceStructure.setAllottedResource(allottedResource);\r
1078                 \r
1079                 AllottedResourceCustomization allottedResourceCustomization = new AllottedResourceCustomization();\r
1080                 allottedResourceCustomization.setModelCustomizationUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
1081                 allottedResourceCustomization.setModelInstanceName(nodeTemplate.getName());\r
1082                 allottedResourceCustomization.setArModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));\r
1083                 \r
1084                 allottedResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());\r
1085                 allottedResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());\r
1086                 allottedResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());\r
1087                 allottedResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());\r
1088                 \r
1089                 toscaResourceStructure.setCatalogAllottedResourceCustomization(allottedResourceCustomization);\r
1090                 \r
1091                 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();\r
1092                 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());\r
1093                 serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));\r
1094                 serviceToResourceCustomization.setModelType("allottedResource");\r
1095 \r
1096                 toscaResourceStructure.setCatalogAllottedServiceToResourceCustomization(serviceToResourceCustomization);\r
1097                 \r
1098         }\r
1099         \r
1100         private static Set<HeatTemplateParam> extractHeatTemplateParameters(String yamlFile, String artifactUUID) {\r
1101 \r
1102                 // Scan the payload downloadResult and extract the HeatTemplate\r
1103                 // parameters\r
1104                 YamlEditor yamlEditor = new YamlEditor(yamlFile.getBytes());\r
1105                 return yamlEditor.getParameterList(artifactUUID);\r
1106 \r
1107         }\r
1108         \r
1109         private static String identifyParentOfNestedTemplate(VfModuleStructure vfModuleStructure,VfModuleArtifact heatNestedArtifact) {\r
1110 \r
1111                 if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT) != null \r
1112                                 && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0).getArtifactInfo().getRelatedArtifacts() != null) {\r
1113                         for (IArtifactInfo unknownArtifact : vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0)\r
1114                                         .getArtifactInfo().getRelatedArtifacts()) {\r
1115                                 if (heatNestedArtifact.getArtifactInfo().getArtifactUUID().equals(unknownArtifact.getArtifactUUID())) {\r
1116                                         return ASDCConfiguration.HEAT;\r
1117                                 }\r
1118 \r
1119                         }\r
1120                 } \r
1121                 \r
1122                 if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL) != null \r
1123                                 && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts() != null) {\r
1124                         for (IArtifactInfo unknownArtifact:vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts()) {\r
1125                                 if (heatNestedArtifact.getArtifactInfo().getArtifactUUID().equals(unknownArtifact.getArtifactUUID())) {\r
1126                                         return ASDCConfiguration.HEAT_VOL;\r
1127                                 }\r
1128                         \r
1129                         }\r
1130                 }\r
1131                 \r
1132                 // Does not belong to anything\r
1133                 return null;\r
1134                         \r
1135         }\r
1136         \r
1137         private static String testNull(Object object) {\r
1138                 if (object == null) {\r
1139                         return "";\r
1140                 } else if ("null".equals(object)) {\r
1141                         return null;\r
1142                 }else if (object instanceof Integer) {\r
1143                         return object.toString();\r
1144                 } else if (object instanceof String) {\r
1145                         return (String)object;\r
1146                 } else {\r
1147                         return "Type not recognized";\r
1148                 }\r
1149         }\r
1150                 \r
1151         private static String createVNFName(VfResourceStructure vfResourceStructure) {\r
1152 \r
1153                 return vfResourceStructure.getNotification().getServiceName() + "/" + vfResourceStructure.getResourceInstance().getResourceInstanceName();\r
1154         }\r
1155 \r
1156         private static String createVfModuleName(VfModuleStructure vfModuleStructure) {\r
1157                 \r
1158                 return createVNFName(vfModuleStructure.getParentVfResource())+"::"+vfModuleStructure.getVfModuleMetadata().getVfModuleModelName();\r
1159         }\r
1160         \r
1161         \r
1162         private static Timestamp getCurrentTimeStamp() {\r
1163                 \r
1164                 return new Timestamp(new Date().getTime());\r
1165         }\r
1166 \r
1167 }