From 3e19dab2db3230de597030a28969b5b41135ec92 Mon Sep 17 00:00:00 2001 From: Ram Krishna Verma Date: Tue, 21 Jul 2020 15:19:48 -0400 Subject: Remove hpa decoder from policy/distribution Issue-ID: POLICY-2477 Change-Id: Iff4158e2322724265007d5a90459c3ebf62d3fc2 Signed-off-by: Ram Krishna Verma --- .../reception/decoding/hpa/Attribute.java | 52 --- .../reception/decoding/hpa/Content.java | 42 --- .../reception/decoding/hpa/Directive.java | 49 --- .../reception/decoding/hpa/ExtractFromNode.java | 363 --------------------- .../reception/decoding/hpa/FlavorFeature.java | 61 ---- .../reception/decoding/hpa/FlavorProperty.java | 83 ----- .../decoding/hpa/HpaFeatureAttribute.java | 71 ---- .../decoding/hpa/PolicyDecoderCsarHpa.java | 129 -------- .../hpa/PolicyDecoderCsarHpaParameters.java | 48 --- 9 files changed, 898 deletions(-) delete mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Attribute.java delete mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Content.java delete mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Directive.java delete mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/ExtractFromNode.java delete mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/FlavorFeature.java delete mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/FlavorProperty.java delete mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/HpaFeatureAttribute.java delete mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/PolicyDecoderCsarHpa.java delete mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/PolicyDecoderCsarHpaParameters.java (limited to 'plugins/reception-plugins/src/main/java/org/onap') diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Attribute.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Attribute.java deleted file mode 100644 index 37f79f6b..00000000 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Attribute.java +++ /dev/null @@ -1,52 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Intel. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.distribution.reception.decoding.hpa; - -import com.google.gson.annotations.SerializedName; - -/** - * The attribute acts an abstraction belonging to or characteristic of an directive. - * - * @author Libo Zhu (libo.zhu@intel.com) - */ -class Attribute { - @SerializedName(value = "attribute_name") - private String attributeName; - @SerializedName(value = "attribute_value") - private String attributeValue; - - public void setAttributeName(final String attributeName) { - this.attributeName = attributeName; - } - - public String getAttributeName() { - return attributeName; - } - - public void setAttributeValue(final String attributeValue) { - this.attributeValue = attributeValue; - } - - public String getAttributeValue() { - return attributeValue; - } -} - diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Content.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Content.java deleted file mode 100644 index a6e70bd9..00000000 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Content.java +++ /dev/null @@ -1,42 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Intel. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.distribution.reception.decoding.hpa; - -import java.util.ArrayList; -import java.util.List; -import lombok.Data; - -/** - * The content acts the high level abstraction which to be used by OOF to do Optimization. - * - * @author Libo Zhu (libo.zhu@intel.com) - */ -@Data -class Content { - private List scope = new ArrayList<>(); /* keep scope as empty for now */ - private List services = new ArrayList<>(); - private List resources = new ArrayList<>(); - private List geography = new ArrayList<>(); /* keep geography as empty for now */ - private String identity; - private List policyScope = new ArrayList<>(); - private String policyType = "Optimization"; - private List flavorFeatures = new ArrayList<>(); -} diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Directive.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Directive.java deleted file mode 100644 index 87889cc1..00000000 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/Directive.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Intel. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.distribution.reception.decoding.hpa; - -import java.util.ArrayList; -import java.util.List; - - -/** - * The attribute acts an abstraction to indicate OOF which supports two different Models (Heat and TOSCA), two areas are - * wrapped: in the VNFC level to indicate the flavor, in the hpa_feature level to contains specified information. - * - * @author Libo Zhu (libo.zhu@intel.com) - */ -class Directive { - private String type; - private List attributes = new ArrayList<>(); - - public void setType(final String type) { - this.type = type; - } - - public String getType() { - return type; - } - - public List getAttributes() { - return attributes; - } -} - diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/ExtractFromNode.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/ExtractFromNode.java deleted file mode 100644 index 8e3fffbb..00000000 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/ExtractFromNode.java +++ /dev/null @@ -1,363 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.distribution.reception.decoding.hpa; - -import com.google.common.collect.ImmutableMap; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import org.onap.policy.distribution.reception.decoding.PolicyDecodingException; -import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; -import org.onap.sdc.toscaparser.api.CapabilityAssignment; -import org.onap.sdc.toscaparser.api.CapabilityAssignments; -import org.onap.sdc.toscaparser.api.NodeTemplate; -import org.onap.sdc.toscaparser.api.RequirementAssignment; -import org.onap.sdc.toscaparser.api.RequirementAssignments; -import org.onap.sdc.toscaparser.api.elements.Metadata; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Extract concerned info from NodeTemplate, currently ONLY HPA Feature. - * - * @author Libo Zhu (libo.zhu@intel.com) - */ -public class ExtractFromNode { - - private static final Logger LOGGER = LoggerFactory.getLogger(ExtractFromNode.class); - - private static final String CONFIGURATION_VALUE = "configurationValue"; - private static final String VDU_TYPE = "tosca.nodes.nfv.Vdu.Compute"; - private static final String VDU_CP_TYPE = "tosca.nodes.nfv.VduCp"; - private static final String VIRTUAL_MEM_SIZE_PATH = "virtual_memory#virtual_mem_size"; - private static final String NUM_VIRTUAL_CPU_PATH = "virtual_cpu#num_virtual_cpu"; - private static final String CPU_ARCHITECTURE_PATH = "virtual_cpu#cpu_architecture"; - private static final String MEMORY_PAGE_SIZE_PATH = "virtual_memory#vdu_mem_requirements#memoryPageSize"; - private static final String NETWORK_INTERFACE_TYPE_PATH = - "virtual_network_interface_requirements#network_interface_requirements#interfaceType"; - private static final String NETWORK_PCI_PATH = - "virtual_network_interface_requirements#nic_io_requirements#logical_node_requirements"; - private static final String BASIC_CAPABILITIES_HPA_FEATURE = "basicCapabilities"; - private static final String HUGE_PAGES_HPA_FEATURE = "hugePages"; - private static final Map NETWORK_HPA_FEATURE_MAP = - ImmutableMap.of("SR-IOV", "sriovNICNetwork", "PCI-Passthrough", "pciePassthrough"); - private static final Pattern PATTERN = Pattern.compile("(\\D*)(\\d+)(\\D*)"); - private ISdcCsarHelper sdcCsarHelper; - final Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().disableHtmlEscaping().create(); - - public void setSdcCsarHelper(final ISdcCsarHelper sdcCsarHelper) { - this.sdcCsarHelper = sdcCsarHelper; - } - - /** - * ExtractInfo from VNF , each VNF may includes more than one VDUs and CPs return new - * generated OptimizationPolicy if it has got Hpa feature info or else return null. - * - * @param node the NodeTemplate - * - * @return the extracted info from input node - * - * @throws PolicyDecodingException if extract fails - */ - public Content extractInfo(final NodeTemplate node) throws PolicyDecodingException { - final Metadata metaData = sdcCsarHelper.getNodeTemplateMetadata(node); - final Metadata metaDataOfService = sdcCsarHelper.getServiceMetadata(); - LOGGER.debug("the meta data of this nodetemplate = {}", metaData); - final List lnodeChild = sdcCsarHelper.getNodeTemplateChildren(node); - LOGGER.debug("the size of lnodeChild = {}", lnodeChild.size()); - - // Store all the VDUs under one VNF - final List lnodeVdu = new ArrayList<>(); - // Store all the Cps under one VNF - final List lnodeVduCp = new ArrayList<>(); - for (final NodeTemplate nodeChild : lnodeChild) { - final String type = sdcCsarHelper.getTypeOfNodeTemplate(nodeChild); - LOGGER.debug("the type of this nodeChild = {}", type); - LOGGER.debug("the meta data of this nodeChild = {}", sdcCsarHelper.getNodeTemplateMetadata(nodeChild)); - if (type.equalsIgnoreCase(VDU_TYPE)) { - lnodeVdu.add(nodeChild); - } else if (type.equalsIgnoreCase(VDU_CP_TYPE)) { - lnodeVduCp.add(nodeChild); - } - } - LOGGER.debug("the size of vdu is = {}", lnodeVdu.size()); - LOGGER.debug("the size of cp is = {}", lnodeVduCp.size()); - - final Content content = new Content(); - content.getResources().add(metaData.getValue("name")); - content.getServices().add(metaDataOfService.getValue("name")); - content.setIdentity(content.getPolicyType() + "_" + metaData.getValue("name")); - extractInfoVdu(lnodeVdu, content); - extractInfoVduCp(lnodeVduCp, content); - if (content.getFlavorFeatures().isEmpty()) { - return null; - } - return content; - } - - - /** - * ExtractInfofromVdu, supported hpa features, All under the capability of - * tosca.nodes.nfv.Vdu.Compute. - * - * @param lnodeVdu the list of Vdu node - * - * @param content to be change based on lnodeVdu - */ - public void extractInfoVdu(final List lnodeVdu, final Content content) { - // each VDU <=> FlavorFeature - for (final NodeTemplate node : lnodeVdu) { - final Attribute flavorAttribute = new Attribute(); - flavorAttribute.setAttributeName("flavorName"); - flavorAttribute.setAttributeValue(""); - final Directive flavorDirective = new Directive(); - flavorDirective.setType("flavor_directives"); - flavorDirective.getAttributes().add(flavorAttribute); - final FlavorFeature flavorFeature = new FlavorFeature(); - flavorFeature.setId(node.toString()); - LOGGER.debug("the name of node = {}", node); - flavorFeature.getDirectives().add(flavorDirective); - - final CapabilityAssignments capabilityAssignments = sdcCsarHelper.getCapabilitiesOf(node); - final CapabilityAssignment capabilityAssignment = - capabilityAssignments.getCapabilityByName("virtual_compute"); - if (capabilityAssignment != null) { - generateBasicCapability(capabilityAssignment, flavorFeature); - generateHugePages(capabilityAssignment, flavorFeature); - } - content.getFlavorFeatures().add(flavorFeature); - } - } - - /** - * GenerateBasicCapability, supported hpa features, All under the capability of - * tosca.nodes.nfv.Vdu.Compute. - * - * @param capabilityAssignment represents the capability of node - * - * @param flavorFeature represents all the features of specified flavor - */ - private void generateBasicCapability(final CapabilityAssignment capabilityAssignment, - final FlavorFeature flavorFeature) { - // the format is xxx MB/GB like 4096 MB - final String virtualMemSize = - sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, VIRTUAL_MEM_SIZE_PATH); - if (virtualMemSize != null) { - LOGGER.debug("the virtualMemSize = {}", virtualMemSize); - final HpaFeatureAttribute hpaFeatureAttribute = - generateHpaFeatureAttribute("virtualMemSize", virtualMemSize); - final FlavorProperty flavorProperty = new FlavorProperty(); - flavorProperty.setHpaFeature(BASIC_CAPABILITIES_HPA_FEATURE); - flavorProperty.getHpaFeatureAttributes().add(hpaFeatureAttribute); - flavorFeature.getFlavorProperties().add(flavorProperty); - } - - // the format is int like 2 - final String numVirtualCpu = - sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, NUM_VIRTUAL_CPU_PATH); - if (numVirtualCpu != null) { - LOGGER.debug("the numVirtualCpu = {}", numVirtualCpu); - final HpaFeatureAttribute hpaFeatureAttribute = generateHpaFeatureAttribute("numVirtualCpu", numVirtualCpu); - final String cpuArchitecture = - sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, CPU_ARCHITECTURE_PATH); - final FlavorProperty flavorProperty = new FlavorProperty(); - flavorProperty.setHpaFeature(BASIC_CAPABILITIES_HPA_FEATURE); - if (cpuArchitecture != null) { - flavorProperty.setArchitecture(cpuArchitecture); - } - flavorProperty.getHpaFeatureAttributes().add(hpaFeatureAttribute); - flavorFeature.getFlavorProperties().add(flavorProperty); - } - } - - /** - * GenerateHpaFeatureAttribute based on the value of featureValue. the format: - * "hpa-attribute-key": "pciVendorId", "hpa-attribute-value": "1234", "operator": "=", - * "unit": "xxx". - * - * @param hpaAttributeKey get from the high layer tosca DM - * - * @param featureValue get from the high layer tosca DM - * - */ - private HpaFeatureAttribute generateHpaFeatureAttribute(final String hpaAttributeKey, final String featureValue) { - // based on input featureValue, return back a suitable hpaFeatureAttribute - final HpaFeatureAttribute hpaFeatureAttribute = new HpaFeatureAttribute(); - hpaFeatureAttribute.setHpaAttributeKey(hpaAttributeKey); - final String modifiedValue = featureValue.replace(" ", ""); - final Matcher matcher = PATTERN.matcher(modifiedValue); - if (matcher.find()) { - final String matcher1 = matcher.group(1); - final String matcher2 = matcher.group(2); - final String matcher3 = matcher.group(3); - LOGGER.debug("operator {} , value = {} , unit = {}", matcher1, matcher2, matcher3); - if (matcher.group(1).length() == 0) { - hpaFeatureAttribute.setOperator("="); - } else { - hpaFeatureAttribute.setOperator(matcher1); - } - hpaFeatureAttribute.setHpaAttributeValue(matcher2); - hpaFeatureAttribute.setUnit(matcher3); - } - return hpaFeatureAttribute; - } - - /** - * GenerateHugePages, supported hpa features, All under the capability of - * tosca.nodes.nfv.Vdu.Compute. The format is a map like: {"schemaVersion": "0", - * "schemaSelector": "", "hardwarePlatform": "generic", "mandatory": "true", - * "configurationValue": "2 MB"} - * - * @param capabilityAssignment represents the capability of node - * - * @param flavorFeature represents all the features of specified flavor - */ - private void generateHugePages(final CapabilityAssignment capabilityAssignment, final FlavorFeature flavorFeature) { - final String memoryPageSize = - sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, MEMORY_PAGE_SIZE_PATH); - LOGGER.debug("the memoryPageSize = {}", memoryPageSize); - if (memoryPageSize != null) { - final Map retMap = - gson.fromJson(memoryPageSize, new TypeToken>() {}.getType()); - LOGGER.debug("the retMap = {}", retMap); - final String memoryPageSizeValue = retMap.get(CONFIGURATION_VALUE); - final String mandatory = retMap.get("mandatory"); - if (memoryPageSizeValue == null) { - return; - } - final HpaFeatureAttribute hpaFeatureAttribute = - generateHpaFeatureAttribute("memoryPageSize", memoryPageSizeValue); - final FlavorProperty flavorProperty = new FlavorProperty(); - flavorProperty.setHpaFeature(HUGE_PAGES_HPA_FEATURE); - if (mandatory != null) { - flavorProperty.setMandatory(mandatory); - } - flavorProperty.getHpaFeatureAttributes().add(hpaFeatureAttribute); - flavorFeature.getFlavorProperties().add(flavorProperty); - } - } - - /** - * ExtractInfoVduCp, supported hpa features, under the - * virtual_network_interface_requirements of tosca.nodes.nfv.VduCp. - * - * @param lnodeVduCp the list of VduCp node - * - * @param content to be change based on lnodeVduCp - * @throws PolicyDecodingException if extract CP fails - */ - public void extractInfoVduCp(final List lnodeVduCp, final Content content) - throws PolicyDecodingException { - // each CP will binds to a VDU so need the vdu flavor map info. - final Map vduFlavorMap = new HashMap<>(); - for (final FlavorFeature flavorFeature : content.getFlavorFeatures()) { - LOGGER.debug("the id = {}", flavorFeature.getId()); - vduFlavorMap.put(flavorFeature.getId(), flavorFeature); - } - parseNodeVduCp(lnodeVduCp, vduFlavorMap); - } - - /** - * Parse the VduCp list. - * - * @param lnodeVduCp the lnodeVduCp - * @param vduFlavorMap the vduFlavorMap - * @throws PolicyDecodingException if any error occurs - */ - private void parseNodeVduCp(final List lnodeVduCp, final Map vduFlavorMap) - throws PolicyDecodingException { - for (final NodeTemplate node : lnodeVduCp) { - final String interfaceType = - sdcCsarHelper.getNodeTemplatePropertyLeafValue(node, NETWORK_INTERFACE_TYPE_PATH); - LOGGER.debug("the interfaceType = {}", interfaceType); - Map retMap = new HashMap<>(); - if (interfaceType != null) { - retMap = gson.fromJson(interfaceType, new TypeToken>() {}.getType()); - LOGGER.debug("the retMap = {}", retMap); - } - - String networkHpaFeature; - if (retMap.containsKey(CONFIGURATION_VALUE) - && NETWORK_HPA_FEATURE_MAP.containsKey(retMap.get(CONFIGURATION_VALUE).toString())) { - final String interfaceTypeValue = retMap.get(CONFIGURATION_VALUE).toString(); - networkHpaFeature = NETWORK_HPA_FEATURE_MAP.get(interfaceTypeValue); - LOGGER.debug(" the networkHpaFeature is = {}", networkHpaFeature); - } else { - LOGGER.debug(" no networkHpaFeature defined in interfaceType"); - continue; - } - - final RequirementAssignments requriements = - sdcCsarHelper.getRequirementsOf(node).getRequirementsByName("virtual_binding"); - for (final RequirementAssignment requriement : requriements.getAll()) { - final String nodeTemplateName = requriement.getNodeTemplateName(); - LOGGER.debug("getNodeTemplateName = {}", nodeTemplateName); - if (nodeTemplateName == null) { - continue; - } - if (!vduFlavorMap.containsKey(nodeTemplateName)) { - throw new PolicyDecodingException("vdu Flavor Map should contains the key " + nodeTemplateName); - } - generateNetworkFeature(networkHpaFeature, node, vduFlavorMap.get(nodeTemplateName)); - } - } - } - - /** - * GenerateNetworkFeature, all pci feature are grouped into FlavorFeature together. - * The format is a map like: {"schemaVersion": "0", "schemaSelector": "", - * "hardwarePlatform": "generic", "mandatory": "true", "configurationValue": "2 MB"} - * - * @param networkHpaFeature represents the specified Hpa feature - * @param node represents the CP Node - * @param flavorFeature represents all the features of specified flavor - */ - private void generateNetworkFeature(final String networkHpaFeature, final NodeTemplate node, - final FlavorFeature flavorFeature) { - final FlavorProperty flavorProperty = new FlavorProperty(); - flavorProperty.setHpaFeature(networkHpaFeature); - final String[] pciKeys = {"pciVendorId", "pciDeviceId", "pciNumDevices", "physicalNetwork"}; - for (final String pciKey : pciKeys) { - LOGGER.debug("the pciKey = {}", pciKey); - final String pciKeyPath = NETWORK_PCI_PATH + "#" + pciKey; - final String pciValue = sdcCsarHelper.getNodeTemplatePropertyLeafValue(node, pciKeyPath); - if (pciValue != null) { - LOGGER.debug("the pciValue = {}", pciValue); - final Map retMap = - gson.fromJson(pciValue, new TypeToken>() {}.getType()); - final String pciConfigValue = retMap.get(CONFIGURATION_VALUE); - if (pciConfigValue == null) { - return; - } - final HpaFeatureAttribute hpaFeatureAttribute = generateHpaFeatureAttribute(pciKey, pciConfigValue); - flavorProperty.getHpaFeatureAttributes().add(hpaFeatureAttribute); - } - } - flavorFeature.getFlavorProperties().add(flavorProperty); - } -} diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/FlavorFeature.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/FlavorFeature.java deleted file mode 100644 index 75643a72..00000000 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/FlavorFeature.java +++ /dev/null @@ -1,61 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Intel. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.distribution.reception.decoding.hpa; - -import java.util.ArrayList; -import java.util.List; - -/** - * The FlavorFeature includes all the specified flavor infos used in multicloud, it represents one VDU of TOSCA. - * - * @author Libo Zhu (libo.zhu@intel.com) - */ -class FlavorFeature { - private String id; - private String type = "tosca.nodes.nfv.Vdu.Compute"; - private List directives = new ArrayList<>(); - private List flavorProperties = new ArrayList<>(); - - public void setId(final String id) { - this.id = id; - } - - public String getId() { - return id; - } - - public void setType(final String type) { - this.type = type; - } - - public String getType() { - return type; - } - - public List getFlavorProperties() { - return flavorProperties; - } - - public List getDirectives() { - return directives; - } -} - diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/FlavorProperty.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/FlavorProperty.java deleted file mode 100644 index d92d9edb..00000000 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/FlavorProperty.java +++ /dev/null @@ -1,83 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Intel. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.distribution.reception.decoding.hpa; - -import com.google.gson.annotations.SerializedName; -import java.util.ArrayList; -import java.util.List; - -/** - * The FlavorProperty includes all the properties of Flavor. - * - * @author Libo Zhu (libo.zhu@intel.com) - */ -class FlavorProperty { - @SerializedName(value = "hpa-feature") - private String hpaFeature; - private String mandatory = "True"; - private String architecture = "generic"; - @SerializedName(value = "hpa-version") - private String hpaVersion = "v1"; - private List directives = new ArrayList<>(); - @SerializedName(value = "hpa-feature-attributes") - private List hpaFeatureAttributes = new ArrayList<>(); - - public void setHpaFeature(final String hpaFeature) { - this.hpaFeature = hpaFeature; - } - - public String getHpaFeature() { - return hpaFeature; - } - - public void setMandatory(final String mandatory) { - this.mandatory = mandatory; - } - - public String getMandatory() { - return mandatory; - } - - public void setArchitecture(final String architecture) { - this.architecture = architecture; - } - - public String getArchitecture() { - return architecture; - } - - public void setHpaVersion(final String hpaVersion) { - this.hpaVersion = hpaVersion; - } - - public String getHpaVersion() { - return hpaVersion; - } - - public List getDirectives() { - return directives; - } - - public List getHpaFeatureAttributes() { - return hpaFeatureAttributes; - } -} - diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/HpaFeatureAttribute.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/HpaFeatureAttribute.java deleted file mode 100644 index 8bb078ad..00000000 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/HpaFeatureAttribute.java +++ /dev/null @@ -1,71 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Intel. 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.distribution.reception.decoding.hpa; - -import com.google.gson.annotations.SerializedName; - -/** - * The HpaFeatureAttribute represents a way to provide match expression. - * - * @author Libo Zhu (libo.zhu@intel.com) - */ -class HpaFeatureAttribute { - @SerializedName(value = "hpa-attribute-key") - private String hpaAttributeKey; - @SerializedName(value = "hpa-attribute-value") - private String hpaAttributeValue; - private String operator; - private String unit; - - public void setHpaAttributeKey(final String hpaAttributeKey) { - this.hpaAttributeKey = hpaAttributeKey; - } - - public String getHpaAttributeKey() { - return hpaAttributeKey; - } - - public void setHpaAttributeValue(final String hpaAttributeValue) { - this.hpaAttributeValue = hpaAttributeValue; - } - - public String getHpaAttributeValue() { - return hpaAttributeValue; - } - - public void setOperator(final String operator) { - this.operator = operator; - } - - public String getOperator() { - return operator; - } - - public void setUnit(final String unit) { - this.unit = unit; - } - - public String getUnit() { - return unit; - } -} - - diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/PolicyDecoderCsarHpa.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/PolicyDecoderCsarHpa.java deleted file mode 100644 index 5bfb0198..00000000 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/PolicyDecoderCsarHpa.java +++ /dev/null @@ -1,129 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * Modifications Copyright (C) 2020 AT&T Inc. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.distribution.reception.decoding.hpa; - -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import org.onap.policy.common.parameters.ParameterService; -import org.onap.policy.distribution.model.Csar; -import org.onap.policy.distribution.model.PolicyInput; -import org.onap.policy.distribution.reception.decoding.PolicyDecoder; -import org.onap.policy.distribution.reception.decoding.PolicyDecodingException; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; -import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; -import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate; -import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; -import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory; -import org.onap.sdc.toscaparser.api.NodeTemplate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Decodes PDP-X policies from a CSAR file and creates ToscaServiceTemplate for Policy Lifecycle API's. - */ -public class PolicyDecoderCsarHpa implements PolicyDecoder { - - private static final Logger LOGGER = LoggerFactory.getLogger(PolicyDecoderCsarHpa.class); - // - // This is initialized in configure() but then never used here - // - @SuppressWarnings("unused") - private PolicyDecoderCsarHpaParameters decoderParameters; - - public static final String TOSCA_POLICY_SCOPE = "scope"; - public static final String TOSCA_POLICY_SERVICES = "services"; - public static final String TOSCA_POLICY_RESOURCES = "resources"; - public static final String TOSCA_POLICY_IDENTITY = "identity"; - public static final String TOSCA_POLICY_FLAVORFEATURES = "flavorfeatures"; - - public static final String TOSCA_POLICY_HPA_OOF = "Optimization"; - - @Override - public Collection decode(final Csar csar) throws PolicyDecodingException { - final List entities = new ArrayList<>(); - final ISdcCsarHelper sdcCsarHelper = parseCsar(csar); - final List lnodeVf = sdcCsarHelper.getServiceVfList(); - LOGGER.debug("the size of Vf = {}", lnodeVf.size()); - final ExtractFromNode extractFromNode = new ExtractFromNode(); - extractFromNode.setSdcCsarHelper(sdcCsarHelper); - final String serviceName = sdcCsarHelper.getServiceMetadata().getValue("name"); - LOGGER.debug("the name of the service = {}", serviceName); - for (final NodeTemplate node : lnodeVf) { - final Content content = extractFromNode.extractInfo(node); - if (content != null) { - final ToscaServiceTemplate entity = new ToscaServiceTemplate(); - Map props = new LinkedHashMap<>(); - props.put(TOSCA_POLICY_SCOPE, content.getScope()); - props.put(TOSCA_POLICY_SERVICES, content.getServices()); - props.put(TOSCA_POLICY_RESOURCES, content.getResources()); - props.put(TOSCA_POLICY_IDENTITY, content.getIdentity()); - props.put(TOSCA_POLICY_FLAVORFEATURES, content.getFlavorFeatures()); - ToscaPolicy policy = new ToscaPolicy(); - policy.setProperties(props); - Map map = new LinkedHashMap<>(); - String type = content.getPolicyType(); - map.put(type, policy); - List> policies = new ArrayList<>(); - policies.add(map); - ToscaTopologyTemplate topologyTemplate = new ToscaTopologyTemplate(); - topologyTemplate.setPolicies(policies); - entity.setToscaTopologyTemplate(topologyTemplate); - entities.add(entity); - } - } - return entities; - } - - @Override - public boolean canHandle(final PolicyInput policyInput) { - return Csar.class.isAssignableFrom(policyInput.getClass()); - } - - /** - * Parse the input Csar using SDC TOSCA parser. - * - * @param csar represents the service TOSCA Csar - * @return the object to represents the content of input csar - * @throws PolicyDecodingException if parse fails - */ - public ISdcCsarHelper parseCsar(final Csar csar) throws PolicyDecodingException { - ISdcCsarHelper sdcCsarHelper; - try { - final SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance(); - LOGGER.debug("Csar File Path = {}", csar.getCsarPath()); - final File csarFile = new File(csar.getCsarPath()); - sdcCsarHelper = factory.getSdcCsarHelper(csarFile.getAbsolutePath()); - } catch (final Exception exp) { - throw new PolicyDecodingException("Failed passing the csar file", exp); - } - return sdcCsarHelper; - } - - @Override - public void configure(final String parameterGroupName) { - decoderParameters = ParameterService.get(parameterGroupName); - } -} diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/PolicyDecoderCsarHpaParameters.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/PolicyDecoderCsarHpaParameters.java deleted file mode 100644 index 1929c72f..00000000 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/hpa/PolicyDecoderCsarHpaParameters.java +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Intel. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.distribution.reception.decoding.hpa; - -import lombok.Getter; -import org.onap.policy.common.parameters.annotations.NotBlank; -import org.onap.policy.common.parameters.annotations.NotNull; -import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup; - -/** - * This class handles the parameters needed for {@link PolicyDecoderCsarHpa}. - */ -@Getter -@NotNull -@NotBlank -public class PolicyDecoderCsarHpaParameters extends PolicyDecoderConfigurationParameterGroup { - - private String policyNamePrefix; - private String onapName; - private String version; - private String priority; - private String riskType; - private String riskLevel; - - public PolicyDecoderCsarHpaParameters() { - super(PolicyDecoderCsarHpaParameters.class.getSimpleName()); - } -} - -- cgit 1.2.3-korg