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