Payload attributes are not displayed in operational policy 98/106198/1
authorVidyashree-Huawei <vidyashree.rama@huawei.com>
Fri, 17 Apr 2020 13:36:56 +0000 (19:06 +0530)
committerVidyashree-Huawei <vidyashree.rama@huawei.com>
Fri, 17 Apr 2020 13:41:06 +0000 (19:11 +0530)
Handled list type in response

Change-Id: If4b5b45c5f23f377add1be84306a31e78d47c52b
Issue-ID: CLAMP-823
Signed-off-by: Vidyashree-Huawei <vidyashree.rama@huawei.com>
13 files changed:
src/main/java/org/onap/clamp/clds/client/CdsServices.java
src/main/java/org/onap/clamp/clds/exception/cds/CdsParametersException.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/tosca/update/execution/cds/ToscaMetadataCdsProcess.java
src/test/java/org/onap/clamp/clds/client/CdsServicesTest.java [new file with mode: 0644]
src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
src/test/resources/example/cds-response/vFW-CDS-modify-config-wf-expected-result.json [new file with mode: 0644]
src/test/resources/example/cds-response/vFW-CDS-modify-config-workflow.json [new file with mode: 0644]
src/test/resources/example/cds-response/vFW-CDS-resource-assignment-wf-expected-result.json [new file with mode: 0644]
src/test/resources/example/cds-response/vFW-CDS-resource-assignment-workflow.json [new file with mode: 0644]
src/test/resources/tosca/model-properties-cds.json [new file with mode: 0644]
src/test/resources/tosca/new-converter/tosca_apex_with_metadata.json
src/test/resources/tosca/operational-policy-cds-payload-with-list.json [new file with mode: 0644]
src/test/resources/tosca/operational-policy-json-schema.json

index f25e8b8..b8eb419 100644 (file)
@@ -34,6 +34,7 @@ import java.util.Map;
 import org.apache.camel.CamelContext;\r
 import org.apache.camel.Exchange;\r
 import org.apache.camel.builder.ExchangeBuilder;\r
+import org.onap.clamp.clds.exception.cds.CdsParametersException;\r
 import org.onap.clamp.clds.model.cds.CdsBpWorkFlowListResponse;\r
 import org.onap.clamp.clds.util.JsonUtils;\r
 import org.onap.clamp.clds.util.LoggingUtils;\r
@@ -117,7 +118,7 @@ public class CdsServices {
         return null;\r
     }\r
 \r
