Fix the sdc-controller 91/42291/2
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Wed, 11 Apr 2018 15:35:30 +0000 (17:35 +0200)
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Thu, 12 Apr 2018 10:59:25 +0000 (12:59 +0200)
The field Resource UUID war incorrectly set as the blueprint can't be
found in the sdc notification, it must retrieved from the csar.

Issue-ID: CLAMP-151
Change-Id: I5a80047bcc7f009f67a2dac1891f47bdde0e9bcc
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintArtifact.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java
src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java
src/main/resources/clds/sdc-controllers-config.json
src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java
src/test/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandlerTest.java

diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintArtifact.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintArtifact.java
new file mode 100644 (file)
index 0000000..5a29264
--- /dev/null
@@ -0,0 +1,77 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+/**
+ * This class is useful to store the information concerning
+ * blueprint artifact extracted from SDC CSAR
+ */
+package org.onap.clamp.clds.sdc.controller.installer;
+
+public class BlueprintArtifact {
+
+    private String dcaeBlueprint;
+    private String blueprintArtifactName;
+    private String blueprintInvariantResourceUuid;
+    private String blueprintInvariantServiceUuid;
+    private String blueprintResourceInstanceName;
+
+    public String getDcaeBlueprint() {
+        return dcaeBlueprint;
+    }
+
+    public void setDcaeBlueprint(String dcaeBlueprint) {
+        this.dcaeBlueprint = dcaeBlueprint;
+    }
+
+    public String getBlueprintArtifactName() {
+        return blueprintArtifactName;
+    }
+
+    public void setBlueprintArtifactName(String blueprintArtifactName) {
+        this.blueprintArtifactName = blueprintArtifactName;
+    }
+
+    public String getBlueprintInvariantResourceUuid() {
+        return blueprintInvariantResourceUuid;
+    }
+
+    public void setBlueprintInvariantResourceUuid(String blueprintInvariantResourceUuid) {
+        this.blueprintInvariantResourceUuid = blueprintInvariantResourceUuid;
+    }
+
+    public String getBlueprintInvariantServiceUuid() {
+        return blueprintInvariantServiceUuid;
+    }
+
+    public void setBlueprintInvariantServiceUuid(String blueprintInvariantServiceUuid) {
+        this.blueprintInvariantServiceUuid = blueprintInvariantServiceUuid;
+    }
+
+    public String getBlueprintResourceInstanceName() {
+        return blueprintResourceInstanceName;
+    }
+
+    public void setBlueprintResourceInstanceName(String blueprintResourceInstanceName) {
+        this.blueprintResourceInstanceName = blueprintResourceInstanceName;
+    }
+}
index 6216937..8933973 100644 (file)
@@ -33,9 +33,10 @@ import java.io.OutputStream;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
@@ -61,13 +62,12 @@ public class CsarHandler {
     private String controllerName;
     private SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
     private ISdcCsarHelper sdcCsarHelper;
-    private String dcaeBlueprint;
-    private String blueprintArtifactName;
-    private String blueprintInvariantResourceUuid;
-    private String blueprintInvariantServiceUuid;
+    private Map<String, BlueprintArtifact> mapOfBlueprints = new HashMap<>();
     public static final String CSAR_TYPE = "TOSCA_CSAR";
     public static final String BLUEPRINT_TYPE = "DCAE_INVENTORY_BLUEPRINT";
     private INotificationData sdcNotification;
+    public static final String RESOURCE_INSTANCE_NAME_PREFIX = "/Artifacts/Resources/";
+    public static final String RESOURCE_INSTANCE_NAME_SUFFIX = "/Deployment/";
 
     public CsarHandler(INotificationData iNotif, String controller, String clampCsarPath) throws CsarHandlerException {
         this.sdcNotification = iNotif;
@@ -103,43 +103,48 @@ public class CsarHandler {
             }
             sdcCsarHelper = factory.getSdcCsarHelper(csarFilePath);
             this.loadDcaeBlueprint();
-            this.loadBlueprintArtifactDetails();
         } catch (IOException e) {
             throw new SdcArtifactInstallerException(
                     "Exception caught when trying to write the CSAR on the file system to " + csarFilePath, e);
         }
     }
 
