Fix blueprint installation
[clamp.git] / src / main / java / org / onap / clamp / loop / CsarInstaller.java
index 022b0e2..6752a1a 100644 (file)
@@ -25,12 +25,10 @@ package org.onap.clamp.loop;
 
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
-
 import java.io.IOException;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map.Entry;
-
 import org.json.simple.parser.ParseException;
 import org.onap.clamp.clds.client.DcaeInventoryServices;
 import org.onap.clamp.clds.client.PolicyEngineServices;
@@ -42,7 +40,7 @@ import org.onap.clamp.clds.sdc.controller.installer.BlueprintMicroService;
 import org.onap.clamp.clds.sdc.controller.installer.BlueprintParser;
 import org.onap.clamp.clds.sdc.controller.installer.ChainGenerator;
 import org.onap.clamp.clds.sdc.controller.installer.CsarHandler;
-import org.onap.clamp.clds.util.drawing.SvgFacade;
+import org.onap.clamp.loop.cds.CdsDataInstaller;
 import org.onap.clamp.loop.service.CsarServiceInstaller;
 import org.onap.clamp.loop.service.Service;
 import org.onap.clamp.loop.template.LoopElementModel;
@@ -79,17 +77,17 @@ public class CsarInstaller {
     private DcaeInventoryServices dcaeInventoryService;
 
     @Autowired
-    private SvgFacade svgFacade;
+    private CsarServiceInstaller csarServiceInstaller;
 
     @Autowired
-    private CsarServiceInstaller csarServiceInstaller;
+    private CdsDataInstaller cdsDataInstaller;
 
     @Autowired
     private PolicyEngineServices policyEngineServices;
 
     /**
      * Verify whether Csar is deployed.
-     * 
+     *
      * @param csar The Csar Handler
      * @return The flag indicating whether Csar is deployed
      * @throws SdcArtifactInstallerException The SdcArtifactInstallerException
@@ -100,16 +98,16 @@ public class CsarInstaller {
         for (Entry<String, BlueprintArtifact> blueprint : csar.getMapOfBlueprints().entrySet()) {
             alreadyInstalled = alreadyInstalled
                     && loopTemplatesRepository.existsById(LoopTemplate.generateLoopTemplateName(
-                            csar.getSdcNotification().getServiceName(), csar.getSdcNotification().getServiceVersion(),
-                            blueprint.getValue().getResourceAttached().getResourceInstanceName(),
-                            blueprint.getValue().getBlueprintArtifactName()));
+                    csar.getSdcNotification().getServiceName(), csar.getSdcNotification().getServiceVersion(),
+                    blueprint.getValue().getResourceAttached().getResourceInstanceName(),
+                    blueprint.getValue().getBlueprintArtifactName()));
         }
         return alreadyInstalled;
     }
 
     /**
      * Install the service and loop templates from the csar.
-     * 
+     *
      * @param csar The Csar Handler
      * @throws SdcArtifactInstallerException The SdcArtifactInstallerException
      * @throws InterruptedException          The InterruptedException
@@ -119,13 +117,16 @@ public class CsarInstaller {
     public void installTheCsar(CsarHandler csar)
             throws SdcArtifactInstallerException, InterruptedException, BlueprintParserException {
         logger.info("Installing the CSAR " + csar.getFilePath());
-        installTheLoopTemplates(csar, csarServiceInstaller.installTheService(csar));
+        Service associatedService = csarServiceInstaller.installTheService(csar);
+        cdsDataInstaller.installCdsServiceProperties(csar, associatedService);
+
+        installTheLoopTemplates(csar, associatedService);
         logger.info("Successfully installed the CSAR " + csar.getFilePath());
     }
 
     /**
      * Install the loop templates from the csar.
-     * 
+     *
      * @param csar    The Csar Handler
      * @param service The service object that is related to the loop
      * @throws SdcArtifactInstallerException The SdcArtifactInstallerException
@@ -150,7 +151,9 @@ public class CsarInstaller {
     }
 
     private LoopTemplate createLoopTemplateFromBlueprint(CsarHandler csar, BlueprintArtifact blueprintArtifact,
-            Service service) throws IOException, ParseException, InterruptedException, BlueprintParserException {
+                                                         Service service)
+            throws IOException, ParseException, InterruptedException, BlueprintParserException,
+            SdcArtifactInstallerException {
         LoopTemplate newLoopTemplate = new LoopTemplate();
         newLoopTemplate.setBlueprint(blueprintArtifact.getDcaeBlueprint());
         newLoopTemplate.setName(LoopTemplate.generateLoopTemplateName(csar.getSdcNotification().getServiceName(),
@@ -163,43 +166,35 @@ public class CsarInstaller {
             microServicesChain = BlueprintParser.fallbackToOneMicroService();
         }
         newLoopTemplate.setModelService(service);
-        newLoopTemplate.addLoopElementModels(createMicroServiceModels(microServicesChain));
+        newLoopTemplate.addLoopElementModels(createMicroServiceModels(blueprintArtifact, microServicesChain));
         newLoopTemplate.setMaximumInstancesAllowed(0);
-        newLoopTemplate.setSvgRepresentation(svgFacade.getSvgImage(microServicesChain));
         DcaeInventoryResponse dcaeResponse = queryDcaeToGetServiceTypeId(blueprintArtifact);
         newLoopTemplate.setDcaeBlueprintId(dcaeResponse.getTypeId());
         return newLoopTemplate;
     }
 
-    private HashSet<LoopElementModel> createMicroServiceModels(List<BlueprintMicroService> microServicesChain)
-            throws InterruptedException {
+    private HashSet<LoopElementModel> createMicroServiceModels(BlueprintArtifact blueprintArtifact,
+                                                               List<BlueprintMicroService> microServicesChain)
+            throws SdcArtifactInstallerException {
         HashSet<LoopElementModel> newSet = new HashSet<>();
         for (BlueprintMicroService microService : microServicesChain) {
-            LoopElementModel loopElementModel = new LoopElementModel(microService.getModelType(), "CONFIG_POLICY",
-                    null);
+            LoopElementModel loopElementModel =
+                    new LoopElementModel(microService.getModelType(), LoopElementModel.MICRO_SERVICE_TYPE,
+                            null);
             newSet.add(loopElementModel);
-            loopElementModel.addPolicyModel(getPolicyModel(microService));
+            PolicyModel newPolicyModel = policyEngineServices.createPolicyModelFromPolicyEngine(microService);
+            if (newPolicyModel != null) {
+                loopElementModel.addPolicyModel(newPolicyModel);
+            } else {
+                throw new SdcArtifactInstallerException(
+                        "Unable to find the policy specified in the blueprint " +
+                                blueprintArtifact.getBlueprintArtifactName() + ") on the Policy Engine:" +
+                                microService.getModelType() + "/" + microService.getModelVersion());
+            }
         }
         return newSet;
     }
 
-    private static String createPolicyAcronym(String policyType) {
-        String[] policyNameArray = policyType.split("\\.");
-        return policyNameArray[policyNameArray.length - 1];
-    }
-
-    private PolicyModel createPolicyModel(BlueprintMicroService microService) throws InterruptedException {
-        return new PolicyModel(microService.getModelType(),
-                policyEngineServices.downloadOnePolicy(microService.getModelType(), microService.getModelVersion()),
-                microService.getModelVersion(), createPolicyAcronym(microService.getModelType()));
-    }
-
-    private PolicyModel getPolicyModel(BlueprintMicroService microService) throws InterruptedException {
-        return policyModelsRepository
-                .findById(new PolicyModelId(microService.getModelType(), microService.getModelVersion()))
-                .orElse(createPolicyModel(microService));
-    }
-
     /**
      * Get the service blueprint Id in the Dcae inventory using the SDC UUID.
      *