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;
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.
*/
@Autowired
private CldsDao cldsDao;
@Autowired
- private ClampProperties refProp;
- @Autowired
CldsTemplateService cldsTemplateService;
@Autowired
CldsService cldsService;
+ @Autowired
+ DcaeInventoryServices dcaeInventoryService;
@PostConstruct
public void loadConfiguration() throws IOException {
@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);
}
}
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)
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;
}
}