2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 Huawei Technologies Co., Ltd. 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.tests;
\r
23 import java.io.IOException;
\r
24 import java.io.UnsupportedEncodingException;
\r
25 import java.net.URISyntaxException;
\r
26 import java.nio.file.Files;
\r
27 import java.nio.file.Paths;
\r
28 import java.security.MessageDigest;
\r
29 import java.security.NoSuchAlgorithmException;
\r
30 import java.util.ArrayList;
\r
31 import java.util.List;
\r
32 import java.util.Map;
\r
34 import org.apache.commons.codec.binary.Base64;
\r
35 import org.apache.commons.lang3.tuple.Pair;
\r
36 import org.junit.AfterClass;
\r
37 import org.junit.Before;
\r
38 import org.junit.BeforeClass;
\r
39 import org.junit.Ignore;
\r
40 import org.junit.Test;
\r
41 import org.mockito.Mockito;
\r
42 import org.openecomp.mso.asdc.client.ASDCConfiguration;
\r
43 import org.openecomp.mso.asdc.client.exceptions.ArtifactInstallerException;
\r
44 import org.openecomp.mso.asdc.client.tests.ASDCControllerTest;
\r
45 import org.openecomp.mso.asdc.installer.ToscaResourceStructure;
\r
46 import org.openecomp.mso.asdc.installer.VfResourceStructure;
\r
47 import org.openecomp.mso.asdc.installer.heat.ToscaResourceInstaller;
\r
48 import org.openecomp.mso.db.catalog.CatalogDatabase;
\r
49 import org.openecomp.mso.db.catalog.beans.AllottedResource;
\r
50 import org.openecomp.mso.db.catalog.beans.AllottedResourceCustomization;
\r
51 import org.openecomp.mso.db.catalog.beans.NetworkResource;
\r
52 import org.openecomp.mso.db.catalog.beans.NetworkResourceCustomization;
\r
53 import org.openecomp.mso.db.catalog.beans.Service;
\r
54 import org.openecomp.mso.db.catalog.beans.ServiceToAllottedResources;
\r
55 import org.openecomp.mso.db.catalog.beans.ServiceToNetworks;
\r
56 import org.openecomp.mso.db.catalog.beans.ServiceToResourceCustomization;
\r
57 import org.openecomp.mso.db.catalog.beans.TempNetworkHeatTemplateLookup;
\r
58 import org.openecomp.mso.db.catalog.beans.ToscaCsar;
\r
59 import org.openecomp.mso.db.catalog.beans.VfModule;
\r
60 import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;
\r
61 import org.openecomp.mso.db.catalog.beans.VfModuleToHeatFiles;
\r
62 import org.openecomp.mso.db.catalog.beans.VnfResCustomToVfModuleCustom;
\r
63 import org.openecomp.mso.db.catalog.beans.VnfResource;
\r
64 import org.openecomp.mso.db.catalog.beans.VnfResourceCustomization;
\r
65 import org.openecomp.mso.properties.MsoJavaProperties;
\r
66 import org.openecomp.mso.properties.MsoPropertiesException;
\r
67 import org.openecomp.mso.properties.MsoPropertiesFactory;
\r
68 import org.openecomp.sdc.api.IDistributionClient;
\r
69 import org.openecomp.sdc.api.notification.IArtifactInfo;
\r
70 import org.openecomp.sdc.api.notification.INotificationData;
\r
71 import org.openecomp.sdc.api.notification.IResourceInstance;
\r
72 import org.openecomp.sdc.api.results.IDistributionClientDownloadResult;
\r
73 import org.openecomp.sdc.api.results.IDistributionClientResult;
\r
74 import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
\r
75 import org.openecomp.sdc.tosca.parser.impl.FilterType;
\r
76 import org.openecomp.sdc.tosca.parser.impl.SdcTypes;
\r
77 import org.openecomp.sdc.toscaparser.api.CapabilityAssignment;
\r
78 import org.openecomp.sdc.toscaparser.api.CapabilityAssignments;
\r
79 import org.openecomp.sdc.toscaparser.api.Group;
\r
80 import org.openecomp.sdc.toscaparser.api.NodeTemplate;
\r
81 import org.openecomp.sdc.toscaparser.api.RequirementAssignments;
\r
82 import org.openecomp.sdc.toscaparser.api.elements.Metadata;
\r
83 import org.openecomp.sdc.toscaparser.api.parameters.Input;
\r
84 import org.openecomp.sdc.utils.DistributionActionResultEnum;
\r
87 import mockit.MockUp;
\r
89 public class ToscaResourceInstallerTest {
\r
91 private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory();
\r
93 private static String heatExample;
\r
94 private static String heatExampleMD5HashBase64;
\r
96 private static INotificationData iNotif;
\r
98 private static IDistributionClientDownloadResult downloadResult;
\r
99 private static IDistributionClientDownloadResult downloadCorruptedResult;
\r
101 private static IDistributionClientResult successfulClientInitResult;
\r
102 private static IDistributionClientResult unsuccessfulClientInitResult;
\r
104 private static IDistributionClient distributionClient;
\r
106 private static IArtifactInfo artifactInfo1;
\r
108 private static IResourceInstance resource1;
\r
110 private static VfResourceStructure vrs;
\r
112 public static final String ASDC_PROP = MsoJavaProperties.class.getClassLoader().getResource("mso.json").toString()
\r
114 public static final String ASDC_PROP2 = MsoJavaProperties.class.getClassLoader().getResource("mso2.json").toString()
\r
116 public static final String ASDC_PROP3 = MsoJavaProperties.class.getClassLoader().getResource("mso3.json").toString()
\r
118 public static final String ASDC_PROP_BAD = MsoJavaProperties.class.getClassLoader().getResource("mso-bad.json")
\r
119 .toString().substring(5);
\r
120 public static final String ASDC_PROP_WITH_NULL = MsoJavaProperties.class.getClassLoader()
\r
121 .getResource("mso-with-NULL.json").toString().substring(5);
\r
124 public static final void prepareMockNotification() throws MsoPropertiesException, IOException, URISyntaxException,
\r
125 NoSuchAlgorithmException, ArtifactInstallerException {
\r
127 heatExample = new String(Files.readAllBytes(Paths.get(
\r
128 ASDCControllerTest.class.getClassLoader().getResource("resource-examples/autoscaling.yaml").toURI())));
\r
129 MessageDigest md = MessageDigest.getInstance("MD5");
\r
130 byte[] md5Hash = md.digest(heatExample.getBytes());
\r
131 heatExampleMD5HashBase64 = Base64.encodeBase64String(md5Hash);
\r
133 iNotif = Mockito.mock(INotificationData.class);
\r
135 // Create fake ArtifactInfo
\r
136 artifactInfo1 = Mockito.mock(IArtifactInfo.class);
\r
137 Mockito.when(artifactInfo1.getArtifactChecksum())
\r
138 .thenReturn(ToscaResourceInstallerTest.heatExampleMD5HashBase64);
\r
140 Mockito.when(artifactInfo1.getArtifactName()).thenReturn("artifact1");
\r
141 Mockito.when(artifactInfo1.getArtifactType()).thenReturn(ASDCConfiguration.HEAT);
\r
142 Mockito.when(artifactInfo1.getArtifactURL())
\r
143 .thenReturn("https://localhost:8080/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml");
\r
144 Mockito.when(artifactInfo1.getArtifactUUID()).thenReturn("UUID1");
\r
145 Mockito.when(artifactInfo1.getArtifactDescription()).thenReturn("testos artifact1");
\r
147 distributionClient = Mockito.mock(IDistributionClient.class);
\r
149 // Now provision the NotificationData mock
\r
150 List<IArtifactInfo> listArtifact = new ArrayList<>();
\r
151 listArtifact.add(artifactInfo1);
\r
153 // Create fake resource Instance
\r
154 resource1 = Mockito.mock(IResourceInstance.class);
\r
155 // Mockito.when(resource1.getResourceType()).thenReturn("VF");
\r
156 Mockito.when(resource1.getResourceName()).thenReturn("resourceName");
\r
157 Mockito.when(resource1.getArtifacts()).thenReturn(listArtifact);
\r
159 List<IResourceInstance> resources = new ArrayList<>();
\r
160 resources.add(resource1);
\r
162 Mockito.when(iNotif.getResources()).thenReturn(resources);
\r
163 Mockito.when(iNotif.getDistributionID()).thenReturn("distributionID1");
\r
164 Mockito.when(iNotif.getServiceName()).thenReturn("serviceName1");
\r
165 Mockito.when(iNotif.getServiceUUID()).thenReturn("serviceNameUUID1");
\r
166 Mockito.when(iNotif.getServiceVersion()).thenReturn("1.0");
\r
168 downloadResult = Mockito.mock(IDistributionClientDownloadResult.class);
\r
169 Mockito.when(downloadResult.getArtifactPayload()).thenReturn(heatExample.getBytes());
\r
170 Mockito.when(downloadResult.getDistributionActionResult()).thenReturn(DistributionActionResultEnum.SUCCESS);
\r
171 Mockito.when(downloadResult.getDistributionMessageResult()).thenReturn("Success");
\r
173 downloadCorruptedResult = Mockito.mock(IDistributionClientDownloadResult.class);
\r
174 Mockito.when(downloadCorruptedResult.getArtifactPayload()).thenReturn((heatExample + "badone").getBytes());
\r
175 Mockito.when(downloadCorruptedResult.getDistributionActionResult())
\r
176 .thenReturn(DistributionActionResultEnum.SUCCESS);
\r
177 Mockito.when(downloadCorruptedResult.getDistributionMessageResult()).thenReturn("Success");
\r
179 vrs = new VfResourceStructure(iNotif, resource1);
\r
181 vrs.addArtifactToStructure(distributionClient, artifactInfo1, downloadResult);
\r
182 } catch (UnsupportedEncodingException e) {
\r
183 e.printStackTrace();
\r
186 vrs.createVfModuleStructures();
\r
187 } catch (ArtifactInstallerException e) {
\r
188 e.printStackTrace();
\r
190 vrs.getNotification();
\r
191 vrs.getArtifactsMapByUUID();
\r
192 vrs.getCatalogNetworkResourceCustomization();
\r
193 vrs.getCatalogResourceCustomization();
\r
194 vrs.getCatalogService();
\r
195 vrs.getCatalogServiceToAllottedResources();
\r
196 vrs.getCatalogServiceToNetworks();
\r
197 vrs.getCatalogVnfResource();
\r
198 vrs.getResourceInstance();
\r
199 vrs.getVfModulesStructureList();
\r
200 vrs.getVfModuleStructure();
\r
201 vrs.setCatalogNetworkResourceCustomization(new NetworkResourceCustomization());
\r
202 vrs.setCatalogResourceCustomization(new AllottedResourceCustomization());
\r
203 vrs.setCatalogService(new Service());
\r
204 vrs.setCatalogServiceToAllottedResources(new ServiceToAllottedResources());
\r
205 vrs.setCatalogServiceToNetworks(new ServiceToNetworks());
\r
206 vrs.setCatalogVnfResource(new VnfResource());
\r
207 vrs.setSuccessfulDeployment();
\r
209 AllottedResourceCustomization arc = new AllottedResourceCustomization();
\r
210 arc.setModelCustomizationUuid("modelCustomizationUuid");
\r
211 List<AllottedResourceCustomization> allottedResources = new ArrayList<>();
\r
212 allottedResources.add(arc);
\r
214 NetworkResourceCustomization nrc = new NetworkResourceCustomization();
\r
215 nrc.setModelCustomizationUuid("modelCustomizationUuid");
\r
216 List<NetworkResourceCustomization> networkResources = new ArrayList<>();
\r
217 networkResources.add(nrc);
\r
219 new MockUp<CatalogDatabase>() {
\r
221 public List<AllottedResourceCustomization> getAllAllottedResourcesByServiceModelUuid(
\r
222 String serviceModelUuid) {
\r
223 return allottedResources;
\r
226 new MockUp<CatalogDatabase>() {
\r
228 public List<NetworkResourceCustomization> getAllNetworksByServiceModelUuid(String serviceModelUuid) {
\r
229 return networkResources;
\r
233 // Mock now the ASDC distribution client behavior
\r
234 successfulClientInitResult = Mockito.mock(IDistributionClientResult.class);
\r
235 Mockito.when(successfulClientInitResult.getDistributionActionResult())
\r
236 .thenReturn(DistributionActionResultEnum.SUCCESS);
\r
238 unsuccessfulClientInitResult = Mockito.mock(IDistributionClientResult.class);
\r
239 Mockito.when(unsuccessfulClientInitResult.getDistributionActionResult())
\r
240 .thenReturn(DistributionActionResultEnum.GENERAL_ERROR);
\r
245 public final void initBeforeEachTest() throws MsoPropertiesException {
\r
247 msoPropertiesFactory.removeAllMsoProperties();
\r
248 msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP);
\r
252 public static final void kill() throws MsoPropertiesException {
\r
254 msoPropertiesFactory.removeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC);
\r
259 public void isResourceAlreadyDeployedAllotedResourceTest() {
\r
260 Mockito.when(resource1.getResourceType()).thenReturn("VF");
\r
261 Mockito.when(resource1.getCategory()).thenReturn("Allotted Resource");
\r
262 ToscaResourceInstaller tri = new ToscaResourceInstaller();
\r
265 tri.isResourceAlreadyDeployed(vrs);
\r
266 } catch (ArtifactInstallerException e) {
\r
270 @Test(expected=Exception.class)
\r
271 @Ignore // 1802 merge
\r
272 public void installTheResourceTest() {
\r
275 * COMMENTED OUT BECAUSE IT DOES NOT COMPILE IN ONAP JENKINS BUILD
\r
277 ToscaResourceStructure trs = new ToscaResourceStructure();
\r
278 trs.getAllottedResource();
\r
279 trs.getAllottedList();
\r
280 trs.getCatalogAllottedResourceCustomization();
\r
281 trs.getCatalogAllottedServiceToResourceCustomization();
\r
282 trs.getCatalogNetworkResource();
\r
283 trs.getCatalogNetworkResourceCustomization();
\r
284 trs.getCatalogResourceCustomization();
\r
285 trs.getCatalogService();
\r
286 trs.getCatalogTempNetworkHeatTemplateLookup();
\r
287 trs.getCatalogToscaCsar();
\r
288 trs.getCatalogVfModule();
\r
289 trs.getCatalogVfModuleCustomization();
\r
290 trs.getCatalogVfModuleToHeatFiles();
\r
291 trs.getCatalogVfServiceToResourceCustomization();
\r
292 trs.getCatalogVlServiceToResourceCustomization();
\r
293 trs.getCatalogVnfResCustomToVfModuleCustom();
\r
294 trs.getCatalogVnfResource();
\r
295 trs.getCatalogVnfResourceCustomization();
\r
296 trs.getEnvHeatTemplateUUID();
\r
297 trs.getHeatFilesUUID();
\r
298 trs.getHeatTemplateUUID();
\r
299 trs.getNetworkTypes();
\r
300 trs.getSdcCsarHelper();
\r
301 trs.getServiceMetadata();
\r
302 trs.getServiceToResourceCustomization();
\r
303 trs.getServiceVersion();
\r
304 trs.getToscaArtifact();
\r
306 trs.getVolHeatEnvTemplateUUID();
\r
307 trs.getVolHeatTemplateUUID();
\r
309 NodeTemplate nodeTemplate = Mockito.mock(NodeTemplate.class);
\r
310 List<NodeTemplate> alnt = new ArrayList<>();
\r
311 trs.setAllottedList(alnt);
\r
312 trs.setAllottedResource(new AllottedResource());
\r
313 trs.setCatalogAllottedResourceCustomization(new AllottedResourceCustomization());
\r
314 trs.setCatalogAllottedServiceToResourceCustomization(new ServiceToResourceCustomization());
\r
315 trs.setCatalogNetworkResource(new NetworkResource());
\r
316 trs.setCatalogNetworkResourceCustomization(new NetworkResourceCustomization());
\r
317 trs.setCatalogResourceCustomization(new AllottedResourceCustomization());
\r
318 trs.setCatalogService(new Service());
\r
319 trs.setCatalogTempNetworkHeatTemplateLookup(new TempNetworkHeatTemplateLookup());
\r
320 trs.setCatalogToscaCsar(new ToscaCsar());
\r
321 trs.setCatalogVfModule(new VfModule());
\r
322 trs.setCatalogVfModuleCustomization(new VfModuleCustomization());
\r
323 trs.setCatalogVfModuleToHeatFiles(new VfModuleToHeatFiles());
\r
324 trs.setCatalogVfServiceToResourceCustomization(new ServiceToResourceCustomization());
\r
325 trs.setCatalogVlServiceToResourceCustomization(new ServiceToResourceCustomization());
\r
326 trs.setCatalogVnfResCustomToVfModuleCustom(new VnfResCustomToVfModuleCustom());
\r
327 trs.setCatalogVnfResource(new VnfResource());
\r
328 trs.setCatalogVnfResourceCustomization(new VnfResourceCustomization());
\r
329 trs.setEnvHeatTemplateUUID("envHeatTemplateUUID");
\r
330 trs.setHeatFilesUUID("heatFilesUUID");
\r
331 trs.setHeatTemplateUUID("heatTemplateUUID");
\r
332 trs.setNetworkTypes(alnt);
\r
333 trs.setVolHeatTemplateUUID("volHeatTemplateUUID");
\r
334 trs.setSdcCsarHelper(new ISdcCsarHelper() {
\r
337 public List<NodeTemplate> getGroupMembersFromTopologyTemplate(String arg0) {
\r
342 public List<Map<String, Object>> getGroupsOfOriginOfNodeTemplate(NodeTemplate arg0) {
\r
347 public List<Map<String,Map<String,Object>>> getGroupsOfTopologyTemplateByToscaGroupType(String arg0) {
\r
352 public List<Map<String,Map<String,Object>>> getGroupsOfTopologyTemplate() {
\r
357 public List<Map<String,Map<String,Object>>> getPoliciesOfTargetByToscaPolicyType(NodeTemplate arg0, String arg1) {
\r
362 public List<Map<String,Map<String,Object>>> getPoliciesOfTarget(NodeTemplate arg0) {
\r
367 public NodeTemplate getNodeTemplateByName(String arg0) {
\r
372 public List<Map<String,Object>> getPolicyTargetsFromOrigin(NodeTemplate arg0, String arg1) {
\r
377 public List<NodeTemplate> getPolicyTargetsFromTopologyTemplate(String arg0) {
\r
382 public List<Map<String,Object>> getPoliciesOfOriginOfNodeTemplateByToscaPolicyType(NodeTemplate arg0, String arg1) {
\r
387 public List<Map<String,Object>> getPoliciesOfOriginOfNodeTemplate(NodeTemplate arg0) {
\r
392 public List<Map<String,Map<String,Object>>> getPoliciesOfTopologyTemplateByToscaPolicyType(String arg0) {
\r
397 public List<Map<String,Map<String,Object>>> getPoliciesOfTopologyTemplate() {
\r
401 ////////////////////////////////
\r
404 public boolean hasTopology(NodeTemplate arg0) {
\r
409 public NodeTemplate getVnfConfig(String arg0) {
\r
414 public List<NodeTemplate> getVfcListByVf(String arg0) {
\r
419 public List<Group> getVfModulesByVf(String arg0) {
\r
424 public String getTypeOfNodeTemplate(NodeTemplate arg0) {
\r
429 public List<NodeTemplate> getServiceVlList() {
\r
434 public List<NodeTemplate> getServiceVfList() {
\r
439 public String getServiceSubstitutionMappingsTypeName() {
\r
444 public List<NodeTemplate> getServiceNodeTemplatesByType(String arg0) {
\r
449 public List<NodeTemplate> getServiceNodeTemplates() {
\r
454 public List<NodeTemplate> getServiceNodeTemplateBySdcType(SdcTypes arg0) {
\r
459 public Map<String, Object> getServiceMetadataProperties() {
\r
464 public Metadata getServiceMetadata() {
\r
469 public List<Input> getServiceInputs() {
\r
474 public Object getServiceInputLeafValueOfDefaultAsObject(String arg0) {
\r
479 public String getServiceInputLeafValueOfDefault(String arg0) {
\r
484 public String getNodeTemplatePropertyLeafValue(NodeTemplate arg0, String arg1) {
\r
489 public Object getNodeTemplatePropertyAsObject(NodeTemplate arg0, String arg1) {
\r
494 public List<Pair<NodeTemplate, NodeTemplate>> getNodeTemplatePairsByReqName(List<NodeTemplate> arg0,
\r
495 List<NodeTemplate> arg1, String arg2) {
\r
500 public String getNodeTemplateCustomizationUuid(NodeTemplate arg0) {
\r
505 public List<NodeTemplate> getNodeTemplateChildren(NodeTemplate arg0) {
\r
510 public List<NodeTemplate> getNodeTemplateBySdcType(NodeTemplate arg0, SdcTypes arg1) {
\r
515 public String getMetadataPropertyValue(Metadata arg0, String arg1) {
\r
520 public List<NodeTemplate> getMembersOfVfModule(NodeTemplate arg0, Group arg1) {
\r
525 public String getGroupPropertyLeafValue(Group arg0, String arg1) {
\r
530 public Object getGroupPropertyAsObject(Group arg0, String arg1) {
\r
535 public Map<String, Map<String, Object>> getCpPropertiesFromVfcAsObject(NodeTemplate arg0) {
\r
540 public Map<String, Map<String, Object>> getCpPropertiesFromVfc(NodeTemplate arg0) {
\r
545 public List<NodeTemplate> getCpListByVf(String arg0) {
\r
550 public String getConformanceLevel() {
\r
555 public List<NodeTemplate> getAllottedResources() {
\r
560 public Map<String, String> filterNodeTemplatePropertiesByValue(NodeTemplate arg0, FilterType arg1,
\r
566 public CapabilityAssignments getCapabilitiesOf(NodeTemplate arg0) {
\r
567 // TODO Auto-generated method stub
\r
572 public String getCapabilityPropertyLeafValue(CapabilityAssignment arg0, String arg1) {
\r
573 // TODO Auto-generated method stub
\r
578 public Metadata getNodeTemplateMetadata(NodeTemplate arg0) {
\r
579 // TODO Auto-generated method stub
\r
584 public RequirementAssignments getRequirementsOf(NodeTemplate arg0) {
\r
585 // TODO Auto-generated method stub
\r
590 public Map<String, String> getServiceMetadataAllProperties() {
\r
591 // TODO Auto-generated method stub
\r
596 public NodeTemplate getServiceNodeTemplateByNodeName(String arg0) {
\r
597 // TODO Auto-generated method stub
\r
601 // trs.setServiceMetadata(new Metadata(new HashMap<>()));
\r
602 trs.setServiceToResourceCustomization(new ServiceToResourceCustomization());
\r
603 trs.setServiceVersion("1.0");
\r
604 trs.setToscaArtifact(new IArtifactInfo() {
\r
607 public List<IArtifactInfo> getRelatedArtifacts() {
\r
612 public IArtifactInfo getGeneratedArtifact() {
\r
617 public String getArtifactVersion() {
\r
622 public String getArtifactUUID() {
\r
627 public String getArtifactURL() {
\r
632 public String getArtifactType() {
\r
637 public Integer getArtifactTimeout() {
\r
642 public String getArtifactName() {
\r
647 public String getArtifactDescription() {
\r
652 public String getArtifactChecksum() {
\r
656 trs.setVfTypes(alnt);
\r
657 trs.setVnfAlreadyInstalled(true);
\r
658 trs.setVolHeatEnvTemplateUUID("volHeatEnvTemplateUUID");
\r
659 trs.isVnfAlreadyInstalled();
\r
662 trs.updateResourceStructure(artifactInfo1);
\r
664 }catch(Exception e){}
\r
666 ToscaResourceInstaller tri = new ToscaResourceInstaller();
\r
669 tri.installTheResource(trs, vrs);
\r
670 } catch (ArtifactInstallerException e) {
\r