diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/CeilometerEnricher.java')
-rw-r--r-- | openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/CeilometerEnricher.java | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/CeilometerEnricher.java b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/CeilometerEnricher.java new file mode 100644 index 0000000000..eb79787b59 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-enrichment-lib/openecomp-sdc-enrichment-impl/src/main/java/org/openecomp/sdc/enrichment/impl/tosca/CeilometerEnricher.java @@ -0,0 +1,112 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.enrichment.impl.tosca; + +import org.apache.commons.collections4.MapUtils; +import org.openecomp.core.enrichment.types.CeilometerInfo; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import org.openecomp.sdc.enrichment.EnrichmentInfo; +import org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType; +import org.openecomp.sdc.tosca.datatypes.ToscaElementTypes; +import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; +import org.openecomp.sdc.tosca.datatypes.model.CapabilityDefinition; +import org.openecomp.sdc.tosca.datatypes.model.CapabilityType; +import org.openecomp.sdc.tosca.datatypes.model.NodeType; +import org.openecomp.sdc.tosca.services.ToscaAnalyzerService; +import org.openecomp.sdc.tosca.services.ToscaUtil; +import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl; +import org.openecomp.sdc.translator.services.heattotosca.globaltypes.CommonGlobalTypes; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class CeilometerEnricher { + /** + * Enrich map. + * + * @param toscaModel the tosca model + * @param modelNodeType the model node type + * @param input the input + * @return the map + */ + public static Map<String, List<ErrorMessage>> enrich(ToscaServiceModel toscaModel, + Map<String, List<NodeType>> modelNodeType, + EnrichmentInfo input) { + Map<String, List<ErrorMessage>> errors = new HashMap<>(); + input.getEntityInfo().entrySet().stream().forEach( + entry -> enrichNodeType(toscaModel, (ComponentInfo) entry.getValue(), + modelNodeType.get(entry.getKey()))); + + return errors; + } + + private static void enrichNodeType(ToscaServiceModel toscaModel, ComponentInfo componentInfo, + List<NodeType> nodeTypes) { + + for (CeilometerInfo ceilometerInfo : componentInfo.getCeilometerInfo() + .getCeilometerInfoList()) { + String capabilityId = ceilometerInfo.getName(); + + Map<String, Object> properties = getCeilometerProperties(ceilometerInfo); + + //CapabilityType capabilityType = CommonGlobalTypes.createServiceTemplate() + // .getCapability_types(). + // get(ToscaCapabilityType.METRIC_CEILOMETER.getDisplayName()); + //CapabilityType metricCapabilityType = CommonGlobalTypes.createServiceTemplate(). + // getCapability_types().get(ToscaCapabilityType.METRIC.getDisplayName()); + ToscaAnalyzerService toscaAnalyzerService = new ToscaAnalyzerServiceImpl(); + CapabilityType capabilityType = (CapabilityType) toscaAnalyzerService + .getFlatEntity(ToscaElementTypes.CAPABILITY_TYPE, + ToscaCapabilityType.METRIC_CEILOMETER.getDisplayName(), + CommonGlobalTypes.createServiceTemplate(), toscaModel); + + + nodeTypes.stream().forEach(nodeType -> + addCapability(nodeType, capabilityId, ToscaUtil + .convertTypeToDefinition(ToscaCapabilityType.METRIC_CEILOMETER.getDisplayName(), + capabilityType, properties, ceilometerInfo.getDescription()))); + } + } + + private static Map<String, Object> getCeilometerProperties(CeilometerInfo ceilometerInfo) { + Map<String, Object> properties = new HashMap<>(); + properties.put("name", ceilometerInfo.getName()); + properties.put("type", ceilometerInfo.getType()); + properties.put("unit", ceilometerInfo.getUnit()); + if (ceilometerInfo.getCategory() != null) { + properties.put("category", ceilometerInfo.getCategory()); + } + return properties; + } + + private static void addCapability(NodeType nodeType, String capabilityId, + CapabilityDefinition capabilityDefinition) { + if (MapUtils.isEmpty(nodeType.getCapabilities())) { + nodeType.setCapabilities(new HashMap<>()); + } + //clean unnecessary info + capabilityDefinition.setAttributes(null); + capabilityDefinition.setOccurrences(null); + + nodeType.getCapabilities().put(capabilityId, capabilityDefinition); + } +} |