From 0819f24218af38d1875defe46d233141648c1705 Mon Sep 17 00:00:00 2001 From: Tal Gitelman Date: Wed, 20 Sep 2017 17:50:41 +0300 Subject: [PATCH] Import New VF vCSCF fixes to the capability list Change-Id: I8e47527dce58248fa961f14673f89a2ccb09088b Issue-ID: SDC-267 Signed-off-by: Tal Gitelman --- .../be/components/impl/ResourceBusinessLogic.java | 121 ++++++++++++++------- .../org/openecomp/sdc/be/model/UploadInfo.java | 10 ++ sdc-os-chef/pom.xml | 2 +- 3 files changed, 90 insertions(+), 43 deletions(-) diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java index ba26576648..e5282ce437 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ResourceBusinessLogic.java @@ -4776,68 +4776,105 @@ public class ResourceBusinessLogic extends ComponentBusinessLogic { @SuppressWarnings("unchecked") private Either>, ResponseFormat> createCapModuleFromYaml(UploadComponentInstanceInfo nodeTemplateInfo, Map nodeTemplateJsonMap) { - Map> moduleCap = new HashMap>(); + Map> moduleCap = new HashMap<>(); Either>, ResponseFormat> response = Either.left(moduleCap); - Either, ResultStatusEnum> toscaRequirements = ImportUtils.findFirstToscaListElement(nodeTemplateJsonMap, ToscaTagNamesEnum.CAPABILITIES); - if (toscaRequirements.isLeft()) { - List jsonCapabilities = toscaRequirements.left().value(); - - for (Object jsonCapObj : jsonCapabilities) { - // Requirement - Map capJsonWrapper = (Map) jsonCapObj; - String capName = capJsonWrapper.keySet().iterator().next(); - Either eitherCap = createModuleNodeTemplateCap(capJsonWrapper.get(capName)); + Either, ResultStatusEnum> capabilitiesListRes = ImportUtils.findFirstToscaListElement(nodeTemplateJsonMap, ToscaTagNamesEnum.CAPABILITIES); + if (capabilitiesListRes.isLeft()) { + for (Object jsonCapObj : capabilitiesListRes.left().value()) { + String key = ((Map) jsonCapObj).keySet().iterator().next(); + Object capJson = ((Map) jsonCapObj).get(key); + Either eitherCap = addModuleNodeTemplateCap(nodeTemplateInfo, moduleCap, capJson, key); if (eitherCap.isRight()) { - log.info("error when creating Requirement:{}, for node:{}", capName, nodeTemplateInfo); return Either.right(eitherCap.right().value()); - } else { - UploadCapInfo requirementDef = eitherCap.left().value(); - requirementDef.setName(capName); - if (moduleCap.containsKey(capName)) { - moduleCap.get(capName).add(requirementDef); - } else { - List list = new ArrayList(); - list.add(requirementDef); - moduleCap.put(capName, list); + } + } + } else { + Either, ResultStatusEnum> capabilitiesMapRes = ImportUtils.findFirstToscaMapElement(nodeTemplateJsonMap, ToscaTagNamesEnum.CAPABILITIES); + if (capabilitiesMapRes.isLeft()) { + for (Map.Entry entry : capabilitiesMapRes.left().value().entrySet()) { + String capName = entry.getKey(); + Object capJson = entry.getValue(); + Either eitherCap = addModuleNodeTemplateCap(nodeTemplateInfo, moduleCap, capJson, capName); + if (eitherCap.isRight()) { + return Either.right(eitherCap.right().value()); } } } } return response; } - + + private Either addModuleNodeTemplateCap(UploadComponentInstanceInfo nodeTemplateInfo, Map> moduleCap, Object capJson, String key) { + + Either eitherCap = createModuleNodeTemplateCap(capJson); + if (eitherCap.isRight()) { + log.info("error when creating Capability:{}, for node:{}", key, nodeTemplateInfo); + return Either.right(eitherCap.right().value()); + } else { + UploadCapInfo capabilityDef = eitherCap.left().value(); + capabilityDef.setKey(key); + if (moduleCap.containsKey(key)) { + moduleCap.get(key).add(capabilityDef); + } else { + List list = new ArrayList(); + list.add(capabilityDef); + moduleCap.put(key, list); + } + } + return Either.left( eitherCap.left().value()); + } + @SuppressWarnings("unchecked") private Either>, ResponseFormat> createReqModuleFromYaml(UploadComponentInstanceInfo nodeTemplateInfo, Map nodeTemplateJsonMap) { Map> moduleRequirements = new HashMap>(); Either>, ResponseFormat> response = Either.left(moduleRequirements); - Either, ResultStatusEnum> toscaRequirements = ImportUtils.findFirstToscaListElement(nodeTemplateJsonMap, ToscaTagNamesEnum.REQUIREMENTS); - if (toscaRequirements.isLeft()) { - List jsonRequirements = toscaRequirements.left().value(); - - for (Object jsonRequirementObj : jsonRequirements) { - // Requirement - Map requirementJsonWrapper = (Map) jsonRequirementObj; - String requirementName = requirementJsonWrapper.keySet().iterator().next(); - Either eitherRequirement = createModuleNodeTemplateReg(requirementJsonWrapper.get(requirementName)); - if (eitherRequirement.isRight()) { - log.info("error when creating Requirement:{}, for node:{}", requirementName, nodeTemplateInfo); - return Either.right(eitherRequirement.right().value()); - } else { - UploadReqInfo requirementDef = eitherRequirement.left().value(); - requirementDef.setName(requirementName); - if (moduleRequirements.containsKey(requirementName)) { - moduleRequirements.get(requirementName).add(requirementDef); - } else { - List list = new ArrayList(); - list.add(requirementDef); - moduleRequirements.put(requirementName, list); + Either, ResultStatusEnum> requirementsListRes = ImportUtils.findFirstToscaListElement(nodeTemplateJsonMap, ToscaTagNamesEnum.REQUIREMENTS); + + if (requirementsListRes.isLeft()) { + for (Object jsonReqObj : requirementsListRes.left().value()) { + String reqName = ((Map) jsonReqObj).keySet().iterator().next(); + Object reqJson = ((Map) jsonReqObj).get(reqName); + Either eitherCap = addModuleNodeTemplateReq(nodeTemplateInfo, moduleRequirements, reqJson, reqName); + if (eitherCap.isRight()) { + return Either.right(eitherCap.right().value()); + } + } + } else { + Either, ResultStatusEnum> requirementsMapRes = ImportUtils.findFirstToscaMapElement(nodeTemplateJsonMap, ToscaTagNamesEnum.REQUIREMENTS); + if (requirementsMapRes.isLeft()) { + for (Map.Entry entry: requirementsMapRes.left().value().entrySet()) { + String reqName = entry.getKey(); + Object reqJson = entry.getValue(); + Either eitherCap = addModuleNodeTemplateReq(nodeTemplateInfo, moduleRequirements, reqJson, reqName); + if (eitherCap.isRight()) { + return Either.right(eitherCap.right().value()); } } } } return response; } + + private Either addModuleNodeTemplateReq(UploadComponentInstanceInfo nodeTemplateInfo, Map> moduleRequirements, Object requirementJson, String requirementName) { + Either eitherRequirement = createModuleNodeTemplateReg(requirementJson); + if (eitherRequirement.isRight()) { + log.info("error when creating Requirement:{}, for node:{}", requirementName, nodeTemplateInfo); + return Either.right(eitherRequirement.right().value()); + } else { + UploadReqInfo requirementDef = eitherRequirement.left().value(); + requirementDef.setName(requirementName); + if (moduleRequirements.containsKey(requirementName)) { + moduleRequirements.get(requirementName).add(requirementDef); + } else { + List list = new ArrayList(); + list.add(requirementDef); + moduleRequirements.put(requirementName, list); + } + } + return Either.left(eitherRequirement.left().value()); + } + @SuppressWarnings("unchecked") private Either createModuleNodeTemplateCap(Object capObject) { UploadCapInfo capTemplateInfo = new UploadCapInfo(); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/UploadInfo.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/UploadInfo.java index 75707ee77c..52a7ec073e 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/UploadInfo.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/UploadInfo.java @@ -22,10 +22,20 @@ package org.openecomp.sdc.be.model; public abstract class UploadInfo { + private String key; + private String type; private String name; + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } + public String getType() { return type; } diff --git a/sdc-os-chef/pom.xml b/sdc-os-chef/pom.xml index 62769b62d5..117a80f9d4 100644 --- a/sdc-os-chef/pom.xml +++ b/sdc-os-chef/pom.xml @@ -236,7 +236,7 @@ true 1.23 - + nexus3.onap.org:10003 -- 2.16.6