2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END=========================================================
\r
21 package org.openecomp.mso.asdc.installer.heat;
\r
23 import java.sql.Timestamp;
\r
24 import java.text.SimpleDateFormat;
\r
25 import java.util.ArrayList;
\r
26 import java.util.Date;
\r
27 import java.util.HashMap;
\r
28 import java.util.Iterator;
\r
29 import java.util.LinkedHashMap;
\r
30 import java.util.List;
\r
31 import java.util.Map;
\r
32 import java.util.Set;
\r
33 import java.util.regex.Pattern;
\r
34 import java.util.Collections;
\r
35 import java.util.regex.Matcher;
\r
36 import java.util.Comparator;
\r
38 import org.hibernate.exception.ConstraintViolationException;
\r
39 import org.hibernate.exception.LockAcquisitionException;
\r
40 //import org.openecomp.generic.tosca.parser.model.Metadata;
\r
41 //import org.openecomp.generic.tosca.parser.model.NodeTemplate;
\r
42 import org.openecomp.sdc.api.notification.IArtifactInfo;
\r
43 import org.openecomp.sdc.api.notification.IVfModuleMetadata;
\r
44 import org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames;
\r
45 import org.openecomp.sdc.toscaparser.api.Group;
\r
46 import org.openecomp.sdc.toscaparser.api.NodeTemplate;
\r
47 import org.openecomp.sdc.toscaparser.api.Property;
\r
48 import org.openecomp.sdc.toscaparser.api.elements.Metadata;
\r
49 import org.openecomp.sdc.toscaparser.api.parameters.Input;
\r
50 import org.openecomp.mso.asdc.client.ASDCConfiguration;
\r
51 import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException;
\r
52 import org.openecomp.mso.asdc.installer.ASDCElementInfo;
\r
53 import org.openecomp.mso.asdc.installer.BigDecimalVersion;
\r
54 import org.openecomp.mso.asdc.installer.IVfModuleData;
\r
55 import org.openecomp.mso.asdc.installer.IVfResourceInstaller;
\r
56 import org.openecomp.mso.asdc.installer.ToscaResourceStructure;
\r
57 import org.openecomp.mso.asdc.installer.VfModuleArtifact;
\r
58 import org.openecomp.mso.asdc.installer.VfModuleStructure;
\r
59 import org.openecomp.mso.asdc.installer.VfResourceStructure;
\r
60 import org.openecomp.mso.asdc.util.YamlEditor;
\r
61 import org.openecomp.mso.db.catalog.CatalogDatabase;
\r
62 import org.openecomp.mso.db.catalog.beans.AllottedResource;
\r
63 import org.openecomp.mso.db.catalog.beans.HeatEnvironment;
\r
64 import org.openecomp.mso.db.catalog.beans.HeatFiles;
\r
65 import org.openecomp.mso.db.catalog.beans.HeatTemplate;
\r
66 import org.openecomp.mso.db.catalog.beans.HeatTemplateParam;
\r
67 import org.openecomp.mso.db.catalog.beans.NetworkResource;
\r
68 import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization;
\r
69 import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;
\r
70 import org.openecomp.mso.db.catalog.beans.Service;
\r
71 import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources;
\r
72 import org.openecomp.mso.db.catalog.beans.ServiceToNetworks;
\r
73 import org.openecomp.mso.db.catalog.beans.ServiceToResourceCustomization;
\r
74 import org.openecomp.mso.db.catalog.beans.TempNetworkHeatTemplateLookup;
\r
75 import org.openecomp.mso.db.catalog.beans.ToscaCsar;
\r
76 import org.openecomp.mso.db.catalog.beans.VfModule;
\r
77 import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;
\r
78 import org.openecomp.mso.db.catalog.beans.VfModuleToHeatFiles;
\r
79 import org.openecomp.mso.db.catalog.beans.VnfResCustomToVfModuleCustom;
\r
80 import org.openecomp.mso.db.catalog.beans.VnfResource;
\r
81 import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;
\r
82 import org.openecomp.mso.logger.MessageEnum;
\r
83 import org.openecomp.mso.logger.MsoLogger;
\r
85 public class ToscaResourceInstaller {// implements IVfResourceInstaller {
\r
87 private MsoLogger logger;
\r
89 private Service catalogService;
\r
91 private static final Pattern lastDigit = Pattern.compile("(\\d+)$");
\r
93 public ToscaResourceInstaller() {
\r
94 logger = MsoLogger.getMsoLogger(MsoLogger.Catalog.ASDC);
\r
98 public boolean isResourceAlreadyDeployed(VfResourceStructure vfResourceStruct)
\r
99 throws ArtifactInstallerException {
\r
100 CatalogDatabase db = CatalogDatabase.getInstance();
\r
101 boolean status = false;
\r
102 VfResourceStructure vfResourceStructure = (VfResourceStructure)vfResourceStruct;
\r
106 String serviceUUID = vfResourceStruct.getNotification().getServiceUUID();
\r
109 logger.info(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED_DETAIL,
\r
110 vfResourceStructure.getResourceInstance().getResourceInstanceName(),
\r
111 vfResourceStructure.getResourceInstance().getResourceCustomizationUUID(),
\r
112 vfResourceStructure.getNotification().getServiceName(),
\r
113 BigDecimalVersion.castAndCheckNotificationVersionToString(
\r
114 vfResourceStructure.getNotification().getServiceVersion()),
\r
115 vfResourceStructure.getNotification().getServiceUUID(),
\r
116 vfResourceStructure.getResourceInstance().getResourceName(),"", "");
\r
118 logger.info(MessageEnum.ASDC_ARTIFACT_NOT_DEPLOYED_DETAIL,
\r
119 vfResourceStructure.getResourceInstance().getResourceInstanceName(),
\r
120 vfResourceStructure.getResourceInstance().getResourceCustomizationUUID(),
\r
121 vfResourceStructure.getNotification().getServiceName(),
\r
122 BigDecimalVersion.castAndCheckNotificationVersionToString(
\r
123 vfResourceStructure.getNotification().getServiceVersion()),
\r
124 vfResourceStructure.getNotification().getServiceUUID(),
\r
125 vfResourceStructure.getResourceInstance().getResourceName(),"", "");
\r
130 } catch (Exception e) {
\r
131 logger.error(MessageEnum.ASDC_ARTIFACT_CHECK_EXC, "", "", MsoLogger.ErrorCode.SchemaError, "Exception - isResourceAlreadyDeployed");
\r
132 throw new ArtifactInstallerException("Exception caught during checking existence of the VNF Resource.", e);
\r
137 public void installTheResource(ToscaResourceStructure toscaResourceStruct, VfResourceStructure vfResourceStruct) throws ArtifactInstallerException {
\r
139 logger.debug("installTheResource is called");
\r
141 VfResourceStructure vfResourceStructure = (VfResourceStructure)vfResourceStruct;
\r
143 for (VfModuleArtifact vfModuleArtifact : vfResourceStructure.getArtifactsMapByUUID().values()) {
\r
145 switch (vfModuleArtifact.getArtifactInfo().getArtifactType()) {
\r
146 case ASDCConfiguration.HEAT:
\r
147 case ASDCConfiguration.HEAT_VOL:
\r
148 case ASDCConfiguration.HEAT_NESTED:
\r
149 ToscaResourceInstaller.createHeatTemplateFromArtifact(vfResourceStructure, toscaResourceStruct, vfModuleArtifact);
\r
151 case ASDCConfiguration.HEAT_ENV:
\r
152 ToscaResourceInstaller.createHeatEnvFromArtifact(vfResourceStructure, vfModuleArtifact);
\r
154 case ASDCConfiguration.HEAT_ARTIFACT:
\r
155 ToscaResourceInstaller.createHeatFileFromArtifact(vfResourceStructure, vfModuleArtifact, toscaResourceStruct);
\r
157 case ASDCConfiguration.HEAT_NET:
\r
158 case ASDCConfiguration.OTHER:
\r
159 logger.warn(MessageEnum.ASDC_ARTIFACT_TYPE_NOT_SUPPORT, vfModuleArtifact.getArtifactInfo().getArtifactType()+"(Artifact Name:"+vfModuleArtifact.getArtifactInfo().getArtifactName()+")", "", "", MsoLogger.ErrorCode.DataError, "Artifact type not supported");
\r
166 // Those objects could be reused by different VfModule
\r
170 // PCLO: in case of deployment failure, use a string that will represent the type of artifact that failed...
\r
171 List<ASDCElementInfo> artifactListForLogging = new ArrayList<>();
\r
173 CatalogDatabase catalogDB = CatalogDatabase.getInstance();
\r
174 // 2. Create the VFModules/VNFResource objects by linking them to the
\r
175 // objects created before and store them in Resource/module structure
\r
176 // Opening a DB transaction, starting from here
\r
180 String vfModuleModelUUID = null;
\r
182 createToscaCsar(toscaResourceStruct);
\r
184 catalogDB.saveToscaCsar(toscaResourceStruct.getCatalogToscaCsar());
\r
186 ToscaResourceInstaller.createService(toscaResourceStruct);
\r
188 catalogDB.saveService(toscaResourceStruct.getCatalogService());
\r
192 * ************************************************************************************************************
\r
195 // Ingest (VNF) Data - 1707
\r
196 List<NodeTemplate> vfNodeTemplatesList = toscaResourceStruct.getSdcCsarHelper().getServiceVfList();
\r
198 logger.debug("**vfMondeTEmplatesList.size()=" + vfNodeTemplatesList.size());
\r
199 for (NodeTemplate nodeTemplate : vfNodeTemplatesList) {
\r
200 logger.debug("nodeTemplate outerLoop=" + outerLoop++);
\r
201 // extract VF metadata
\r
203 Metadata metadata = nodeTemplate.getMetaData();
\r
205 String vfCustomizationUUID = toscaResourceStruct.getSdcCsarHelper().getMetadataPropertyValue(metadata, SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);
\r
206 logger.debug("vfCustomizationUUID=" + vfCustomizationUUID);
\r
209 /* HEAT TABLE POPULATION
\r
210 * *******************************************************************************************************
\r
214 for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()) {
\r
215 logger.debug("vfResourceStructure.getVfMOduleStructure() loop, nextLoop = " + nextLoop++);
\r
216 logger.debug("vfModuleStructure:" + vfModuleStructure.toString());
\r
218 // Here we set the right db structure according to the Catalog
\r
221 // We expect only one MAIN HEAT per VFMODULE
\r
222 // we can also obtain from it the Env ArtifactInfo, that's why
\r
224 // get the Main IArtifactInfo
\r
226 HeatTemplate heatMainTemplate = null;
\r
227 HeatEnvironment heatEnv = null;
\r
229 HeatTemplate heatVolumeTemplate = null;
\r
230 HeatEnvironment heatVolumeEnv = null;
\r
233 IVfModuleData vfMetadata = vfModuleStructure.getVfModuleMetadata();
\r
236 if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT)) {
\r
238 List<VfModuleArtifact> artifacts = vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT);
\r
239 logger.debug("there are " + artifacts.size() + " artifacts");
\r
240 IArtifactInfo mainEnvArtifactInfo = null;
\r
241 for (VfModuleArtifact vfma : artifacts) {
\r
242 logger.debug("vmfa=" + vfma.toString());
\r
243 mainEnvArtifactInfo =
\r
244 vfma.getArtifactInfo().getGeneratedArtifact();
\r
247 heatMainTemplate = (HeatTemplate) vfma.getCatalogObject();
\r
249 // Set HeatTemplateArtifactUUID to use later when setting the VfModule and NetworkResource
\r
250 toscaResourceStruct.setHeatTemplateUUID(heatMainTemplate.getArtifactUuid());
\r
252 // Add this one for logging
\r
253 artifactListForLogging.add(ASDCElementInfo
\r
254 .createElementFromVfArtifactInfo(vfma.getArtifactInfo()));
\r
256 catalogDB.saveHeatTemplate(heatMainTemplate, heatMainTemplate.getParameters());
\r
257 // Indicate we have deployed it in the DB
\r
258 vfma.incrementDeployedInDB();
\r
263 // We expect only one VOL HEAT per VFMODULE
\r
264 // we can also obtain from it the Env ArtifactInfo, that's why
\r
265 // we get the Volume IArtifactInfo
\r
267 if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_VOL)) {
\r
268 IArtifactInfo volEnvArtifactInfo = vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0)
\r
269 .getArtifactInfo().getGeneratedArtifact();
\r
271 heatVolumeTemplate = (HeatTemplate) vfModuleStructure.getArtifactsMap()
\r
272 .get(ASDCConfiguration.HEAT_VOL).get(0).getCatalogObject();
\r
274 // Set VolHeatTemplate ArtifactUUID to use later when setting the VfModule
\r
275 toscaResourceStruct.setVolHeatTemplateUUID(heatVolumeTemplate.getArtifactUuid());
\r
278 // Add this one for logging
\r
279 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo()));
\r
281 catalogDB.saveHeatTemplate(heatVolumeTemplate, heatVolumeTemplate.getParameters());
\r
282 // Indicate we have deployed it in the DB
\r
283 vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).incrementDeployedInDB();
\r
285 if (volEnvArtifactInfo != null) {
\r
286 heatVolumeEnv = (HeatEnvironment) vfResourceStructure.getArtifactsMapByUUID()
\r
287 .get(volEnvArtifactInfo.getArtifactUUID()).getCatalogObject();
\r
289 // Set VolHeatTemplate ArtifactUUID to use later when setting the VfModule
\r
290 toscaResourceStruct.setVolHeatEnvTemplateUUID(heatVolumeEnv.getArtifactUuid());
\r
292 // Add this one for logging
\r
293 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(volEnvArtifactInfo));
\r
295 catalogDB.saveHeatEnvironment(heatVolumeEnv);
\r
296 // Indicate we have deployed it in the DB
\r
297 vfResourceStructure.getArtifactsMapByUUID().get(volEnvArtifactInfo.getArtifactUUID()).incrementDeployedInDB();
\r
303 // Here we expect many HEAT_NESTED template to be there
\r
304 // XXX FIX BY PCLO: Defect# -36643 -US666034 - check first if we really have nested heat templates
\r
305 if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_NESTED)) {
\r
306 for (VfModuleArtifact heatNestedArtifact : vfModuleStructure.getArtifactsMap()
\r
307 .get(ASDCConfiguration.HEAT_NESTED)) {
\r
309 // Check if this nested is well referenced by the MAIN HEAT
\r
310 String parentArtifactType = ToscaResourceInstaller.identifyParentOfNestedTemplate(vfModuleStructure,heatNestedArtifact);
\r
311 HeatTemplate heatNestedTemplate = (HeatTemplate) heatNestedArtifact.getCatalogObject();
\r
313 if (parentArtifactType != null) {
\r
315 switch (parentArtifactType) {
\r
316 case ASDCConfiguration.HEAT:
\r
318 // Add this one for logging
\r
319 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));
\r
321 catalogDB.saveNestedHeatTemplate (heatMainTemplate.getArtifactUuid(), heatNestedTemplate, heatNestedTemplate.getTemplateName());
\r
322 // Indicate we have deployed it in the DB
\r
323 heatNestedArtifact.incrementDeployedInDB();
\r
325 case ASDCConfiguration.HEAT_VOL:
\r
327 // Add this one for logging
\r
328 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));
\r
329 catalogDB.saveNestedHeatTemplate (heatVolumeTemplate.getArtifactUuid(), heatNestedTemplate, heatNestedTemplate.getTemplateName());
\r
330 // Indicate we have deployed it in the DB
\r
331 heatNestedArtifact.incrementDeployedInDB();
\r
338 } else { // Assume it belongs to HEAT MAIN
\r
339 // Add this one for logging
\r
340 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatNestedArtifact.getArtifactInfo()));
\r
342 catalogDB.saveNestedHeatTemplate (heatMainTemplate.getArtifactUuid(), heatNestedTemplate, heatNestedTemplate.getTemplateName());
\r
343 // Indicate we have deployed it in the DB
\r
344 heatNestedArtifact.incrementDeployedInDB();
\r
349 if (mainEnvArtifactInfo != null) {
\r
350 heatEnv = (HeatEnvironment) vfResourceStructure.getArtifactsMapByUUID()
\r
351 .get(mainEnvArtifactInfo.getArtifactUUID()).getCatalogObject();
\r
353 // Set HeatEnvironmentArtifactUUID to use later when setting the VfModule
\r
354 toscaResourceStruct.setEnvHeatTemplateUUID(heatEnv.getArtifactUuid());
\r
356 // Add this one for logging
\r
357 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(mainEnvArtifactInfo));
\r
359 catalogDB.saveHeatEnvironment(heatEnv);
\r
360 // Indicate we have deployed it in the DB
\r
361 vfResourceStructure.getArtifactsMapByUUID().get(mainEnvArtifactInfo.getArtifactUUID()).incrementDeployedInDB();
\r
364 // here we expect one VFModule to be there
\r
365 //VfResourceInstaller.createVfModule(vfModuleStructure,heatMainTemplate, heatVolumeTemplate, heatEnv, heatVolumeEnv);
\r
366 //VfModule vfModule = vfModuleStructure.getCatalogVfModule();
\r
368 // Add this one for logging
\r
369 //artifactListForLogging.add(ASDCElementInfo.createElementFromVfModuleStructure(vfModuleStructure));
\r
371 //catalogDB.saveOrUpdateVfModule(vfModule);
\r
374 // extract VF metadata
\r
375 createVnfResource(nodeTemplate, toscaResourceStruct);
\r
377 // check for duplicate record already in the database
\r
378 VnfResource vnfResource = catalogDB.getVnfResource(toscaResourceStruct.getCatalogVnfResource().getModelName(),
\r
379 BigDecimalVersion.castAndCheckNotificationVersionToString(
\r
380 toscaResourceStruct.getCatalogVnfResource().getVersion()));
\r
382 if (vnfResource != null) {
\r
383 toscaResourceStruct.setVnfAlreadyInstalled(true);
\r
387 if(!toscaResourceStruct.isVnfAlreadyInstalled()) {
\r
389 catalogDB.saveOrUpdateVnfResource(toscaResourceStruct.getCatalogVnfResource());
\r
394 boolean saveVnfCustomization = catalogDB.saveVnfResourceCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization());
\r
396 if(saveVnfCustomization){
\r
397 catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVfServiceToResourceCustomization());
\r
400 List<org.openecomp.sdc.toscaparser.api.Group> vfGroups = toscaResourceStruct.getSdcCsarHelper().getVfModulesByVf(vfCustomizationUUID);
\r
401 logger.debug("vfGroups:" + vfGroups.toString());
\r
403 Collections.sort(vfGroups, new Comparator<org.openecomp.sdc.toscaparser.api.Group>() {
\r
405 public int compare(org.openecomp.sdc.toscaparser.api.Group group1, org.openecomp.sdc.toscaparser.api.Group group2) {
\r
407 //Field name1Field = group1.class.getDeclaredField("name");
\r
408 //name1Field.setAccessible(true);
\r
409 String thisName = group1.getName(); //(String) name1Field.get(group1);
\r
410 String thatName = group2.getName(); // (String) name1Field.get(group2);
\r
412 Matcher m = lastDigit.matcher(thisName);
\r
413 Matcher m2 = lastDigit.matcher(thatName);
\r
415 String thisDigit = "0";
\r
416 String thatDigit = "0";
\r
418 thisDigit = m.group();
\r
423 thatDigit = m2.group();
\r
428 return new Integer(thisDigit).compareTo(new Integer(thatDigit));
\r
433 logger.debug("vfGroupsAfter:" + vfGroups.toString());
\r
436 for(Group group : vfGroups){
\r
439 //boolean saveVFModule = createVFModule(group, nodeTemplate, toscaResourceStruct, vfMetadata);
\r
440 if (vfMetadata.getVfModuleModelCustomizationUUID() == null) {
\r
441 logger.debug("NULL 1");
\r
443 logger.debug("vfMetadata.getMCU=" + vfMetadata.getVfModuleModelCustomizationUUID());
\r
445 if (group.getMetadata() == null) {
\r
446 logger.debug("NULL 3");
\r
448 logger.debug("group.getMetadata().getValue() = " + group.getMetadata().getValue("vfModuleModelCustomizationUUID"));
\r
450 if (vfMetadata.getVfModuleModelCustomizationUUID().equals(group.getMetadata().getValue("vfModuleModelCustomizationUUID"))) {
\r
451 logger.debug("Found a match at " + vfMetadata.getVfModuleModelCustomizationUUID());
\r
452 createVFModule(group, nodeTemplate, toscaResourceStruct, vfResourceStructure, vfMetadata);
\r
454 catalogDB.saveOrUpdateVfModule(toscaResourceStruct.getCatalogVfModule());
\r
456 catalogDB.saveOrUpdateVfModuleCustomization(toscaResourceStruct.getCatalogVfModuleCustomization());
\r
458 catalogDB.saveVnfResourceToVfModuleCustomization(toscaResourceStruct.getCatalogVnfResourceCustomization(), toscaResourceStruct.getCatalogVfModuleCustomization());
\r
462 if(toscaResourceStruct.getCatalogVfModuleCustomization() != null){
\r
463 logger.debug("No match for " + toscaResourceStruct.getCatalogVfModuleCustomization().getModelCustomizationUuid());
\r
465 logger.debug("No match for vfModuleModelCustomizationUUID");
\r
471 } //Commented out to process VFModules each time
\r
475 // Here we expect many HEAT_TEMPLATE files to be there
\r
476 if (vfModuleStructure.getArtifactsMap().containsKey(ASDCConfiguration.HEAT_ARTIFACT)) {
\r
477 for (VfModuleArtifact heatArtifact : vfModuleStructure.getArtifactsMap()
\r
478 .get(ASDCConfiguration.HEAT_ARTIFACT)) {
\r
480 HeatFiles heatFile = (HeatFiles) heatArtifact.getCatalogObject();
\r
482 // Add this one for logging
\r
483 artifactListForLogging.add(ASDCElementInfo.createElementFromVfArtifactInfo(heatArtifact.getArtifactInfo()));
\r
485 if(toscaResourceStruct.getCatalogVfModule() != null && heatFile != null){
\r
486 catalogDB.saveVfModuleToHeatFiles (toscaResourceStruct.getCatalogVfModule().getModelUUID(), heatFile);
\r
488 // Indicate we will deploy it in the DB
\r
489 heatArtifact.incrementDeployedInDB();
\r
497 /* END OF HEAT TABLE POPULATION
\r
498 * ***************************************************************************************************
\r
502 // throw new ArtifactInstallerException("TESTING");
\r
505 List<NodeTemplate> allottedResourceList = toscaResourceStruct.getSdcCsarHelper().getAllottedResources();
\r
507 if(allottedResourceList != null){
\r
509 for(NodeTemplate allottedNode : allottedResourceList){
\r
511 createAllottedResource(allottedNode, toscaResourceStruct);
\r
513 catalogDB.saveAllottedResource(toscaResourceStruct.getAllottedResource());
\r
515 catalogDB.saveAllottedResourceCustomization(toscaResourceStruct.getCatalogAllottedResourceCustomization());
\r
517 catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogAllottedServiceToResourceCustomization());
\r
523 List<NodeTemplate> nodeTemplatesVLList = toscaResourceStruct.getSdcCsarHelper().getServiceVlList();
\r
525 if(nodeTemplatesVLList != null){
\r
527 for(NodeTemplate vlNode : nodeTemplatesVLList){
\r
529 String networkResourceModelName = vlNode.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim();
\r
531 List<TempNetworkHeatTemplateLookup> networkHeatTemplateLookup = catalogDB.getTempNetworkHeatTemplateLookup(networkResourceModelName);
\r
533 if(networkHeatTemplateLookup != null && networkHeatTemplateLookup.size() > 0 ){
\r
535 createNetworkResource(vlNode, toscaResourceStruct, networkHeatTemplateLookup.get(0));
\r
538 throw new ArtifactInstallerException("No NetworkResourceName found in TempNetworkHeatTemplateLookup for " + networkResourceModelName);
\r
542 catalogDB.saveNetworkResource(toscaResourceStruct.getCatalogNetworkResource());
\r
544 catalogDB.saveNetworkResourceCustomization(toscaResourceStruct.getCatalogNetworkResourceCustomization());
\r
546 catalogDB.saveServiceToResourceCustomization(toscaResourceStruct.getCatalogVlServiceToResourceCustomization());
\r
552 //createServiceToResourceCustomization(toscaResourceStruct.getCatalogService(), toscaResourceStruct.getCatalogVnfResourceCustomization(), toscaResourceStruct);
\r
554 // catalogDB.saveToscaCsar(toscaResourceStruct.getCatalogToscaCsar());
\r
557 catalogDB.commit();
\r
558 vfResourceStructure.setSuccessfulDeployment();
\r
560 }catch(Exception e){
\r
561 System.out.println("Exception" + e.getMessage());
\r
562 e.printStackTrace();
\r
564 Throwable dbExceptionToCapture = e;
\r
565 while (!(dbExceptionToCapture instanceof ConstraintViolationException || dbExceptionToCapture instanceof LockAcquisitionException)
\r
566 && (dbExceptionToCapture.getCause() != null)) {
\r
567 dbExceptionToCapture = dbExceptionToCapture.getCause();
\r
570 if (dbExceptionToCapture instanceof ConstraintViolationException || dbExceptionToCapture instanceof LockAcquisitionException) {
\r
571 logger.warn(MessageEnum.ASDC_ARTIFACT_ALREADY_DEPLOYED, vfResourceStructure.getResourceInstance().getResourceName(),
\r
572 vfResourceStructure.getNotification().getServiceVersion(), "", "", MsoLogger.ErrorCode.DataError, "Exception - ASCDC Artifact already deployed", e);
\r
574 String endEvent = "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback.";
\r
575 String elementToLog = (artifactListForLogging.size() > 0 ? artifactListForLogging.get(artifactListForLogging.size()-1).toString() : "No element listed");
\r
576 logger.error(MessageEnum.ASDC_ARTIFACT_INSTALL_EXC, elementToLog, "", "", MsoLogger.ErrorCode.DataError, "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback", e);
\r
577 catalogDB.rollback();
\r
578 throw new ArtifactInstallerException(
\r
579 "Exception caught during installation of " + vfResourceStructure.getResourceInstance().getResourceName() + ". Transaction rollback.", e);
\r
587 public static String verifyTheFilePrefixInArtifacts(String filebody, VfResourceStructure vfResourceStructure, List<String> listTypes) {
\r
588 String newFileBody = filebody;
\r
589 for (VfModuleArtifact moduleArtifact:vfResourceStructure.getArtifactsMapByUUID().values()) {
\r
591 if (listTypes.contains(moduleArtifact.getArtifactInfo().getArtifactType())) {
\r
593 newFileBody = verifyTheFilePrefixInString(newFileBody,moduleArtifact.getArtifactInfo().getArtifactName());
\r
596 return newFileBody;
\r
599 public static String verifyTheFilePrefixInString(final String body, final String filenameToVerify) {
\r
601 String needlePrefix = "file:///";
\r
602 String prefixedFilenameToVerify = needlePrefix+filenameToVerify;
\r
604 if ((body == null) || (body.length() == 0) || (filenameToVerify == null) || (filenameToVerify.length() == 0)) {
\r
608 StringBuffer sb = new StringBuffer(body.length());
\r
610 int currentIndex = 0;
\r
611 int startIndex = 0;
\r
613 while (currentIndex != -1) {
\r
614 startIndex = currentIndex;
\r
615 currentIndex = body.indexOf(prefixedFilenameToVerify, startIndex);
\r
617 if (currentIndex == -1) {
\r
621 // We append from the startIndex up to currentIndex (start of File Name)
\r
622 sb.append(body.substring(startIndex, currentIndex));
\r
623 sb.append(filenameToVerify);
\r
625 currentIndex += prefixedFilenameToVerify.length();
\r
628 sb.append(body.substring(startIndex));
\r
630 return sb.toString();
\r
634 private static void createHeatTemplateFromArtifact(VfResourceStructure vfResourceStructure,ToscaResourceStructure toscaResourceStruct,
\r
635 VfModuleArtifact vfModuleArtifact) {
\r
636 HeatTemplate heatTemplate = new HeatTemplate();
\r
638 // TODO Set the label
\r
639 // heatTemplate.setAsdcLabel("label");
\r
640 // Use the ResourceName of the ASDC template because the HEAT could be
\r
642 // heatTemplate.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName());
\r
643 heatTemplate.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
645 List<String> typeList = new ArrayList<String>();
\r
646 typeList.add(ASDCConfiguration.HEAT_NESTED);
\r
647 typeList.add(ASDCConfiguration.HEAT_ARTIFACT);
\r
649 heatTemplate.setTemplateBody(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList));
\r
650 heatTemplate.setTemplateName(vfModuleArtifact.getArtifactInfo().getArtifactName());
\r
652 if (vfModuleArtifact.getArtifactInfo().getArtifactTimeout() != null) {
\r
653 heatTemplate.setTimeoutMinutes(vfModuleArtifact.getArtifactInfo().getArtifactTimeout());
\r
655 heatTemplate.setTimeoutMinutes(240);
\r
658 //toscaResourceStruct.setHeatFilesUUID(vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
660 heatTemplate.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());
\r
661 heatTemplate.setVersion(BigDecimalVersion
\r
662 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));
\r
663 heatTemplate.setArtifactUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
665 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){
\r
666 heatTemplate.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());
\r
668 heatTemplate.setArtifactChecksum("MANUAL_RECORD");
\r
671 Set<HeatTemplateParam> heatParam = ToscaResourceInstaller
\r
672 .extractHeatTemplateParameters(vfModuleArtifact.getResult(), vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
673 heatTemplate.setParameters(heatParam);
\r
674 //heatTemplate.setCreated(getCurrentTimeStamp());
\r
676 vfModuleArtifact.setCatalogObject(heatTemplate);
\r
679 private static void createHeatEnvFromArtifact(VfResourceStructure vfResourceStructure,
\r
680 VfModuleArtifact vfModuleArtifact) {
\r
681 HeatEnvironment heatEnvironment = new HeatEnvironment();
\r
683 heatEnvironment.setName(vfModuleArtifact.getArtifactInfo().getArtifactName());
\r
684 // TODO Set the label
\r
685 // heatEnvironment.setAsdcLabel("Label");
\r
687 List<String> typeList = new ArrayList<String>();
\r
688 typeList.add(ASDCConfiguration.HEAT);
\r
689 typeList.add(ASDCConfiguration.HEAT_VOL);
\r
691 heatEnvironment.setEnvironment(verifyTheFilePrefixInArtifacts(vfModuleArtifact.getResult(),vfResourceStructure,typeList));
\r
692 // heatEnvironment.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
693 heatEnvironment.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());
\r
694 heatEnvironment.setVersion(BigDecimalVersion
\r
695 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));
\r
696 // heatEnvironment.setAsdcResourceName(VfResourceInstaller.createVNFName(vfResourceStructure));
\r
697 heatEnvironment.setArtifactUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
699 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){
\r
700 heatEnvironment.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());
\r
702 heatEnvironment.setArtifactChecksum("MANUAL_RECORD");
\r
704 //heatEnvironment.setCreated(getCurrentTimeStamp());
\r
706 vfModuleArtifact.setCatalogObject(heatEnvironment);
\r
710 private static void createHeatFileFromArtifact(VfResourceStructure vfResourceStructure,
\r
711 VfModuleArtifact vfModuleArtifact, ToscaResourceStructure toscaResourceStruct) {
\r
713 HeatFiles heatFile = new HeatFiles();
\r
714 // TODO Set the label
\r
715 // heatFile.setAsdcLabel("Label");
\r
716 heatFile.setAsdcUuid(vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
717 heatFile.setDescription(vfModuleArtifact.getArtifactInfo().getArtifactDescription());
\r
718 heatFile.setFileBody(vfModuleArtifact.getResult());
\r
719 heatFile.setFileName(vfModuleArtifact.getArtifactInfo().getArtifactName());
\r
720 heatFile.setVersion(BigDecimalVersion
\r
721 .castAndCheckNotificationVersionToString(vfModuleArtifact.getArtifactInfo().getArtifactVersion()));
\r
723 toscaResourceStruct.setHeatFilesUUID(vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
724 //heatFile.setCreated(getCurrentTimeStamp());
\r
726 // heatFile.setAsdcResourceName(vfResourceStructure.getResourceInstance().getResourceName());
\r
729 if(vfModuleArtifact.getArtifactInfo().getArtifactChecksum() != null){
\r
730 heatFile.setArtifactChecksum(vfModuleArtifact.getArtifactInfo().getArtifactChecksum());
\r
732 heatFile.setArtifactChecksum("MANUAL_RECORD");
\r
735 vfModuleArtifact.setCatalogObject(heatFile);
\r
739 private static void createService(ToscaResourceStructure toscaResourceStructure) {
\r
741 toscaResourceStructure.getServiceMetadata();
\r
743 Metadata serviceMetadata = toscaResourceStructure.getServiceMetadata();
\r
745 Service service = new Service();
\r
748 if(serviceMetadata != null){
\r
750 if(toscaResourceStructure.getServiceVersion() != null){
\r
751 service.setVersion(toscaResourceStructure.getServiceVersion());
\r
754 service.setServiceType(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceType"));
\r
755 service.setServiceRole(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(serviceMetadata, "serviceRole"));
\r
757 service.setDescription(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION));
\r
758 service.setModelName(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_NAME));
\r
759 service.setModelUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
\r
760 //service.setVersion(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_VERSION));
\r
761 service.setModelInvariantUUID(serviceMetadata.getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID));
\r
762 service.setToscaCsarArtifactUUID(toscaResourceStructure.getToscaArtifact().getArtifactUUID());
\r
763 //service.setCreated(getCurrentTimeStamp());
\r
766 toscaResourceStructure.setCatalogService(service);
\r
769 private static void createToscaCsar(ToscaResourceStructure toscaResourceStructure) {
\r
771 ToscaCsar toscaCsar = new ToscaCsar();
\r
772 if(toscaResourceStructure.getToscaArtifact().getArtifactChecksum() != null){
\r
773 toscaCsar.setArtifactChecksum(toscaResourceStructure.getToscaArtifact().getArtifactChecksum());
\r
775 toscaCsar.setArtifactChecksum("MANUAL_RECORD");
\r
777 toscaCsar.setArtifactUUID(toscaResourceStructure.getToscaArtifact().getArtifactUUID());
\r
778 toscaCsar.setName(toscaResourceStructure.getToscaArtifact().getArtifactName());
\r
779 toscaCsar.setVersion(toscaResourceStructure.getToscaArtifact().getArtifactVersion());
\r
780 toscaCsar.setDescription(toscaResourceStructure.getToscaArtifact().getArtifactDescription());
\r
781 toscaCsar.setUrl(toscaResourceStructure.getToscaArtifact().getArtifactURL());
\r
783 toscaResourceStructure.setCatalogToscaCsar(toscaCsar);
\r
786 private static void createNetworkResource(NodeTemplate networkNodeTemplate, ToscaResourceStructure toscaResourceStructure, TempNetworkHeatTemplateLookup networkHeatTemplateLookup) {
\r
787 NetworkResourceCustomization networkResourceCustomization = new NetworkResourceCustomization();
\r
789 NetworkResource networkResource = new NetworkResource();
\r
791 String providerNetwork = toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_PROVIDERNETWORK_ISPROVIDERNETWORK);
\r
793 if(providerNetwork != null && providerNetwork.equalsIgnoreCase("true")){
\r
794 networkResource.setNeutronNetworkType("PROVIDER");
\r
796 networkResource.setNeutronNetworkType("BASIC");
\r
799 networkResource.setModelName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));
\r
801 networkResource.setModelInvariantUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)));
\r
802 networkResource.setModelUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)));
\r
803 networkResource.setModelVersion(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION)));
\r
805 networkResource.setAicVersionMax(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES)));
\r
806 networkResource.setAicVersionMin(networkHeatTemplateLookup.getAicVersionMin());
\r
807 networkResource.setToscaNodeType(networkNodeTemplate.getType());
\r
808 networkResource.setDescription(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
\r
809 networkResource.setOrchestrationMode("HEAT");
\r
810 networkResource.setHeatTemplateArtifactUUID(networkHeatTemplateLookup.getHeatTemplateArtifactUuid());
\r
812 toscaResourceStructure.setCatalogNetworkResource(networkResource);
\r
814 networkResourceCustomization.setModelInstanceName(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));
\r
815 networkResourceCustomization.setModelCustomizationUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));
\r
816 networkResourceCustomization.setNetworkResourceModelUuid(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));
\r
819 networkResourceCustomization.setNetworkTechnology(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTECHNOLOGY)).trim());
\r
820 networkResourceCustomization.setNetworkType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTYPE)).trim());
\r
821 networkResourceCustomization.setNetworkRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());
\r
822 networkResourceCustomization.setNetworkScope(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)).trim());
\r
824 toscaResourceStructure.setCatalogNetworkResourceCustomization(networkResourceCustomization);
\r
826 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();
\r
827 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());
\r
828 serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));
\r
829 serviceToResourceCustomization.setModelType("network");
\r
831 toscaResourceStructure.setCatalogVlServiceToResourceCustomization(serviceToResourceCustomization);
\r
836 private static void createVFModule(Group group, NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure, VfResourceStructure vfResourceStructure, IVfModuleData vfModuleData) {
\r
837 VfModule vfModule = new VfModule();
\r
838 boolean isBase = false;
\r
840 Metadata vfMetadata = group.getMetadata();
\r
842 String vfModuleModelUUID = vfModuleData.getVfModuleModelUUID();
\r
845 if(vfModuleModelUUID != null && vfModuleModelUUID.indexOf(".") > -1){
\r
846 vfModuleModelUUID = vfModuleModelUUID.substring(0, vfModuleModelUUID.indexOf("."));
\r
850 for (VfModuleStructure vfModuleStructure : vfResourceStructure.getVfModuleStructure()){
\r
852 String vfModelUUID = vfModuleStructure.getVfModuleMetadata().getVfModuleModelUUID();
\r
854 if(vfModelUUID != null && vfModelUUID.equalsIgnoreCase(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID))){
\r
856 List<String> artifacts = vfModuleStructure.getVfModuleMetadata().getArtifacts();
\r
858 for(String artifact: artifacts){
\r
861 for (VfModuleArtifact vfModuleArtifact : vfResourceStructure.getArtifactsMapByUUID().values()) {
\r
864 if(artifact.equals(vfModuleArtifact.getArtifactInfo().getArtifactUUID())){
\r
865 //if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT_ARTIFACT)){
\r
866 if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT)){
\r
867 vfModule.setHeatTemplateArtifactUUId(vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
870 if(vfModuleArtifact.getArtifactInfo().getArtifactType().equals(ASDCConfiguration.HEAT_VOL)){
\r
871 vfModule.setVolHeatTemplateArtifactUUId(vfModuleArtifact.getArtifactInfo().getArtifactUUID());
\r
887 vfModule.setModelInvariantUuid(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)));
\r
888 vfModule.setModelName(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELNAME)));
\r
889 vfModule.setModelUUID(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID)));
\r
890 vfModule.setVersion(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELVERSION)));
\r
891 vfModule.setDescription(testNull(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata, SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
\r
892 //vfModule.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());
\r
893 //vfModule.setVolHeatTemplateArtifactUUId(toscaResourceStructure.getVolHeatTemplateUUID());
\r
895 vfModule.setVnfResourceModelUUId(toscaResourceStructure.getCatalogVnfResource().getModelUuid());
\r
897 String vfModuleType = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_VFMODULETYPE);
\r
898 if(vfModuleType != null && vfModuleType.equalsIgnoreCase("Base")){
\r
899 vfModule.setIsBase(1);
\r
901 vfModule.setIsBase(0);
\r
905 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
\r
906 vfModuleCustomization.setModelCustomizationUuid(vfModuleData.getVfModuleModelCustomizationUUID());
\r
909 vfModuleCustomization.setVfModuleModelUuid(toscaResourceStructure.getSdcCsarHelper().getMetadataPropertyValue(vfMetadata,SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID));
\r
911 vfModuleCustomization.setHeatEnvironmentArtifactUuid(toscaResourceStructure.getEnvHeatTemplateUUID());
\r
914 vfModuleCustomization.setVolEnvironmentArtifactUuid(toscaResourceStructure.getVolHeatEnvTemplateUUID());
\r
916 String initialCount = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_INITIALCOUNT);
\r
917 if(initialCount != null && initialCount.length() > 0){
\r
918 vfModuleCustomization.setInitialCount(Integer.valueOf(initialCount));
\r
921 vfModuleCustomization.setInitialCount(Integer.valueOf(toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_INITIALCOUNT)));
\r
923 String availabilityZoneCount = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT);
\r
924 if(availabilityZoneCount != null && availabilityZoneCount.length() > 0){
\r
925 vfModuleCustomization.setAvailabilityZoneCount(Integer.valueOf(availabilityZoneCount));
\r
929 vfModuleCustomization.setLabel(toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_VFMODULELABEL));
\r
931 String maxInstances = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_MAXVFMODULEINSTANCES);
\r
932 if(maxInstances != null && maxInstances.length() > 0){
\r
933 vfModuleCustomization.setMaxInstances(Integer.valueOf(maxInstances));
\r
936 String minInstances = toscaResourceStructure.getSdcCsarHelper().getGroupPropertyLeafValue(group, SdcPropertyNames.PROPERTY_NAME_MINVFMODULEINSTANCES);
\r
937 if(minInstances != null && minInstances.length() > 0){
\r
938 vfModuleCustomization.setMinInstances(Integer.valueOf(minInstances));
\r
941 toscaResourceStructure.setCatalogVfModule(vfModule);
\r
943 toscaResourceStructure.setCatalogVfModuleCustomization(vfModuleCustomization);
\r
947 private static void createVnfResourceToVfModuleCustomization(VnfResourceCustomization vnfResourceCustomization,
\r
948 VfModuleCustomization vfModuleCustomization,
\r
949 ToscaResourceStructure toscaResourceStructure) {
\r
951 VnfResCustomToVfModuleCustom vnfResCustomToVfModuleCustom = new VnfResCustomToVfModuleCustom();
\r
953 vnfResCustomToVfModuleCustom.setVfModuleCustModelCustomizationUuid(vfModuleCustomization.getModelCustomizationUuid());
\r
954 vnfResCustomToVfModuleCustom.setVnfResourceCustModelCustomizationUuid(vnfResourceCustomization.getModelCustomizationUuid());
\r
956 toscaResourceStructure.setCatalogVnfResCustomToVfModuleCustom(vnfResCustomToVfModuleCustom);
\r
963 private static void createTempNetworkHeatTemplateLookup(NetworkResource networkResource,
\r
964 VfModule vfModule,
\r
965 ToscaResourceStructure toscaResourceStructure) {
\r
967 TempNetworkHeatTemplateLookup tempNetworkHeatTemplateLookup = new TempNetworkHeatTemplateLookup();
\r
969 tempNetworkHeatTemplateLookup.setNetworkResourceModelName(networkResource.getModelName());
\r
970 tempNetworkHeatTemplateLookup.setHeatTemplateArtifactUuid(vfModule.getHeatTemplateArtifactUUId());
\r
971 tempNetworkHeatTemplateLookup.setAicVersionMin("1");
\r
973 toscaResourceStructure.setCatalogTempNetworkHeatTemplateLookup(tempNetworkHeatTemplateLookup);
\r
979 private static void createVnfResource(NodeTemplate vfNodeTemplate, ToscaResourceStructure toscaResourceStructure) {
\r
980 VnfResource vnfResource = new VnfResource();
\r
983 //toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT)
\r
985 vnfResource.setModelInvariantUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));
\r
986 vnfResource.setModelName(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));
\r
987 vnfResource.setModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));
\r
989 vnfResource.setVersion(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));
\r
990 vnfResource.setDescription(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION).trim()));
\r
991 vnfResource.setOrchestrationMode("HEAT");
\r
992 vnfResource.setToscaNodeType(testNull(vfNodeTemplate.getType()));
\r
993 vnfResource.setAicVersionMax(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));
\r
994 vnfResource.setAicVersionMin(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));
\r
995 //vnfResource.setHeatTemplateArtifactUUId(toscaResourceStructure.getHeatTemplateUUID());
\r
997 // vfNodeTemplate.getProperties()
\r
998 toscaResourceStructure.setCatalogVnfResource(vnfResource);
\r
1000 VnfResourceCustomization vnfResourceCustomization = new VnfResourceCustomization();
\r
1001 vnfResourceCustomization.setModelCustomizationUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));
\r
1002 vnfResourceCustomization.setModelInstanceName(vfNodeTemplate.getName());
\r
1004 vnfResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());
\r
1005 vnfResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());
\r
1006 vnfResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());
\r
1007 vnfResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(vfNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());
\r
1010 vnfResourceCustomization.setVnfResourceModelUuid(testNull(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));
\r
1011 vnfResourceCustomization.setAvailabilityZoneMaxCount(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_AVAILABILITYZONECOUNT).trim()));
\r
1013 vnfResourceCustomization.setMaxInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MAXINSTANCES).trim()));
\r
1014 vnfResourceCustomization.setMinInstances(Integer.getInteger(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_MININSTANCES).trim()));
\r
1018 toscaResourceStructure.setCatalogVnfResourceCustomization(vnfResourceCustomization);
\r
1021 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();
\r
1022 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());
\r
1023 serviceToResourceCustomization.setResourceModelCustomizationUUID(vfNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim());
\r
1024 serviceToResourceCustomization.setModelType("vnf");
\r
1026 toscaResourceStructure.setCatalogVfServiceToResourceCustomization(serviceToResourceCustomization);
\r
1031 private static void createAllottedResource(NodeTemplate nodeTemplate, ToscaResourceStructure toscaResourceStructure) {
\r
1032 AllottedResource allottedResource = new AllottedResource();
\r
1034 allottedResource.setModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));
\r
1035 allottedResource.setModelInvariantUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID).trim()));
\r
1036 allottedResource.setModelName(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME).trim()));
\r
1037 allottedResource.setModelVersion(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION).trim()));
\r
1038 allottedResource.setToscaNodeType(testNull(nodeTemplate.getType()));
\r
1040 toscaResourceStructure.setAllottedResource(allottedResource);
\r
1042 AllottedResourceCustomization allottedResourceCustomization = new AllottedResourceCustomization();
\r
1043 allottedResourceCustomization.setModelCustomizationUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));
\r
1044 allottedResourceCustomization.setModelInstanceName(nodeTemplate.getName());
\r
1045 allottedResourceCustomization.setArModelUuid(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID).trim()));
\r
1047 allottedResourceCustomization.setNfFunction(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION)).trim());
\r
1048 allottedResourceCustomization.setNfNamingCode(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFCODE)).trim());
\r
1049 allottedResourceCustomization.setNfRole(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE)).trim());
\r
1050 allottedResourceCustomization.setNfType(testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE)).trim());
\r
1052 toscaResourceStructure.setCatalogAllottedResourceCustomization(allottedResourceCustomization);
\r
1054 ServiceToResourceCustomization serviceToResourceCustomization = new ServiceToResourceCustomization();
\r
1055 serviceToResourceCustomization.setServiceModelUUID(toscaResourceStructure.getCatalogService().getModelUUID());
\r
1056 serviceToResourceCustomization.setResourceModelCustomizationUUID(testNull(nodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID).trim()));
\r
1057 serviceToResourceCustomization.setModelType("allottedResource");
\r
1059 toscaResourceStructure.setCatalogAllottedServiceToResourceCustomization(serviceToResourceCustomization);
\r
1063 private static Set<HeatTemplateParam> extractHeatTemplateParameters(String yamlFile, String artifactUUID) {
\r
1065 // Scan the payload downloadResult and extract the HeatTemplate
\r
1067 YamlEditor yamlEditor = new YamlEditor(yamlFile.getBytes());
\r
1068 return yamlEditor.getParameterList(artifactUUID);
\r
1072 private static String identifyParentOfNestedTemplate(VfModuleStructure vfModuleStructure,VfModuleArtifact heatNestedArtifact) {
\r
1074 if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT) != null
\r
1075 && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0).getArtifactInfo().getRelatedArtifacts() != null) {
\r
1076 for (IArtifactInfo unknownArtifact : vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT).get(0)
\r
1077 .getArtifactInfo().getRelatedArtifacts()) {
\r
1078 if (heatNestedArtifact.getArtifactInfo().getArtifactUUID().equals(unknownArtifact.getArtifactUUID())) {
\r
1079 return ASDCConfiguration.HEAT;
\r
1085 if (vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL) != null
\r
1086 && vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts() != null) {
\r
1087 for (IArtifactInfo unknownArtifact:vfModuleStructure.getArtifactsMap().get(ASDCConfiguration.HEAT_VOL).get(0).getArtifactInfo().getRelatedArtifacts()) {
\r
1088 if (heatNestedArtifact.getArtifactInfo().getArtifactUUID().equals(unknownArtifact.getArtifactUUID())) {
\r
1089 return ASDCConfiguration.HEAT_VOL;
\r
1095 // Does not belong to anything
\r
1100 private static String testNull(Object object) {
\r
1101 if (object == null) {
\r
1103 } else if (object.equals("null")) {
\r
1105 }else if (object instanceof Integer) {
\r
1106 return object.toString();
\r
1107 } else if (object instanceof String) {
\r
1108 return (String)object;
\r
1110 return "Type not recognized";
\r
1114 private static String createVNFName(VfResourceStructure vfResourceStructure) {
\r
1116 return vfResourceStructure.getNotification().getServiceName() + "/" + vfResourceStructure.getResourceInstance().getResourceInstanceName();
\r
1119 private static String createVfModuleName(VfModuleStructure vfModuleStructure) {
\r
1121 return createVNFName(vfModuleStructure.getParentVfResource())+"::"+vfModuleStructure.getVfModuleMetadata().getVfModuleModelName();
\r
1125 private static Timestamp getCurrentTimeStamp() {
\r
1127 return new Timestamp(new Date().getTime());
\r