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.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
"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 BASIC_CAPABILITIES_HPA_FEATURE = "basicCapabilities";
private static final String HUGE_PAGES_HPA_FEATURE = "hugePages";
private static final Map<String, String> NETWORK_HPA_FEATURE_MAP =
- ImmutableMap.of("SR-IOV", "SriovNICNetwork", "PCI-Passthrough", "pciePassthrough");
-
+ 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();
LOGGER.debug("the size of cp is =" + lnodeVduCp.size());
final Content content = new Content();
- content.setResources(metaData.getValue("name"));
- content.setIdentity(content.getPolicyType() + "_" + content.getResources());
+ content.getResources().add(metaData.getValue("name"));
+ content.setIdentity(content.getPolicyType() + "_" + metaData.getValue("name"));
extractInfoVdu(lnodeVdu, content);
extractInfoVduCp(lnodeVduCp, content);
if (content.getFlavorFeatures().isEmpty()) {
// based on input featureValue, return back a suitable hpaFeatureAttribute
final HpaFeatureAttribute hpaFeatureAttribute = new HpaFeatureAttribute();
hpaFeatureAttribute.setHpaAttributeKey(hpaAttributeKey);
- 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));
- LOGGER.debug("unit = " + m.group(3));
- hpaFeatureAttribute.setOperator(m.group(1));
- hpaFeatureAttribute.setHpaAttributeValue(m.group(2));
- hpaFeatureAttribute.setUnit(m.group(3));
+ final String modifiedValue = featureValue.replace(" ", "");
+ final Matcher matcher = PATTERN.matcher(modifiedValue);
+ if (matcher.find()) {
+ LOGGER.debug("operator " + matcher.group(1) + ", value = " + matcher.group(2)
+ + ", unit = " + matcher.group(3));
+ if ( matcher.group(1).length() == 0 ) {
+ hpaFeatureAttribute.setOperator("=");
+ } else {
+ hpaFeatureAttribute.setOperator(matcher.group(1));
+ }
+ hpaFeatureAttribute.setHpaAttributeValue(matcher.group(2));
+ hpaFeatureAttribute.setUnit(matcher.group(3));
}
return hpaFeatureAttribute;
}
}
String networkHpaFeature;
- if (retMap.containsKey(CONFIGURATION_VALUE)) {
+ if (retMap.containsKey(CONFIGURATION_VALUE)
+ && NETWORK_HPA_FEATURE_MAP.containsKey(retMap.get(CONFIGURATION_VALUE).toString())) {
final String interfaceTypeValue = retMap.get(CONFIGURATION_VALUE).toString();
- LOGGER.debug(" the interfacetype value is =" + 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;
- }
+ networkHpaFeature = NETWORK_HPA_FEATURE_MAP.get(interfaceTypeValue);
+ LOGGER.debug(" the networkHpaFeature is =" + networkHpaFeature);
} else {
- LOGGER.debug(" no configurationValue defined in interfaceType");
- return;
+ LOGGER.debug(" no networkHpaFeature defined in interfaceType");
+ continue;
}
final RequirementAssignments requriements =
sdcCsarHelper.getRequirementsOf(node).getRequirementsByName("virtual_binding");
- for (final RequirementAssignment requriement : requriements.getAll()) {
+ for (final RequirementAssignment requriement: requriements.getAll()) {
final String nodeTemplateName = requriement.getNodeTemplateName();
LOGGER.debug("getNodeTemplateName =" + nodeTemplateName);
if (nodeTemplateName == null) {
assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
- assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+ assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
- assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
- assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"BasicCapabilities\""));
- assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\""));
+ assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"basicCapabilities\""));
+ assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"virtualMemSize\""));
- assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
assertTrue(policy.getConfigBody().contains("\"unit\":\"MB\""));
}
assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
- assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+ assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
- assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
- assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"SriovNICNetwork\""));
- assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\""));
+ assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"sriovNICNetwork\""));
+ assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
- assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciDeviceId\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"5678\""));
- assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciNumDevices\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1\""));
- assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
}
assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
- assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+ assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
- assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"pciePassthrough\""));
- assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\""));
+ assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
- assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciDeviceId\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"5678\""));
- assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciNumDevices\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1\""));
- assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
- assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+ assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
- assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"memoryPageSize\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"2\""));
- assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
assertTrue(policy.getConfigBody().contains("\"unit\":\"MB\""));
}
assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
- assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+ assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vgw_0\""));
- assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"pciePassthrough\""));
- assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\""));
+ assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
- assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
+ assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
+
+ }
+
+ @Test
+ public void testserviceVcpeWithAll() throws IOException, PolicyDecodingException {
+ final Csar csar = new Csar("src/test/resources/service-VcpeWithAll-csar.csar");
+ final PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
+ policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION);
+
+ final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
+ assertEquals(5, policies.size());
+ final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
+
+ assertEquals("onapName", policy.getOnapName());
+ assertTrue(policy.getPolicyName().startsWith("OOF."));
+ assertTrue(policy.getConfigBody().contains("\"priority\":\"5\""));
+ assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
+ assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
+ assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
+ assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
+
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
+ assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
+ assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"sriovNICNetwork\""));
+ assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
+ assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
+ assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
+ assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
+ assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
+ assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
}