-    private void loadBlueprintArtifactDetails() {
-        blueprintInvariantServiceUuid = this.getSdcNotification().getServiceInvariantUUID();
-        for (IResourceInstance resource : this.getSdcNotification().getResources()) {
-            if ("VF".equals(resource.getResourceType())) {
-                for (IArtifactInfo artifact : resource.getArtifacts()) {
-                    if (BLUEPRINT_TYPE.equals(artifact.getArtifactType())) {
-                        blueprintArtifactName = artifact.getArtifactName();
-                        blueprintInvariantResourceUuid = resource.getResourceInvariantUUID();
-                    }
-                }
+    private IResourceInstance searchForResourceByInstanceName(String blueprintResourceInstanceName)
+            throws SdcArtifactInstallerException {
+        for (IResourceInstance resource : this.sdcNotification.getResources()) {
+            String filteredString = resource.getResourceInstanceName().replaceAll("-", "");
+            filteredString = filteredString.replaceAll(" ", "");
+            if (filteredString.equals(blueprintResourceInstanceName)) {
+                return resource;
             }
         }
+        throw new SdcArtifactInstallerException("Error when searching for " + blueprintResourceInstanceName
+                + " as ResourceInstanceName in Sdc notification and did not find it");
     }
 
     private void loadDcaeBlueprint() throws IOException, SdcArtifactInstallerException {
-        List<ZipEntry> listEntries = new ArrayList<>();
         try (ZipFile zipFile = new ZipFile(csarFilePath)) {
             Enumeration<? extends ZipEntry> entries = zipFile.entries();
             while (entries.hasMoreElements()) {
                 ZipEntry entry = entries.nextElement();
                 if (entry.getName().contains(BLUEPRINT_TYPE)) {
-                    listEntries.add(entry);
+                    BlueprintArtifact blueprintArtifact = new BlueprintArtifact();
+                    blueprintArtifact.setBlueprintArtifactName(
+                            entry.getName().substring(entry.getName().lastIndexOf('/') + 1, entry.getName().length()));
+                    blueprintArtifact
+                            .setBlueprintInvariantServiceUuid(this.getSdcNotification().getServiceInvariantUUID());
+                    try (InputStream stream = zipFile.getInputStream(entry)) {
+                        blueprintArtifact.setDcaeBlueprint(IOUtils.toString(stream));
+                    }
+                    IResourceInstance resource = searchForResourceByInstanceName(entry.getName().substring(
+                            entry.getName().indexOf(RESOURCE_INSTANCE_NAME_PREFIX)
+                                    + RESOURCE_INSTANCE_NAME_PREFIX.length(),
+                            entry.getName().indexOf(RESOURCE_INSTANCE_NAME_SUFFIX)));
+                    blueprintArtifact.setBlueprintInvariantResourceUuid(resource.getResourceInvariantUUID());
+                    blueprintArtifact.setBlueprintResourceInstanceName(resource.getResourceInstanceName());
+                    this.mapOfBlueprints.put(blueprintArtifact.getBlueprintResourceInstanceName(), blueprintArtifact);
                 }
             }
-            if (listEntries.size() > 1) {
-                throw new SdcArtifactInstallerException("There are multiple entries in the DCAE inventory");
-            }
-            try (InputStream stream = zipFile.getInputStream(listEntries.get(0))) {
-                this.dcaeBlueprint = IOUtils.toString(stream);
-            }
         }
     }
 
@@ -155,23 +160,11 @@ public class CsarHandler {
         return sdcCsarHelper;
     }
 
-    public synchronized String getDcaeBlueprint() {
-        return dcaeBlueprint;
-    }
-
     public INotificationData getSdcNotification() {
         return sdcNotification;
     }
 
-    public String getBlueprintArtifactName() {
-        return blueprintArtifactName;
-    }
-
-    public String getBlueprintInvariantResourceUuid() {
-        return blueprintInvariantResourceUuid;
-    }
-
-    public String getBlueprintInvariantServiceUuid() {
-        return blueprintInvariantServiceUuid;
+    public Map<String, BlueprintArtifact> getMapOfBlueprints() {
+        return mapOfBlueprints;
     }
 }
index cb0da0a..d282588 100644 (file)
@@ -30,6 +30,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import javax.annotation.PostConstruct;
 
@@ -85,16 +86,23 @@ public class CsarInstallerImpl implements CsarInstaller {
 
     @Override
     public boolean isCsarAlreadyDeployed(CsarHandler csar) throws SdcArtifactInstallerException {
-        return (CldsModel.retrieve(cldsDao, csar.getSdcCsarHelper().getServiceMetadata().getValue("name"), true)
-                .getId() != null) ? true : false;
+        return (CldsModel.retrieve(cldsDao, buildModelName(csar), true).getId() != null) ? true : false;
+    }
+
+    public static String buildModelName(CsarHandler csar) {
+        return csar.getSdcCsarHelper().getServiceMetadata().getValue("name") + " v"
+                + csar.getSdcNotification().getServiceVersion();
     }
 
     @Override
     @Transactional
     public void installTheCsar(CsarHandler csar) throws SdcArtifactInstallerException {
         try {
-            String serviceTypeId = queryDcaeToGetServiceTypeId(csar);
-            createFakeCldsModel(csar, createFakeCldsTemplate(csar, this.searchForRightMapping(csar)), serviceTypeId);
+            for (Entry<String, BlueprintArtifact> blueprint : csar.getMapOfBlueprints().entrySet()) {
+                String serviceTypeId = queryDcaeToGetServiceTypeId(blueprint.getValue());
+                createFakeCldsModel(csar, blueprint.getValue(), createFakeCldsTemplate(csar, blueprint.getValue(),
+                        this.searchForRightMapping(blueprint.getValue())), serviceTypeId);
+            }
         } catch (IOException e) {
             throw new SdcArtifactInstallerException("Exception caught during the Csar installation in database", e);
         } catch (ParseException | InterruptedException e) {
@@ -102,12 +110,12 @@ public class CsarInstallerImpl implements CsarInstaller {
         }
     }
 
-    private BlueprintParserFilesConfiguration searchForRightMapping(CsarHandler csar)
+    private BlueprintParserFilesConfiguration searchForRightMapping(BlueprintArtifact blueprintArtifact)
             throws SdcArtifactInstallerException {
         List<BlueprintParserFilesConfiguration> listConfig = new ArrayList<>();
         Yaml yaml = new Yaml();
         Map<String, Object> templateNodes = ((Map<String, Object>) ((Map<String, Object>) yaml
-                .load(csar.getDcaeBlueprint())).get("node_templates"));
+                .load(blueprintArtifact.getDcaeBlueprint())).get("node_templates"));
         bpmnMapping.entrySet().forEach(e -> {
             if (templateNodes.keySet().stream().anyMatch(t -> t.contains(e.getKey()))) {
                 listConfig.add(e.getValue());
@@ -122,12 +130,12 @@ public class CsarInstallerImpl implements CsarInstaller {
         return listConfig.get(0);
     }
 
-    private String searchForPolicyName(CsarHandler csar) throws SdcArtifactInstallerException {
+    private String searchForPolicyName(BlueprintArtifact blueprintArtifact) throws SdcArtifactInstallerException {
         String policyName = null;
         Yaml yaml = new Yaml();
         List<String> policyNameList = new ArrayList<>();
         Map<String, Object> templateNodes = ((Map<String, Object>) ((Map<String, Object>) yaml
-                .load(csar.getDcaeBlueprint())).get("node_templates"));
+                .load(blueprintArtifact.getDcaeBlueprint())).get("node_templates"));
         templateNodes.entrySet().stream().filter(e -> e.getKey().contains("policy_")).forEach(ef -> {
             String filteredPolicyName = (String) ((Map<String, Object>) ((Map<String, Object>) ef.getValue())
                     .get("properties")).get("policy_filter");
@@ -151,42 +159,44 @@ public class CsarInstallerImpl implements CsarInstaller {
         return policyNameList.get(0);
     }
 
-    private String queryDcaeToGetServiceTypeId(CsarHandler csar) throws IOException, ParseException, InterruptedException {
-        return dcaeInventoryService.getDcaeInformation(csar.getBlueprintArtifactName(),
-                csar.getBlueprintInvariantServiceUuid(), csar.getBlueprintInvariantResourceUuid()).getTypeId();
+    private String queryDcaeToGetServiceTypeId(BlueprintArtifact blueprintArtifact) throws IOException, ParseException {
+        return dcaeInventoryService.getDcaeInformation(blueprintArtifact.getBlueprintArtifactName(),
+                blueprintArtifact.getBlueprintInvariantServiceUuid(),
+                blueprintArtifact.getBlueprintInvariantResourceUuid()).getTypeId();
     }
 
-    private CldsTemplate createFakeCldsTemplate(CsarHandler csar, BlueprintParserFilesConfiguration configFiles)
-            throws IOException {
+    private CldsTemplate createFakeCldsTemplate(CsarHandler csar, BlueprintArtifact blueprintArtifact,
+            BlueprintParserFilesConfiguration configFiles) throws IOException {
         CldsTemplate template = new CldsTemplate();
         template.setBpmnId("Sdc-Generated");
         template.setBpmnText(
                 IOUtils.toString(appContext.getResource(configFiles.getBpmnXmlFilePath()).getInputStream()));
-        template.setPropText("{\"global\":[{\"name\":\"service\",\"value\":[\"" + csar.getDcaeBlueprint() + "\"]}]}");
+        template.setPropText(
+                "{\"global\":[{\"name\":\"service\",\"value\":[\"" + blueprintArtifact.getDcaeBlueprint() + "\"]}]}");
         template.setImageText(
                 IOUtils.toString(appContext.getResource(configFiles.getSvgXmlFilePath()).getInputStream()));
-        template.setName(TEMPLATE_NAME_PREFIX + csar.getSdcCsarHelper().getServiceMetadata().getValue("name"));
+        template.setName(TEMPLATE_NAME_PREFIX + buildModelName(csar));
         template.save(cldsDao, null);
         return template;
     }
 
-    private CldsModel createFakeCldsModel(CsarHandler csar, CldsTemplate cldsTemplate, String serviceTypeId)
-            throws SdcArtifactInstallerException {
+    private CldsModel createFakeCldsModel(CsarHandler csar, BlueprintArtifact blueprintArtifact,
+            CldsTemplate cldsTemplate, String serviceTypeId) throws SdcArtifactInstallerException {
         CldsModel cldsModel = new CldsModel();
-        String policyName = searchForPolicyName(csar);
+        String policyName = searchForPolicyName(blueprintArtifact);
         if (policyName.contains("*")) {
             // It's a filter must add a specific prefix
             cldsModel.setControlNamePrefix(policyName);
         } else {
             cldsModel.setControlNamePrefix(MODEL_NAME_PREFIX);
         }
-        cldsModel.setName(csar.getSdcCsarHelper().getServiceMetadata().getValue("name"));
-        cldsModel.setBlueprintText(csar.getDcaeBlueprint());
+        cldsModel.setName(buildModelName(csar));
+        cldsModel.setBlueprintText(blueprintArtifact.getDcaeBlueprint());
         cldsModel.setTemplateName(cldsTemplate.getName());
         cldsModel.setTemplateId(cldsTemplate.getId());
         cldsModel.setPropText("{\"global\":[{\"name\":\"service\",\"value\":[\""
-                + csar.getBlueprintInvariantServiceUuid() + "\"]},{\"name\":\"vf\",\"value\":[\""
-                + csar.getBlueprintInvariantResourceUuid()
+                + blueprintArtifact.getBlueprintInvariantServiceUuid() + "\"]},{\"name\":\"vf\",\"value\":[\""
+                + blueprintArtifact.getBlueprintInvariantResourceUuid()
                 + "\"]},{\"name\":\"actionSet\",\"value\":[\"vnfRecipe\"]},{\"name\":\"location\",\"value\":[\"DC1\"]},{\"name\":\"deployParameters\",\"value\":{\n"
                 + "        \"policy_id\": \"" + "test" + "\"" + "      }}]}");
         cldsModel.setBpmnText(cldsTemplate.getBpmnText());
index d18a161..fa1533d 100644 (file)
@@ -2,17 +2,17 @@
   "sdc-connections":{
     "sdc-controller":{
         "user": "clamp",
-        "consumerGroup": "consumerGroup1",
-        "consumerId": "consumerId1",
+        "consumerGroup": "consumerGroup2",
+        "consumerId": "consumerId2",
         "environmentName": "AUTO",
-        "sdcAddress": "sdc.api.simpledemo.onap.org:8443",
+        "sdcAddress": "10.12.6.0:8443",
         "password": "b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981",
         "pollingInterval":30,
         "pollingTimeout":30,
         "activateServerTLSAuth":"false",
         "keyStorePassword":"",
         "keyStorePath":"",
-        "messageBusAddresses":["ueb.api.simpledemo.onap.org"]
+        "messageBusAddresses":["10.12.5.235"]
     }
   }
 }
index c0300ef..b741f7c 100644 (file)
@@ -33,6 +33,10 @@ import com.att.aft.dme2.internal.apache.commons.io.IOUtils;
 import com.att.aft.dme2.internal.apache.commons.lang.RandomStringUtils;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -42,10 +46,13 @@ import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException;
 import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException;
 import org.onap.clamp.clds.model.CldsModel;
 import org.onap.clamp.clds.model.CldsTemplate;
+import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact;
 import org.onap.clamp.clds.sdc.controller.installer.CsarHandler;
 import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller;
 import org.onap.clamp.clds.sdc.controller.installer.CsarInstallerImpl;
 import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.onap.sdc.api.notification.INotificationData;
+import org.onap.sdc.api.notification.IResourceInstance;
 import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
 import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
@@ -69,24 +76,45 @@ public class CsarInstallerItCase {
     public void testInstallTheCsarFail()
             throws SdcArtifactInstallerException, SdcToscaParserException, CsarHandlerException, IOException {
         CsarHandler csarHandler = Mockito.mock(CsarHandler.class);
-        Mockito.when(csarHandler.getDcaeBlueprint()).thenReturn(IOUtils
+        BlueprintArtifact blueprintArtifact = Mockito.mock(BlueprintArtifact.class);
+        Map<String, BlueprintArtifact> blueprintMap = new HashMap<>();
+        blueprintMap.put("resourceid", blueprintArtifact);
+        Mockito.when(csarHandler.getMapOfBlueprints()).thenReturn(blueprintMap);
+        Mockito.when(blueprintArtifact.getDcaeBlueprint()).thenReturn(IOUtils
                 .toString(ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/not-recognized.yaml")));
         csarInstaller.installTheCsar(csarHandler);
         fail("Should have raised an SdcArtifactInstallerException");
     }
 
     private CsarHandler buildFakeCsarHandler(String generatedName) throws IOException {
-        CsarHandler csarHandler = Mockito.mock(CsarHandler.class);
-        Mockito.when(csarHandler.getDcaeBlueprint())
+        // Create fake notification
+        INotificationData notificationData = Mockito.mock(INotificationData.class);
+        Mockito.when(notificationData.getServiceVersion()).thenReturn("1.0");
+        // Create fake resource in notification
+        List<IResourceInstance> listResources = new ArrayList<>();
+        IResourceInstance resource = Mockito.mock(IResourceInstance.class);
+        Mockito.when(resource.getResourceInstanceName()).thenReturn("mm-e 0");
+        Mockito.when(resource.getResourceInvariantUUID()).thenReturn("mme0-invariantUuid");
+        Mockito.when(notificationData.getResources()).thenReturn(listResources);
+        // Create fake blueprint artifact
+        BlueprintArtifact blueprintArtifact = Mockito.mock(BlueprintArtifact.class);
+        Mockito.when(blueprintArtifact.getDcaeBlueprint())
                 .thenReturn(ResourceFileUtil.getResourceAsString("example/sdc/blueprint-dcae/tca.yaml"));
+        Mockito.when(blueprintArtifact.getBlueprintArtifactName()).thenReturn(CSAR_ARTIFACT_NAME);
+        Mockito.when(blueprintArtifact.getBlueprintInvariantServiceUuid()).thenReturn(INVARIANT_SERVICE_UUID);
+        Mockito.when(blueprintArtifact.getBlueprintInvariantResourceUuid()).thenReturn(INVARIANT_RESOURCE1_UUID);
+        Map<String, BlueprintArtifact> blueprintMap = new HashMap<>();
+        blueprintMap.put("resourceid", blueprintArtifact);
+        // Build fake csarhandler
+        CsarHandler csarHandler = Mockito.mock(CsarHandler.class);
+        Mockito.when(csarHandler.getSdcNotification()).thenReturn(notificationData);
+        Mockito.when(csarHandler.getMapOfBlueprints()).thenReturn(blueprintMap);
+        // Build fake csar Helper
         ISdcCsarHelper csarHelper = Mockito.mock(ISdcCsarHelper.class);
         Metadata data = Mockito.mock(Metadata.class);
         Mockito.when(data.getValue("name")).thenReturn(generatedName);
         Mockito.when(csarHelper.getServiceMetadata()).thenReturn(data);
         Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(csarHelper);
-        Mockito.when(csarHandler.getBlueprintArtifactName()).thenReturn(CSAR_ARTIFACT_NAME);
-        Mockito.when(csarHandler.getBlueprintInvariantServiceUuid()).thenReturn(INVARIANT_SERVICE_UUID);
-        Mockito.when(csarHandler.getBlueprintInvariantResourceUuid()).thenReturn(INVARIANT_RESOURCE1_UUID);
         return csarHandler;
     }
 
@@ -104,24 +132,26 @@ public class CsarInstallerItCase {
     public void testInstallTheCsarTca()
             throws SdcArtifactInstallerException, SdcToscaParserException, CsarHandlerException, IOException {
         String generatedName = RandomStringUtils.randomAlphanumeric(5);
-        csarInstaller.installTheCsar(buildFakeCsarHandler(generatedName));
+        CsarHandler csar = buildFakeCsarHandler(generatedName);
+        csarInstaller.installTheCsar(csar);
         // Get the template back from DB
         CldsTemplate templateFromDb = CldsTemplate.retrieve(cldsDao,
-                CsarInstallerImpl.TEMPLATE_NAME_PREFIX + generatedName, false);
+                CsarInstallerImpl.TEMPLATE_NAME_PREFIX + CsarInstallerImpl.buildModelName(csar), false);
         assertNotNull(templateFromDb);
         assertNotNull(templateFromDb.getBpmnText());
         assertNotNull(templateFromDb.getImageText());
         assertNotNull(templateFromDb.getPropText());
         assertTrue(templateFromDb.getPropText().contains("global")
                 && templateFromDb.getPropText().contains("node_templates:"));
-        assertEquals(templateFromDb.getName(), CsarInstallerImpl.TEMPLATE_NAME_PREFIX + generatedName);
+        assertEquals(templateFromDb.getName(),
+                CsarInstallerImpl.TEMPLATE_NAME_PREFIX + CsarInstallerImpl.buildModelName(csar));
         // Get the Model back from DB
-        CldsModel modelFromDb = CldsModel.retrieve(cldsDao, generatedName, true);
+        CldsModel modelFromDb = CldsModel.retrieve(cldsDao, CsarInstallerImpl.buildModelName(csar), true);
         assertNotNull(modelFromDb);
         assertNotNull(modelFromDb.getBpmnText());
         assertNotNull(modelFromDb.getImageText());
         assertNotNull(modelFromDb.getPropText());
-        assertEquals(modelFromDb.getName(), generatedName);
+        assertEquals(CsarInstallerImpl.buildModelName(csar), modelFromDb.getName());
         assertEquals(CsarInstallerImpl.MODEL_NAME_PREFIX, modelFromDb.getControlNamePrefix());
     }
 }
index 3a37f94..b02e8ba 100644 (file)
@@ -55,7 +55,9 @@ public class CsarHandlerTest {
     private static final String CSAR_ARTIFACT_NAME = "testArtifact.csar";
     private static final String SERVICE_UUID = "serviceUUID";
     private static final String RESOURCE1_UUID = "resource1UUID";
-    private static final String BLUEPRINT1_NAME = "blueprint1-name";
+    private static final String RESOURCE1_INSTANCE_NAME = "sim-1802 0";
+    private static final String RESOURCE1_INSTANCE_NAME_IN_CSAR = "sim18020";
+    private static final String BLUEPRINT1_NAME = "FOI.Simfoimap223S0112.event_proc_bp.yaml";
 
     @Test
     public void testConstructor() throws CsarHandlerException {
@@ -93,10 +95,10 @@ public class CsarHandlerTest {
         IResourceInstance resource1 = Mockito.mock(IResourceInstance.class);
         Mockito.when(resource1.getResourceType()).thenReturn("VF");
         Mockito.when(resource1.getResourceInvariantUUID()).thenReturn(RESOURCE1_UUID);
+        Mockito.when(resource1.getResourceInstanceName()).thenReturn(RESOURCE1_INSTANCE_NAME);
         // Create a fake artifact for resource
         IArtifactInfo blueprintArtifact = Mockito.mock(IArtifactInfo.class);
         Mockito.when(blueprintArtifact.getArtifactType()).thenReturn(CsarHandler.BLUEPRINT_TYPE);
-        Mockito.when(blueprintArtifact.getArtifactName()).thenReturn(BLUEPRINT1_NAME);
         List<IArtifactInfo> artifactsListForResource = new ArrayList<>();
         artifactsListForResource.add(blueprintArtifact);
         Mockito.when(resource1.getArtifacts()).thenReturn(artifactsListForResource);
@@ -123,14 +125,17 @@ public class CsarHandlerTest {
         assertEquals(CSAR_ARTIFACT_NAME, csar.getArtifactElement().getArtifactName());
         assertNotNull(csar.getSdcCsarHelper());
         // Test dcaeBlueprint
-        String blueprint = csar.getDcaeBlueprint();
+        String blueprint = csar.getMapOfBlueprints().get(RESOURCE1_INSTANCE_NAME).getDcaeBlueprint();
         assertNotNull(blueprint);
         assertTrue(!blueprint.isEmpty());
         assertTrue(blueprint.contains("DCAE-VES-PM-EVENT-v1"));
         // Test additional properties from Sdc notif
-        assertEquals(BLUEPRINT1_NAME, csar.getBlueprintArtifactName());
-        assertEquals(RESOURCE1_UUID, csar.getBlueprintInvariantResourceUuid());
-        assertEquals(SERVICE_UUID, csar.getBlueprintInvariantServiceUuid());
+        assertEquals(BLUEPRINT1_NAME,
+                csar.getMapOfBlueprints().get(RESOURCE1_INSTANCE_NAME).getBlueprintArtifactName());
+        assertEquals(RESOURCE1_UUID,
+                csar.getMapOfBlueprints().get(RESOURCE1_INSTANCE_NAME).getBlueprintInvariantResourceUuid());
+        assertEquals(SERVICE_UUID,
+                csar.getMapOfBlueprints().get(RESOURCE1_INSTANCE_NAME).getBlueprintInvariantServiceUuid());
         // Do some cleanup
         Path path = Paths.get(SDC_FOLDER + "/test-controller/" + CSAR_ARTIFACT_NAME);
         Files.deleteIfExists(path);
@@ -146,14 +151,17 @@ public class CsarHandlerTest {
         assertEquals(CSAR_ARTIFACT_NAME, csar.getArtifactElement().getArtifactName());
         assertNotNull(csar.getSdcCsarHelper());
         // Test dcaeBlueprint
-        String blueprint = csar.getDcaeBlueprint();
+        String blueprint = csar.getMapOfBlueprints().get(RESOURCE1_INSTANCE_NAME).getDcaeBlueprint();
         assertNotNull(blueprint);
         assertTrue(!blueprint.isEmpty());
         assertTrue(blueprint.contains("DCAE-VES-PM-EVENT-v1"));
         // Test additional properties from Sdc notif
-        assertEquals(BLUEPRINT1_NAME, csar.getBlueprintArtifactName());
-        assertEquals(RESOURCE1_UUID, csar.getBlueprintInvariantResourceUuid());
-        assertEquals(SERVICE_UUID, csar.getBlueprintInvariantServiceUuid());
+        assertEquals(BLUEPRINT1_NAME,
+                csar.getMapOfBlueprints().get(RESOURCE1_INSTANCE_NAME).getBlueprintArtifactName());
+        assertEquals(RESOURCE1_UUID,
+                csar.getMapOfBlueprints().get(RESOURCE1_INSTANCE_NAME).getBlueprintInvariantResourceUuid());
+        assertEquals(SERVICE_UUID,
+                csar.getMapOfBlueprints().get(RESOURCE1_INSTANCE_NAME).getBlueprintInvariantServiceUuid());
         Path path = Paths.get(SDC_FOLDER + "/test-controller/" + CSAR_ARTIFACT_NAME);
         // A double save should simply overwrite the existing
         csar.save(buildFakeSdcResut());