summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmis <michael.morris@ericsson.com>2018-09-14 09:00:25 +0100
committermmis <michael.morris@ericsson.com>2018-09-14 18:31:41 +0100
commit00b77b9ed6de5779212fecd30b71ebb615f89c3c (patch)
tree0f87db6033059fefdc7e6b278ab63d4225d1e068
parent6d43eadb867277856697778ae53cc21541d21d64 (diff)
Aligned decoder with forwarder for opt. policies
Changed decoder for optimization policies to generate instance of OptimizationPolicy (instead of PdpxPolicy) as expected by the forwarder. Without this change there is a mismatch between the decoder and the forwarder. Added parameters for configuring the static elements of the optimization policies and setting of these elements. Issue-ID: POLICY-927 Change-Id: Ib91a905dc89eed13622fb88e4dd19b3cb9f62c75 Signed-off-by: mmis <michael.morris@ericsson.com>
-rw-r--r--model/src/main/java/org/onap/policy/distribution/model/OptimizationPolicy.java7
-rw-r--r--packages/policy-distribution-tarball/src/main/resources/etc/defaultConfig.json62
-rw-r--r--plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderTest.java6
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ConfigBody.java97
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ExtractFromNode.java51
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpx.java36
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java95
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterGroup.java112
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java20
-rw-r--r--plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestAttribute.java2
-rw-r--r--plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestContent.java6
-rw-r--r--plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestDirective.java2
-rw-r--r--plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorFeature.java2
-rw-r--r--plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorProperty.java4
-rw-r--r--plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestHpaFeatureAttribute.java4
-rw-r--r--plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestPolicyDecoderCsarPdpx.java307
16 files changed, 559 insertions, 254 deletions
diff --git a/model/src/main/java/org/onap/policy/distribution/model/OptimizationPolicy.java b/model/src/main/java/org/onap/policy/distribution/model/OptimizationPolicy.java
index 971077cc..71b7cef7 100644
--- a/model/src/main/java/org/onap/policy/distribution/model/OptimizationPolicy.java
+++ b/model/src/main/java/org/onap/policy/distribution/model/OptimizationPolicy.java
@@ -30,7 +30,6 @@ public class OptimizationPolicy implements Policy {
private static final String OPTIMIZATION = "Optimization";
private String policyName;
private String policyDescription;
- private String policyConfigType;
private String onapName;
private String configBody;
private String configBodyType;
@@ -62,11 +61,7 @@ public class OptimizationPolicy implements Policy {
}
public String getPolicyConfigType() {
- return policyConfigType;
- }
-
- public void setPolicyConfigType(final String policyConfigType) {
- this.policyConfigType = policyConfigType;
+ return OPTIMIZATION;
}
public String getOnapName() {
diff --git a/packages/policy-distribution-tarball/src/main/resources/etc/defaultConfig.json b/packages/policy-distribution-tarball/src/main/resources/etc/defaultConfig.json
index 4a0013c2..01aefb24 100644
--- a/packages/policy-distribution-tarball/src/main/resources/etc/defaultConfig.json
+++ b/packages/policy-distribution-tarball/src/main/resources/etc/defaultConfig.json
@@ -10,15 +10,35 @@
"SDCReceptionHandler":{
"receptionHandlerType":"SDC",
"receptionHandlerClassName":"org.onap.policy.distribution.reception.handling.sdc.SdcReceptionHandler",
- "pssdConfiguration":{
- "asdcAddress": "localhost",
+ "receptionHandlerConfigurationName":"sdcConfiguration",
+ "pluginHandlerParameters":{
+ "policyDecoders":{
+ "CsarDecoder":{
+ "decoderType":"CsarDecoder",
+ "decoderClassName":"org.onap.policy.distribution.reception.decoding.pdpx.PolicyDecoderCsarPdpx",
+ "decoderConfigurationName": "csarToOptimizationPolicyConfiguration"
+ }
+ },
+ "policyForwarders":{
+ "PAPEngineForwarder":{
+ "forwarderType":"PAPEngine",
+ "forwarderClassName":"org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpPolicyForwarder",
+ "forwarderConfigurationName": "xacmlPdpConfiguration"
+ }
+ }
+ }
+ }
+ },
+ "receptionHandlerConfigurationParameters":{
+ "sdcConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.reception.handling.sdc.SdcReceptionHandlerConfigurationParameterGroup",
+ "parameters":{
+ "asdcAddress": "sdc-be.onap:8443",
"messageBusAddress": [
- "a.com",
- "b.com",
- "c.com"
+ "message-router.onap"
],
- "user": "tbdsdc-1480",
- "password": "tbdsdc-1480",
+ "user": "sdc-1480",
+ "password": "sdc-1480",
"pollingInterval":20,
"pollingTimeout":30,
"consumerId": "policy-id",
@@ -33,21 +53,19 @@
"activeserverTlsAuth": false,
"isFilterinEmptyResources": true,
"isUseHttpsWithDmaap": false
- },
- "pluginHandlerParameters":{
- "policyDecoders":{
- "TOSCADecoder":{
- "decoderType":"ToscaDecoder",
- "decoderClassName":"org.onap.policy.distribution.reception.decoding.pdpx.PolicyDecoderToscaPdpx"
- }
- },
- "policyForwarders":{
- "PAPEngineForwarder":{
- "forwarderType":"PAPEngine",
- "forwarderClassName":"org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpPolicyForwarder",
- "forwarderConfigurationName": "xacmlPdpConfiguration"
- }
- }
+ }
+ }
+ },
+ "policyDecoderConfigurationParameters":{
+ "csarToOptimizationPolicyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.reception.decoding.pdpx.PolicyDecoderCsarPdpxConfigurationParameterGroup",
+ "parameters":{
+ "policyNamePrefix": "oofCasablanca",
+ "onapName": "OOF",
+ "version": "1.0",
+ "priority": "3",
+ "riskType": "Test",
+ "riskLevel": "2"
}
}
},
diff --git a/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderTest.java b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderTest.java
index d851b640..9ef88b43 100644
--- a/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderTest.java
+++ b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderTest.java
@@ -99,7 +99,6 @@ public class XacmlPdpPolicyForwarderTest {
OptimizationPolicy policy1 = new OptimizationPolicy();
policy1.setPolicyName("policy1");
- policy1.setPolicyConfigType("Optimization");
policies.add(policy1);
Policy policy2 = new UnsupportedPolicy();
@@ -107,7 +106,6 @@ public class XacmlPdpPolicyForwarderTest {
OptimizationPolicy policy3 = new OptimizationPolicy();
policy3.setPolicyName("policy3");
- policy3.setPolicyConfigType("Optimization");
policies.add(policy3);
forwarder.forward(policies);
@@ -143,7 +141,6 @@ public class XacmlPdpPolicyForwarderTest {
Collection<Policy> policies = new ArrayList<>();
OptimizationPolicy policy = new OptimizationPolicy();
policy.setPolicyName("policy");
- policy.setPolicyConfigType("Optimization");
policies.add(policy);
forwarder.forward(policies);
@@ -172,7 +169,6 @@ public class XacmlPdpPolicyForwarderTest {
Collection<Policy> policies = new ArrayList<>();
OptimizationPolicy policy = new OptimizationPolicy();
policy.setPolicyName("policy");
- policy.setPolicyConfigType("Optimization");
policies.add(policy);
forwarder.forward(policies);
@@ -202,7 +198,6 @@ public class XacmlPdpPolicyForwarderTest {
Collection<Policy> policies = new ArrayList<>();
OptimizationPolicy policy = new OptimizationPolicy();
policy.setPolicyName("policy");
- policy.setPolicyConfigType("Optimization");
policies.add(policy);
forwarder.forward(policies);
@@ -232,7 +227,6 @@ public class XacmlPdpPolicyForwarderTest {
Collection<Policy> policies = new ArrayList<>();
OptimizationPolicy policy = new OptimizationPolicy();
policy.setPolicyName("policy");
- policy.setPolicyConfigType("Optimization");
policies.add(policy);
forwarder.forward(policies);
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ConfigBody.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ConfigBody.java
new file mode 100644
index 00000000..72d9bd2b
--- /dev/null
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ConfigBody.java
@@ -0,0 +1,97 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. 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.pdpx;
+
+public class ConfigBody {
+
+ private String service;
+ private String description;
+ private String version;
+ private String priority;
+ private String riskType;
+ private String riskLevel;
+ private String guard;
+ private Content content;
+
+ public String getService() {
+ return service;
+ }
+
+ public void setService(String service) {
+ this.service = service;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public String getPriority() {
+ return priority;
+ }
+
+ public void setPriority(String priority) {
+ this.priority = priority;
+ }
+
+ public String getRiskType() {
+ return riskType;
+ }
+
+ public void setRiskType(String riskType) {
+ this.riskType = riskType;
+ }
+
+ public String getRiskLevel() {
+ return riskLevel;
+ }
+
+ public void setRiskLevel(String riskLevel) {
+ this.riskLevel = riskLevel;
+ }
+
+ public String getGuard() {
+ return guard;
+ }
+
+ public void setGuard(String guard) {
+ this.guard = guard;
+ }
+
+ public Content getContent() {
+ return content;
+ }
+
+ public void setContent(Content content) {
+ this.content = content;
+ }
+}
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 1d0f621b..7c839a28 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,12 @@
package org.onap.policy.distribution.reception.decoding.pdpx;
-import java.io.FileWriter;
-import java.io.Writer;
import java.util.ArrayList;
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;
@@ -76,14 +73,16 @@ 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 PdpxPolicy extractInfo(final NodeTemplate node) throws PolicyDecodingException {
+ public Content extractInfo(final NodeTemplate node) throws PolicyDecodingException {
LOGGER.debug("the meta data of this nodetemplate = " + sdcCsarHelper.getNodeTemplateMetadata(node));
final List<NodeTemplate> lnodeChild = sdcCsarHelper.getNodeTemplateChildren(node);
@@ -106,31 +105,23 @@ public class ExtractFromNode {
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();
+ final Content content = new Content();
extractInfoVdu(lnodeVdu, content);
extractInfoVduCp(lnodeVduCp, content);
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 (final Exception exp) {
- final String message = "Failed writing generated policies to file";
- LOGGER.error(message, exp);
- throw new PolicyDecodingException(message, exp);
- }
- return pdpxPolicy;
+
+ 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) {
@@ -158,9 +149,11 @@ public class ExtractFromNode {
}
/**
- * 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){
@@ -195,11 +188,14 @@ 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
@@ -221,11 +217,13 @@ 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){
@@ -255,6 +253,7 @@ 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
*/
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpx.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpx.java
index 03f0c041..030c470b 100644
--- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpx.java
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpx.java
@@ -20,14 +20,17 @@
package org.onap.policy.distribution.reception.decoding.pdpx;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-
import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
+import org.onap.policy.common.parameters.ParameterService;
import org.onap.policy.distribution.model.Csar;
+import org.onap.policy.distribution.model.OptimizationPolicy;
import org.onap.policy.distribution.model.PolicyInput;
import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
@@ -38,25 +41,40 @@ import org.onap.sdc.toscaparser.api.NodeTemplate;
/**
* Decodes PDP-X policies from a CSAR file.
*/
-public class PolicyDecoderCsarPdpx implements PolicyDecoder<Csar, PdpxPolicy> {
+public class PolicyDecoderCsarPdpx implements PolicyDecoder<Csar, OptimizationPolicy> {
private static final Logger LOGGER = FlexLogger.getLogger(PolicyDecoderCsarPdpx.class);
+ private final Gson gson = new GsonBuilder().serializeNulls().disableHtmlEscaping().create();
+ private PolicyDecoderCsarPdpxConfigurationParameterGroup decoderParameters;
@Override
- public Collection<PdpxPolicy> decode(final Csar csar) throws PolicyDecodingException {
- final List<PdpxPolicy> lPdpxPolicy = new ArrayList<>();
+ public Collection<OptimizationPolicy> decode(final Csar csar) throws PolicyDecodingException {
+ final List<OptimizationPolicy> policys = new ArrayList<>();
final ISdcCsarHelper sdcCsarHelper = parseCsar(csar);
final List<NodeTemplate> lnodeVf = sdcCsarHelper.getServiceVfList();
LOGGER.debug("the size of Vf = " + lnodeVf.size());
final ExtractFromNode extractFromNode = new ExtractFromNode();
extractFromNode.setSdcCsarHelper(sdcCsarHelper);
for (final NodeTemplate node : lnodeVf) {
- final PdpxPolicy ret = extractFromNode.extractInfo(node);
- if (ret != null) {
- lPdpxPolicy.add(ret);
+ final Content content = extractFromNode.extractInfo(node);
+ if (content != null) {
+ final OptimizationPolicy policy = new OptimizationPolicy();
+ policy.setOnapName(decoderParameters.getOnapName());
+ policy.setPolicyName(decoderParameters.getPolicyNamePrefix() + "." + content.getIdentity());
+ ConfigBody configBody = new ConfigBody();
+ configBody.setService("hpaPolicy");
+ configBody.setDescription("OOF Policy");
+ configBody.setVersion(decoderParameters.getVersion());
+ configBody.setPriority(decoderParameters.getPriority());
+ configBody.setRiskLevel(decoderParameters.getRiskLevel());
+ configBody.setRiskType(decoderParameters.getRiskType());
+ configBody.setGuard("false");
+ configBody.setContent(content);
+ policy.setConfigBody(gson.toJson(configBody));
+ policys.add(policy);
}
}
- return lPdpxPolicy;
+ return policys;
}
@Override
@@ -88,6 +106,6 @@ public class PolicyDecoderCsarPdpx implements PolicyDecoder<Csar, PdpxPolicy> {
@Override
public void configure(final String parameterGroupName) {
- throw new UnsupportedOperationException("The method is not supprted");
+ decoderParameters = ParameterService.get(parameterGroupName);
}
}
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
new file mode 100644
index 00000000..199d582b
--- /dev/null
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java
@@ -0,0 +1,95 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2018 Ericsson. 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.pdpx;
+
+/**
+ * This class builds an instance of {@link PolicyDecodeCsarPdpxConfigurationParameterGroup} class.
+ */
+public class PolicyDecoderCsarPdpxConfigurationParameterBuilder {
+
+ private String policyNamePrefix;
+ private String onapName;
+ private String version;
+ private String priority;
+ private String riskType;
+ private String riskLevel;
+
+ public PolicyDecoderCsarPdpxConfigurationParameterBuilder setPolicyNamePrefix(final String policyNamePrefix) {
+ this.policyNamePrefix = policyNamePrefix;
+ return this;
+ }
+
+ public PolicyDecoderCsarPdpxConfigurationParameterBuilder setOnapName(final String onapName) {
+ this.onapName = onapName;
+ return this;
+ }
+
+ public PolicyDecoderCsarPdpxConfigurationParameterBuilder setVersion(final String version) {
+ this.version = version;
+ return this;
+ }
+
+ public PolicyDecoderCsarPdpxConfigurationParameterBuilder setPriority(final String priority) {
+ this.priority = priority;
+ return this;
+ }
+
+ public PolicyDecoderCsarPdpxConfigurationParameterBuilder setRiskType(final String riskType) {
+ this.riskType = riskType;
+ return this;
+ }
+
+ public PolicyDecoderCsarPdpxConfigurationParameterBuilder setRiskLevel(final String riskLevel) {
+ this.riskLevel = riskLevel;
+ return this;
+ }
+
+ 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/pdpx/PolicyDecoderCsarPdpxConfigurationParameterGroup.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterGroup.java
new file mode 100644
index 00000000..d785b827
--- /dev/null
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterGroup.java
@@ -0,0 +1,112 @@
+/*-
+ * ============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.pdpx;
+
+import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.common.utils.validation.ParameterValidationUtils;
+import org.onap.policy.distribution.reception.handling.sdc.SdcReceptionHandlerConfigurationParameterGroup;
+import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup;
+
+/**
+ * This class handles reading, parsing and validating of the paramaters for the
+ * {@link PolicyDecoderCsarPdpx}
+ */
+public class PolicyDecoderCsarPdpxConfigurationParameterGroup extends PolicyDecoderConfigurationParameterGroup {
+
+ private String policyNamePrefix;
+ private String onapName;
+ private String version;
+ private String priority;
+ private String riskType;
+ private String riskLevel;
+
+ /**
+ * The constructor for instantiating {@link SdcReceptionHandlerConfigurationParameterGroup}
+ * class.
+ *
+ * @param builder the SDC configuration builder
+ */
+ public PolicyDecoderCsarPdpxConfigurationParameterGroup(
+ final PolicyDecoderCsarPdpxConfigurationParameterBuilder builder) {
+ policyNamePrefix = builder.getPolicyNamePrefix();
+ onapName = builder.getOnapName();
+ version = builder.getVersion();
+ priority = builder.getPriority();
+ riskType = builder.getRiskType();
+ riskLevel = builder.getRiskLevel();
+ }
+
+ 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;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public GroupValidationResult validate() {
+ final GroupValidationResult validationResult = new GroupValidationResult(this);
+ validateStringElement(validationResult, policyNamePrefix, "policyNamePrefix");
+ validateStringElement(validationResult, onapName, "onapName");
+ validateStringElement(validationResult, version, "version");
+ validateStringElement(validationResult, priority, "priority");
+ validateStringElement(validationResult, riskType, "riskType");
+ validateStringElement(validationResult, riskLevel, "riskLevel");
+ return validationResult;
+ }
+
+ /**
+ * Validate the string element.
+ *
+ * @param validationResult the result object
+ * @param element the element to validate
+ * @param elementName the element name for error message
+ */
+ private void validateStringElement(final GroupValidationResult validationResult, final String element,
+ final String elementName) {
+ if (!ParameterValidationUtils.validateStringParameter(element)) {
+ validationResult.setResult(elementName, ValidationStatus.INVALID,
+ elementName + " must be a non-blank string");
+ }
+ }
+}
+
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java
index bbee652a..0140fb53 100644
--- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java
@@ -21,16 +21,15 @@
package org.onap.policy.distribution.reception.handling.sdc;
import java.util.List;
-import java.util.UUID;
-
import org.onap.policy.common.parameters.GroupValidationResult;
import org.onap.policy.common.parameters.ValidationStatus;
import org.onap.policy.common.utils.validation.ParameterValidationUtils;
import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup;
/**
- * This class handles reading, parsing and validating of the Policy SDC Service Distribution parameters from Json
- * format, which strictly adheres to the interface:IConfiguration, defined by SDC SDK.
+ * This class handles reading, parsing and validating of the Policy SDC Service Distribution
+ * parameters from Json format, which strictly adheres to the interface:IConfiguration, defined by
+ * SDC SDK.
*/
public class SdcReceptionHandlerConfigurationParameterGroup extends ReceptionHandlerConfigurationParameterGroup {
@@ -51,7 +50,8 @@ public class SdcReceptionHandlerConfigurationParameterGroup extends ReceptionHan
private boolean isUseHttpsWithDmaap;
/**
- * The constructor for instantiating {@link SdcReceptionHandlerConfigurationParameterGroup} class.
+ * The constructor for instantiating {@link SdcReceptionHandlerConfigurationParameterGroup}
+ * class.
*
* @param builder the SDC configuration builder
*/
@@ -136,16 +136,6 @@ public class SdcReceptionHandlerConfigurationParameterGroup extends ReceptionHan
}
/**
- * Set the name of this group.
- *
- * @param name the name to set.
- */
- @Override
- public void setName(final String name) {
- super.setName(name + "_" + UUID.randomUUID().toString());
- }
-
- /**
* {@inheritDoc}
*/
@Override
diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestAttribute.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestAttribute.java
index f11a7ecd..565f17d3 100644
--- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestAttribute.java
+++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestAttribute.java
@@ -39,7 +39,7 @@ public class TestAttribute {
attribute.setAttributeName(attributeName);
attribute.setAttributeValue(attributeValue);
- validateReport(attributeName,attributeValue,attribute);
+ validateReport(attributeName, attributeValue, attribute);
}
private void validateReport(final String name, final String value, final Attribute attribute) {
diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestContent.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestContent.java
index a329a3ee..56534d8f 100644
--- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestContent.java
+++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestContent.java
@@ -41,11 +41,11 @@ public class TestContent {
content.setIdentity(identity);
content.setPolicyType(policyType);
- validateReport(resources, identity, policyType,content);
+ validateReport(resources, identity, policyType, content);
}
- private void validateReport(final String resources, final String identity, final String policyType,
- final Content content) {
+ private void validateReport(final String resources, final String identity, final String policyType,
+ final Content content) {
assertEquals(resources, content.getResources());
assertEquals(identity, content.getIdentity());
assertEquals(policyType, content.getPolicyType());
diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestDirective.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestDirective.java
index 48d11d32..cc8d946f 100644
--- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestDirective.java
+++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestDirective.java
@@ -37,7 +37,7 @@ public class TestDirective {
final Directive directive = new Directive();
directive.setType(type);
- validateReport(type,directive);
+ validateReport(type, directive);
}
private void validateReport(final String type, final Directive directive) {
diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorFeature.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorFeature.java
index 47b4e343..e4de2759 100644
--- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorFeature.java
+++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorFeature.java
@@ -39,7 +39,7 @@ public class TestFlavorFeature {
flavorFeature.setId(id);
flavorFeature.setType(type);
- validateReport(id,type,flavorFeature);
+ validateReport(id, type, flavorFeature);
}
private void validateReport(final String id, final String type, final FlavorFeature flavorFeature) {
diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorProperty.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorProperty.java
index b5a535d7..da6c26fc 100644
--- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorProperty.java
+++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorProperty.java
@@ -43,11 +43,11 @@ public class TestFlavorProperty {
flavorProperty.setArchitecture(architecture);
flavorProperty.setHpaVersion(hpaVersion);
- validateReport(hpaFeature,mandatory,architecture,hpaVersion,flavorProperty);
+ validateReport(hpaFeature, mandatory, architecture, hpaVersion, flavorProperty);
}
private void validateReport(final String hpaFeature, final String mandatory, final String architecture,
- final String hpaVersion, final FlavorProperty flavorProperty) {
+ final String hpaVersion, final FlavorProperty flavorProperty) {
assertEquals(hpaFeature, flavorProperty.getHpaFeature());
assertEquals(mandatory, flavorProperty.getMandatory());
assertEquals(architecture, flavorProperty.getArchitecture());
diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestHpaFeatureAttribute.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestHpaFeatureAttribute.java
index 40c30eb7..f2f514d0 100644
--- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestHpaFeatureAttribute.java
+++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestHpaFeatureAttribute.java
@@ -43,11 +43,11 @@ public class TestHpaFeatureAttribute {
hpaFeatureAttribute.setOperator(operator);
hpaFeatureAttribute.setUnit(unit);
- validateReport(hpaAttributeKey,hpaAttributeValue,operator,unit,hpaFeatureAttribute);
+ validateReport(hpaAttributeKey, hpaAttributeValue, operator, unit, hpaFeatureAttribute);
}
private void validateReport(final String hpaAttributeKey, final String hpaAttributeValue, final String operator,
- final String unit, final HpaFeatureAttribute hpaFeatureAttribute) {
+ final String unit, final HpaFeatureAttribute hpaFeatureAttribute) {
assertEquals(hpaAttributeKey, hpaFeatureAttribute.getHpaAttributeKey());
assertEquals(hpaAttributeValue, hpaFeatureAttribute.getHpaAttributeValue());
assertEquals(operator, hpaFeatureAttribute.getOperator());
diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestPolicyDecoderCsarPdpx.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestPolicyDecoderCsarPdpx.java
index 11bce326..0585b23a 100644
--- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestPolicyDecoderCsarPdpx.java
+++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestPolicyDecoderCsarPdpx.java
@@ -21,16 +21,17 @@
package org.onap.policy.distribution.reception.decoding.pdpx;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
+import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.Collection;
-
+import org.junit.BeforeClass;
import org.junit.Test;
+import org.onap.policy.common.parameters.ParameterGroup;
+import org.onap.policy.common.parameters.ParameterService;
import org.onap.policy.distribution.model.Csar;
+import org.onap.policy.distribution.model.OptimizationPolicy;
+import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
/**
* Class to perform unit test of {@link PolicyDecoderCsarPdpx}.
@@ -38,178 +39,164 @@ import org.onap.policy.distribution.model.Csar;
*/
public class TestPolicyDecoderCsarPdpx {
+ private static final String CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION = "csarToOptimizationPolicyConfiguration";
+
+ /**
+ * Set up for test cases.
+ */
+ @BeforeClass
+ public static void setUp() {
+ ParameterGroup parameterGroup = new PolicyDecoderCsarPdpxConfigurationParameterBuilder().setOnapName("onapName")
+ .setPolicyNamePrefix("OOF").setPriority("5").setRiskLevel("2").setRiskType("Test").setVersion("1.0")
+ .build();
+ parameterGroup.setName(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION);
+ ParameterService.register(parameterGroup);
+ }
+
@Test
- public void testHpaPolicy2Vnf() throws IOException {
+ public void testHpaPolicy2Vnf() throws IOException, PolicyDecodingException {
Csar csar = new Csar("src/test/resources/service-TestNs8-csar.csar");
PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
- try {
- Collection<PdpxPolicy> ret = policyDecoderCsarPdpx.decode(csar);
- assertEquals(2, ret.size());
- PdpxPolicy pdpxPolicy = (PdpxPolicy) ret.toArray()[0];
- assertEquals("Optimization", pdpxPolicy.getContent().getPolicyType());
- assertEquals(1, pdpxPolicy.getContent().getFlavorFeatures().size());
-
- FlavorFeature flavorFeature = pdpxPolicy.getContent().getFlavorFeatures().get(0);
- assertEquals("vdu_vnf_1", flavorFeature.getId());
- assertEquals("tosca.node.nfv.Vdu.Compute", flavorFeature.getType());
- assertEquals(1, flavorFeature.getDirectives().size());
- Directive directive = flavorFeature.getDirectives().get(0);
- assertEquals("flavor_directive", directive.getType());
- assertEquals(1, directive.getAttributes().size());
- assertEquals("flavorName", directive.getAttributes().get(0).getAttributeName());
- assertEquals("", directive.getAttributes().get(0).getAttributeValue());
- assertEquals(2, flavorFeature.getFlavorProperties().size());
- FlavorProperty flavorProperty = flavorFeature.getFlavorProperties().get(0);
- assertEquals("BasicCapabilities", flavorProperty.getHpaFeature());
- assertEquals("true", flavorProperty.getMandatory());
- assertEquals("generic", flavorProperty.getArchitecture());
- assertEquals("v1", flavorProperty.getHpaVersion());
- assertEquals(0, flavorProperty.getDirectives().size());
- assertEquals(1, flavorProperty.getHpaFeatureAttributes().size());
- HpaFeatureAttribute hpaFeatreAttribute = flavorProperty.getHpaFeatureAttributes().get(0);
- assertEquals("virtualMemSize",hpaFeatreAttribute.getHpaAttributeKey());
- assertEquals("4096",hpaFeatreAttribute.getHpaAttributeValue());
- assertEquals("",hpaFeatreAttribute.getOperator());
- assertEquals("MB",hpaFeatreAttribute.getUnit());
-
- } catch (Exception e) {
- fail("test should not thrown an exception here: " + e.getMessage());
- }
+ policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION);
+
+ Collection<OptimizationPolicy> ret = policyDecoderCsarPdpx.decode(csar);
+
+ assertEquals(2, ret.size());
+ OptimizationPolicy policy = (OptimizationPolicy) ret.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\":\"Optimization\""));
+
+ assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directive\""));
+ 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("\"unit\":\"MB\""));
}
@Test
- public void testHpaPolicySriov() throws IOException {
+ public void testHpaPolicySriov() throws IOException, PolicyDecodingException {
Csar csar = new Csar("src/test/resources/hpaPolicySriov.csar");
PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
- try {
- Collection<PdpxPolicy> ret = policyDecoderCsarPdpx.decode(csar);
- assertEquals(2, ret.size());
- PdpxPolicy pdpxPolicy = (PdpxPolicy) ret.toArray()[0];
- assertEquals("Optimization", pdpxPolicy.getContent().getPolicyType());
- assertEquals(1, pdpxPolicy.getContent().getFlavorFeatures().size());
-
- FlavorFeature flavorFeature = pdpxPolicy.getContent().getFlavorFeatures().get(0);
- assertEquals("vdu_vnf_1", flavorFeature.getId());
- assertEquals("tosca.node.nfv.Vdu.Compute", flavorFeature.getType());
- assertEquals(1, flavorFeature.getDirectives().size());
- Directive directive = flavorFeature.getDirectives().get(0);
- assertEquals("flavor_directive", directive.getType());
- assertEquals(1, directive.getAttributes().size());
- assertEquals("flavorName", directive.getAttributes().get(0).getAttributeName());
- assertEquals("", directive.getAttributes().get(0).getAttributeValue());
- assertEquals(4, flavorFeature.getFlavorProperties().size());
- FlavorProperty flavorProperty = flavorFeature.getFlavorProperties().get(3);
- assertEquals("SriovNICNetwork", flavorProperty.getHpaFeature());
- assertEquals("true", flavorProperty.getMandatory());
- assertEquals("generic", flavorProperty.getArchitecture());
- assertEquals("v1", flavorProperty.getHpaVersion());
- assertEquals(0, flavorProperty.getDirectives().size());
- assertEquals(3, flavorProperty.getHpaFeatureAttributes().size());
-
- HpaFeatureAttribute pciVendorId = flavorProperty.getHpaFeatureAttributes().get(0);
- assertEquals("pciVendorId",pciVendorId.getHpaAttributeKey());
- assertEquals("1234",pciVendorId.getHpaAttributeValue());
- assertEquals("",pciVendorId.getOperator());
- assertEquals("",pciVendorId.getUnit());
- HpaFeatureAttribute pciDeviceId = flavorProperty.getHpaFeatureAttributes().get(1);
- assertEquals("pciDeviceId",pciDeviceId.getHpaAttributeKey());
- assertEquals("5678",pciDeviceId.getHpaAttributeValue());
- assertEquals("",pciDeviceId.getOperator());
- assertEquals("",pciDeviceId.getUnit());
- HpaFeatureAttribute pciNumDevices = flavorProperty.getHpaFeatureAttributes().get(2);
- assertEquals("pciNumDevices",pciNumDevices.getHpaAttributeKey());
- assertEquals("1",pciNumDevices.getHpaAttributeValue());
- assertEquals("",pciNumDevices.getOperator());
- assertEquals("",pciNumDevices.getUnit());
- } catch (Exception e) {
- fail("test should not thrown an exception here: " + e.getMessage());
- }
+ policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION);
+
+ Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
+ 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\":\"Optimization\""));
+
+ assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directive\""));
+ 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\":\"\""));
+ 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("\"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("\"unit\":\"\""));
}
@Test
- public void testHpaPolicyPciePassthrough() throws IOException {
+ public void testHpaPolicyPciePassthrough() throws IOException, PolicyDecodingException {
Csar csar = new Csar("src/test/resources/hpaPolicyPciePassthrough.csar");
PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
- try {
- Collection<PdpxPolicy> ret = policyDecoderCsarPdpx.decode(csar);
- assertEquals(2, ret.size());
- PdpxPolicy pdpxPolicy = (PdpxPolicy) ret.toArray()[0];
- assertEquals("Optimization", pdpxPolicy.getContent().getPolicyType());
- assertEquals(1, pdpxPolicy.getContent().getFlavorFeatures().size());
-
- FlavorFeature flavorFeature = pdpxPolicy.getContent().getFlavorFeatures().get(0);
- assertEquals("vdu_vnf_1", flavorFeature.getId());
- assertEquals("tosca.node.nfv.Vdu.Compute", flavorFeature.getType());
- assertEquals(1, flavorFeature.getDirectives().size());
- Directive directive = flavorFeature.getDirectives().get(0);
- assertEquals("flavor_directive", directive.getType());
- assertEquals(1, directive.getAttributes().size());
- assertEquals("flavorName", directive.getAttributes().get(0).getAttributeName());
- assertEquals("", directive.getAttributes().get(0).getAttributeValue());
- assertEquals(4, flavorFeature.getFlavorProperties().size());
- FlavorProperty flavorProperty = flavorFeature.getFlavorProperties().get(3);
- assertEquals("pciePassthrough", flavorProperty.getHpaFeature());
- assertEquals("true", flavorProperty.getMandatory());
- assertEquals("generic", flavorProperty.getArchitecture());
- assertEquals("v1", flavorProperty.getHpaVersion());
- assertEquals(0, flavorProperty.getDirectives().size());
- assertEquals(3, flavorProperty.getHpaFeatureAttributes().size());
-
- HpaFeatureAttribute pciVendorId = flavorProperty.getHpaFeatureAttributes().get(0);
- assertEquals("pciVendorId",pciVendorId.getHpaAttributeKey());
- assertEquals("1234",pciVendorId.getHpaAttributeValue());
- assertEquals("",pciVendorId.getOperator());
- assertEquals("",pciVendorId.getUnit());
- HpaFeatureAttribute pciDeviceId = flavorProperty.getHpaFeatureAttributes().get(1);
- assertEquals("pciDeviceId",pciDeviceId.getHpaAttributeKey());
- assertEquals("5678",pciDeviceId.getHpaAttributeValue());
- assertEquals("",pciDeviceId.getOperator());
- assertEquals("",pciDeviceId.getUnit());
- HpaFeatureAttribute pciNumDevices = flavorProperty.getHpaFeatureAttributes().get(2);
- assertEquals("pciNumDevices",pciNumDevices.getHpaAttributeKey());
- assertEquals("1",pciNumDevices.getHpaAttributeValue());
- assertEquals("",pciNumDevices.getOperator());
- assertEquals("",pciNumDevices.getUnit());
- } catch (Exception e) {
- fail("test should not thrown an exception here: " + e.getMessage());
- }
+ policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION);
+
+ Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
+ assertEquals(2, policies.size());
+ 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\":\"Optimization\""));
+
+ assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directive\""));
+ 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("\"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\":\"\""));
+ 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("\"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("\"unit\":\"\""));
+
+
}
@Test
- public void testHpaPolicyHugePage() throws IOException {
+ public void testHpaPolicyHugePage() throws IOException, PolicyDecodingException {
Csar csar = new Csar("src/test/resources/hpaPolicyHugePage.csar");
PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
- try {
- Collection<PdpxPolicy> ret = policyDecoderCsarPdpx.decode(csar);
- assertEquals(2, ret.size());
- PdpxPolicy pdpxPolicy = (PdpxPolicy) ret.toArray()[0];
- assertEquals("Optimization", pdpxPolicy.getContent().getPolicyType());
- assertEquals(1, pdpxPolicy.getContent().getFlavorFeatures().size());
-
- FlavorFeature flavorFeature = pdpxPolicy.getContent().getFlavorFeatures().get(0);
- assertEquals("vdu_vnf_1", flavorFeature.getId());
- assertEquals("tosca.node.nfv.Vdu.Compute", flavorFeature.getType());
- assertEquals(1, flavorFeature.getDirectives().size());
- Directive directive = flavorFeature.getDirectives().get(0);
- assertEquals("flavor_directive", directive.getType());
- assertEquals(1, directive.getAttributes().size());
- assertEquals("flavorName", directive.getAttributes().get(0).getAttributeName());
- assertEquals("", directive.getAttributes().get(0).getAttributeValue());
- assertEquals(3, flavorFeature.getFlavorProperties().size());
- FlavorProperty flavorProperty = flavorFeature.getFlavorProperties().get(2);
- assertEquals("hugePages", flavorProperty.getHpaFeature());
- assertEquals("false", flavorProperty.getMandatory());
- assertEquals("generic", flavorProperty.getArchitecture());
- assertEquals("v1", flavorProperty.getHpaVersion());
- assertEquals(0, flavorProperty.getDirectives().size());
- assertEquals(1, flavorProperty.getHpaFeatureAttributes().size());
- HpaFeatureAttribute hpaFeatreAttribute = flavorProperty.getHpaFeatureAttributes().get(0);
- assertEquals("memoryPageSize",hpaFeatreAttribute.getHpaAttributeKey());
- assertEquals("2",hpaFeatreAttribute.getHpaAttributeValue());
- assertEquals("",hpaFeatreAttribute.getOperator());
- assertEquals("MB",hpaFeatreAttribute.getUnit());
- } catch (Exception e) {
- fail("test should not thrown an exception here: " + e.getMessage());
- }
+ policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION);
+
+ Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
+ assertEquals(2, policies.size());
+ 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\":\"Optimization\""));
+
+ assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+ assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directive\""));
+ assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
+ assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
+ assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"hugePages\""));
+ assertTrue(policy.getConfigBody().contains("\"mandatory\":\"false\""));
+ assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
+ 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("\"unit\":\"MB\""));
}
}