summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/main/java/org/onap/policy/api/main/exception/PolicyApiException.java9
-rw-r--r--main/src/main/java/org/onap/policy/api/main/startstop/ApiDatabaseInitializer.java113
-rw-r--r--main/src/main/java/org/onap/policy/api/main/startstop/Main.java14
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.monitoring.cdap.tca.hi.lo.app.json223
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.json28
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.AffinityPolicy.json102
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.DistancePolicy.json132
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.HpaPolicy.json204
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.OptimizationPolicy.json140
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.PciPolicy.json91
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.QueryPolicy.json76
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.SubscriberPolicy.json82
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.Vim_fit.json91
-rw-r--r--main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.VnfPolicy.json115
-rw-r--r--main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyProvider.java16
-rw-r--r--main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyTypeProvider.java8
-rw-r--r--main/src/test/resources/policies/vCPE.policy.bad.policytypeversion.json2
-rw-r--r--main/src/test/resources/policies/vCPE.policy.monitoring.input.tosca.json1
18 files changed, 1443 insertions, 4 deletions
diff --git a/main/src/main/java/org/onap/policy/api/main/exception/PolicyApiException.java b/main/src/main/java/org/onap/policy/api/main/exception/PolicyApiException.java
index 1fccb06d..580ba33d 100644
--- a/main/src/main/java/org/onap/policy/api/main/exception/PolicyApiException.java
+++ b/main/src/main/java/org/onap/policy/api/main/exception/PolicyApiException.java
@@ -36,6 +36,15 @@ public class PolicyApiException extends Exception {
}
/**
+ * Instantiates a new policy api exception with a caused by exception.
+ *
+ * @param exp the exception that caused this exception to be thrown
+ */
+ public PolicyApiException(final Exception exp) {
+ super(exp);
+ }
+
+ /**
* Instantiates a new policy api exception with a message and a caused by exception.
*
* @param message the message
diff --git a/main/src/main/java/org/onap/policy/api/main/startstop/ApiDatabaseInitializer.java b/main/src/main/java/org/onap/policy/api/main/startstop/ApiDatabaseInitializer.java
new file mode 100644
index 00000000..3973e626
--- /dev/null
+++ b/main/src/main/java/org/onap/policy/api/main/startstop/ApiDatabaseInitializer.java
@@ -0,0 +1,113 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP Policy API
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. 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.api.main.startstop;
+
+import java.util.ArrayList;
+import java.util.Map;
+import org.onap.policy.api.main.exception.PolicyApiException;
+import org.onap.policy.common.utils.coder.CoderException;
+import org.onap.policy.common.utils.coder.StandardCoder;
+import org.onap.policy.common.utils.resources.ResourceUtils;
+import org.onap.policy.models.base.PfModelException;
+import org.onap.policy.models.provider.PolicyModelsProvider;
+import org.onap.policy.models.provider.PolicyModelsProviderFactory;
+import org.onap.policy.models.provider.PolicyModelsProviderParameters;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This class creates initial policy types in the database.
+ *
+ * @author Chenfei Gao (cgao@research.att.com)
+ */
+public class ApiDatabaseInitializer {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(ApiDatabaseInitializer.class);
+
+ private StandardCoder standardCoder;
+ private PolicyModelsProviderFactory factory;
+
+ private static final String[] PRELOAD_POLICYTYPES = {
+ "preloadedPolicyTypes/onap.policies.monitoring.cdap.tca.hi.lo.app.json",
+ "preloadedPolicyTypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.json",
+ "preloadedPolicyTypes/onap.policies.optimization.AffinityPolicy.json",
+ "preloadedPolicyTypes/onap.policies.optimization.DistancePolicy.json",
+ "preloadedPolicyTypes/onap.policies.optimization.HpaPolicy.json",
+ "preloadedPolicyTypes/onap.policies.optimization.OptimizationPolicy.json",
+ "preloadedPolicyTypes/onap.policies.optimization.PciPolicy.json",
+ "preloadedPolicyTypes/onap.policies.optimization.QueryPolicy.json",
+ "preloadedPolicyTypes/onap.policies.optimization.SubscriberPolicy.json",
+ "preloadedPolicyTypes/onap.policies.optimization.Vim_fit.json",
+ "preloadedPolicyTypes/onap.policies.optimization.VnfPolicy.json"
+ };
+
+ /**
+ * Constructs the object.
+ */
+ public ApiDatabaseInitializer() {
+ factory = new PolicyModelsProviderFactory();
+ standardCoder = new StandardCoder();
+ }
+
+ /**
+ * Initializes database by preloading policy types.
+ *
+ * @param policyModelsProviderParameters the database parameters
+ * @throws PolicyApiException in case of errors.
+ */
+ public void initializeApiDatabase(final PolicyModelsProviderParameters policyModelsProviderParameters)
+ throws PolicyApiException {
+
+ try (PolicyModelsProvider databaseProvider =
+ factory.createPolicyModelsProvider(policyModelsProviderParameters)) {
+ ToscaServiceTemplate policyTypes = new ToscaServiceTemplate();
+ policyTypes.setPolicyTypes(new ArrayList<Map<String,ToscaPolicyType>>());
+ policyTypes.setToscaDefinitionsVersion("tosca_simple_yaml_1_0_0");
+ for (String pt : PRELOAD_POLICYTYPES) {
+ String policyTypeAsString = ResourceUtils.getResourceAsString(pt);
+ if (policyTypeAsString == null) {
+ throw new PolicyApiException("Preloading policy type cannot be found: " + pt);
+ }
+ ToscaServiceTemplate singlePolicyType = standardCoder.decode(policyTypeAsString,
+ ToscaServiceTemplate.class);
+ if (singlePolicyType == null) {
+ throw new PolicyApiException("Error deserializing policy type from file: " + pt);
+ }
+ // Consolidate policy types
+ for (Map<String, ToscaPolicyType> eachPolicyType : singlePolicyType.getPolicyTypes()) {
+ policyTypes.getPolicyTypes().add(eachPolicyType);
+ }
+ }
+ ToscaServiceTemplate createdPolicyTypes = databaseProvider.createPolicyTypes(policyTypes);
+ if (createdPolicyTypes == null) {
+ throw new PolicyApiException("Error preloading policy types: " + policyTypes);
+ } else {
+ LOGGER.debug("Created initial policy types in DB - {}", createdPolicyTypes);
+ }
+ } catch (final PfModelException | CoderException exp) {
+ throw new PolicyApiException(exp);
+ }
+ }
+}
diff --git a/main/src/main/java/org/onap/policy/api/main/startstop/Main.java b/main/src/main/java/org/onap/policy/api/main/startstop/Main.java
index 97d53ade..4a0fead1 100644
--- a/main/src/main/java/org/onap/policy/api/main/startstop/Main.java
+++ b/main/src/main/java/org/onap/policy/api/main/startstop/Main.java
@@ -1,7 +1,7 @@
/*-
* ============LICENSE_START=======================================================
- * ONAP Policy API
- * ================================================================================
+ * ONAP Policy API
+ * ================================================================================
* Copyright (C) 2018 Samsung Electronics Co., Ltd. All rights reserved.
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
@@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory;
*
*/
public class Main {
-
+
private static final Logger LOGGER = LoggerFactory.getLogger(Main.class);
// The policy api Activator that activates the policy api service
@@ -78,6 +78,14 @@ public class Main {
return;
}
+ // Initialize database
+ try {
+ new ApiDatabaseInitializer().initializeApiDatabase(parameterGroup.getDatabaseProviderParameters());
+ } catch (final PolicyApiException e) {
+ LOGGER.error("Preloading policy types into DB failed", e);
+ return;
+ }
+
// Now, create the activator for the policy api service
activator = new ApiActivator(parameterGroup);
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.monitoring.cdap.tca.hi.lo.app.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.monitoring.cdap.tca.hi.lo.app.json
new file mode 100644
index 00000000..1d1a4d64
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.monitoring.cdap.tca.hi.lo.app.json
@@ -0,0 +1,223 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Monitoring": {
+ "derived_from": "tosca.policies.Root",
+ "description": "a base policy type for all policies that governs monitoring provisioning"
+ }
+ },
+ {
+ "onap.policies.monitoring.cdap.tca.hi.lo.app": {
+ "derived_from": "onap.policies.Monitoring",
+ "version": "1.0.0",
+ "properties": {
+ "tca_policy": {
+ "type": "map",
+ "description": "TCA Policy JSON",
+ "entry_schema": {
+ "type": "onap.datatypes.monitoring.tca_policy"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "onap.datatypes.monitoring.metricsPerEventName": {
+ "derived_from": "tosca.datatypes.Root",
+ "properties": {
+ "controlLoopSchemaType": {
+ "type": "string",
+ "required": true,
+ "description": "Specifies Control Loop Schema Type for the event Name e.g. VNF, VM",
+ "constraints": [
+ {
+ "valid_values": [
+ "VM",
+ "VNF"
+ ]
+ }
+ ]
+ },
+ "eventName": {
+ "type": "string",
+ "required": true,
+ "description": "Event name to which thresholds need to be applied"
+ },
+ "policyName": {
+ "type": "string",
+ "required": true,
+ "description": "TCA Policy Scope Name"
+ },
+ "policyScope": {
+ "type": "string",
+ "required": true,
+ "description": "TCA Policy Scope"
+ },
+ "policyVersion": {
+ "type": "string",
+ "required": true,
+ "description": "TCA Policy Scope Version"
+ },
+ "thresholds": {
+ "type": "list",
+ "required": true,
+ "description": "Thresholds associated with eventName",
+ "entry_schema": {
+ "type": "onap.datatypes.monitoring.thresholds"
+ }
+ }
+ }
+ }
+ },
+ {
+ "onap.datatypes.monitoring.tca_policy": {
+ "derived_from": "tosca.datatypes.Root",
+ "properties": {
+ "domain": {
+ "type": "string",
+ "required": true,
+ "description": "Domain name to which TCA needs to be applied",
+ "default": "measurementsForVfScaling",
+ "constraints": [
+ {
+ "equal": "measurementsForVfScaling"
+ }
+ ]
+ },
+ "metricsPerEventName": {
+ "type": "list",
+ "required": true,
+ "description": "Contains eventName and threshold details that need to be applied to given eventName",
+ "entry_schema": {
+ "type": "onap.datatypes.monitoring.metricsPerEventName"
+ }
+ }
+ }
+ }
+ },
+ {
+ "onap.datatypes.monitoring.thresholds": {
+ "derived_from": "tosca.datatypes.Root",
+ "properties": {
+ "closedLoopControlName": {
+ "type": "string",
+ "required": true,
+ "description": "Closed Loop Control Name associated with the threshold"
+ },
+ "closedLoopEventStatus": {
+ "type": "string",
+ "required": true,
+ "description": "Closed Loop Event Status of the threshold",
+ "constraints": [
+ {
+ "valid_values": [
+ "ONSET",
+ "ABATED"
+ ]
+ }
+ ]
+ },
+ "direction": {
+ "type": "string",
+ "required": true,
+ "description": "Direction of the threshold",
+ "constraints": [
+ {
+ "valid_values": [
+ "LESS",
+ "LESS_OR_EQUAL",
+ "GREATER",
+ "GREATER_OR_EQUAL",
+ "EQUAL"
+ ]
+ }
+ ]
+ },
+ "fieldPath": {
+ "type": "string",
+ "required": true,
+ "description": "Json field Path as per CEF message which needs to be analyzed for TCA",
+ "constraints": [
+ {
+ "valid_values": [
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedOctetsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedUnicastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedMulticastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedErrorPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsDelta",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedTotalPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedOctetsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedUnicastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedMulticastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedBroadcastPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedDiscardedPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].transmittedErrorPacketsAccumulated",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuIdle",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageInterrupt",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageNice",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSoftIrq",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSteal",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuUsageSystem",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].cpuWait",
+ "$.event.measurementsForVfScalingFields.cpuUsageArray[*].percentUsage",
+ "$.event.measurementsForVfScalingFields.meanRequestLatency",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryBuffered",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryCached",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryConfigured",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryFree",
+ "$.event.measurementsForVfScalingFields.memoryUsageArray[*].memoryUsed",
+ "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value"
+ ]
+ }
+ ]
+ },
+ "severity": {
+ "type": "string",
+ "required": true,
+ "description": "Threshold Event Severity",
+ "constraints": [
+ {
+ "valid_values": [
+ "CRITICAL",
+ "MAJOR",
+ "MINOR",
+ "WARNING",
+ "NORMAL"
+ ]
+ }
+ ]
+ },
+ "thresholdValue": {
+ "type": "integer",
+ "required": true,
+ "description": "Threshold value for the field Path inside CEF message"
+ },
+ "version": {
+ "type": "string",
+ "required": true,
+ "description": "Version number associated with the threshold"
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.json
new file mode 100644
index 00000000..26f4c021
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.json
@@ -0,0 +1,28 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Monitoring": {
+ "derived_from": "tosca.policies.Root",
+ "description": "a base policy type for all policies that govern monitoring provision",
+ "version": "1.0.0"
+ }
+ },
+ {
+ "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server": {
+ "derived_from": "policy.nodes.Root",
+ "version": "1.0.0",
+ "properties": {
+ "buscontroller_feed_publishing_endpoint": {
+ "type": "string",
+ "description": "DMAAP Bus Controller feed endpoint"
+ },
+ "datafile.policy": {
+ "type": "string",
+ "description": "datafile Policy JSON as string"
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.AffinityPolicy.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.AffinityPolicy.json
new file mode 100644
index 00000000..ad4f4a9c
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.AffinityPolicy.json
@@ -0,0 +1,102 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Optimization": {
+ "derived_from": "tosca.policies.Root",
+ "version": "1.0.0",
+ "description": "a base policy type for all policies that govern optimization"
+ }
+ },
+ {
+ "onap.policies.optimization.AffinityPolicy": {
+ "derived_from": "onap.policies.Optimization",
+ "properties": {
+ "policyScope": {
+ "type": "list",
+ "description": "scope where the policy is applicable",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "policyType": {
+ "type": "list",
+ "description": "type of a policy",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "zone"
+ ]
+ }
+ ]
+ }
+ },
+ "identity": {
+ "type": "string",
+ "required": true
+ },
+ "applicableResources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "any",
+ "all"
+ ]
+ }
+ ]
+ }
+ },
+ "affinityProperties": {
+ "type": "policy.data.affinityProperties_properties",
+ "required": true
+ },
+ "resources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "policy.data.affinityProperties_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "qualifier": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "same",
+ "different"
+ ]
+ }
+ ]
+ }
+ },
+ "category": {
+ "type": "string",
+ "required": true
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.DistancePolicy.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.DistancePolicy.json
new file mode 100644
index 00000000..12918171
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.DistancePolicy.json
@@ -0,0 +1,132 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Optimization": {
+ "derived_from": "tosca.policies.Root",
+ "version": "1.0.0",
+ "description": "a base policy type for all policies that govern optimization"
+ }
+ },
+ {
+ "onap.policies.optimization.DistancePolicy": {
+ "derived_from": "onap.policies.Optimization",
+ "properties": {
+ "policyScope": {
+ "type": "list",
+ "description": "scope where the policy is applicable",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "policyType": {
+ "type": "list",
+ "description": "type of a policy",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "distance_to_location"
+ ]
+ }
+ ]
+ }
+ },
+ "identity": {
+ "type": "string",
+ "required": true
+ },
+ "resources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "applicableResources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "any",
+ "all"
+ ]
+ }
+ ]
+ }
+ },
+ "distanceProperties": {
+ "type": "policy.data.distanceProperties_properties",
+ "required": true
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "policy.data.distanceProperties_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "locationInfo": {
+ "type": "string",
+ "required": true
+ },
+ "distance": {
+ "type": "policy.data.distance_properties",
+ "required": true
+ }
+ }
+ },
+ "policy.data.distance_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "value": {
+ "type": "string",
+ "required": true
+ },
+ "operator": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "<",
+ "<=",
+ ">",
+ ">=",
+ "="
+ ]
+ }
+ ]
+ }
+ },
+ "unit": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "km"
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.HpaPolicy.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.HpaPolicy.json
new file mode 100644
index 00000000..3f428736
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.HpaPolicy.json
@@ -0,0 +1,204 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Optimization": {
+ "derived_from": "tosca.policies.Root",
+ "version": "1.0.0",
+ "description": "a base policy type for all policies that govern optimization"
+ }
+ },
+ {
+ "onap.policies.optimization.HpaPolicy": {
+ "derived_from": "onap.policies.Optimization",
+ "properties": {
+ "policyScope": {
+ "type": "list",
+ "description": "scope where the policy is applicable",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "policyType": {
+ "type": "list",
+ "description": "type of a policy",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "hpa"
+ ]
+ }
+ ]
+ }
+ },
+ "resources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "identity": {
+ "type": "string",
+ "required": true
+ },
+ "flavorFeatures": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "policy.data.flavorFeatures_properties"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "policy.data.flavorFeatures_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "id": {
+ "type": "string",
+ "required": true
+ },
+ "type": {
+ "type": "string",
+ "required": true
+ },
+ "directives": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "policy.data.directives_properties"
+ }
+ },
+ "flavorProperties": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "policy.data.flavorProperties_properties"
+ }
+ }
+ }
+ }
+ },
+ {
+ "policy.data.directives_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "attributes": {
+ "type": "list",
+ "entry_schema": {
+ "type": "policy.data.directives_attributes_properties"
+ }
+ }
+ }
+ }
+ },
+ {
+ "policy.data.directives_attributes_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "attribute_name": {
+ "type": "string"
+ },
+ "attribute_value": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ {
+ "policy.data.flavorProperties_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "hpa-feature": {
+ "type": "string",
+ "required": true
+ },
+ "mandatory": {
+ "type": "string",
+ "required": true
+ },
+ "score": {
+ "type": "string",
+ "required": false
+ },
+ "architecture": {
+ "type": "string",
+ "required": true
+ },
+ "hpa-version": {
+ "type": "string",
+ "required": true
+ },
+ "directives": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "policy.data.directives_properties"
+ }
+ },
+ "hpa-feature-attributes": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "policy.data.hpa-feature-attributes_properties"
+ }
+ }
+ }
+ }
+ },
+ {
+ "policy.data.hpa-feature-attributes_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "hpa-attribute-key": {
+ "type": "string",
+ "required": true
+ },
+ "hpa-attribute-value": {
+ "type": "string",
+ "required": true
+ },
+ "operator": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "<",
+ "<=",
+ ">",
+ ">=",
+ "=",
+ "!=",
+ "any",
+ "all",
+ "subset"
+ ]
+ }
+ ]
+ }
+ },
+ "unit": {
+ "type": "string",
+ "required": false
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.OptimizationPolicy.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.OptimizationPolicy.json
new file mode 100644
index 00000000..9807d9b7
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.OptimizationPolicy.json
@@ -0,0 +1,140 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Optimization": {
+ "derived_from": "tosca.policies.Root",
+ "version": "1.0.0",
+ "description": "a base policy type for all policies that govern optimization"
+ }
+ },
+ {
+ "onap.policies.optimization.OptimizationPolicy": {
+ "derived_from": "onap.policies.Optimization",
+ "properties": {
+ "policyScope": {
+ "type": "list",
+ "description": "scope where the policy is applicable",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "policyType": {
+ "type": "list",
+ "description": "type of a policy",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "placement_optimization"
+ ]
+ }
+ ]
+ }
+ },
+ "identity": {
+ "type": "string",
+ "required": true
+ },
+ "objective": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "minimize",
+ "maximize"
+ ]
+ }
+ ]
+ }
+ },
+ "objectiveParameter": {
+ "type": "policy.data.objectiveParameter_properties",
+ "required": true
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "policy.data.objectiveParameter_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "parameterAttributes": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "policy.data.parameterAttributes_properties"
+ }
+ },
+ "operator": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "*",
+ "+",
+ "-",
+ "/",
+ "%"
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "policy.data.parameterAttributes_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "resources": {
+ "type": "string",
+ "required": true
+ },
+ "customerLocationInfo": {
+ "type": "string",
+ "required": true
+ },
+ "parameter": {
+ "type": "string",
+ "required": true
+ },
+ "weight": {
+ "type": "string",
+ "required": true
+ },
+ "operator": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "*",
+ "+",
+ "-",
+ "/",
+ "%"
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.PciPolicy.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.PciPolicy.json
new file mode 100644
index 00000000..d775f220
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.PciPolicy.json
@@ -0,0 +1,91 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Optimization": {
+ "derived_from": "tosca.policies.Root",
+ "version": "1.0.0",
+ "description": "a base policy type for all policies that govern optimization"
+ }
+ },
+ {
+ "onap.policies.optimization.PciPolicy": {
+ "derived_from": "onap.policies.Optimization",
+ "properties": {
+ "policyScope": {
+ "type": "list",
+ "description": "scope where the policy is applicable",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "policyType": {
+ "type": "list",
+ "description": "type of a policy",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "pciPolicy"
+ ]
+ }
+ ]
+ }
+ },
+ "identity": {
+ "type": "string",
+ "required": true
+ },
+ "resources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "pciProperties": {
+ "type": "list",
+ "required": false,
+ "entry_schema": {
+ "type": "policy.data.pciProperties_properties"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "policy.data.pciProperties_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "algoCategory": {
+ "type": "string",
+ "required": false
+ },
+ "pciOptmizationAlgoName": {
+ "type": "string",
+ "required": false
+ },
+ "pciOptimizationNwConstraint": {
+ "type": "string",
+ "required": false
+ },
+ "pciOptimizationPriority": {
+ "type": "string",
+ "required": false
+ },
+ "pciOptimizationTimeConstraint": {
+ "type": "string",
+ "required": false
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.QueryPolicy.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.QueryPolicy.json
new file mode 100644
index 00000000..d7842680
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.QueryPolicy.json
@@ -0,0 +1,76 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Optimization": {
+ "derived_from": "tosca.policies.Root",
+ "version": "1.0.0",
+ "description": "a base policy type for all policies that govern optimization"
+ }
+ },
+ {
+ "onap.policies.optimization.QueryPolicy": {
+ "derived_from": "onap.policies.Optimization",
+ "properties": {
+ "policyScope": {
+ "type": "list",
+ "description": "scope where the policy is applicable",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "policyType": {
+ "type": "list",
+ "description": "type of a policy",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "request_param_query"
+ ]
+ }
+ ]
+ }
+ },
+ "identity": {
+ "type": "string",
+ "required": true
+ },
+ "queryProperties": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "policy.data.queryProperties_properties"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "policy.data.queryProperties_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "attribute": {
+ "type": "string",
+ "required": true
+ },
+ "value": {
+ "type": "string",
+ "required": true
+ },
+ "attribute_location": {
+ "type": "string",
+ "required": true
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.SubscriberPolicy.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.SubscriberPolicy.json
new file mode 100644
index 00000000..fbc6cdb7
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.SubscriberPolicy.json
@@ -0,0 +1,82 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Optimization": {
+ "derived_from": "tosca.policies.Root",
+ "version": "1.0.0",
+ "description": "a base policy type for all policies that govern optimization"
+ }
+ },
+ {
+ "onap.policies.optimization.SubscriberPolicy": {
+ "derived_from": "onap.policies.Optimization",
+ "properties": {
+ "policyScope": {
+ "type": "list",
+ "description": "scope where the policy is applicable",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "policyType": {
+ "type": "list",
+ "description": "type of a policy",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "subscriberPolicy"
+ ]
+ }
+ ]
+ }
+ },
+ "identity": {
+ "type": "string",
+ "required": true
+ },
+ "properties": {
+ "type": "policy.data.properties_properties",
+ "required": true
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "policy.data.properties_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "subscriberName": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "subscriberRole": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "provStatus": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.Vim_fit.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.Vim_fit.json
new file mode 100644
index 00000000..6ef619af
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.Vim_fit.json
@@ -0,0 +1,91 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Optimization": {
+ "derived_from": "tosca.policies.Root",
+ "version": "1.0.0",
+ "description": "a base policy type for all policies that govern optimization"
+ }
+ },
+ {
+ "onap.policies.optimization.Vim_fit": {
+ "derived_from": "onap.policies.Optimization",
+ "properties": {
+ "policyScope": {
+ "type": "list",
+ "description": "scope where the policy is applicable",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "policyType": {
+ "type": "list",
+ "description": "type of a policy",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "vim_fit"
+ ]
+ }
+ ]
+ }
+ },
+ "identity": {
+ "type": "string",
+ "required": true
+ },
+ "applicableResources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "any",
+ "all"
+ ]
+ }
+ ]
+ }
+ },
+ "resources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "capacityProperties": {
+ "type": "policy.data.capacityProperties_properties",
+ "required": true
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "policy.data.capacityProperties_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "controller": {
+ "type": "string",
+ "required": true
+ },
+ "request": {
+ "type": "string",
+ "required": true
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.VnfPolicy.json b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.VnfPolicy.json
new file mode 100644
index 00000000..6e46573c
--- /dev/null
+++ b/main/src/main/resources/preloadedPolicyTypes/onap.policies.optimization.VnfPolicy.json
@@ -0,0 +1,115 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "policy_types": [
+ {
+ "onap.policies.Optimization": {
+ "derived_from": "tosca.policies.Root",
+ "version": "1.0.0",
+ "description": "a base policy type for all policies that govern optimization"
+ }
+ },
+ {
+ "onap.policies.optimization.VnfPolicy": {
+ "derived_from": "onap.policies.Optimization",
+ "properties": {
+ "policyScope": {
+ "type": "list",
+ "description": "scope where the policy is applicable",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "policyType": {
+ "type": "list",
+ "description": "type of a policy",
+ "required": true,
+ "matchable": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "vnfPolicy"
+ ]
+ }
+ ]
+ }
+ },
+ "identity": {
+ "type": "string",
+ "required": true
+ },
+ "resources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "applicableResources": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "any",
+ "all"
+ ]
+ }
+ ]
+ }
+ },
+ "vnfProperties": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "policy.data.vnfProperties_properties"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "data_types": [
+ {
+ "policy.data.vnfProperties_properties": {
+ "derived_from": "tosca.nodes.Root",
+ "properties": {
+ "inventoryProvider": {
+ "type": "string",
+ "required": true
+ },
+ "serviceType": {
+ "type": "string",
+ "required": true
+ },
+ "inventoryType": {
+ "type": "list",
+ "required": true,
+ "entry_schema": {
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "serviceInstanceId",
+ "vnfName",
+ "cloudRegionId",
+ "vimId"
+ ]
+ }
+ ]
+ }
+ },
+ "customerId": {
+ "type": "string",
+ "required": true
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyProvider.java b/main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyProvider.java
index 653f467e..0ae718d1 100644
--- a/main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyProvider.java
+++ b/main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyProvider.java
@@ -171,6 +171,22 @@ public class TestPolicyProvider {
}).hasMessage("policy with ID dummy:dummy and type dummy:dummy does not exist");
assertThatCode(() -> {
+ String policyTypeString = ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE);
+ ToscaServiceTemplate policyTypeServiceTemplate =
+ standardCoder.decode(policyTypeString, ToscaServiceTemplate.class);
+ policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
+ }).doesNotThrowAnyException();
+
+ assertThatCode(() -> {
+ String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
+ ToscaServiceTemplate policyServiceTemplate =
+ standardCoder.decode(policyString, ToscaServiceTemplate.class);
+ ToscaServiceTemplate serviceTemplate = policyProvider
+ .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
+ assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
+ }).doesNotThrowAnyException();
+
+ assertThatCode(() -> {
ToscaServiceTemplate serviceTemplate = policyProvider.deletePolicy(
"onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca", "1.0.0");
assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
diff --git a/main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyTypeProvider.java b/main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyTypeProvider.java
index 9dc77267..03d49332 100644
--- a/main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyTypeProvider.java
+++ b/main/src/test/java/org/onap/policy/api/main/rest/provider/TestPolicyTypeProvider.java
@@ -129,6 +129,14 @@ public class TestPolicyTypeProvider {
public void testDeletePolicyType() {
assertThatCode(() -> {
+ String policyTypeString = ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE);
+ ToscaServiceTemplate policyTypeServiceTemplate =
+ standardCoder.decode(policyTypeString, ToscaServiceTemplate.class);
+ ToscaServiceTemplate serviceTemplate = policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
+ assertFalse(serviceTemplate.getPolicyTypes().get(0).isEmpty());
+ }).doesNotThrowAnyException();
+
+ assertThatCode(() -> {
String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
ToscaServiceTemplate policyServiceTemplate =
standardCoder.decode(policyString, ToscaServiceTemplate.class);
diff --git a/main/src/test/resources/policies/vCPE.policy.bad.policytypeversion.json b/main/src/test/resources/policies/vCPE.policy.bad.policytypeversion.json
index 638a4e1d..23195a97 100644
--- a/main/src/test/resources/policies/vCPE.policy.bad.policytypeversion.json
+++ b/main/src/test/resources/policies/vCPE.policy.bad.policytypeversion.json
@@ -6,7 +6,7 @@
"onap.restart.tca": {
"type": "onap.policies.monitoring.cdap.tca.hi.lo.app",
"version": "1.0.0",
- "typeVersion": "2.0.0",
+ "type_version": "2.0.0",
"metadata": {
"policy-id": "onap.restart.tca"
},
diff --git a/main/src/test/resources/policies/vCPE.policy.monitoring.input.tosca.json b/main/src/test/resources/policies/vCPE.policy.monitoring.input.tosca.json
index 0eabb573..7a63f658 100644
--- a/main/src/test/resources/policies/vCPE.policy.monitoring.input.tosca.json
+++ b/main/src/test/resources/policies/vCPE.policy.monitoring.input.tosca.json
@@ -6,6 +6,7 @@
"onap.restart.tca": {
"type": "onap.policies.monitoring.cdap.tca.hi.lo.app",
"version": "1.0.0",
+ "type_version": "1.0.0",
"metadata": {
"policy-id": "onap.restart.tca"
},