diff options
Diffstat (limited to 'plugins/reception-plugins/src/main')
3 files changed, 147 insertions, 127 deletions
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ExtractFromNode.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ExtractFromNode.java index 7c839a28..d60aa113 100644 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ExtractFromNode.java +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ExtractFromNode.java @@ -20,15 +20,17 @@ package org.onap.policy.distribution.reception.decoding.pdpx; +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.HashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.reflect.TypeToken; import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; @@ -38,7 +40,6 @@ 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.elements.Metadata; /** * Extract concerned info from NodeTemplate, currently ONLY HPA Feature. @@ -47,6 +48,7 @@ import org.onap.sdc.toscaparser.api.elements.Metadata; */ public class ExtractFromNode { + private static final String CONFIGURATION_VALUE = "configuration-value"; private static final Logger LOGGER = FlexLogger.getLogger(ExtractFromNode.class); private static final String VDU_TYPE = "tosca.nodes.nfv.Vdu.Compute"; private static final String VDU_CP_TYPE = "tosca.nodes.nfv.VduCp"; @@ -54,18 +56,15 @@ public class ExtractFromNode { 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_memory_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"; + 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"; private static final String BASIC_CAPABILITIES_HPA_FEATURE = "BasicCapabilities"; private static final String HUGE_PAGES_HPA_FEATURE = "hugePages"; - private static final Map<String, String> NETWORK_HPA_FEATURE_MAP = new HashMap() {{ - put("SR-IOV", "SriovNICNetwork"); - put("PCI-Passthrough", "pciePassthrough"); - }}; + private static final Map<String, String> NETWORK_HPA_FEATURE_MAP = + ImmutableMap.of("SR-IOV", "SriovNICNetwork", "PCI-Passthrough", "pciePassthrough"); - ISdcCsarHelper sdcCsarHelper; + private ISdcCsarHelper sdcCsarHelper; final Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().disableHtmlEscaping().create(); public void setSdcCsarHelper(final ISdcCsarHelper sdcCsarHelper) { @@ -73,13 +72,13 @@ public class ExtractFromNode { } /** - * ExtractInfo from VNF , each VNF may includes more than one VDUs and CPs return new generated - * PdpxPolicy if it has got Hpa feature info or else return null. + * ExtractInfo from VNF , each VNF may includes more than one VDUs and CPs return new generated PdpxPolicy 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 { @@ -95,7 +94,7 @@ public class ExtractFromNode { 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 nodetemplate = " + sdcCsarHelper.getNodeTemplateMetadata(nodeChild)); + 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)) { @@ -111,17 +110,15 @@ public class ExtractFromNode { if (content.getFlavorFeatures().isEmpty()) { return null; } - return content; } /** - * ExtractInfofromVdu, supported hpa features, All under the capability of - * tosca.nodes.nfv.Vdu.Compute. + * 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<NodeTemplate> lnodeVdu, final Content content) { @@ -142,42 +139,43 @@ public class ExtractFromNode { capabilityAssignments.getCapabilityByName("virtual_compute"); if (capabilityAssignment != null) { generateBasicCapability(capabilityAssignment, flavorFeature); - generateHugePages(capabilityAssignment,flavorFeature); + generateHugePages(capabilityAssignment, flavorFeature); } content.getFlavorFeatures().add(flavorFeature); } } /** - * GenerateBasicCapability, supported hpa features, All under the capability of - * tosca.nodes.nfv.Vdu.Compute. + * 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, FlavorFeature flavorFeature){ - //the format is xxx MB/GB like 4096 MB - String virtualMemSize = sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, - VIRTUAL_MEM_SIZE_PATH); + 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); - HpaFeatureAttribute hpaFeatureAttribute = generateHpaFeatureAttribute("virtualMemSize", virtualMemSize); - FlavorProperty flavorProperty = new FlavorProperty(); + 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 - String numVirtualCpu = sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, - NUM_VIRTUAL_CPU_PATH); + + // the format is int like 2 + final String numVirtualCpu = + sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, NUM_VIRTUAL_CPU_PATH); if (numVirtualCpu != null) { LOGGER.debug("the numVirtualCpu = " + numVirtualCpu); - HpaFeatureAttribute hpaFeatureAttribute = generateHpaFeatureAttribute("numVirtualCpu", numVirtualCpu); - String cpuArchitecture = sdcCsarHelper.getCapabilityPropertyLeafValue - (capabilityAssignment,CPU_ARCHITECTURE_PATH); - FlavorProperty flavorProperty = new FlavorProperty(); + 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); @@ -188,17 +186,16 @@ public class ExtractFromNode { } /** - * GenerateHpaFeatureAttribute based on the value of featureValue. the format: - * "hpa-attribute-key": "pciVendorId", "hpa-attribute-value": "1234", "operator": "=", "unit": - * "xxx". + * 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 + // based on input featureValue, return back a suitable hpaFeatureAttribute final HpaFeatureAttribute hpaFeatureAttribute = new HpaFeatureAttribute(); hpaFeatureAttribute.setHpaAttributeKey(hpaAttributeKey); final String tmp = featureValue.replace(" ", ""); @@ -217,28 +214,27 @@ public class ExtractFromNode { } /** - * GenerateHugePages, supported hpa features, All under the capability of - * tosca.nodes.nfv.Vdu.Compute. The format is a map like: {"schema-version": "0", - * "schema-location": "", "platform-id": "generic", "mandatory": true, "configuration-value": "2 - * MB"} + * GenerateHugePages, supported hpa features, All under the capability of tosca.nodes.nfv.Vdu.Compute. The format is + * a map like: {"schema-version": "0", "schema-location": "", "platform-id": "generic", "mandatory": true, + * "configuration-value": "2 MB"} * * @param capabilityAssignment represents the capability of node - * + * * @param flavorFeature represents all the features of specified flavor */ - private void generateHugePages(final CapabilityAssignment capabilityAssignment, FlavorFeature flavorFeature){ - String memoryPageSize = sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment, - MEMORY_PAGE_SIZE_PATH); + 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) { - Map<String, Object> retMap = gson.fromJson(memoryPageSize, - new TypeToken<HashMap<String, Object>>() {}.getType()); + final Map<String, Object> retMap = + gson.fromJson(memoryPageSize, new TypeToken<HashMap<String, Object>>() {}.getType()); LOGGER.debug("the retMap = " + retMap); - String memoryPageSizeValue = retMap.get("configuration-value").toString(); - String mandatory = retMap.get("mandatory").toString(); - HpaFeatureAttribute hpaFeatureAttribute = - generateHpaFeatureAttribute("memoryPageSize",memoryPageSizeValue); - FlavorProperty flavorProperty = new FlavorProperty(); + final String memoryPageSizeValue = retMap.get(CONFIGURATION_VALUE).toString(); + final String mandatory = retMap.get("mandatory").toString(); + final HpaFeatureAttribute hpaFeatureAttribute = + generateHpaFeatureAttribute("memoryPageSize", memoryPageSizeValue); + final FlavorProperty flavorProperty = new FlavorProperty(); flavorProperty.setHpaFeature(HUGE_PAGES_HPA_FEATURE); if (mandatory != null) { flavorProperty.setMandatory(mandatory); @@ -253,78 +249,82 @@ public class ExtractFromNode { * 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<NodeTemplate> lnodeVduCp, Content content) throws PolicyDecodingException { + public void extractInfoVduCp(final List<NodeTemplate> lnodeVduCp, final Content content) + throws PolicyDecodingException { // each CP will binds to a VDU so need the vdu flavor map info. - Map<String, FlavorFeature> vduFlavorMap = new HashMap<>(); - for ( FlavorFeature flavorFeature: content.getFlavorFeatures()) { + final Map<String, FlavorFeature> vduFlavorMap = new HashMap<>(); + for (final FlavorFeature flavorFeature : content.getFlavorFeatures()) { LOGGER.debug("the id = " + flavorFeature.getId()); - vduFlavorMap.put(flavorFeature.getId(),flavorFeature); + vduFlavorMap.put(flavorFeature.getId(), flavorFeature); } - for ( NodeTemplate node : lnodeVduCp) { - String interfaceType = sdcCsarHelper.getNodeTemplatePropertyLeafValue(node,NETWORK_INTERFACE_TYPE_PATH); - LOGGER.debug("the interfaceType = " + interfaceType); + for (final NodeTemplate node : lnodeVduCp) { + final String interfaceType = + sdcCsarHelper.getNodeTemplatePropertyLeafValue(node, NETWORK_INTERFACE_TYPE_PATH); + LOGGER.debug("the interfaceType = " + interfaceType); Map<String, Object> retMap = new HashMap<>(); if (interfaceType != null) { retMap = gson.fromJson(interfaceType, new TypeToken<HashMap<String, Object>>() {}.getType()); LOGGER.debug("the retMap = " + retMap); } - String networkHpaFeature; - if ( retMap.containsKey("configuration-value")) { - String interfaceTypeValue = retMap.get("configuration-value").toString(); + String networkHpaFeature; + if (retMap.containsKey(CONFIGURATION_VALUE)) { + final String interfaceTypeValue = retMap.get(CONFIGURATION_VALUE).toString(); LOGGER.debug(" the interfacetype value is =" + interfaceTypeValue); - if ( NETWORK_HPA_FEATURE_MAP.containsKey(interfaceTypeValue)) { + if (NETWORK_HPA_FEATURE_MAP.containsKey(interfaceTypeValue)) { networkHpaFeature = NETWORK_HPA_FEATURE_MAP.get(interfaceTypeValue); LOGGER.debug(" the networkHpaFeature is =" + networkHpaFeature); } else { LOGGER.debug(" unspported network interface "); return; } - }else{ + } else { LOGGER.debug(" no configuration-value defined in interfaceType"); return; } - - for (RequirementAssignment requriement: sdcCsarHelper.getRequirementsOf(node).getAll()) { - String nodeTemplateName = requriement.getNodeTemplateName().toLowerCase(); + + for (final RequirementAssignment requriement : sdcCsarHelper.getRequirementsOf(node).getAll()) { + final String nodeTemplateName = requriement.getNodeTemplateName().toLowerCase(); LOGGER.debug("getNodeTemplateName =" + nodeTemplateName); - if ( nodeTemplateName == null) { - continue; - } + 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. + /** + * GenerateNetworkFeature, all pci feature are grouped into FlavorFeature together. The format is a map like: + * {"schema-version": "0", "schema-location": "", "platform-id": "generic", "mandatory": true, + * "configuration-value": "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, FlavorFeature flavorFeature) { - //the format is a map like: {"schema-version": "0", "schema-location": "", "platform-id": "generic", - // "mandatory": true, "configuration-value": "2 MB"} - FlavorProperty flavorProperty = new FlavorProperty(); + private void generateNetworkFeature(final String networkHpaFeature, final NodeTemplate node, + final FlavorFeature flavorFeature) { + final FlavorProperty flavorProperty = new FlavorProperty(); flavorProperty.setHpaFeature(networkHpaFeature); - String[] pciKeys = { "pciVendorId", "pciDeviceId", "pciNumDevices", "physicalNetwork"}; - for (String pciKey: pciKeys) { + final String[] pciKeys = { "pciVendorId", "pciDeviceId", "pciNumDevices", "physicalNetwork" }; + for (final String pciKey : pciKeys) { LOGGER.debug("the pciKey = " + pciKey); - String pciKeyPath = NETWORK_PCI_PATH + "#" + pciKey; - String pciValue = sdcCsarHelper.getNodeTemplatePropertyLeafValue(node,pciKeyPath); + final String pciKeyPath = NETWORK_PCI_PATH + "#" + pciKey; + final String pciValue = sdcCsarHelper.getNodeTemplatePropertyLeafValue(node, pciKeyPath); if (pciValue != null) { LOGGER.debug("the pciValue = " + pciValue); - Map<String, Object> retMap = gson.fromJson(pciValue, new TypeToken<HashMap<String, Object>>() {}.getType()); - String pciConfigValue = retMap.get("configuration-value").toString(); - HpaFeatureAttribute hpaFeatureAttribute = generateHpaFeatureAttribute(pciKey,pciConfigValue); + final Map<String, Object> retMap = + gson.fromJson(pciValue, new TypeToken<HashMap<String, Object>>() {}.getType()); + final String pciConfigValue = retMap.get(CONFIGURATION_VALUE).toString(); + final HpaFeatureAttribute hpaFeatureAttribute = generateHpaFeatureAttribute(pciKey, pciConfigValue); flavorProperty.getHpaFeatureAttributes().add(hpaFeatureAttribute); } } diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java index 199d582b..4c781030 100644 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java @@ -32,31 +32,55 @@ public class PolicyDecoderCsarPdpxConfigurationParameterBuilder { private String riskType; private String riskLevel; + public String getPolicyNamePrefix() { + return policyNamePrefix; + } + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setPolicyNamePrefix(final String policyNamePrefix) { this.policyNamePrefix = policyNamePrefix; return this; } + public String getOnapName() { + return onapName; + } + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setOnapName(final String onapName) { this.onapName = onapName; return this; } + public String getVersion() { + return version; + } + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setVersion(final String version) { this.version = version; return this; } + public String getPriority() { + return priority; + } + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setPriority(final String priority) { this.priority = priority; return this; } + public String getRiskType() { + return riskType; + } + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setRiskType(final String riskType) { this.riskType = riskType; return this; } + public String getRiskLevel() { + return riskLevel; + } + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setRiskLevel(final String riskLevel) { this.riskLevel = riskLevel; return this; @@ -65,31 +89,6 @@ public class PolicyDecoderCsarPdpxConfigurationParameterBuilder { public PolicyDecoderCsarPdpxConfigurationParameterGroup build() { return new PolicyDecoderCsarPdpxConfigurationParameterGroup(this); } - - public String getPolicyNamePrefix() { - return policyNamePrefix; - } - - public String getOnapName() { - return onapName; - } - - public String getVersion() { - return version; - } - - public String getPriority() { - return priority; - } - - public String getRiskType() { - return riskType; - } - - public String getRiskLevel() { - return riskLevel; - } - } diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/policy/file/PolicyDecoderFileInCsarToPolicy.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/policy/file/PolicyDecoderFileInCsarToPolicy.java index 9516ad70..80c5172f 100644 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/policy/file/PolicyDecoderFileInCsarToPolicy.java +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/policy/file/PolicyDecoderFileInCsarToPolicy.java @@ -70,16 +70,14 @@ public class PolicyDecoderFileInCsarToPolicy implements PolicyDecoder<Csar, Poli @Override public Collection<PolicyAsString> decode(final Csar csar) throws PolicyDecodingException { final Collection<PolicyAsString> policyList = new ArrayList<>(); - - try (ZipFile zipFile = new ZipFile(csar.getCsarPath())) { + ZipFile zipFile = null; + try { + zipFile = new ZipFile(csar.getCsarPath()); final Enumeration<? extends ZipEntry> entries = zipFile.entries(); while (entries.hasMoreElements()) { final ZipEntry entry = entries.nextElement(); if (entry.getName().contains(decoderParameters.getPolicyFileName())) { - final StringWriter writer = new StringWriter(); - IOUtils.copy(zipFile.getInputStream(entry), writer, "UTF-8"); - final PolicyAsString poilcy = new PolicyAsString(decoderParameters.getPolicyFileName(), - decoderParameters.getPolicyType(), writer.toString()); + final PolicyAsString poilcy = createPolicy(zipFile, entry); policyList.add(poilcy); } } @@ -87,8 +85,31 @@ public class PolicyDecoderFileInCsarToPolicy implements PolicyDecoder<Csar, Poli final String message = "Failed decoding the policy"; LOGGER.error(message, exp); throw new PolicyDecodingException(message, exp); + } finally { + if (zipFile != null) { + try { + zipFile.close(); + } catch (final IOException exp) { + LOGGER.error("Failed closing the zipFile", exp); + } + } } - return policyList; } + + /** + * Creates the policy from given input. + * + * @param zipFile the csar file + * @param entry an entry in the csar file + * @return the created policy + * @throws IOException if policy creation fails + */ + private PolicyAsString createPolicy(final ZipFile zipFile, final ZipEntry entry) throws IOException { + final StringWriter writer = new StringWriter(); + IOUtils.copy(zipFile.getInputStream(entry), writer, "UTF-8"); + final PolicyAsString poilcy = new PolicyAsString(decoderParameters.getPolicyFileName(), + decoderParameters.getPolicyType(), writer.toString()); + return poilcy; + } } |