+ /**
+ * Create policy Yaml from json defined here.
+ *
+ * @return A string containing Yaml
+ */
+ public String createPolicyPayloadYaml() {
+ JsonObject policyPayloadResult = new JsonObject();
+
+ policyPayloadResult.addProperty("tosca_definitions_version", "tosca_simple_yaml_1_0_0");
+
+ JsonObject topologyTemplateNode = new JsonObject();
+ policyPayloadResult.add("topology_template", topologyTemplateNode);
+
+ JsonArray policiesArray = new JsonArray();
+ topologyTemplateNode.add("policies", policiesArray);
+
+ JsonObject operationalPolicy = new JsonObject();
+ policiesArray.add(operationalPolicy);
+
+ JsonObject operationalPolicyDetails = new JsonObject();
+ operationalPolicy.add(this.name, operationalPolicyDetails);
+ operationalPolicyDetails.addProperty("type", "onap.policies.controlloop.Operational");
+ operationalPolicyDetails.addProperty("version", "1.0.0");
+
+ JsonObject metadata = new JsonObject();
+ operationalPolicyDetails.add("metadata", metadata);
+ metadata.addProperty("policy-id", this.name);
+
+ operationalPolicyDetails.add("properties", LegacyOperationalPolicy
+ .reworkPayloadAttributes(this.getConfigurationsJson().get("operational_policy").deepCopy()));
+
+ DumperOptions options = new DumperOptions();
+ options.setIndent(2);
+ options.setPrettyFlow(true);
+ options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
+ Gson gson = new GsonBuilder().create();
+
+ return (new Yaml(options)).dump(gson.fromJson(gson.toJson(policyPayloadResult), Map.class));
+ }
+
+ @Override
+ public String createPolicyPayload() throws UnsupportedEncodingException {
+ // Now using the legacy payload fo Dublin
+ JsonObject payload = new JsonObject();
+ payload.addProperty("policy-id", this.getName());
+ payload.addProperty("content",
+ URLEncoder.encode(
+ LegacyOperationalPolicy
+ .createPolicyPayloadYamlLegacy(this.getConfigurationsJson().get("operational_policy")),
+ StandardCharsets.UTF_8.toString()));
+ String opPayload = new GsonBuilder().setPrettyPrinting().create().toJson(payload);
+ logger.info("Operational policy payload: " + opPayload);
+ return opPayload;
+ }
+
+ /**
+ * Return a map containing all Guard policies indexed by Guard policy Name.
+ *
+ * @return The Guards map
+ */
+ public Map<String, String> createGuardPolicyPayloads() {
+ Map<String, String> result = new HashMap<>();
+
+ JsonElement guardsList = this.getConfigurationsJson().get("guard_policies");
+ if (guardsList != null) {
+ for (JsonElement guardElem : guardsList.getAsJsonArray()) {
+ result.put(guardElem.getAsJsonObject().get("policy-id").getAsString(),
+ new GsonBuilder().create().toJson(guardElem));
+ }
+ }
+ logger.info("Guard policy payload: " + result);
+ return result;
+ }
+
+ /**
+ * Regenerate the Operational Policy Json Representation.
+ */
+ public void updateJsonRepresentation() {
+ try {
+ this.setJsonRepresentation(
+ OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(loop.getModelService()));
+ } catch (JsonSyntaxException | IOException | NullPointerException e) {
+ logger.error("Unable to generate the operational policy Schema ... ", e);
+ this.setJsonRepresentation(new JsonObject());
+ }
+ }