-    private JsonObject parseCdsResponse(String response) {\r
+    protected JsonObject parseCdsResponse(String response) {\r
         JsonObject root = JsonParser.parseString(response).getAsJsonObject();\r
         JsonObject inputs = root.getAsJsonObject("workFlowData").getAsJsonObject("inputs");\r
         JsonObject dataTypes = root.getAsJsonObject("dataTypes");\r
@@ -135,6 +136,9 @@ public class CdsServices {
             String type = inputProperty.get("type").getAsString();\r
             if (isComplexType(type, dataTypes)) {\r
                 inputObject.add(key, handleComplexType(type, dataTypes));\r
+            } else if (type.equalsIgnoreCase("list")) {\r
+                inputObject.add(key, handleListType(key, inputProperty,\r
+                                                    dataTypes));\r
             } else {\r
                 inputObject.add(key, entry.getValue());\r
             }\r
@@ -142,6 +146,24 @@ public class CdsServices {
         return inputObject;\r
     }\r
 \r
+    private JsonObject handleListType(String propertyName,\r
+                                      JsonObject inputProperty,\r
+                                      JsonObject dataTypes) {\r
+        if (inputProperty.get("entry_schema") != null) {\r
+            String type = inputProperty.get("entry_schema").getAsJsonObject().get(\r
+                            "type").getAsString();\r
+            if (dataTypes.get(type) != null) {\r
+                JsonObject jsonObject = new JsonObject();\r
+                jsonObject.addProperty("type", "list");\r
+                jsonObject.add("properties", handleComplexType(type, dataTypes));\r
+                return jsonObject;\r
+            } else {\r
+                return inputProperty;\r
+            }\r
+        }\r
+        throw new CdsParametersException("Entry schema is null for " + propertyName);\r
+    }\r
+\r
     private JsonObject handleComplexType(String key, JsonObject dataTypes) {\r
         JsonObject properties = dataTypes.get(key).getAsJsonObject().get("properties").getAsJsonObject();\r
         return getInputProperties(properties, dataTypes);\r
diff --git a/src/main/java/org/onap/clamp/clds/exception/cds/CdsParametersException.java b/src/main/java/org/onap/clamp/clds/exception/cds/CdsParametersException.java
new file mode 100644 (file)
index 0000000..73ce31f
--- /dev/null
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ * ================================================================================
+ *
+ */
+
+package org.onap.clamp.clds.exception.cds;
+
+/**
+ * Exception while parsing CDS response.
+ */
+public class CdsParametersException extends RuntimeException {
+
+    /**
+     * serialization id.
+     */
+    private static final long serialVersionUID = 8425657297510362736L;
+
+    /**
+     * This constructor can be used to create a new CdsParametersException.
+     *
+     * @param message The message to dump
+     */
+    public CdsParametersException(final String message) {
+        super(message);
+    }
+
+    /**
+     * This constructor can be used to create a new CdsParametersException.
+     *
+     * @param message The message to dump
+     * @param cause The Throwable cause object
+     */
+    public CdsParametersException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+}
index ce1f946..c156414 100644 (file)
 
 package org.onap.clamp.clds.tosca.update.execution.cds;
 
+import static org.onap.clamp.clds.tosca.ToscaSchemaConstants.PROPERTIES;
+import static org.onap.clamp.clds.tosca.ToscaSchemaConstants.TYPE;
+import static org.onap.clamp.clds.tosca.ToscaSchemaConstants.TYPE_LIST;
+
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
@@ -173,7 +177,7 @@ public class ToscaMetadataCdsProcess extends ToscaMetadataProcess {
         jsonObject.add("artifact_version", createAnyOfJsonProperty(
                 "artifact version", artifactVersion));
         jsonObject.add("mode", createCdsInputProperty(
-                "mode", "string", "async"));
+                "mode", "string", "async", null));
         jsonObject.add("data", createDataProperty(inputs));
 
         return jsonObject;
@@ -182,7 +186,7 @@ public class ToscaMetadataCdsProcess extends ToscaMetadataProcess {
     private static JsonObject createDataProperty(JsonObject inputs) {
         JsonObject data = new JsonObject();
         data.addProperty("title", "data");
-        data.add("properties", addDataFields(inputs));
+        data.add(PROPERTIES, addDataFields(inputs));
         return data;
     }
 
@@ -192,7 +196,7 @@ public class ToscaMetadataCdsProcess extends ToscaMetadataProcess {
         for (Map.Entry<String, JsonElement> entry : entrySet) {
             String key = entry.getKey();
             JsonObject inputProperty = inputs.getAsJsonObject(key);
-            if (inputProperty.get("type") == null) {
+            if (inputProperty.get(TYPE) == null) {
                 jsonObject.add(entry.getKey(),
                                createAnyOfJsonObject(key,
                                                      addDataFields(entry.getValue().getAsJsonObject())));
@@ -200,7 +204,8 @@ public class ToscaMetadataCdsProcess extends ToscaMetadataProcess {
                 jsonObject.add(entry.getKey(),
                                createCdsInputProperty(key,
                                                       inputProperty.get("type").getAsString(),
-                                                      null));
+                                                      null,
+                                                      entry.getValue().getAsJsonObject()));
             }
         }
         return jsonObject;
@@ -208,14 +213,26 @@ public class ToscaMetadataCdsProcess extends ToscaMetadataProcess {
 
     private static JsonObject createCdsInputProperty(String title,
                                                      String type,
-                                                     String defaultValue) {
+                                                     String defaultValue,
+                                                     JsonObject cdsProperty) {
         JsonObject property = new JsonObject();
         property.addProperty("title", title);
-        property.addProperty("type", type);
+
+        if (TYPE_LIST.equalsIgnoreCase(type)) {
+            property.addProperty(TYPE, "array");
+            if (cdsProperty.get(PROPERTIES) != null) {
+                JsonObject listProperties = new JsonObject();
+                listProperties.add(PROPERTIES,
+                                   addDataFields(cdsProperty.get(PROPERTIES).getAsJsonObject()));
+                property.add("items", listProperties);
+            }
+        } else {
+            property.addProperty(TYPE, type);
+        }
+
         if (defaultValue != null) {
             property.addProperty("default", defaultValue);
         }
-        property.addProperty("format", "textarea");
         return property;
     }
 }
diff --git a/src/test/java/org/onap/clamp/clds/client/CdsServicesTest.java b/src/test/java/org/onap/clamp/clds/client/CdsServicesTest.java
new file mode 100644 (file)
index 0000000..ec39fc3
--- /dev/null
@@ -0,0 +1,58 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ * ================================================================================
+ *
+ */
+
+package org.onap.clamp.clds.client;
+
+import com.google.gson.JsonObject;
+
+import java.io.IOException;
+
+import org.junit.Test;
+import org.onap.clamp.clds.util.JsonUtils;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.skyscreamer.jsonassert.JSONAssert;
+
+public class CdsServicesTest {
+
+    @Test
+    public void testParseCdsListTypeProperties() throws IOException {
+        String cdsResponse = ResourceFileUtil
+                .getResourceAsString("example/cds-response/vFW-CDS-resource-assignment-workflow.json");
+        CdsServices services = new CdsServices();
+        JsonObject output = services.parseCdsResponse(cdsResponse);
+        JSONAssert.assertEquals(ResourceFileUtil
+                .getResourceAsString("example/cds-response/vFW-CDS-resource-assignment-wf-expected-result.json"),
+                        JsonUtils.GSON.toJson(output), true);
+    }
+
+    @Test
+    public void testParseCdsResponse() throws IOException {
+        String cdsResponse = ResourceFileUtil
+                .getResourceAsString("example/cds-response/vFW-CDS-modify-config-workflow.json");
+        CdsServices services = new CdsServices();
+        JsonObject output = services.parseCdsResponse(cdsResponse);
+        JSONAssert.assertEquals(ResourceFileUtil
+                .getResourceAsString("example/cds-response/vFW-CDS-modify-config-wf-expected-result.json"),
+                        JsonUtils.GSON.toJson(output), true);
+    }
+
+}
\ No newline at end of file
index 4e9b562..a6a4968 100644 (file)
@@ -50,4 +50,17 @@ public class OperationalPolicyRepresentationBuilderTest {
                 new GsonBuilder().create().toJson(jsonSchema), false);
     }
 
+    @Test
+    public void testOperationalPolicyPayloadConstructionForCds() throws IOException {
+        JsonObject jsonModel = new GsonBuilder().create()
+                .fromJson(ResourceFileUtil.getResourceAsString("tosca/model-properties-cds.json"), JsonObject.class);
+        Service service = new Service(jsonModel.get("serviceDetails").getAsJsonObject(),
+                                      jsonModel.get("resourceDetails").getAsJsonObject(),
+                                      "1.0");
+
+        JsonObject jsonSchema = OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(service);
+        assertThat(jsonSchema).isNotNull();
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/operational-policy-cds-payload-with-list.json"),
+                                new GsonBuilder().create().toJson(jsonSchema), false);
+    }
 }
diff --git a/src/test/resources/example/cds-response/vFW-CDS-modify-config-wf-expected-result.json b/src/test/resources/example/cds-response/vFW-CDS-modify-config-wf-expected-result.json
new file mode 100644 (file)
index 0000000..7e78bb0
--- /dev/null
@@ -0,0 +1,58 @@
+{
+  "inputs": {
+    "resolution-key": {
+      "required": true,
+      "type": "string"
+    },
+    "modify-config-properties": {
+      "vpg_onap_private_ip_0": {
+        "description": "",
+        "required": false,
+        "type": "string",
+        "status": "",
+        "constraints": [
+          {}
+        ],
+        "entry_schema": {
+          "type": ""
+        }
+      },
+      "service-instance.service-instance-id": {
+        "type": "string"
+      },
+      "vnf-id": {
+        "type": "string"
+      },
+      "data": {
+        "description": "",
+        "required": false,
+        "type": "string",
+        "status": "",
+        "constraints": [
+          {}
+        ],
+        "entry_schema": {
+          "type": "dt-data"
+        }
+      },
+      "service-instance-id": {
+        "type": "string"
+      },
+      "update-active-streams": {
+        "description": "",
+        "required": false,
+        "type": "string",
+        "status": "",
+        "constraints": [
+          {}
+        ],
+        "entry_schema": {
+          "type": "dt-data"
+        }
+      },
+      "generic-vnf.vnf-id": {
+        "type": "string"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/example/cds-response/vFW-CDS-modify-config-workflow.json b/src/test/resources/example/cds-response/vFW-CDS-modify-config-workflow.json
new file mode 100644 (file)
index 0000000..e46da67
--- /dev/null
@@ -0,0 +1,75 @@
+{
+  "blueprintName": "vFW-CDS",
+  "version": "1.0.0",
+  "workFlowData": {
+    "workFlowName": "modify-config",
+    "inputs": {
+      "resolution-key": {
+        "required": true,
+        "type": "string"
+      },
+      "modify-config-properties": {
+        "description": "Dynamic PropertyDefinition for workflow(modify-config).",
+        "required": true,
+        "type": "dt-modify-config-properties"
+      }
+    }
+  },
+  "dataTypes": {
+    "dt-modify-config-properties": {
+      "description": "Dynamic DataType definition for workflow(modify-config).",
+      "version": "1.0.0",
+      "properties": {
+        "vpg_onap_private_ip_0": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": ""
+          }
+        },
+        "service-instance.service-instance-id": {
+          "type": "string"
+        },
+        "vnf-id": {
+          "type": "string"
+        },
+        "data": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": "dt-data"
+          }
+        },
+        "service-instance-id": {
+          "type": "string"
+        },
+        "update-active-streams": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": "dt-data"
+          }
+        },
+        "generic-vnf.vnf-id": {
+          "type": "string"
+        }
+      },
+      "derived_from": "tosca.datatypes.Dynamic"
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-wf-expected-result.json b/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-wf-expected-result.json
new file mode 100644 (file)
index 0000000..5b373a4
--- /dev/null
@@ -0,0 +1,42 @@
+{
+  "inputs": {
+    "template-prefix": {
+      "required": true,
+      "type": "list",
+      "entry_schema": {
+        "type": "string"
+      }
+    },
+    "template-prefix-with-complex-type": {
+      "type": "list",
+      "properties": {
+        "prefix-id": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": ""
+          }
+        }
+      }
+    },
+    "resource-assignment-properties": {
+      "private1-prefix-id": {
+        "description": "",
+        "required": false,
+        "type": "string",
+        "status": "",
+        "constraints": [
+          {}
+        ],
+        "entry_schema": {
+          "type": ""
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-workflow.json b/src/test/resources/example/cds-response/vFW-CDS-resource-assignment-workflow.json
new file mode 100644 (file)
index 0000000..d0f78cf
--- /dev/null
@@ -0,0 +1,78 @@
+{
+  "blueprintName": "vFW-CDS",
+  "version": "1.0.0",
+  "workFlowData": {
+    "workFlowName": "resource-assignment",
+    "inputs": {
+      "template-prefix": {
+        "required": true,
+        "type": "list",
+        "entry_schema": {
+          "type": "string"
+        }
+      },
+      "template-prefix-with-complex-type": {
+        "required": true,
+        "type": "list",
+        "entry_schema": {
+          "type": "dt-template-prefix-properties"
+        }
+      },
+      "resource-assignment-properties": {
+        "description": "Dynamic PropertyDefinition for workflow(resource-assignment).",
+        "required": true,
+        "type": "dt-resource-assignment-properties"
+      }
+    },
+    "outputs": {
+      "meshed-template": {
+        "type": "json",
+        "value": {
+          "get_attribute": [
+            "resource-assignment",
+            "assignment-params"
+          ]
+        }
+      }
+    }
+  },
+  "dataTypes": {
+    "dt-resource-assignment-properties": {
+      "description": "Dynamic DataType definition for workflow(resource-assignment).",
+      "version": "1.0.0",
+      "properties": {
+        "private1-prefix-id": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": ""
+          }
+        }
+      },
+      "derived_from": "tosca.datatypes.Dynamic"
+    },
+    "dt-template-prefix-properties": {
+      "description": "Dynamic DataType definition for workflow(template-prefix).",
+      "version": "1.0.0",
+      "properties": {
+        "prefix-id": {
+          "description": "",
+          "required": false,
+          "type": "string",
+          "status": "",
+          "constraints": [
+            {}
+          ],
+          "entry_schema": {
+            "type": ""
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/test/resources/tosca/model-properties-cds.json b/src/test/resources/tosca/model-properties-cds.json
new file mode 100644 (file)
index 0000000..591840b
--- /dev/null
@@ -0,0 +1,151 @@
+{
+       "serviceDetails": {
+               "serviceType": "",
+               "namingPolicy": "",
+               "environmentContext": "General_Revenue-Bearing",
+               "serviceEcompNaming": "true",
+               "serviceRole": "",
+               "name": "vLoadBalancerMS",
+               "description": "vLBMS",
+               "invariantUUID": "30ec5b59-4799-48d8-ac5f-1058a6b0e48f",
+               "ecompGeneratedNaming": "true",
+               "category": "Network L4+",
+               "type": "Service",
+               "UUID": "63cac700-ab9a-4115-a74f-7eac85e3fce0",
+               "instantiationType": "A-la-carte"
+       },
+       "resourceDetails": {
+               "CP": {},
+               "VL": {},
+               "VF": {
+                       "vLoadBalancerMS 0": {
+                               "resourceVendor": "Test",
+                               "resourceVendorModelNumber": "",
+                               "name": "vLoadBalancerMS",
+                               "description": "vLBMS",
+                               "invariantUUID": "1a31b9f2-e50d-43b7-89b3-a040250cf506",
+                               "subcategory": "Load Balancer",
+                               "category": "Application L4+",
+                               "type": "VF",
+                               "UUID": "b4c4f3d7-929e-4b6d-a1cd-57e952ddc3e6",
+                               "version": "1.0",
+                               "resourceVendorRelease": "1.0",
+                               "customizationUUID": "465246dc-7748-45f4-a013-308d92922552",
+                               "controllerProperties": {
+                                       "sdnc_model_name": "baseconfiguration",
+                                       "sdnc_model_version": "1.0.0",
+                                       "workflows": {
+                                               "resource-assignment": {
+                                                       "inputs": {
+                                                               "template-prefix": {
+                                                                       "required": true,
+                                                                       "type": "list",
+                                                                       "entry_schema": {
+                                                                               "type": "string"
+                                                                       }
+                                                               },
+                                                               "template-prefix-with-complex-type": {
+                                                                       "type": "list",
+                                                                       "properties": {
+                                                                               "prefix-id": {
+                                                                                       "description": "",
+                                                                                       "required": false,
+                                                                                       "type": "string",
+                                                                                       "status": "",
+                                                                                       "constraints": [
+                                                                                               {}
+                                                                                       ],
+                                                                                       "entry_schema": {
+                                                                                               "type": ""
+                                                                                       }
+                                                                               }
+                                                                       }
+                                                               },
+                                                               "resource-assignment-properties": {
+                                                                       "private1-prefix-id": {
+                                                                               "description": "",
+                                                                               "required": false,
+                                                                               "type": "string",
+                                                                               "status": "",
+                                                                               "constraints": [
+                                                                                       {}
+                                                                               ],
+                                                                               "entry_schema": {
+                                                                                       "type": ""
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               },
+               "CR": {},
+               "VFC": {},
+               "PNF": {},
+               "Service": {},
+               "CVFC": {},
+               "Service Proxy": {},
+               "Configuration": {},
+               "AllottedResource": {},
+               "VFModule": {
+                       "Vloadbalancerms..vpkg..module-1": {
+                               "vfModuleModelInvariantUUID": "ca052563-eb92-4b5b-ad41-9111768ce043",
+                               "vfModuleModelVersion": "1",
+                               "vfModuleModelName": "Vloadbalancerms..vpkg..module-1",
+                               "vfModuleModelUUID": "1e725ccc-b823-4f67-82b9-4f4367070dbc",
+                               "vfModuleModelCustomizationUUID": "1bffdc31-a37d-4dee-b65c-dde623a76e52",
+                               "min_vf_module_instances": 0,
+                               "vf_module_label": "vpkg",
+                               "max_vf_module_instances": 1,
+                               "vf_module_type": "Expansion",
+                               "isBase": false,
+                               "initial_count": 0,
+                               "volume_group": false
+                       },
+                       "Vloadbalancerms..vdns..module-3": {
+                               "vfModuleModelInvariantUUID": "4c10ba9b-f88f-415e-9de3-5d33336047fa",
+                               "vfModuleModelVersion": "1",
+                               "vfModuleModelName": "Vloadbalancerms..vdns..module-3",
+                               "vfModuleModelUUID": "4fa73b49-8a6c-493e-816b-eb401567b720",
+                               "vfModuleModelCustomizationUUID": "bafcdab0-801d-4d81-9ead-f464640a38b1",
+                               "min_vf_module_instances": 0,
+                               "vf_module_label": "vdns",
+                               "max_vf_module_instances": 50,
+                               "vf_module_type": "Expansion",
+                               "isBase": false,
+                               "initial_count": 0,
+                               "volume_group": false
+                       },
+                       "Vloadbalancerms..base_template..module-0": {
+                               "vfModuleModelInvariantUUID": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3",
+                               "vfModuleModelVersion": "1",
+                               "vfModuleModelName": "Vloadbalancerms..base_template..module-0",
+                               "vfModuleModelUUID": "63734409-f745-4e4d-a38b-131638a0edce",
+                               "vfModuleModelCustomizationUUID": "86baddea-c730-4fb8-9410-cd2e17fd7f27",
+                               "min_vf_module_instances": 1,
+                               "vf_module_label": "base_template",
+                               "max_vf_module_instances": 1,
+                               "vf_module_type": "Base",
+                               "isBase": true,
+                               "initial_count": 1,
+                               "volume_group": false
+                       },
+                       "Vloadbalancerms..vlb..module-2": {
+                               "vfModuleModelInvariantUUID": "a772a1f4-0064-412c-833d-4749b15828dd",
+                               "vfModuleModelVersion": "1",
+                               "vfModuleModelName": "Vloadbalancerms..vlb..module-2",
+                               "vfModuleModelUUID": "0f5c3f6a-650a-4303-abb6-fff3e573a07a",
+                               "vfModuleModelCustomizationUUID": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806",
+                               "min_vf_module_instances": 0,
+                               "vf_module_label": "vlb",
+                               "max_vf_module_instances": 1,
+                               "vf_module_type": "Expansion",
+                               "isBase": false,
+                               "initial_count": 0,
+                               "volume_group": false
+                       }
+               }
+       }
+}
\ No newline at end of file
index 12edd77..793ba5e 100644 (file)
@@ -87,8 +87,7 @@
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
                       "mode": {
                         "title": "mode",
                         "type": "string",
-                        "default": "async",
-                        "format": "textarea"
+                        "default": "async"
                       },
                       "data": {
                         "title": "data",
                             "properties": {
                               "request-id": {
                                 "title": "request-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "service-instance-id": {
                                 "title": "service-instance-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf-id": {
                                 "title": "vnf-id",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "action-name": {
                                 "title": "action-name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "scope-type": {
                                 "title": "scope-type",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "hostname": {
                                 "title": "hostname",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               },
                               "vnf_name": {
                                 "title": "vnf_name",
-                                "type": "string",
-                                "format": "textarea"
+                                "type": "string"
                               }
                             }
                           }
diff --git a/src/test/resources/tosca/operational-policy-cds-payload-with-list.json b/src/test/resources/tosca/operational-policy-cds-payload-with-list.json
new file mode 100644 (file)
index 0000000..24269ec
--- /dev/null
@@ -0,0 +1,742 @@
+{
+  "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",
+              "retry",
+              "timeout",
+              "actor",
+              "success",
+              "failure",
+              "failure_timeout",
+              "failure_retries",
+              "failure_exception",
+              "failure_guard",
+              "target"
+            ],
+            "properties": {
+              "id": {
+                "default": "Policy 1",
+                "title": "Policy ID",
+                "type": "string"
+              },
+              "retry": {
+                "default": "0",
+                "title": "Number of Retry",
+                "type": "string",
+                "format": "number"
+              },
+              "timeout": {
+                "default": "0",
+                "title": "Timeout",
+                "type": "string",
+                "format": "number"
+              },
+              "actor": {
+                "type": "object",
+                "title": "Actor",
+                "anyOf": [
+                  {
+                    "title": "APPC",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "APPC",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "string",
+                        "default": "",
+                        "enum": [
+                          "Restart",
+                          "Rebuild",
+                          "Migrate",
+                          "Health-Check",
+                          "ModifyConfig"
+                        ]
+                      },
+                      "payload": {
+                        "title": "Payload (YAML)",
+                        "type": "string",
+                        "format": "textarea"
+                      }
+                    }
+                  },
+                  {
+                    "title": "SO",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "SO",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "string",
+                        "default": "",
+                        "enum": [
+                          "VF Module Create",
+                          "VF Module Delete"
+                        ]
+                      },
+                      "payload": {
+                        "title": "Payload (YAML)",
+                        "type": "string",
+                        "format": "textarea"
+                      }
+                    }
+                  },
+                  {
+                    "title": "SDNC",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "SDNC",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "string",
+                        "default": "",
+                        "enum": [
+                          "Reroute",
+                          "BandwidthOnDemand"
+                        ]
+                      },
+                      "payload": {
+                        "title": "Payload (YAML)",
+                        "type": "string",
+                        "format": "textarea"
+                      }
+                    }
+                  },
+                  {
+                    "title": "VFC",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "VFC",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "string",
+                        "default": "",
+                        "enum": [
+                          "ModifyConfig"
+                        ]
+                      },
+                      "payload": {
+                        "title": "Payload (YAML)",
+                        "type": "string",
+                        "format": "textarea"
+                      }
+                    }
+                  },
+                  {
+                    "title": "CDS",
+                    "type": "object",
+                    "properties": {
+                      "actor": {
+                        "title": "actor",
+                        "type": "string",
+                        "default": "CDS",
+                        "options": {
+                          "hidden": true
+                        }
+                      },
+                      "recipe": {
+                        "title": "recipe",
+                        "type": "object",
+                        "anyOf": [
+                          {
+                            "title": "user-defined",
+                            "type": "object",
+                            "properties": {
+                              "recipe": {
+                                "title": "recipe",
+                                "type": "string",
+                                "default": "user-defined",
+                                "format": "textarea"
+                              },
+                              "payload": {
+                                "title": "Payload (YAML)",
+                                "type": "string",
+                                "default": "",
+                                "format": "textarea"
+                              }
+                            }
+                          },
+                          {
+                            "title": "resource-assignment",
+                            "type": "object",
+                            "properties": {
+                              "recipe": {
+                                "title": "recipe",
+                                "type": "string",
+                                "default": "resource-assignment",
+                                "options": {
+                                  "hidden": true
+                                }
+                              },
+                              "payload": {
+                                "title": "Payload (YAML)",
+                                "type": "object",
+                                "properties": {
+                                  "artifact_name": {
+                                    "title": "artifact name",
+                                    "type": "string",
+                                    "default": "baseconfiguration",
+                                    "readOnly": "True"
+                                  },
+                                  "artifact_version": {
+                                    "title": "artifact version",
+                                    "type": "string",
+                                    "default": "1.0.0",
+                                    "readOnly": "True"
+                                  },
+                                  "mode": {
+                                    "title": "mode",
+                                    "type": "string",
+                                    "default": "async"
+                                  },
+                                  "data": {
+                                    "title": "data",
+                                    "properties": {
+                                      "template-prefix": {
+                                        "title": "template-prefix",
+                                        "type": "array"
+                                      },
+                                      "template-prefix-with-complex-type": {
+                                        "title": "template-prefix-with-complex-type",
+                                        "type": "array",
+                                        "items": {
+                                          "properties": {
+                                            "prefix-id": {
+                                              "title": "prefix-id",
+                                              "type": "string"
+                                            }
+                                          }
+                                        }
+                                      },
+                                      "resource-assignment-properties": {
+                                        "title": "resource-assignment-properties",
+                                        "type": "object",
+                                        "properties": {
+                                          "private1-prefix-id": {
+                                            "title": "private1-prefix-id",
+                                            "type": "string"
+                                          }
+                                        }
+                                      }
+                                    }
+                                  }
+                                }
+                              }
+                            }
+                          }
+                        ]
+                      }
+                    }
+                  }
+                ]
+              },
+              "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.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.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
index ffa88ec..87457f1 100644 (file)
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }
                                   "mode": {
                                     "title": "mode",
                                     "type": "string",
-                                    "default": "async",
-                                    "format": "textarea"
+                                    "default": "async"
                                   },
                                   "data": {
                                     "title": "data",
                                         "properties": {
                                           "request-id": {
                                             "title": "request-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "service-instance-id": {
                                             "title": "service-instance-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf-id": {
                                             "title": "vnf-id",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "action-name": {
                                             "title": "action-name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "scope-type": {
                                             "title": "scope-type",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "hostname": {
                                             "title": "hostname",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           },
                                           "vnf_name": {
                                             "title": "vnf_name",
-                                            "type": "string",
-                                            "format": "textarea"
+                                            "type": "string"
                                           }
                                         }
                                       }