* 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.pdpx;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.Writer;
-
+import java.util.ArrayList;
+import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.annotations.SerializedName;
-
import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
-
import org.onap.sdc.tosca.parser.api.ISdcCsarHelper;
-import org.onap.sdc.tosca.parser.impl.SdcCsarHelperImpl;
-import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
-import org.onap.sdc.tosca.parser.impl.SdcToscaParserFactory;
-
-import org.onap.sdc.toscaparser.api.NodeTemplate;
import org.onap.sdc.toscaparser.api.CapabilityAssignment;
import org.onap.sdc.toscaparser.api.CapabilityAssignments;
-import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.onap.sdc.toscaparser.api.NodeTemplate;
/**
* Extract concerned info from NodeTemplate, currently ONLY HPA Feature.
public class ExtractFromNode {
private static final Logger LOGGER = FlexLogger.getLogger(ExtractFromNode.class);
- private static final String CONTENT_RESOURCES = "name";
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 NUMBER_OF_PAGES_PATH = "virtual_memory#vdu_memory_requirements#numberOfPages";
private static final String BASIC_CAPABILITIES = "BasicCapabilities";
-
ISdcCsarHelper sdcCsarHelper;
- final Gson gson = new GsonBuilder()
- .serializeNulls()
- .setPrettyPrinting()
- .disableHtmlEscaping()
- .create();
-
+ final Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().disableHtmlEscaping().create();
- public void setSdcCsarHelper(ISdcCsarHelper sdcCsarHelper) {
+ 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 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 PdpxPolicy extractInfo(NodeTemplate node) throws PolicyDecodingException {
- PdpxPolicy pdpxPolicy = new PdpxPolicy();
- Content content = pdpxPolicy.getContent();
+ public PdpxPolicy extractInfo(final NodeTemplate node) throws PolicyDecodingException {
- String outputFile = sdcCsarHelper.getNodeTemplateMetadata(node).getValue("name");
- outputFile += ".json";
LOGGER.debug("the meta data of this nodetemplate = " + sdcCsarHelper.getNodeTemplateMetadata(node));
- LOGGER.debug("outputFile = " + outputFile);
-
- List<NodeTemplate> lnodeChild = sdcCsarHelper.getNodeTemplateChildren(node);
+ final List<NodeTemplate> lnodeChild = sdcCsarHelper.getNodeTemplateChildren(node);
LOGGER.debug("the size of lnodeChild = " + lnodeChild.size());
- //Store all the VDUs under one VNF
- List<NodeTemplate> lnodeVdu = new ArrayList<>();
- //Store all the Cps under one VNF
- List<NodeTemplate> lnodeVduCp = new ArrayList<>();
- for ( NodeTemplate nodeChild : lnodeChild) {
- String type = sdcCsarHelper.getTypeOfNodeTemplate(nodeChild);
+ // Store all the VDUs under one VNF
+ final List<NodeTemplate> lnodeVdu = new ArrayList<>();
+ // Store all the Cps under one VNF
+ final List<NodeTemplate> 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 nodetemplate = " + sdcCsarHelper.getNodeTemplateMetadata(nodeChild));
- if ( type.equalsIgnoreCase(VDU_TYPE)) {
+ if (type.equalsIgnoreCase(VDU_TYPE)) {
lnodeVdu.add(nodeChild);
- } else if ( type.equalsIgnoreCase(VDU_CP_TYPE)) {
+ } 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 PdpxPolicy pdpxPolicy = new PdpxPolicy();
+ final Content content = pdpxPolicy.getContent();
extractInfoVdu(lnodeVdu, content);
extractInfoVduCp(lnodeVduCp, content);
-
- if (content.getFlavorFeatures().isEmpty() ){
+ if (content.getFlavorFeatures().isEmpty()) {
return null;
- }
-
+ }
+ String outputFile = sdcCsarHelper.getNodeTemplateMetadata(node).getValue("name");
+ outputFile += ".json";
+ LOGGER.debug("outputFile = " + outputFile);
try (Writer writer = new FileWriter(outputFile)) {
gson.toJson(pdpxPolicy, writer);
- } catch (Exception e) {
- LOGGER.error("can't write generated policies to file " , e);
- throw new PolicyDecodingException ("Exception caught when writing generated policies to file ", e);
+ } catch (final Exception exp) {
+ final String message = "Failed writing generated policies to file";
+ LOGGER.error(message, exp);
+ throw new PolicyDecodingException(message, exp);
}
return pdpxPolicy;
}
- /*
+ /**
* 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, Content content) {
- //each VDU <=> FlavorFeature
- for ( NodeTemplate node : lnodeVdu) {
- String id = sdcCsarHelper.getNodeTemplatePropertyLeafValue(node, "name");
- FlavorFeature flavorFeature = new FlavorFeature();
- flavorFeature.setId(id);
- Attribute flavorAttribute = new Attribute();
+ public void extractInfoVdu(final List<NodeTemplate> lnodeVdu, final Content content) {
+ // each VDU <=> FlavorFeature
+ for (final NodeTemplate node : lnodeVdu) {
+ final Attribute flavorAttribute = new Attribute();
flavorAttribute.setAttributeName("flavorName");
flavorAttribute.setAttributeValue("");
- Directive flavorDirective = new Directive();
+ final Directive flavorDirective = new Directive();
flavorDirective.setType("flavor_directive");
flavorDirective.getAttributes().add(flavorAttribute);
+ final FlavorFeature flavorFeature = new FlavorFeature();
+ flavorFeature.setId(sdcCsarHelper.getNodeTemplatePropertyLeafValue(node, "name"));
flavorFeature.getDirectives().add(flavorDirective);
-
- CapabilityAssignments capabilityAssignments = sdcCsarHelper.getCapabilitiesOf(node);
- CapabilityAssignment capabilityAssignment = capabilityAssignments.getCapabilityByName("virtual_compute");
+
+ final CapabilityAssignments capabilityAssignments = sdcCsarHelper.getCapabilitiesOf(node);
+ final CapabilityAssignment capabilityAssignment =
+ capabilityAssignments.getCapabilityByName("virtual_compute");
if (capabilityAssignment != null) {
generateBasicCapability(capabilityAssignment, flavorFeature);
- generateHugePages(capabilityAssignment, flavorFeature);
+ generateHugePages(capabilityAssignment);
}
-
- content.getFlavorFeatures().add(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, FlavorFeature flavorFeature){
- //the format is xxx MB/GB like 4096 MB
- 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();
- flavorProperty.setHpaFeature(BASIC_CAPABILITIES);
- flavorProperty.getHpaFeatureAttributes().add(hpaFeatureAttribute);
- flavorFeature.getFlavorProperties().add(flavorProperty);
- }
-
- //the format is int like 2
- 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();
- flavorProperty.setHpaFeature(BASIC_CAPABILITIES);
- if (cpuArchitecture != null) {
- flavorProperty.setArchitecture(cpuArchitecture);
- }
- flavorProperty.getHpaFeatureAttributes().add(hpaFeatureAttribute);
- flavorFeature.getFlavorProperties().add(flavorProperty);
+ 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);
+ 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);
+ 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".
+ /**
+ * 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
- * @return the format used in underlayer component
*/
- private HpaFeatureAttribute generateHpaFeatureAttribute(final String hpaAttributeKey, final String featureValue){
+ private HpaFeatureAttribute generateHpaFeatureAttribute(final String hpaAttributeKey, final String featureValue) {
- HpaFeatureAttribute hpaFeatureAttribute = new HpaFeatureAttribute();
+ final HpaFeatureAttribute hpaFeatureAttribute = new HpaFeatureAttribute();
hpaFeatureAttribute.setHpaAttributeKey(hpaAttributeKey);
- String tmp = featureValue.replace(" ","");
- String pattern = "(\\D*)(\\d+)(\\D*)";
- Pattern r = Pattern.compile(pattern);
- Matcher m = r.matcher(tmp);
+ final String tmp = featureValue.replace(" ", "");
+ final String pattern = "(\\D*)(\\d+)(\\D*)";
+ final Pattern r = Pattern.compile(pattern);
+ final Matcher m = r.matcher(tmp);
if (m.find()) {
LOGGER.debug("operator = " + m.group(1));
LOGGER.debug("value = " + m.group(2));
return hpaFeatureAttribute;
}
- /*
- * GenerateHugePages, supported hpa features, All under the capability of tosca.nodes.nfv.Vdu.Compute.
+ /**
+ * 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){
- //the format is a map like: {"schema-version": "0", "schema-location": "", "platform-id": "generic",
- // "mandatory": true, "configuration-value": "2 MB"}
- String numberOfPages = sdcCsarHelper.getCapabilityPropertyLeafValue(capabilityAssignment,
- NUMBER_OF_PAGES_PATH);
- if (numberOfPages != null) {
- LOGGER.debug("the virtualMemSize = " + numberOfPages);
- //TODO add HugePages support
- }
+ private void generateHugePages(final CapabilityAssignment capabilityAssignment) {
+ // add HugePages support
}
- /*
- * ExtractInfoVduCp, supposted hpa features, under the virtual_network_interface_requirements of
- * tosca.nodes.nfv.VduCp.
- *
+ /**
+ * 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
*/
- @SuppressWarnings("unchecked")
- public void extractInfoVduCp(final List<NodeTemplate> lnodeVduCp, Content content) {
- for ( NodeTemplate node : lnodeVduCp) {
- //TODO to add VDU cp Hpa feature extract
- }
+ public void extractInfoVduCp(final List<NodeTemplate> lnodeVduCp, final Content content) {
+ // to add VDU cp Hpa feature extract
}
}