Move jsonRepresentation
Move the storage of jsonRepresentation to OperationalPolicy level
Issue-ID: CLAMP-582
Change-Id: Id555ebc1f2f04468f7bf0ffd813de7732bcee97f
Signed-off-by: xuegao <xg353y@intl.att.com>
diff --git a/extra/sql/bulkload/create-tables.sql b/extra/sql/bulkload/create-tables.sql
index 85b8f85..6e9ff7c 100644
--- a/extra/sql/bulkload/create-tables.sql
+++ b/extra/sql/bulkload/create-tables.sql
@@ -23,7 +23,6 @@
dcae_deployment_status_url varchar(255),
global_properties_json json,
last_computed_state varchar(255) not null,
- operational_policy_schema json,
svg_representation MEDIUMTEXT,
service_uuid varchar(255),
primary key (name)
@@ -48,6 +47,7 @@
create table operational_policies (
name varchar(255) not null,
configurations_json json,
+ json_representation json not null,
loop_id varchar(255) not null,
primary key (name)
) engine=InnoDB;
diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java
index bf68366..531587a 100644
--- a/src/main/java/org/onap/clamp/loop/Loop.java
+++ b/src/main/java/org/onap/clamp/loop/Loop.java
@@ -26,10 +26,8 @@
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.google.gson.JsonObject;
-import com.google.gson.JsonSyntaxException;
import com.google.gson.annotations.Expose;
-import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
@@ -65,7 +63,6 @@
import org.onap.clamp.loop.service.Service;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.onap.clamp.policy.operational.OperationalPolicy;
-import org.onap.clamp.policy.operational.OperationalPolicyRepresentationBuilder;
@Entity
@Table(name = "loops")
@@ -102,11 +99,6 @@
@Expose
@Type(type = "json")
- @Column(columnDefinition = "json", name = "operational_policy_schema")
- private JsonObject operationalPolicySchema;
-
- @Expose
- @Type(type = "json")
@Column(columnDefinition = "json", name = "global_properties_json")
private JsonObject globalPropertiesJson;
@@ -274,13 +266,6 @@
void setModelService(Service modelService) {
this.modelService = modelService;
- try {
- this.operationalPolicySchema = OperationalPolicyRepresentationBuilder
- .generateOperationalPolicySchema(this.getModelService());
- } catch (JsonSyntaxException | IOException | NullPointerException e) {
- logger.error("Unable to generate the operational policy Schema ... ", e);
- this.operationalPolicySchema = new JsonObject();
- }
}
public Map<String, ExternalComponent> getComponents() {
diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
index c6ed498..1411269 100644
--- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
+++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
@@ -30,8 +30,10 @@
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
+import com.google.gson.JsonSyntaxException;
import com.google.gson.annotations.Expose;
+import java.io.IOException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
@@ -79,6 +81,11 @@
@Column(columnDefinition = "json", name = "configurations_json")
private JsonObject configurationsJson;
+ @Expose
+ @Type(type = "json")
+ @Column(columnDefinition = "json", name = "json_representation", nullable = false)
+ private JsonObject jsonRepresentation;
+
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "loop_id", nullable = false)
private Loop loop;
@@ -100,6 +107,13 @@
this.loop = loop;
this.configurationsJson = configurationsJson;
LegacyOperationalPolicy.preloadConfiguration(this.configurationsJson, loop);
+ try {
+ this.jsonRepresentation = OperationalPolicyRepresentationBuilder
+ .generateOperationalPolicySchema(loop.getModelService());
+ } catch (JsonSyntaxException | IOException | NullPointerException e) {
+ logger.error("Unable to generate the operational policy Schema ... ", e);
+ this.jsonRepresentation = new JsonObject();
+ }
}
@Override
@@ -125,7 +139,11 @@
@Override
public JsonObject getJsonRepresentation() {
- return null;
+ return jsonRepresentation;
+ }
+
+ void setJsonRepresentation(JsonObject jsonRepresentation) {
+ this.jsonRepresentation = jsonRepresentation;
}
@Override
diff --git a/src/test/resources/tosca/loop.json b/src/test/resources/tosca/loop.json
index 557fa6f..cb1697b 100644
--- a/src/test/resources/tosca/loop.json
+++ b/src/test/resources/tosca/loop.json
@@ -3,580 +3,6 @@
"dcaeDeploymentId": "123456789",
"dcaeDeploymentStatusUrl": "https://dcaetest.org",
"dcaeBlueprintId": "UUID-blueprint",
- "operationalPolicySchema": {
- "schema": {
- "uniqueItems": "true",
- "format": "tabs",
- "type": "array",
- "minItems": 1,
- "maxItems": 1,
- "title": "Operational policies",
- "items": {
- "type": "object",
- "title": "Operational Policy Item",
- "id": "operational_policy_item",
- "headerTemplate": "{{self.name}}",
- "required": [
- "name",
- "configurationsJson"
- ],
- "properties": {
- "name": {
- "type": "string",
- "title": "Operational policy name",
- "readOnly": "True"
- },
- "configurationsJson": {
- "type": "object",
- "title": "Configuration",
- "required": [
- "operational_policy",
- "guard_policies"
- ],
- "properties": {
- "operational_policy": {
- "type": "object",
- "title": "Related Parameters",
- "required": [
- "controlLoop",
- "policies"
- ],
- "properties": {
- "controlLoop": {
- "type": "object",
- "title": "Control Loop details",
- "required": [
- "timeout",
- "abatement",
- "trigger_policy",
- "controlLoopName"
- ],
- "properties": {
- "timeout": {
- "type": "string",
- "title": "Overall Time Limit",
- "default": "0",
- "format": "number"
- },
- "abatement": {
- "type": "string",
- "title": "Abatement",
- "enum": [
- "True",
- "False"
- ]
- },
- "trigger_policy": {
- "type": "string",
- "title": "Policy Decision Entry"
- },
- "controlLoopName": {
- "type": "string",
- "title": "Control loop name",
- "readOnly": "True"
- }
- }
- },
- "policies": {
- "uniqueItems": "true",
- "id": "policies_array",
- "type": "array",
- "title": "Policy Decision Tree",
- "format": "tabs-top",
- "items": {
- "title": "Policy Decision",
- "type": "object",
- "id": "policy_item",
- "headerTemplate": "{{self.id}} - {{self.recipe}}",
- "format": "categories",
- "basicCategoryTitle": "recipe",
- "required": [
- "id",
- "recipe",
- "retry",
- "timeout",
- "actor",
- "success",
- "failure",
- "failure_timeout",
- "failure_retries",
- "failure_exception",
- "failure_guard",
- "target"
- ],
- "properties": {
- "id": {
- "default": "Policy 1",
- "title": "Policy ID",
- "type": "string"
- },
- "recipe": {
- "title": "Recipe",
- "type": "string",
- "enum": [
- "Restart",
- "Rebuild",
- "Migrate",
- "Health-Check",
- "ModifyConfig",
- "VF Module Create",
- "VF Module Delete",
- "Reroute"
- ]
- },
- "retry": {
- "default": "0",
- "title": "Number of Retry",
- "type": "string",
- "format": "number"
- },
- "timeout": {
- "default": "0",
- "title": "Timeout",
- "type": "string",
- "format": "number"
- },
- "actor": {
- "title": "Actor",
- "type": "string",
- "enum": [
- "APPC",
- "SO",
- "VFC",
- "SDNC",
- "SDNR"
- ]
- },
- "payload": {
- "title": "Payload (YAML)",
- "type": "string",
- "format": "textarea"
- },
- "success": {
- "default": "final_success",
- "title": "When Success",
- "type": "string"
- },
- "failure": {
- "default": "final_failure",
- "title": "When Failure",
- "type": "string"
- },
- "failure_timeout": {
- "default": "final_failure_timeout",
- "title": "When Failure Timeout",
- "type": "string"
- },
- "failure_retries": {
- "default": "final_failure_retries",
- "title": "When Failure Retries",
- "type": "string"
- },
- "failure_exception": {
- "default": "final_failure_exception",
- "title": "When Failure Exception",
- "type": "string"
- },
- "failure_guard": {
- "default": "final_failure_guard",
- "title": "When Failure Guard",
- "type": "string"
- },
- "target": {
- "type": "object",
- "required": [
- "type",
- "resourceID"
- ],
- "anyOf": [
- {
- "title": "User Defined",
- "additionalProperties": "True",
- "properties": {
- "type": {
- "title": "Target type",
- "type": "string",
- "default": "",
- "enum": [
- "VNF",
- "VFMODULE",
- "VM"
- ]
- },
- "resourceID": {
- "title": "Target type",
- "type": "string",
- "default": ""
- }
- }
- },
- {
- "title": "VNF-vLoadBalancerMS 0",
- "properties": {
- "type": {
- "title": "Type",
- "type": "string",
- "default": "VNF",
- "readOnly": "True"
- },
- "resourceID": {
- "title": "Resource ID",
- "type": "string",
- "default": "vLoadBalancerMS",
- "readOnly": "True"
- }
- }
- },
- {
- "title": "VFMODULE-Vloadbalancerms..vpkg..module-1",
- "properties": {
- "type": {
- "title": "Type",
- "type": "string",
- "default": "VFMODULE",
- "readOnly": "True"
- },
- "resourceID": {
- "title": "Resource ID",
- "type": "string",
- "default": "Vloadbalancerms..vpkg..module-1",
- "readOnly": "True"
- },
- "modelInvariantId": {
- "title": "Model Invariant Id (ModelInvariantUUID)",
- "type": "string",
- "default": "ca052563-eb92-4b5b-ad41-9111768ce043",
- "readOnly": "True"
- },
- "modelVersionId": {
- "title": "Model Version Id (ModelUUID)",
- "type": "string",
- "default": "1e725ccc-b823-4f67-82b9-4f4367070dbc",
- "readOnly": "True"
- },
- "modelName": {
- "title": "Model Name",
- "type": "string",
- "default": "Vloadbalancerms..vpkg..module-1",
- "readOnly": "True"
- },
- "modelVersion": {
- "title": "Model Version",
- "type": "string",
- "default": "1",
- "readOnly": "True"
- },
- "modelCustomizationId": {
- "title": "Customization ID",
- "type": "string",
- "default": "1bffdc31-a37d-4dee-b65c-dde623a76e52",
- "readOnly": "True"
- }
- }
- },
- {
- "title": "VFMODULE-Vloadbalancerms..vdns..module-3",
- "properties": {
- "type": {
- "title": "Type",
- "type": "string",
- "default": "VFMODULE",
- "readOnly": "True"
- },
- "resourceID": {
- "title": "Resource ID",
- "type": "string",
- "default": "Vloadbalancerms..vdns..module-3",
- "readOnly": "True"
- },
- "modelInvariantId": {
- "title": "Model Invariant Id (ModelInvariantUUID)",
- "type": "string",
- "default": "4c10ba9b-f88f-415e-9de3-5d33336047fa",
- "readOnly": "True"
- },
- "modelVersionId": {
- "title": "Model Version Id (ModelUUID)",
- "type": "string",
- "default": "4fa73b49-8a6c-493e-816b-eb401567b720",
- "readOnly": "True"
- },
- "modelName": {
- "title": "Model Name",
- "type": "string",
- "default": "Vloadbalancerms..vdns..module-3",
- "readOnly": "True"
- },
- "modelVersion": {
- "title": "Model Version",
- "type": "string",
- "default": "1",
- "readOnly": "True"
- },
- "modelCustomizationId": {
- "title": "Customization ID",
- "type": "string",
- "default": "bafcdab0-801d-4d81-9ead-f464640a38b1",
- "readOnly": "True"
- }
- }
- },
- {
- "title": "VFMODULE-Vloadbalancerms..base_template..module-0",
- "properties": {
- "type": {
- "title": "Type",
- "type": "string",
- "default": "VFMODULE",
- "readOnly": "True"
- },
- "resourceID": {
- "title": "Resource ID",
- "type": "string",
- "default": "Vloadbalancerms..base_template..module-0",
- "readOnly": "True"
- },
- "modelInvariantId": {
- "title": "Model Invariant Id (ModelInvariantUUID)",
- "type": "string",
- "default": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3",
- "readOnly": "True"
- },
- "modelVersionId": {
- "title": "Model Version Id (ModelUUID)",
- "type": "string",
- "default": "63734409-f745-4e4d-a38b-131638a0edce",
- "readOnly": "True"
- },
- "modelName": {
- "title": "Model Name",
- "type": "string",
- "default": "Vloadbalancerms..base_template..module-0",
- "readOnly": "True"
- },
- "modelVersion": {
- "title": "Model Version",
- "type": "string",
- "default": "1",
- "readOnly": "True"
- },
- "modelCustomizationId": {
- "title": "Customization ID",
- "type": "string",
- "default": "86baddea-c730-4fb8-9410-cd2e17fd7f27",
- "readOnly": "True"
- }
- }
- },
- {
- "title": "VFMODULE-Vloadbalancerms..vlb..module-2",
- "properties": {
- "type": {
- "title": "Type",
- "type": "string",
- "default": "VFMODULE",
- "readOnly": "True"
- },
- "resourceID": {
- "title": "Resource ID",
- "type": "string",
- "default": "Vloadbalancerms..vlb..module-2",
- "readOnly": "True"
- },
- "modelInvariantId": {
- "title": "Model Invariant Id (ModelInvariantUUID)",
- "type": "string",
- "default": "a772a1f4-0064-412c-833d-4749b15828dd",
- "readOnly": "True"
- },
- "modelVersionId": {
- "title": "Model Version Id (ModelUUID)",
- "type": "string",
- "default": "0f5c3f6a-650a-4303-abb6-fff3e573a07a",
- "readOnly": "True"
- },
- "modelName": {
- "title": "Model Name",
- "type": "string",
- "default": "Vloadbalancerms..vlb..module-2",
- "readOnly": "True"
- },
- "modelVersion": {
- "title": "Model Version",
- "type": "string",
- "default": "1",
- "readOnly": "True"
- },
- "modelCustomizationId": {
- "title": "Customization ID",
- "type": "string",
- "default": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806",
- "readOnly": "True"
- }
- }
- }
- ]
- }
- }
- }
- }
- }
- },
- "guard_policies": {
- "type": "array",
- "format": "tabs-top",
- "title": "Associated Guard policies",
- "items": {
- "headerTemplate": "{{self.policy-id}} - {{self.content.recipe}}",
- "anyOf": [
- {
- "title": "Guard MinMax",
- "type": "object",
- "properties": {
- "policy-id": {
- "type": "string",
- "default": "guard.minmax.new",
- "pattern": "^(guard.minmax\\..*)$"
- },
- "content": {
- "properties": {
- "actor": {
- "type": "string",
- "enum": [
- "APPC",
- "SO",
- "VFC",
- "SDNC",
- "SDNR"
- ]
- },
- "recipe": {
- "type": "string",
- "enum": [
- "Restart",
- "Rebuild",
- "Migrate",
- "Health-Check",
- "ModifyConfig",
- "VF Module Create",
- "VF Module Delete",
- "Reroute"
- ]
- },
- "targets": {
- "type": "string",
- "default": ".*"
- },
- "clname": {
- "type": "string",
- "template": "{{loopName}}",
- "watch": {
- "loopName": "operational_policy_item.configurationsJson.operational_policy.controlLoop.controlLoopName"
- }
- },
- "guardActiveStart": {
- "type": "string",
- "default": "00:00:00Z"
- },
- "guardActiveEnd": {
- "type": "string",
- "default": "10:00:00Z"
- },
- "min": {
- "type": "string",
- "default": "0"
- },
- "max": {
- "type": "string",
- "default": "1"
- }
- }
- }
- }
- },
- {
- "title": "Guard Frequency",
- "type": "object",
- "properties": {
- "policy-id": {
- "type": "string",
- "default": "guard.frequency.new",
- "pattern": "^(guard.frequency\\..*)$"
- },
- "content": {
- "properties": {
- "actor": {
- "type": "string",
- "enum": [
- "APPC",
- "SO",
- "VFC",
- "SDNC",
- "SDNR"
- ]
- },
- "recipe": {
- "type": "string",
- "enum": [
- "Restart",
- "Rebuild",
- "Migrate",
- "Health-Check",
- "ModifyConfig",
- "VF Module Create",
- "VF Module Delete",
- "Reroute"
- ]
- },
- "targets": {
- "type": "string",
- "default": ".*"
- },
- "clname": {
- "type": "string",
- "template": "{{loopName}}",
- "watch": {
- "loopName": "operational_policy_item.configurationsJson.operational_policy.controlLoop.controlLoopName"
- }
- },
- "guardActiveStart": {
- "type": "string",
- "default": "00:00:00Z"
- },
- "guardActiveEnd": {
- "type": "string",
- "default": "10:00:00Z"
- },
- "limit": {
- "type": "string"
- },
- "timeWindow": {
- "type": "string"
- },
- "timeUnits": {
- "type": "string",
- "enum": [
- "minute",
- "hour",
- "day",
- "week",
- "month",
- "year"
- ]
- }
- }
- }
- }
- }
- ]
- }
- }
- }
- }
- }
- }
- }
- },
"globalPropertiesJson": {
"testname": "testvalue"
},