diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-tosca-generator-lib')
9 files changed, 309 insertions, 388 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/ComputeFlavor.java b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/ComputeFlavor.java index f0d5472fd9..693344b50d 100644 --- a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/ComputeFlavor.java +++ b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/ComputeFlavor.java @@ -19,7 +19,6 @@ * Modifications copyright (c) 2019 Nokia * ================================================================================ */ - package org.openecomp.sdc.generator.datatypes.tosca; import lombok.EqualsAndHashCode; @@ -38,5 +37,4 @@ public class ComputeFlavor { private int num_cpus; private String disk_size; private String mem_size; - } diff --git a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/DeploymentFlavorModel.java b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/DeploymentFlavorModel.java index ae7952e897..ede0a131e4 100644 --- a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/DeploymentFlavorModel.java +++ b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/DeploymentFlavorModel.java @@ -19,7 +19,6 @@ * Modifications copyright (c) 2019 Nokia * ================================================================================ */ - package org.openecomp.sdc.generator.datatypes.tosca; import lombok.EqualsAndHashCode; @@ -39,6 +38,4 @@ public class DeploymentFlavorModel { private VendorInfo vendor_info; private ComputeFlavor compute_flavor; private LicenseFlavor license_flavor; - } - diff --git a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/LicenseFlavor.java b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/LicenseFlavor.java index 0f7e5e80fb..98593d934b 100644 --- a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/LicenseFlavor.java +++ b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/LicenseFlavor.java @@ -19,7 +19,6 @@ * Modifications copyright (c) 2019 Nokia * ================================================================================ */ - package org.openecomp.sdc.generator.datatypes.tosca; import lombok.EqualsAndHashCode; @@ -36,5 +35,4 @@ import lombok.ToString; public class LicenseFlavor { private String feature_group_uuid; - } diff --git a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/MultiFlavorVfcImage.java b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/MultiFlavorVfcImage.java index 3c64231321..5f7948f255 100644 --- a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/MultiFlavorVfcImage.java +++ b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/MultiFlavorVfcImage.java @@ -19,7 +19,6 @@ * Modifications copyright (c) 2019 Nokia * ================================================================================ */ - package org.openecomp.sdc.generator.datatypes.tosca; import lombok.EqualsAndHashCode; @@ -39,5 +38,4 @@ public class MultiFlavorVfcImage { private String file_hash; private String file_hash_type; private String software_version; - } diff --git a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/VendorInfo.java b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/VendorInfo.java index 1837841948..7f56f521ad 100644 --- a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/VendorInfo.java +++ b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/VendorInfo.java @@ -19,7 +19,6 @@ * Modifications copyright (c) 2019 Nokia * ================================================================================ */ - package org.openecomp.sdc.generator.datatypes.tosca; import lombok.EqualsAndHashCode; @@ -37,5 +36,4 @@ public class VendorInfo { private String manufacturer_reference_number; private String vendor_model; - } diff --git a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/VspModelInfo.java b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/VspModelInfo.java index 05f43ce76b..bb302bbbe4 100644 --- a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/VspModelInfo.java +++ b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/datatypes/tosca/VspModelInfo.java @@ -19,7 +19,6 @@ * Modifications copyright (c) 2019 Nokia * ================================================================================ */ - package org.openecomp.sdc.generator.datatypes.tosca; import java.util.List; @@ -47,5 +46,4 @@ public class VspModelInfo { private Map<String, List<MultiFlavorVfcImage>> multiFlavorVfcImages; //Map of component and ports (NICs) private Map<String, List<Nic>> nics; - } diff --git a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/util/GeneratorConstants.java b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/util/GeneratorConstants.java index 3917ebe5ba..03e72255bd 100644 --- a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/util/GeneratorConstants.java +++ b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-api/src/main/java/org/openecomp/sdc/generator/util/GeneratorConstants.java @@ -7,9 +7,9 @@ * 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. @@ -17,10 +17,10 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.generator.util; public final class GeneratorConstants { + public static final String ALLOWED_FLAVORS_PROPERTY = "allowed_flavors"; public static final String IMAGES_PROPERTY = "images"; public static final String RELEASE_VENDOR = "releaseVendor"; @@ -30,14 +30,13 @@ public final class GeneratorConstants { public static final String PORT_TYPE_EXTERNAL_NODE_TEMPLATE_SUFFIX = "_wan"; public static final String PORT_NODE_TEMPLATE_ID_SUFFIX = "_port"; public static final String TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX = "ServiceTemplate.yaml"; - //Manual VSP propeties public static final String NUM_CPUS = "num_cpus"; public static final String DISK_SIZE = "disk_size"; public static final String MEM_SIZE = "mem_size"; - public static final String NUM_CPUS_PROP_DESC_PREFIX = "Number of cpu for "; - public static final String DISK_SIZE_PROP_DESC_PREFIX = "Disk size for "; - public static final String MEM_SIZE_PROP_DESC_PREFIX = "Memory size for "; + public static final String NUM_CPUS_PROP_DESC_PREFIX = "Number of cpu for "; + public static final String DISK_SIZE_PROP_DESC_PREFIX = "Disk size for "; + public static final String MEM_SIZE_PROP_DESC_PREFIX = "Memory size for "; // prevent utility class instantiation private GeneratorConstants() { diff --git a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-core/src/main/java/org/openecomp/sdc/generator/core/services/ManualVspToscaGenerationService.java b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-core/src/main/java/org/openecomp/sdc/generator/core/services/ManualVspToscaGenerationService.java index 5a18155f03..8fd2d090db 100644 --- a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-core/src/main/java/org/openecomp/sdc/generator/core/services/ManualVspToscaGenerationService.java +++ b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-core/src/main/java/org/openecomp/sdc/generator/core/services/ManualVspToscaGenerationService.java @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.openecomp.sdc.generator.core.services; import java.util.ArrayList; @@ -53,344 +52,298 @@ import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic; */ public class ManualVspToscaGenerationService { - //Map of the abstract node template id and substitution node type - private Map<String, String> abstractSubstitutionIdTypes = new HashMap<>(); - //Map of service template name and service template for the generated service templates - private Map<String, ServiceTemplate> generatedServiceTemplates = new HashMap<>(); - + //Map of the abstract node template id and substitution node type + private Map<String, String> abstractSubstitutionIdTypes = new HashMap<>(); + //Map of service template name and service template for the generated service templates + private Map<String, ServiceTemplate> generatedServiceTemplates = new HashMap<>(); + + /** + * Create manual vsp tosca service model tosca service model. + * + * @param vspModelInfo the vsp model info + * @return the tosca service model + */ + public ToscaServiceModel createManualVspToscaServiceModel(VspModelInfo vspModelInfo) { + ToscaServiceModel toscaServiceModel = new ToscaServiceModel(); + Map<String, ServiceTemplate> serviceTemplates = new HashMap<>(GlobalTypesGenerator.getGlobalTypesServiceTemplate(OnboardingTypesEnum.MANUAL)); + toscaServiceModel.setServiceTemplates(serviceTemplates); + toscaServiceModel + .setEntryDefinitionServiceTemplate(Constants.MAIN_TEMPLATE_NAME + GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX); + createToscaFromVspData(vspModelInfo, toscaServiceModel); + for (Map.Entry<String, ServiceTemplate> serviceTemplateEntry : generatedServiceTemplates.entrySet()) { + ToscaUtil.addServiceTemplateToMapWithKeyFileName(serviceTemplates, serviceTemplateEntry.getValue()); + } + return toscaServiceModel; + } - /** - * Create manual vsp tosca service model tosca service model. - * - * @param vspModelInfo the vsp model info - * @return the tosca service model - */ - public ToscaServiceModel createManualVspToscaServiceModel(VspModelInfo vspModelInfo) { - ToscaServiceModel toscaServiceModel = new ToscaServiceModel(); - Map<String, ServiceTemplate> serviceTemplates = new HashMap<>(GlobalTypesGenerator - .getGlobalTypesServiceTemplate(OnboardingTypesEnum.MANUAL)); - toscaServiceModel.setServiceTemplates(serviceTemplates); - toscaServiceModel.setEntryDefinitionServiceTemplate(Constants.MAIN_TEMPLATE_NAME - + GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX); - createToscaFromVspData(vspModelInfo, toscaServiceModel); - for (Map.Entry<String, ServiceTemplate> serviceTemplateEntry : - generatedServiceTemplates.entrySet()) { - ToscaUtil.addServiceTemplateToMapWithKeyFileName(serviceTemplates, serviceTemplateEntry - .getValue()); + private void createToscaFromVspData(VspModelInfo vspModelInfo, ToscaServiceModel toscaServiceModel) { + //Only one component supported + Optional<String> componentName = getComponentNameFromVspModel(vspModelInfo); + if (componentName.isPresent()) { + //Create main service template + ServiceTemplate mainServiceTemplate = createMainServiceTemplate(vspModelInfo); + generatedServiceTemplates.put(Constants.MAIN_TEMPLATE_NAME, mainServiceTemplate); + //Create substitution service template + for (Map.Entry<String, String> entry : abstractSubstitutionIdTypes.entrySet()) { + ServiceTemplate substitutionServiceTemplate = createSubstitutionServiceTemplate(componentName.get(), entry.getValue(), vspModelInfo, + toscaServiceModel); + generatedServiceTemplates.put(componentName.get(), substitutionServiceTemplate); + } + } } - return toscaServiceModel; - } - private void createToscaFromVspData(VspModelInfo vspModelInfo, - ToscaServiceModel toscaServiceModel) { - //Only one component supported - Optional<String> componentName = getComponentNameFromVspModel(vspModelInfo); - if (componentName.isPresent()) { - //Create main service template - ServiceTemplate mainServiceTemplate = createMainServiceTemplate(vspModelInfo); - generatedServiceTemplates.put(Constants.MAIN_TEMPLATE_NAME, mainServiceTemplate); - //Create substitution service template - for (Map.Entry<String, String> entry : abstractSubstitutionIdTypes.entrySet()) { - ServiceTemplate substitutionServiceTemplate = - createSubstitutionServiceTemplate(componentName.get(), entry.getValue(), vspModelInfo, - toscaServiceModel); - generatedServiceTemplates.put(componentName.get(), substitutionServiceTemplate); - } + private Optional<String> getComponentNameFromVspModel(VspModelInfo vspModelInfo) { + String componentName = null; + if (MapUtils.isNotEmpty(vspModelInfo.getComponents())) { + //supported for single component only + componentName = vspModelInfo.getComponents().entrySet().iterator().next().getValue(); + } + return Optional.ofNullable(componentName); } - } + private ServiceTemplate createMainServiceTemplate(VspModelInfo vspModelInfo) { + ServiceTemplate mainServiceTemplate = createInitMainServiceTemplate(vspModelInfo.getReleaseVendor()); + Map<String, String> components = vspModelInfo.getComponents(); + if (MapUtils.isNotEmpty(components)) { + //Currently since only one component is supported we can fetch the component in this manner. + + // May be need to revisited for supporting multiple components + String componentId = components.entrySet().iterator().next().getKey(); + createVnfConfigurationNodeTemplate(mainServiceTemplate, vspModelInfo); + createVnfNodeTemplate(mainServiceTemplate, vspModelInfo, componentId); + } + return mainServiceTemplate; + } - private Optional<String> getComponentNameFromVspModel(VspModelInfo vspModelInfo) { - String componentName = null; - if (MapUtils.isNotEmpty(vspModelInfo.getComponents())) { - //supported for single component only - componentName = vspModelInfo.getComponents().entrySet().iterator().next().getValue(); + private void createVnfConfigurationNodeTemplate(ServiceTemplate mainServiceTemplate, VspModelInfo vspModelInfo) { + Optional<String> componentName = getComponentNameFromVspModel(vspModelInfo); + if (componentName.isPresent()) { + NodeTemplate vnfConfigurationNodeTemplate = new NodeTemplate(); + vnfConfigurationNodeTemplate.setType(ToscaNodeType.VNF_CONFIG_NODE_TYPE); + if (Objects.nonNull(vspModelInfo.getAllowedFlavors())) { + Map<String, Object> properties = new LinkedHashMap<>(); + properties.put(GeneratorConstants.ALLOWED_FLAVORS_PROPERTY, vspModelInfo.getAllowedFlavors()); + vnfConfigurationNodeTemplate.setProperties(properties); + } + String nodeTemplateId = componentName.get() + GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX; + DataModelUtil.addNodeTemplate(mainServiceTemplate, nodeTemplateId, vnfConfigurationNodeTemplate); + } } - return Optional.ofNullable(componentName); - } - private ServiceTemplate createMainServiceTemplate(VspModelInfo vspModelInfo) { - ServiceTemplate mainServiceTemplate = createInitMainServiceTemplate(vspModelInfo - .getReleaseVendor()); - Map<String, String> components = vspModelInfo.getComponents(); - if (MapUtils.isNotEmpty(components)) { - //Currently since only one component is supported we can fetch the component in this manner. - // May be need to revisited for supporting multiple components - String componentId = components.entrySet().iterator().next().getKey(); - createVnfConfigurationNodeTemplate(mainServiceTemplate, vspModelInfo); - createVnfNodeTemplate(mainServiceTemplate, vspModelInfo, componentId); + private void createVnfNodeTemplate(ServiceTemplate mainServiceTemplate, VspModelInfo vspModelInfo, String componentId) { + Optional<String> componentName = getComponentNameFromVspModel(vspModelInfo); + if (componentName.isPresent()) { + NodeTemplate vnfNodeTemplate = new NodeTemplate(); + vnfNodeTemplate.setType(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE); + List<String> directiveList = new ArrayList<>(); + directiveList.add(ToscaConstants.NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE); + vnfNodeTemplate.setDirectives(directiveList); + vnfNodeTemplate.setProperties(getVnfNodeTemplateProperties(vspModelInfo, componentId)); + DataModelUtil.addSubstitutionFilteringProperty(getSubstitutionServiceTemplateFileName(componentName.get()), vnfNodeTemplate, 1); + //Enable below if we need "abstract_" as prefix like we have in Unified model + + //String nodeTemplateId = + + // Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX + componentName + "VNF_NODE_TEMPLATE_ID_SUFFIX"; + String nodeTemplateId = componentName.get() + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX; + DataModelUtil.addNodeTemplate(mainServiceTemplate, nodeTemplateId, vnfNodeTemplate); + abstractSubstitutionIdTypes.put(componentName.get(), ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE); + } } - return mainServiceTemplate; - } - private void createVnfConfigurationNodeTemplate(ServiceTemplate mainServiceTemplate, - VspModelInfo vspModelInfo) { - Optional<String> componentName = getComponentNameFromVspModel(vspModelInfo); - if (componentName.isPresent()) { - NodeTemplate vnfConfigurationNodeTemplate = new NodeTemplate(); - vnfConfigurationNodeTemplate.setType(ToscaNodeType.VNF_CONFIG_NODE_TYPE); - if (Objects.nonNull(vspModelInfo.getAllowedFlavors())) { + private Map<String, Object> getVnfNodeTemplateProperties(VspModelInfo vspModelInfo, String componentId) { Map<String, Object> properties = new LinkedHashMap<>(); - properties.put(GeneratorConstants.ALLOWED_FLAVORS_PROPERTY, vspModelInfo.getAllowedFlavors()); - vnfConfigurationNodeTemplate.setProperties(properties); - } - String nodeTemplateId = componentName.get() + GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX; - DataModelUtil.addNodeTemplate(mainServiceTemplate, nodeTemplateId, - vnfConfigurationNodeTemplate); + if (MapUtils.isNotEmpty(vspModelInfo.getMultiFlavorVfcImages())) { + List<MultiFlavorVfcImage> componentImages = vspModelInfo.getMultiFlavorVfcImages().get(componentId); + if (Objects.nonNull(componentImages)) { + Map<String, MultiFlavorVfcImage> vfcImages = new HashMap<>(); + componentImages.stream() + .forEach(multiFlavorVfcImage -> vfcImages.put(multiFlavorVfcImage.getSoftware_version(), multiFlavorVfcImage)); + properties.put(GeneratorConstants.IMAGES_PROPERTY, vfcImages); + } + } + return properties; } - } - private void createVnfNodeTemplate(ServiceTemplate mainServiceTemplate, - VspModelInfo vspModelInfo, String componentId) { - Optional<String> componentName = getComponentNameFromVspModel(vspModelInfo); - if (componentName.isPresent()) { - NodeTemplate vnfNodeTemplate = new NodeTemplate(); - vnfNodeTemplate.setType(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE); - List<String> directiveList = new ArrayList<>(); - directiveList.add(ToscaConstants.NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE); - vnfNodeTemplate.setDirectives(directiveList); - vnfNodeTemplate.setProperties(getVnfNodeTemplateProperties(vspModelInfo, componentId)); - DataModelUtil - .addSubstitutionFilteringProperty(getSubstitutionServiceTemplateFileName(componentName - .get()), vnfNodeTemplate, 1); - //Enable below if we need "abstract_" as prefix like we have in Unified model - //String nodeTemplateId = - // Constants.ABSTRACT_NODE_TEMPLATE_ID_PREFIX + componentName + "VNF_NODE_TEMPLATE_ID_SUFFIX"; - String nodeTemplateId = componentName.get() + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX; - DataModelUtil.addNodeTemplate(mainServiceTemplate, nodeTemplateId, - vnfNodeTemplate); - abstractSubstitutionIdTypes.put(componentName.get(), ToscaNodeType - .MULTIDEPLOYMENTFLAVOR_NODE_TYPE); + private String getSubstitutionServiceTemplateFileName(String componentName) { + return componentName + GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX; } - } - private Map<String, Object> getVnfNodeTemplateProperties(VspModelInfo vspModelInfo, - String componentId) { - Map<String, Object> properties = new LinkedHashMap<>(); - if (MapUtils.isNotEmpty(vspModelInfo.getMultiFlavorVfcImages())) { - List<MultiFlavorVfcImage> componentImages = - vspModelInfo.getMultiFlavorVfcImages().get(componentId); - if (Objects.nonNull(componentImages)) { - Map<String, MultiFlavorVfcImage> vfcImages = new HashMap<>(); - componentImages.stream() - .forEach(multiFlavorVfcImage -> - vfcImages.put(multiFlavorVfcImage.getSoftware_version(), multiFlavorVfcImage)); - properties.put(GeneratorConstants.IMAGES_PROPERTY, vfcImages); - } + private ServiceTemplate createInitMainServiceTemplate(String releaseVendor) { + ServiceTemplate mainServiceTemplate = new ServiceTemplate(); + Map<String, String> templateMetadata = new HashMap<>(); + templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, Constants.MAIN_TEMPLATE_NAME); + if (Objects.nonNull(releaseVendor)) { + templateMetadata.put(GeneratorConstants.RELEASE_VENDOR, releaseVendor); + } + mainServiceTemplate.setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION); + mainServiceTemplate.setMetadata(templateMetadata); + mainServiceTemplate.setTopology_template(new TopologyTemplate()); + mainServiceTemplate.setImports(getImports()); + return mainServiceTemplate; } - return properties; - } - - private String getSubstitutionServiceTemplateFileName(String componentName) { - return componentName + GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX; - } - private ServiceTemplate createInitMainServiceTemplate(String releaseVendor) { - ServiceTemplate mainServiceTemplate = new ServiceTemplate(); - Map<String, String> templateMetadata = new HashMap<>(); - templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, Constants.MAIN_TEMPLATE_NAME); - if (Objects.nonNull(releaseVendor)) { - templateMetadata.put(GeneratorConstants.RELEASE_VENDOR, releaseVendor); + private List<Map<String, Import>> getImports() { + Map<String, Import> globalSubstitutionTypeImportMap = new HashMap<>(); + Import globalSubstitutionTypeImport = new Import(); + globalSubstitutionTypeImport.setFile(ToscaUtil.getServiceTemplateFileName(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME)); + globalSubstitutionTypeImportMap.put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, globalSubstitutionTypeImport); + List<Map<String, Import>> manualVspGlobalTypesImportList = GlobalTypesGenerator.getManualVspGlobalTypesImportList(); + manualVspGlobalTypesImportList.add(globalSubstitutionTypeImportMap); + return manualVspGlobalTypesImportList; } - mainServiceTemplate.setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION); - mainServiceTemplate.setMetadata(templateMetadata); - mainServiceTemplate.setTopology_template(new TopologyTemplate()); - mainServiceTemplate.setImports(getImports()); - return mainServiceTemplate; - } - - private List<Map<String, Import>> getImports() { - Map<String, Import> globalSubstitutionTypeImportMap = new HashMap<>(); - Import globalSubstitutionTypeImport = new Import(); - globalSubstitutionTypeImport.setFile(ToscaUtil.getServiceTemplateFileName(Constants - .GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME)); - globalSubstitutionTypeImportMap.put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, - globalSubstitutionTypeImport); - List<Map<String, Import>> manualVspGlobalTypesImportList = GlobalTypesGenerator - .getManualVspGlobalTypesImportList(); - manualVspGlobalTypesImportList.add(globalSubstitutionTypeImportMap); - return manualVspGlobalTypesImportList; - } - - private ServiceTemplate createSubstitutionServiceTemplate(String serviceTemplateName, - String substitutionNodeTypeId, - VspModelInfo vspModelInfo, - ToscaServiceModel toscaServiceModel) { - ServiceTemplate substitutionServiceTemplate = - createInitSubstitutionServiceTemplate(serviceTemplateName); - createSubstitutionServiceTemplateComponents(substitutionServiceTemplate, vspModelInfo); - createSubstitutionServiceTemplateNics(substitutionServiceTemplate, vspModelInfo); - handleSubstitutionMapping(substitutionServiceTemplate, toscaServiceModel, - substitutionNodeTypeId, serviceTemplateName); - return substitutionServiceTemplate; - } - private void createSubstitutionServiceTemplateComponents(ServiceTemplate - substitutionServiceTemplate, - VspModelInfo vspModelInfo) { - Map<String, String> components = vspModelInfo.getComponents(); - if (MapUtils.isNotEmpty(components)) { - for (String componentName : components.values()) { - String localNodeTypeId = - createComponentDefinitionNodeTemplate(substitutionServiceTemplate, componentName); - createLocalNodeType(substitutionServiceTemplate, localNodeTypeId); - } + private ServiceTemplate createSubstitutionServiceTemplate(String serviceTemplateName, String substitutionNodeTypeId, VspModelInfo vspModelInfo, + ToscaServiceModel toscaServiceModel) { + ServiceTemplate substitutionServiceTemplate = createInitSubstitutionServiceTemplate(serviceTemplateName); + createSubstitutionServiceTemplateComponents(substitutionServiceTemplate, vspModelInfo); + createSubstitutionServiceTemplateNics(substitutionServiceTemplate, vspModelInfo); + handleSubstitutionMapping(substitutionServiceTemplate, toscaServiceModel, substitutionNodeTypeId, serviceTemplateName); + return substitutionServiceTemplate; } - } - private void createSubstitutionServiceTemplateNics(ServiceTemplate substitutionServiceTemplate, - VspModelInfo vspModelInfo) { - Map<String, List<Nic>> nics = vspModelInfo.getNics(); - if (MapUtils.isNotEmpty(nics)) { - for (Map.Entry<String, List<Nic>> entry : nics.entrySet()) { - String componentId = entry.getKey(); - String componentNodeTemplateId = getSubstitutionComponentNodeTemplateId( - vspModelInfo.getComponents().get(componentId)); - List<Nic> nicList = entry.getValue(); - if (CollectionUtils.isNotEmpty(nicList)) { - for (Nic nic : nicList) { - NodeTemplate nicNodeTemplate = new NodeTemplate(); - nicNodeTemplate.setType(ToscaNodeType.NETWORK_PORT); - DataModelUtil.addBindingReqFromPortToCompute(componentNodeTemplateId, nicNodeTemplate); - DataModelUtil.addNodeTemplate(substitutionServiceTemplate, - getNicNodeTemplateId(nic.getName(), nic.getNetworkType()), nicNodeTemplate); - } + private void createSubstitutionServiceTemplateComponents(ServiceTemplate substitutionServiceTemplate, VspModelInfo vspModelInfo) { + Map<String, String> components = vspModelInfo.getComponents(); + if (MapUtils.isNotEmpty(components)) { + for (String componentName : components.values()) { + String localNodeTypeId = createComponentDefinitionNodeTemplate(substitutionServiceTemplate, componentName); + createLocalNodeType(substitutionServiceTemplate, localNodeTypeId); + } } - } } - } - private String getSubstitutionComponentNodeTemplateId(String componentName) { - //TODO: Confirm if anything else is needed here - return componentName; - } - - private String getNicNodeTemplateId(String nicName, NetworkType nicNetworkType) { - StringBuilder builder = new StringBuilder(); - builder.append(nicName); - if (nicNetworkType == NetworkType.External) { - builder.append(GeneratorConstants.PORT_TYPE_EXTERNAL_NODE_TEMPLATE_SUFFIX); - } else if (nicNetworkType == NetworkType.Internal) { - builder.append(GeneratorConstants.PORT_TYPE_INTERNAL_NODE_TEMPLATE_SUFFIX); + private void createSubstitutionServiceTemplateNics(ServiceTemplate substitutionServiceTemplate, VspModelInfo vspModelInfo) { + Map<String, List<Nic>> nics = vspModelInfo.getNics(); + if (MapUtils.isNotEmpty(nics)) { + for (Map.Entry<String, List<Nic>> entry : nics.entrySet()) { + String componentId = entry.getKey(); + String componentNodeTemplateId = getSubstitutionComponentNodeTemplateId(vspModelInfo.getComponents().get(componentId)); + List<Nic> nicList = entry.getValue(); + if (CollectionUtils.isNotEmpty(nicList)) { + for (Nic nic : nicList) { + NodeTemplate nicNodeTemplate = new NodeTemplate(); + nicNodeTemplate.setType(ToscaNodeType.NETWORK_PORT); + DataModelUtil.addBindingReqFromPortToCompute(componentNodeTemplateId, nicNodeTemplate); + DataModelUtil + .addNodeTemplate(substitutionServiceTemplate, getNicNodeTemplateId(nic.getName(), nic.getNetworkType()), nicNodeTemplate); + } + } + } + } } - builder.append(GeneratorConstants.PORT_NODE_TEMPLATE_ID_SUFFIX); - return builder.toString(); - } - private String createComponentDefinitionNodeTemplate(ServiceTemplate substitutionServiceTemplate, - String componentName) { - NodeTemplate nodeTemplate = new NodeTemplate(); - String localNodeTypeId = getLocalNodeTypeId(componentName); - nodeTemplate.setType(localNodeTypeId); - DataModelUtil.addNodeTemplate(substitutionServiceTemplate, componentName, nodeTemplate); - return localNodeTypeId; - } - - private void createLocalNodeType(ServiceTemplate substitutionServiceTemplate, - String localNodeTypeId) { - NodeType localNodeType = new NodeType(); - localNodeType.setDerived_from(ToscaNodeType.COMPUTE); - DataModelUtil.addNodeType(substitutionServiceTemplate, localNodeTypeId, localNodeType ); - } + private String getSubstitutionComponentNodeTemplateId(String componentName) { + //TODO: Confirm if anything else is needed here + return componentName; + } - private String getLocalNodeTypeId(String componentName) { - return ToscaNodeType.VFC_NODE_TYPE_PREFIX + componentName; - } + private String getNicNodeTemplateId(String nicName, NetworkType nicNetworkType) { + StringBuilder builder = new StringBuilder(); + builder.append(nicName); + if (nicNetworkType == NetworkType.External) { + builder.append(GeneratorConstants.PORT_TYPE_EXTERNAL_NODE_TEMPLATE_SUFFIX); + } else if (nicNetworkType == NetworkType.Internal) { + builder.append(GeneratorConstants.PORT_TYPE_INTERNAL_NODE_TEMPLATE_SUFFIX); + } + builder.append(GeneratorConstants.PORT_NODE_TEMPLATE_ID_SUFFIX); + return builder.toString(); + } - private ServiceTemplate createInitSubstitutionServiceTemplate(String serviceTemplateName) { - ServiceTemplate substitutionServiceTemplate = new ServiceTemplate(); - Map<String, String> templateMetadata = new HashMap<>(); - substitutionServiceTemplate.setTosca_definitions_version(ToscaConstants - .TOSCA_DEFINITIONS_VERSION); - templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, serviceTemplateName); - substitutionServiceTemplate.setMetadata(templateMetadata); - substitutionServiceTemplate.setTopology_template(new TopologyTemplate()); - substitutionServiceTemplate.setImports(getImports()); - return substitutionServiceTemplate; - } + private String createComponentDefinitionNodeTemplate(ServiceTemplate substitutionServiceTemplate, String componentName) { + NodeTemplate nodeTemplate = new NodeTemplate(); + String localNodeTypeId = getLocalNodeTypeId(componentName); + nodeTemplate.setType(localNodeTypeId); + DataModelUtil.addNodeTemplate(substitutionServiceTemplate, componentName, nodeTemplate); + return localNodeTypeId; + } - private void handleSubstitutionMapping(ServiceTemplate substitutionServiceTemplate, - ToscaServiceModel toscaServiceModel, - String substitutionNodeTypeId, - String componentName) { - ServiceTemplate globalSubstitutionServiceTemplate = fetchGlobalSubstitutionServiceTemplate(); - NodeType substitutionNodeType = - createGlobalSubstitutionNodeType(substitutionServiceTemplate, componentName); - DataModelUtil.addNodeType(globalSubstitutionServiceTemplate, substitutionNodeTypeId, - substitutionNodeType); - Map<String, Map<String, List<String>>> substitutionMapping = - GeneratorUtils.getSubstitutionNodeTypeExposedConnectionPoints(substitutionNodeType, - substitutionServiceTemplate, toscaServiceModel); - if (Objects.nonNull(substitutionMapping)) { - //add substitution mapping after capability and requirement expose calculation - substitutionServiceTemplate.getTopology_template().setSubstitution_mappings( - DataModelUtil.createSubstitutionTemplateSubMapping(substitutionNodeTypeId, - substitutionNodeType, substitutionMapping)); + private void createLocalNodeType(ServiceTemplate substitutionServiceTemplate, String localNodeTypeId) { + NodeType localNodeType = new NodeType(); + localNodeType.setDerived_from(ToscaNodeType.COMPUTE); + DataModelUtil.addNodeType(substitutionServiceTemplate, localNodeTypeId, localNodeType); } - } - //*************** CREATE GLOBAL SUBSTITUTION SERVICE TEMPLATE ********************** + private String getLocalNodeTypeId(String componentName) { + return ToscaNodeType.VFC_NODE_TYPE_PREFIX + componentName; + } - private ServiceTemplate createInitGlobalSubstitutionServiceTemplate() { - ServiceTemplate globalSubstitutionServiceTemplate = new ServiceTemplate(); - Map<String, String> templateMetadata = new HashMap<>(); - globalSubstitutionServiceTemplate.setTosca_definitions_version(ToscaConstants - .TOSCA_DEFINITIONS_VERSION); - templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, - Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); - globalSubstitutionServiceTemplate.setMetadata(templateMetadata); - globalSubstitutionServiceTemplate.setImports(getImports()); - return globalSubstitutionServiceTemplate; - } + private ServiceTemplate createInitSubstitutionServiceTemplate(String serviceTemplateName) { + ServiceTemplate substitutionServiceTemplate = new ServiceTemplate(); + Map<String, String> templateMetadata = new HashMap<>(); + substitutionServiceTemplate.setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION); + templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, serviceTemplateName); + substitutionServiceTemplate.setMetadata(templateMetadata); + substitutionServiceTemplate.setTopology_template(new TopologyTemplate()); + substitutionServiceTemplate.setImports(getImports()); + return substitutionServiceTemplate; + } - private NodeType createGlobalSubstitutionNodeType(ServiceTemplate substitutionServiceTemplate, - String componentName) { - NodeType substitutionNodeType = new ToscaAnalyzerServiceImpl() - .createInitSubstitutionNodeType(substitutionServiceTemplate, - ToscaNodeType.MULTIFLAVOR_VFC_NODE_TYPE); - substitutionNodeType.setProperties( - getManualVspSubstitutionNodeTypeProperties(componentName)); - return substitutionNodeType; - } + private void handleSubstitutionMapping(ServiceTemplate substitutionServiceTemplate, ToscaServiceModel toscaServiceModel, + String substitutionNodeTypeId, String componentName) { + ServiceTemplate globalSubstitutionServiceTemplate = fetchGlobalSubstitutionServiceTemplate(); + NodeType substitutionNodeType = createGlobalSubstitutionNodeType(substitutionServiceTemplate, componentName); + DataModelUtil.addNodeType(globalSubstitutionServiceTemplate, substitutionNodeTypeId, substitutionNodeType); + Map<String, Map<String, List<String>>> substitutionMapping = GeneratorUtils + .getSubstitutionNodeTypeExposedConnectionPoints(substitutionNodeType, substitutionServiceTemplate, toscaServiceModel); + if (Objects.nonNull(substitutionMapping)) { + //add substitution mapping after capability and requirement expose calculation + substitutionServiceTemplate.getTopology_template().setSubstitution_mappings( + DataModelUtil.createSubstitutionTemplateSubMapping(substitutionNodeTypeId, substitutionNodeType, substitutionMapping)); + } + } - private Map<String, PropertyDefinition> getManualVspSubstitutionNodeTypeProperties(String componentName) { - //Create num_cpus property - PropertyDefinition numCpus = new PropertyDefinition(); - numCpus.setType(PropertyType.INTEGER.getDisplayName()); - numCpus.setDescription(GeneratorConstants.NUM_CPUS_PROP_DESC_PREFIX + componentName); - numCpus.setRequired(true); - //Create disk_size property - PropertyDefinition diskSize = new PropertyDefinition(); - diskSize.setType(PropertyType.SCALAR_UNIT_SIZE.getDisplayName()); - diskSize.setDescription(GeneratorConstants.DISK_SIZE_PROP_DESC_PREFIX + componentName); - diskSize.setRequired(true); - //Create mem_size property - PropertyDefinition memSize = new PropertyDefinition(); - memSize.setType(PropertyType.SCALAR_UNIT_SIZE.getDisplayName()); - memSize.setDescription(GeneratorConstants.MEM_SIZE_PROP_DESC_PREFIX + componentName); - memSize.setRequired(true); + //*************** CREATE GLOBAL SUBSTITUTION SERVICE TEMPLATE ********************** + private ServiceTemplate createInitGlobalSubstitutionServiceTemplate() { + ServiceTemplate globalSubstitutionServiceTemplate = new ServiceTemplate(); + Map<String, String> templateMetadata = new HashMap<>(); + globalSubstitutionServiceTemplate.setTosca_definitions_version(ToscaConstants.TOSCA_DEFINITIONS_VERSION); + templateMetadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); + globalSubstitutionServiceTemplate.setMetadata(templateMetadata); + globalSubstitutionServiceTemplate.setImports(getImports()); + return globalSubstitutionServiceTemplate; + } - Map<String, PropertyDefinition> manualVspProperties = new LinkedHashMap<>(); - manualVspProperties.put(GeneratorConstants.NUM_CPUS, numCpus); - manualVspProperties.put(GeneratorConstants.DISK_SIZE, diskSize); - manualVspProperties.put(GeneratorConstants.MEM_SIZE, memSize); + private NodeType createGlobalSubstitutionNodeType(ServiceTemplate substitutionServiceTemplate, String componentName) { + NodeType substitutionNodeType = new ToscaAnalyzerServiceImpl() + .createInitSubstitutionNodeType(substitutionServiceTemplate, ToscaNodeType.MULTIFLAVOR_VFC_NODE_TYPE); + substitutionNodeType.setProperties(getManualVspSubstitutionNodeTypeProperties(componentName)); + return substitutionNodeType; + } - return manualVspProperties; - } + private Map<String, PropertyDefinition> getManualVspSubstitutionNodeTypeProperties(String componentName) { + //Create num_cpus property + PropertyDefinition numCpus = new PropertyDefinition(); + numCpus.setType(PropertyType.INTEGER.getDisplayName()); + numCpus.setDescription(GeneratorConstants.NUM_CPUS_PROP_DESC_PREFIX + componentName); + numCpus.setRequired(true); + //Create disk_size property + PropertyDefinition diskSize = new PropertyDefinition(); + diskSize.setType(PropertyType.SCALAR_UNIT_SIZE.getDisplayName()); + diskSize.setDescription(GeneratorConstants.DISK_SIZE_PROP_DESC_PREFIX + componentName); + diskSize.setRequired(true); + //Create mem_size property + PropertyDefinition memSize = new PropertyDefinition(); + memSize.setType(PropertyType.SCALAR_UNIT_SIZE.getDisplayName()); + memSize.setDescription(GeneratorConstants.MEM_SIZE_PROP_DESC_PREFIX + componentName); + memSize.setRequired(true); + Map<String, PropertyDefinition> manualVspProperties = new LinkedHashMap<>(); + manualVspProperties.put(GeneratorConstants.NUM_CPUS, numCpus); + manualVspProperties.put(GeneratorConstants.DISK_SIZE, diskSize); + manualVspProperties.put(GeneratorConstants.MEM_SIZE, memSize); + return manualVspProperties; + } - /** - * Fetch global substitution service template service template. - * - * @return the global substitution service template - */ - private ServiceTemplate fetchGlobalSubstitutionServiceTemplate() { - ServiceTemplate globalSubstitutionServiceTemplate = - generatedServiceTemplates.get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); - if (Objects.isNull(globalSubstitutionServiceTemplate)) { - globalSubstitutionServiceTemplate = createInitGlobalSubstitutionServiceTemplate(); - generatedServiceTemplates.put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, - globalSubstitutionServiceTemplate); + /** + * Fetch global substitution service template service template. + * + * @return the global substitution service template + */ + private ServiceTemplate fetchGlobalSubstitutionServiceTemplate() { + ServiceTemplate globalSubstitutionServiceTemplate = generatedServiceTemplates.get(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME); + if (Objects.isNull(globalSubstitutionServiceTemplate)) { + globalSubstitutionServiceTemplate = createInitGlobalSubstitutionServiceTemplate(); + generatedServiceTemplates.put(Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME, globalSubstitutionServiceTemplate); + } + return globalSubstitutionServiceTemplate; } - return globalSubstitutionServiceTemplate; - } } diff --git a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-core/src/main/java/org/openecomp/sdc/generator/core/utils/GeneratorUtils.java b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-core/src/main/java/org/openecomp/sdc/generator/core/utils/GeneratorUtils.java index a1460a8163..285ac2dbc4 100644 --- a/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-core/src/main/java/org/openecomp/sdc/generator/core/utils/GeneratorUtils.java +++ b/openecomp-be/lib/openecomp-sdc-tosca-generator-lib/openecomp-sdc-tosca-generator-core/src/main/java/org/openecomp/sdc/generator/core/utils/GeneratorUtils.java @@ -7,9 +7,9 @@ * 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. @@ -17,10 +17,23 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.generator.core.utils; -import org.onap.sdc.tosca.datatypes.model.*; +import static org.openecomp.sdc.tosca.services.DataModelUtil.addSubstitutionNodeTypeRequirements; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import org.onap.sdc.tosca.datatypes.model.CapabilityDefinition; +import org.onap.sdc.tosca.datatypes.model.NodeTemplate; +import org.onap.sdc.tosca.datatypes.model.NodeType; +import org.onap.sdc.tosca.datatypes.model.RequirementAssignment; +import org.onap.sdc.tosca.datatypes.model.RequirementDefinition; +import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; import org.openecomp.sdc.tosca.datatypes.ToscaElementTypes; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; @@ -29,22 +42,17 @@ import org.openecomp.sdc.tosca.services.ToscaAnalyzerService; import org.openecomp.sdc.tosca.services.ToscaUtil; import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl; -import java.util.*; - -import static org.openecomp.sdc.tosca.services.DataModelUtil.addSubstitutionNodeTypeRequirements; - /** * The type Generator utils. */ public class GeneratorUtils { - private GeneratorUtils() { - // prevent instantiation - } - //TODO : Read from configuration private static final List<String> SUPPORTED_CAPABILITIES = Arrays.asList("host", "os", "endpoint", "scalable"); private static final List<String> SUPPORTED_REQUIREMENTS = Collections.singletonList("link"); + private GeneratorUtils() { + // prevent instantiation + } /** * Add service template to tosca service model. @@ -52,9 +60,7 @@ public class GeneratorUtils { * @param toscaServiceModel the tosca service model * @param serviceTemplate the service template */ - public static void addServiceTemplateToToscaServiceModel(ToscaServiceModel toscaServiceModel, - ServiceTemplate serviceTemplate) { - + public static void addServiceTemplateToToscaServiceModel(ToscaServiceModel toscaServiceModel, ServiceTemplate serviceTemplate) { String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate); Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates(); if (!serviceTemplates.containsKey(serviceTemplateFileName)) { @@ -72,11 +78,9 @@ public class GeneratorUtils { * @return the substitution node type exposed connection points */ public static Map<String, Map<String, List<String>>> getSubstitutionNodeTypeExposedConnectionPoints(NodeType substitutionNodeType, - ServiceTemplate substitutionServiceTemplate, - ToscaServiceModel toscaServiceModel) { - - Map<String, NodeTemplate> nodeTemplates = - substitutionServiceTemplate.getTopology_template().getNode_templates(); + ServiceTemplate substitutionServiceTemplate, + ToscaServiceModel toscaServiceModel) { + Map<String, NodeTemplate> nodeTemplates = substitutionServiceTemplate.getTopology_template().getNode_templates(); String nodeTemplateId; NodeTemplate nodeTemplate; String nodeType; @@ -84,7 +88,6 @@ public class GeneratorUtils { if (nodeTemplates == null) { return substitutionMapping; } - try { Map<String, List<String>> capabilitySubstitutionMapping = new HashMap<>(); Map<String, List<String>> requirementSubstitutionMapping = new HashMap<>(); @@ -96,54 +99,41 @@ public class GeneratorUtils { Map<String, Map<String, RequirementAssignment>> fullFilledRequirementsDefinition = new HashMap<>(); Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition = new HashMap<>(); Map<String, CapabilityDefinition> exposedCapabilitiesDefinition; - ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); for (Map.Entry<String, NodeTemplate> entry : nodeTemplates.entrySet()) { nodeTemplateId = entry.getKey(); nodeTemplate = entry.getValue(); nodeType = nodeTemplate.getType(); NodeType flatNodeType = (NodeType) toscaAnalyzerService - .getFlatEntity(ToscaElementTypes.NODE_TYPE, nodeType, - substitutionServiceTemplate, toscaServiceModel) - .getFlatEntity(); + .getFlatEntity(ToscaElementTypes.NODE_TYPE, nodeType, substitutionServiceTemplate, toscaServiceModel).getFlatEntity(); // get requirements - nodeTypeRequirementsDefinition = - getNodeTypeRequirements(flatNodeType, nodeTemplateId, substitutionServiceTemplate, - requirementSubstitutionMapping); + nodeTypeRequirementsDefinition = getNodeTypeRequirements(flatNodeType, nodeTemplateId, substitutionServiceTemplate, + requirementSubstitutionMapping); nodeTemplateRequirementsAssignment = DataModelUtil.getNodeTemplateRequirements(nodeTemplate); fullFilledRequirementsDefinition.put(nodeTemplateId, nodeTemplateRequirementsAssignment); //set substitution node type requirements exposedRequirementsDefinition = toscaAnalyzerService - .calculateExposedRequirements(nodeTypeRequirementsDefinition, - nodeTemplateRequirementsAssignment); - - + .calculateExposedRequirements(nodeTypeRequirementsDefinition, nodeTemplateRequirementsAssignment); //Filter unsupported requirements Iterator<Map<String, RequirementDefinition>> iterator = exposedRequirementsDefinition.iterator(); while (iterator.hasNext()) { Map<String, RequirementDefinition> requirementDefinitionMap = iterator.next(); - for (Map.Entry<String, RequirementDefinition> requirementDefinitionEntry : requirementDefinitionMap - .entrySet()) { + for (Map.Entry<String, RequirementDefinition> requirementDefinitionEntry : requirementDefinitionMap.entrySet()) { String requirementKey = requirementDefinitionEntry.getKey(); if (!SUPPORTED_REQUIREMENTS.contains(requirementKey)) { iterator.remove(); } } } - addSubstitutionNodeTypeRequirements(substitutionNodeType, exposedRequirementsDefinition, - nodeTemplateId); + addSubstitutionNodeTypeRequirements(substitutionNodeType, exposedRequirementsDefinition, nodeTemplateId); //get capabilities - addNodeTypeCapabilitiesToSubMapping(nodeTypeCapabilitiesDefinition, capabilitySubstitutionMapping, - nodeType, nodeTemplateId, substitutionServiceTemplate, toscaServiceModel); + addNodeTypeCapabilitiesToSubMapping(nodeTypeCapabilitiesDefinition, capabilitySubstitutionMapping, nodeType, nodeTemplateId, + substitutionServiceTemplate, toscaServiceModel); } - exposedCapabilitiesDefinition = toscaAnalyzerService - .calculateExposedCapabilities(nodeTypeCapabilitiesDefinition, - fullFilledRequirementsDefinition); - + .calculateExposedCapabilities(nodeTypeCapabilitiesDefinition, fullFilledRequirementsDefinition); //Filter unsupported capabilities - Iterator<Map.Entry<String, CapabilityDefinition>> iterator = - exposedCapabilitiesDefinition.entrySet().iterator(); + Iterator<Map.Entry<String, CapabilityDefinition>> iterator = exposedCapabilitiesDefinition.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, CapabilityDefinition> capabilityDefinitionEntry = iterator.next(); //Expected Capability is of the format <capabilityId>_<componentName> @@ -152,7 +142,6 @@ public class GeneratorUtils { iterator.remove(); } } - DataModelUtil.setNodeTypeCapabilitiesDef(substitutionNodeType, exposedCapabilitiesDefinition); } catch (Exception ex) { return null; @@ -169,21 +158,19 @@ public class GeneratorUtils { * @param requirementSubstitutionMapping the requirement substitution mapping * @return the node type requirements */ - public static List<Map<String, RequirementDefinition>> getNodeTypeRequirements(NodeType flatNodeType, - String templateName, - ServiceTemplate serviceTemplate, - Map<String, List<String>> requirementSubstitutionMapping) { + public static List<Map<String, RequirementDefinition>> getNodeTypeRequirements(NodeType flatNodeType, String templateName, + ServiceTemplate serviceTemplate, + Map<String, List<String>> requirementSubstitutionMapping) { List<Map<String, RequirementDefinition>> requirementList = new ArrayList<>(); List<String> requirementMapping; if (flatNodeType.getRequirements() != null) { for (Map<String, RequirementDefinition> requirementMap : flatNodeType.getRequirements()) { for (Map.Entry<String, RequirementDefinition> requirementNodeEntry : requirementMap.entrySet()) { ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); - RequirementDefinition requirementNodeEntryValue = toscaExtensionYamlUtil.yamlToObject( - toscaExtensionYamlUtil.objectToYaml(requirementNodeEntry.getValue()), - RequirementDefinition.class); + RequirementDefinition requirementNodeEntryValue = toscaExtensionYamlUtil + .yamlToObject(toscaExtensionYamlUtil.objectToYaml(requirementNodeEntry.getValue()), RequirementDefinition.class); if (requirementNodeEntryValue.getOccurrences() == null) { - requirementNodeEntryValue.setOccurrences(new Object[] {1, 1}); + requirementNodeEntryValue.setOccurrences(new Object[]{1, 1}); } Map<String, RequirementDefinition> requirementDef = new HashMap<>(); requirementDef.put(requirementNodeEntry.getKey(), requirementNodeEntryValue); @@ -191,10 +178,9 @@ public class GeneratorUtils { requirementMapping = new ArrayList<>(); requirementMapping.add(templateName); requirementMapping.add(requirementNodeEntry.getKey()); - requirementSubstitutionMapping - .put(requirementNodeEntry.getKey() + "_" + templateName, requirementMapping); + requirementSubstitutionMapping.put(requirementNodeEntry.getKey() + "_" + templateName, requirementMapping); if (requirementNodeEntryValue.getNode() == null) { - requirementNodeEntryValue.setOccurrences(new Object[] {1, 1}); + requirementNodeEntryValue.setOccurrences(new Object[]{1, 1}); } } } @@ -203,18 +189,15 @@ public class GeneratorUtils { } private static void addNodeTypeCapabilitiesToSubMapping(Map<String, CapabilityDefinition> nodeTypeCapabilitiesDefinition, - Map<String, List<String>> capabilitySubstitutionMapping, - String type, String templateName, - ServiceTemplate substitutionServiceTemplate, - ToscaServiceModel toscaServiceModel) { + Map<String, List<String>> capabilitySubstitutionMapping, String type, String templateName, + ServiceTemplate substitutionServiceTemplate, ToscaServiceModel toscaServiceModel) { ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); - NodeType flatNodeType = (NodeType) toscaAnalyzerService.getFlatEntity(ToscaElementTypes.NODE_TYPE, type, - substitutionServiceTemplate, toscaServiceModel).getFlatEntity(); + NodeType flatNodeType = (NodeType) toscaAnalyzerService + .getFlatEntity(ToscaElementTypes.NODE_TYPE, type, substitutionServiceTemplate, toscaServiceModel).getFlatEntity(); String capabilityKey; List<String> capabilityMapping; if (flatNodeType.getCapabilities() != null) { - for (Map.Entry<String, CapabilityDefinition> capabilityNodeEntry : flatNodeType.getCapabilities() - .entrySet()) { + for (Map.Entry<String, CapabilityDefinition> capabilityNodeEntry : flatNodeType.getCapabilities().entrySet()) { capabilityKey = capabilityNodeEntry.getKey() + "_" + templateName; nodeTypeCapabilitiesDefinition.put(capabilityKey, capabilityNodeEntry.getValue().clone()); capabilityMapping = new ArrayList<>(); @@ -224,5 +207,4 @@ public class GeneratorUtils { } } } - } |