Draft of op policy

First draft of the Operational policy based on JsonEditor, it's a wip
code

Issue-ID: CLAMP-430
Change-Id: I2c7970e94488f4020377fd9d4d00691a3590b13e
Signed-off-by: sebdet <sebastien.determe@intl.att.com>
diff --git a/src/test/resources/tosca/operational-policy-json-schema.json b/src/test/resources/tosca/operational-policy-json-schema.json
new file mode 100644
index 0000000..d6870dc
--- /dev/null
+++ b/src/test/resources/tosca/operational-policy-json-schema.json
@@ -0,0 +1,574 @@
+{
+	"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"
+														]
+													}
+												}
+											}
+										}
+									}
+								]
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+}
\ No newline at end of file