Rework of the csarinstaller
[clamp.git] / src / main / java / org / onap / clamp / clds / sdc / controller / installer / CsarInstallerImpl.java
index c56eed5..3a6bef8 100644 (file)
@@ -35,7 +35,8 @@ import java.util.Map;
 
 import javax.annotation.PostConstruct;
 
-import org.onap.clamp.clds.config.ClampProperties;
+import org.json.simple.parser.ParseException;
+import org.onap.clamp.clds.client.DcaeInventoryServices;
 import org.onap.clamp.clds.config.sdc.BlueprintParserFilesConfiguration;
 import org.onap.clamp.clds.config.sdc.BlueprintParserMappingConfiguration;
 import org.onap.clamp.clds.dao.CldsDao;
@@ -55,8 +56,8 @@ public class CsarInstallerImpl implements CsarInstaller {
 
     private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarInstallerImpl.class);
     private Map<String, BlueprintParserFilesConfiguration> bpmnMapping = new HashMap<>();
-    public static final String TEMPLATE_NAME_SUFFIX = "-template-dcae-designer";
-    public static final String MODEL_NAME_SUFFIX = "-model-dcae-designer";
+    public static final String TEMPLATE_NAME_PREFIX = "DCAE-Designer-ClosedLoopTemplate-";
+    public static final String MODEL_NAME_PREFIX = "DCAE-Designer-ClosedLoopInstance-";
     /**
      * The file name that will be loaded by Spring.
      */
@@ -67,11 +68,11 @@ public class CsarInstallerImpl implements CsarInstaller {
     @Autowired
     private CldsDao cldsDao;
     @Autowired
-    private ClampProperties refProp;
-    @Autowired
     CldsTemplateService cldsTemplateService;
     @Autowired
     CldsService cldsService;
+    @Autowired
+    DcaeInventoryServices dcaeInventoryService;
 
     @PostConstruct
     public void loadConfiguration() throws IOException {
@@ -88,10 +89,15 @@ public class CsarInstallerImpl implements CsarInstaller {
     @Override
     public void installTheCsar(CsarHandler csar) throws SdcArtifactInstallerException {
         try {
-            BlueprintParserFilesConfiguration configFiles = this.searchForRightMapping(csar);
-            createFakeCldsModel(csar, configFiles, createFakeCldsTemplate(csar, configFiles));
+            String serviceTypeId = queryDcaeToGetServiceTypeId(csar);
+            String policyName = searchForPolicyName(csar);
+            if (policyName.contains("*")) {
+            }
+            createFakeCldsModel(csar, createFakeCldsTemplate(csar, this.searchForRightMapping(csar)), serviceTypeId);
         } catch (IOException e) {
             throw new SdcArtifactInstallerException("Exception caught during the Csar installation in database", e);
+        } catch (ParseException e) {
+            throw new SdcArtifactInstallerException("Exception caught during the Dcae query to get ServiceTypeId", e);
         }
     }
 
@@ -115,12 +121,38 @@ public class CsarInstallerImpl implements CsarInstaller {
         return listConfig.get(0);
     }
 
-    private String createTemplateName(CsarHandler csar) {
-        return csar.getSdcCsarHelper().getServiceMetadata().getValue("name") + TEMPLATE_NAME_SUFFIX;
+    private String searchForPolicyName(CsarHandler csar) 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"));
+        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");
+            if (policyName != null) {
+                policyNameList.add(filteredPolicyName);
+            } else {
+                String inputPolicyName = (String) ((Map<String, Object>) ((Map<String, Object>) ((Map<String, Object>) ef
+                        .getValue()).get("properties")).get("policy_id")).get("get_input");
+                if (inputPolicyName != null) {
+                    policyNameList.add("get_input");
+                }
+            }
+        });
+        if (policyNameList.size() > 1) {
+            throw new SdcArtifactInstallerException(
+                    "The code does not currently support multiple Policy MicroServices in the blueprint");
+        } else if (policyNameList.isEmpty()) {
+            throw new SdcArtifactInstallerException(
+                    "There is no recognized Policy MicroService found in the blueprint");
+        }
+        return policyNameList.get(0);
     }
 
-    private String createModelName(CsarHandler csar) {
-        return csar.getSdcCsarHelper().getServiceMetadata().getValue("name") + MODEL_NAME_SUFFIX;
+    private String queryDcaeToGetServiceTypeId(CsarHandler csar) throws IOException, ParseException {
+        return dcaeInventoryService.getDcaeInformation(csar.getBlueprintArtifactName(),
+                csar.getBlueprintInvariantServiceUuid(), csar.getBlueprintInvariantResourceUuid());
     }
 
     private CldsTemplate createFakeCldsTemplate(CsarHandler csar, BlueprintParserFilesConfiguration configFiles)
@@ -129,19 +161,26 @@ public class CsarInstallerImpl implements CsarInstaller {
         template.setBpmnId("Sdc-Generated");
         template.setBpmnText(
                 IOUtils.toString(appContext.getResource(configFiles.getBpmnXmlFilePath()).getInputStream()));
-        // ((ObjectNode)refProp.getJsonTemplate(CldsService.GLOBAL_PROPERTIES_KEY));
         template.setPropText(csar.getDcaeBlueprint());
         template.setImageText(
                 IOUtils.toString(appContext.getResource(configFiles.getSvgXmlFilePath()).getInputStream()));
-        return cldsTemplateService.putTemplate(createTemplateName(csar), template);
+        template.setName(TEMPLATE_NAME_PREFIX + csar.getSdcCsarHelper().getServiceMetadata().getValue("name"));
+        template.save(cldsDao, null);
+        return template;
     }
 
-    private CldsModel createFakeCldsModel(CsarHandler csar, BlueprintParserFilesConfiguration configFiles,
-            CldsTemplate cldsTemplate) {
+    private CldsModel createFakeCldsModel(CsarHandler csar, CldsTemplate cldsTemplate, String serviceTypeId) {
         CldsModel cldsModel = new CldsModel();
+        cldsModel.setControlNamePrefix(MODEL_NAME_PREFIX);
+        cldsModel.setName(csar.getSdcCsarHelper().getServiceMetadata().getValue("name"));
         cldsModel.setBlueprintText(csar.getDcaeBlueprint());
         cldsModel.setTemplateName(cldsTemplate.getName());
-        // cldsModel.set
-        return cldsService.putModel(createModelName(csar), cldsModel);
+        cldsModel.setTemplateId(cldsTemplate.getId());
+        cldsModel.setDocText(cldsTemplate.getPropText());
+        cldsModel.setPropText("{}");
+        cldsModel.setBpmnText(cldsTemplate.getBpmnText());
+        cldsModel.setTypeId(serviceTypeId);
+        cldsModel.save(cldsDao, null);
+        return cldsModel;
     }
 }