Merge "Added unit tests for OperationalPolicyDeleteDelegate"
authorSébastien Determe <sebastien.determe@intl.att.com>
Wed, 8 May 2019 11:08:35 +0000 (11:08 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 8 May 2019 11:08:35 +0000 (11:08 +0000)
20 files changed:
src/main/java/org/onap/clamp/clds/config/spring/SSLConfiguration.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java
src/main/java/org/onap/clamp/clds/sdc/controller/installer/MicroService.java
src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
src/main/resources/META-INF/resources/designer/partials/portfolios/operational_policy_window.html
src/main/resources/clds/camel/routes/flexible-flow.xml
src/test/java/org/onap/clamp/clds/client/OperationalPolicyDelegateTest.java [new file with mode: 0644]
src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java
src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java
src/test/java/org/onap/clamp/clds/sdc/controller/installer/ChainGeneratorTest.java
src/test/java/org/onap/clamp/clds/util/drawing/ClampGraphBuilderTest.java
src/test/java/org/onap/clamp/flow/FlowLogOperationTestItCase.java [new file with mode: 0644]
src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-2.json
src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-3.json [new file with mode: 0644]
src/test/resources/example/sdc/blueprint-dcae/tca_2.yaml
src/test/resources/example/sdc/blueprint-dcae/tca_3.yaml
src/test/resources/tosca/guard1-policy-payload.json
src/test/resources/tosca/guard2-policy-payload.json
src/test/resources/tosca/operational-policy-properties.json

diff --git a/src/main/java/org/onap/clamp/clds/config/spring/SSLConfiguration.java b/src/main/java/org/onap/clamp/clds/config/spring/SSLConfiguration.java
new file mode 100644 (file)
index 0000000..ac5849b
--- /dev/null
@@ -0,0 +1,56 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * ===================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.clds.config.spring;
+
+import java.net.URL;
+
+import javax.annotation.PostConstruct;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+
+@Configuration
+public class SSLConfiguration {
+    @Autowired
+    private Environment env;
+
+    @PostConstruct
+    private void configureSSL() {
+        if (env.getProperty("server.ssl.trust-store") != null) {
+            URL storeResource = SSLConfiguration.class
+                .getResource(env.getProperty("server.ssl.trust-store").replaceAll("classpath:", ""));
+            System.setProperty("javax.net.ssl.trustStore", storeResource.getPath());
+            System.setProperty("javax.net.ssl.trustStorePassword", env.getProperty("server.ssl.trust-store-password"));
+            System.setProperty("javax.net.ssl.trustStoreType", env.getProperty("server.ssl.key-store-type"));
+
+            storeResource = SSLConfiguration.class
+                .getResource(env.getProperty("server.ssl.key-store").replaceAll("classpath:", ""));
+            System.setProperty("javax.net.ssl.keyStore", storeResource.getPath());
+            System.setProperty("javax.net.ssl.keyStorePassword", env.getProperty("server.ssl.key-store-password"));
+            System.setProperty("javax.net.ssl.keyStoreType", env.getProperty("server.ssl.key-store-type"));
+        }
+    }
+}
\ No newline at end of file
index 809904f..aca2ed0 100644 (file)
@@ -29,6 +29,7 @@ import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 
+import java.util.AbstractMap;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -61,12 +62,12 @@ public class BlueprintParser {
     public Set<MicroService> getMicroServices(String blueprintString) {
         Set<MicroService> microServices = new HashSet<>();
         JsonObject jsonObject = BlueprintParser.convertToJson(blueprintString);
-        JsonObject results = jsonObject.get(NODE_TEMPLATES).getAsJsonObject();
+        JsonObject nodeTemplateList = jsonObject.get(NODE_TEMPLATES).getAsJsonObject();
 
-        for (Entry<String, JsonElement> entry : results.entrySet()) {
+        for (Entry<String, JsonElement> entry : nodeTemplateList.entrySet()) {
             JsonObject nodeTemplate = entry.getValue().getAsJsonObject();
             if (nodeTemplate.get(TYPE).getAsString().contains(DCAE_NODES)) {
-                MicroService microService = getNodeRepresentation(entry);
+                MicroService microService = getNodeRepresentation(entry, nodeTemplateList);
                 microServices.add(microService);
             }
         }
@@ -89,7 +90,7 @@ public class BlueprintParser {
         }
         String msName = theBiggestMicroServiceKey.toLowerCase().contains(HOLMES_PREFIX) ? HOLMES : TCA;
         return Collections
-            .singletonList(new MicroService(msName, "onap.policies.monitoring.cdap.tca.hi.lo.app", "", "", ""));
+            .singletonList(new MicroService(msName, "onap.policies.monitoring.cdap.tca.hi.lo.app", "", ""));
     }
 
     String getName(Entry<String, JsonElement> entry) {
@@ -118,8 +119,22 @@ public class BlueprintParser {
         return "";
     }
 
-    String getModelType(Entry<String, JsonElement> entry) {
+    String findModelTypeInTargetArray(JsonArray jsonArray, JsonObject nodeTemplateList) {
+        for (JsonElement elem : jsonArray) {
+            String modelType = getModelType(
+                new AbstractMap.SimpleEntry<String, JsonElement>(elem.getAsJsonObject().get(TARGET).getAsString(),
+                    nodeTemplateList.get(elem.getAsJsonObject().get(TARGET).getAsString()).getAsJsonObject()),
+                nodeTemplateList);
+            if (!modelType.isEmpty()) {
+                return modelType;
+            }
+        }
+        return "";
+    }
+
+    String getModelType(Entry<String, JsonElement> entry, JsonObject nodeTemplateList) {
         JsonObject ob = entry.getValue().getAsJsonObject();
+        // Search first in this node template
         if (ob.has(PROPERTIES)) {
             JsonObject properties = ob.get(PROPERTIES).getAsJsonObject();
             if (properties.has(POLICYID)) {
@@ -129,19 +144,18 @@ public class BlueprintParser {
                 }
             }
         }
+        // Then it's may be a relationship
+        if (ob.has(RELATIONSHIPS)) {
+            return findModelTypeInTargetArray(ob.get(RELATIONSHIPS).getAsJsonArray(), nodeTemplateList);
+        }
         return "";
     }
 
-    String getBlueprintName(Entry<String, JsonElement> entry) {
-        return entry.getKey();
-    }
-
-    MicroService getNodeRepresentation(Entry<String, JsonElement> entry) {
+    MicroService getNodeRepresentation(Entry<String, JsonElement> entry, JsonObject nodeTemplateList) {
         String name = getName(entry);
         String getInputFrom = getInput(entry);
-        String modelType = getModelType(entry);
-        String blueprintName = getBlueprintName(entry);
-        return new MicroService(name, modelType, getInputFrom, "", blueprintName);
+        String modelType = getModelType(entry, nodeTemplateList);
+        return new MicroService(name, modelType, getInputFrom, "");
     }
 
     private String getTarget(JsonObject elementObject) {
index ac4daef..9bc7a02 100644 (file)
@@ -29,16 +29,14 @@ import java.util.Objects;
 public class MicroService {
     private final String name;
     private final String modelType;
-    private final String blueprintName;
     private final String inputFrom;
     private String mappedNameJpa;
 
-    public MicroService(String name, String modelType, String inputFrom, String mappedNameJpa, String blueprintName) {
+    public MicroService(String name, String modelType, String inputFrom, String mappedNameJpa) {
         this.name = name;
         this.inputFrom = inputFrom;
         this.mappedNameJpa = mappedNameJpa;
-        this.modelType =  modelType;
-        this.blueprintName = blueprintName;
+        this.modelType = modelType;
     }
 
     public String getName() {
@@ -53,15 +51,10 @@ public class MicroService {
         return inputFrom;
     }
 
-    public String getBlueprintName() {
-        return blueprintName;
-    }
-
     @Override
     public String toString() {
         return "MicroService{" + "name='" + name + '\'' + ", modelType='" + modelType + '\'' + ", inputFrom='"
-                + inputFrom + '\'' + ", mappedNameJpa='" + mappedNameJpa + '\'' + ", blueprintName='"
-                + blueprintName + '\'' + '}';
+            + inputFrom + '\'' + ", mappedNameJpa='" + mappedNameJpa + '\'' + '}';
     }
 
     public String getMappedNameJpa() {
@@ -81,11 +74,12 @@ public class MicroService {
             return false;
         }
         MicroService that = (MicroService) o;
-        return name.equals(that.name) && modelType.equals(that.modelType) && inputFrom.equals(that.inputFrom) && mappedNameJpa.equals(that.mappedNameJpa) && blueprintName.equals(that.blueprintName);
+        return name.equals(that.name) && modelType.equals(that.modelType) && inputFrom.equals(that.inputFrom)
+            && mappedNameJpa.equals(that.mappedNameJpa);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(name, modelType, inputFrom, mappedNameJpa, blueprintName);
+        return Objects.hash(name, modelType, inputFrom, mappedNameJpa);
     }
 }
index b2f6109..906c3cf 100644 (file)
@@ -206,7 +206,7 @@ public class OperationalPolicy implements Serializable, Policy {
             for (Entry<String, JsonElement> guardElem : guardsList.getAsJsonObject().entrySet()) {
                 JsonObject guard = new JsonObject();
                 guard.addProperty("policy-id", guardElem.getKey());
-                guard.add("contents", guardElem.getValue());
+                guard.add("content", guardElem.getValue());
                 result.put(guardElem.getKey(), new GsonBuilder().create().toJson(guard));
             }
         }
index 798f18f..db81e47 100644 (file)
@@ -403,34 +403,34 @@ label {
                                        </div>
                                        <div class="form-group clearfix">
 
-                                               <label for="guardTargets" class="col-sm-4 control-label">Guard
+                                               <label for="targets" class="col-sm-4 control-label">Guard
                                                        targets</label>
                                                <div class="col-sm-8">
-                                                       <input class="form-control" name="guardTargets" id="guardTargets" />
+                                                       <input class="form-control" name="targets" id="targets" />
                                                </div>
                                        </div>
 
                                        <div class="form-group clearfix" id="minMaxGuardPolicyDiv">
-                                               <label for="minGuard" class="col-sm-4 control-label"> Min
+                                               <label for="min" class="col-sm-4 control-label"> Min
                                                        Guard</label>
                                                <div class="col-sm-8">
-                                                       <input class="form-control" name="minGuard" id="minGuard" />
+                                                       <input class="form-control" name="min" id="min" />
                                                </div>
-                                               <label for="maxGuard" class="col-sm-4 control-label"> Max
+                                               <label for="max" class="col-sm-4 control-label"> Max
                                                        Guard</label>
                                                <div class="col-sm-8">
-                                                       <input class="form-control" name="maxGuard" id="maxGuard" />
+                                                       <input class="form-control" name="max" id="max" />
                                                </div>
                                        </div>
                                        <div class="form-group clearfix"
                                                id="frequencyLimiterGuardPolicyDiv" style="display: none">
-                                               <label for="limitGuard" class="col-sm-4 control-label">Limit</label>
+                                               <label for="limit" class="col-sm-4 control-label">Limit</label>
                                                <div class="col-sm-8">
-                                                       <input class="form-control" name="limitGuard" id="limitGuard" />
+                                                       <input class="form-control" name="limit" id="limit" />
                                                </div>
                                                <div class="col-sm-8">
-                                                       <select class="form-control" name="timeUnitsGuard"
-                                                               id="timeUnitsGuard">
+                                                       <select class="form-control" name="timeUnits"
+                                                               id="timeUnits">
                                                                <option value=""></option>
                                                                <option value="minute">minute</option>
                                                                <option value="hour">hour</option>
@@ -439,12 +439,12 @@ label {
                                                                <option value="month">month</option>
                                                                <option value="year">year</option>
 
-                                                       </select> <label for="timeWindowGuard" class="col-sm-4 control-label">Time
+                                                       </select> <label for="timeWindow" class="col-sm-4 control-label">Time
                                                                Window</label>
                                                </div>
                                                <div class="col-sm-8">
-                                                       <input class="form-control" name="timeWindowGuard"
-                                                               id="timeWindowGuard" />
+                                                       <input class="form-control" name="timeWindow"
+                                                               id="timeWindow" />
                                                </div>
                                        </div>
                                        <div class="form-group clearfix">
index 5fc29fa..5f85777 100644 (file)
                                loggingLevel="INFO"
                                message="Endpoint to create microservice policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies"></log>
                        <toD
-                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies?bridgeEndpoint=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
+                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
                        <doFinally>
                                <to uri="direct:reset-raise-http-exception-flag" />
                                <to
                                loggingLevel="INFO"
                                message="Endpoint to delete microservice policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies/${exchangeProperty[microServicePolicy].getName()}/versions/1.0.0"></log>
                        <toD
-                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies/${exchangeProperty[microServicePolicy].getName()}/versions/1.0.0?bridgeEndpoint=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
+                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/${exchangeProperty[microServicePolicy].getModelType()}/versions/1.0.0/policies/${exchangeProperty[microServicePolicy].getName()}/versions/1.0.0?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
 
                        <doFinally>
                                <to uri="direct:reset-raise-http-exception-flag" />
                                loggingLevel="INFO"
                                message="Endpoint to create operational policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies"></log>
                        <toD
-                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies?bridgeEndpoint=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
+                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
                        <doFinally>
                                <to uri="direct:reset-raise-http-exception-flag" />
                                <to
                                loggingLevel="INFO"
                                message="Endpoint to delete operational policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/${exchangeProperty[operationalPolicy].getName()}/versions/1.0.0"></log>
                        <toD
-                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/${exchangeProperty[operationalPolicy].getName()}/versions/1.0.0?bridgeEndpoint=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
+                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/${exchangeProperty[operationalPolicy].getName()}/versions/1.0.0?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
                        <doFinally>
                                <to uri="direct:reset-raise-http-exception-flag" />
                                <to
                                loggingLevel="INFO"
                                message="Endpoint to create guard policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies"></log>
                        <toD
-                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies?bridgeEndpoint=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
+                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
                        <doFinally>
                                <to uri="direct:reset-raise-http-exception-flag" />
                                <to
                                loggingLevel="INFO"
                                message="Endpoint to delete guard policy: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/${exchangeProperty[guardPolicy].getKey()}/versions/1.0.0"></log>
                        <toD
-                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/${exchangeProperty[guardPolicy].getKey()}/versions/1.0.0?bridgeEndpoint=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
+                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/${exchangeProperty[guardPolicy].getKey()}/versions/1.0.0?bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;deleteWithBody=false&amp;mapHttpMessageBody=false&amp;mapHttpMessageFormUrlEncodedBody=false&amp;authUsername={{clamp.config.policy.api.userName}}&amp;authPassword={{clamp.config.policy.api.password}}" />
 
                        <doFinally>
                                <to uri="direct:reset-raise-http-exception-flag" />
                                loggingLevel="INFO"
                                message="Endpoint to add policies to PDP Group: {{clamp.config.policy.pap.url}}/policy/pap/v1/pdps"></log>
                        <toD
-                               uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps?throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}" />
+                               uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps?bridgeEndpoint=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;useSystemProperties=true&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}" />
 
                        <doFinally>
                                <to uri="direct:reset-raise-http-exception-flag" />
                                        loggingLevel="INFO"
                                        message="Endpoint to delete policy from PDP Group: {{clamp.config.policy.pap.url}}/pdps/policies/${exchangeProperty[policyName]}/versions/1.0.0"></log>
                                <toD
-                                       uri="{{clamp.config.policy.pap.url}}/pdps/policies/${exchangeProperty[policyName]}/versions/1.0.0?bridgeEndpoint=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}" />
+                                       uri="{{clamp.config.policy.pap.url}}/policy/pap/v1/pdps/policies/${exchangeProperty[policyName]}/versions/1.0.0?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}" />
                                <setProperty propertyName="logMessage">
                                        <simple>${exchangeProperty[policyName]} PDP Group removal status
                                        </simple>
                                loggingLevel="INFO"
                                message="Endpoint to deploy closed loop: {{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[deploymentId]}"></log>
                        <toD
-                               uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[deploymentId]}?bridgeEndpoint=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[RaiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}" />
+                               uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[deploymentId]}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[RaiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}" />
                        <to
                                uri="bean:org.onap.clamp.loop.LoopOperation?method=updateLoopInfo(*,${exchangeProperty[loopObject]},${exchangeProperty[deploymentId]})" />
                        <doFinally>
                                loggingLevel="INFO"
                                message="Endpoint to undeploy closed loop: {{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[loopObject].getDcaeDeploymentId()}"></log>
                        <toD
-                               uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[loopObject].getDcaeDeploymentId()}?bridgeEndpoint=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[RaiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}" />
+                               uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[loopObject].getDcaeDeploymentId()}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[RaiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}" />
                        <to
                                uri="bean:org.onap.clamp.loop.LoopOperation?method=updateLoopInfo(*,${exchangeProperty[loopObject]},null)" />
                        <doFinally>
                <doTry>
                        <log
                                loggingLevel="INFO"
-                               message="Query Closed Loop status from policy DPD: ${exchangeProperty[loopObject].getName()}" />
+                               message="Query Closed Loop status from policy PDP: ${exchangeProperty[loopObject].getName()}" />
                        <to
                                uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('Policy', 'Query operational policies to PDP group')" />
                        <setProperty propertyName="operationalPolicyName">
                        </setHeader>
                        <log
                                loggingLevel="INFO"
-                               message="Endpoint to query from Policy DPD: {{clamp.config.policy.pap.url}}/policy/api/v1/policytypes/onap.policies.controlloop.operational/versions/1.0.0/policies/${exchangeProperty[operationalPolicyName]}/versions/deployed"></log>
+                               message="Endpoint to query from Policy PDP: {{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/${exchangeProperty[operationalPolicyName]}/versions/deployed"></log>
                        <toD
-                               uri="{{clamp.config.policy.pap.url}}/policy/api/v1/policytypes/onap.policies.controlloop.operational/versions/1.0.0/policies/${exchangeProperty[operationalPolicyName]}/versions/deployed?bridgeEndpoint=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authMethod=Basic&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}" />
+                               uri="{{clamp.config.policy.api.url}}/policy/api/v1/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/${exchangeProperty[operationalPolicyName]}/versions/deployed?bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authMethod=Basic&amp;authUsername={{clamp.config.policy.pap.userName}}&amp;authPassword={{clamp.config.policy.pap.password}}" />
                        <doFinally>
                                <to uri="direct:reset-raise-http-exception-flag" />
                                <to
                                                loggingLevel="INFO"
                                                message="Endpoint to query Closed Loop status: ${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()}"></log>
                                        <toD
-                                               uri="${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()}?bridgeEndpoint=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authMethod=Basic&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}" />
+                                               uri="${exchangeProperty[loopObject].getDcaeDeploymentStatusUrl()}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;httpClient.connectTimeout=10000&amp;authMethod=Basic&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}" />
                                        <doFinally>
                                                <to uri="direct:reset-raise-http-exception-flag" />
                                                <to
diff --git a/src/test/java/org/onap/clamp/clds/client/OperationalPolicyDelegateTest.java b/src/test/java/org/onap/clamp/clds/client/OperationalPolicyDelegateTest.java
new file mode 100644 (file)
index 0000000..75be799
--- /dev/null
@@ -0,0 +1,125 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 Samsung. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.clds.client;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.io.UnsupportedEncodingException;
+
+import org.apache.camel.Exchange;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.clamp.clds.client.req.policy.PolicyClient;
+import org.onap.clamp.clds.config.ClampProperties;
+import org.onap.clamp.clds.exception.ModelBpmnException;
+import org.onap.policy.controlloop.policy.builder.BuilderException;
+
+@RunWith(MockitoJUnitRunner.class)
+public class OperationalPolicyDelegateTest {
+
+    private static final String TEST_KEY = "isTest";
+    private static final String MODEL_BPMN_KEY = "modelBpmnProp";
+    private static final String MODEL_PROP_KEY = "modelProp";
+    private static final String RECIPE_TOPIC_KEY = "op.recipeTopic";
+    private static final String MESSAGE_KEY = "operationalPolicyResponseMessage";
+    private static final String SERVICE_NAME = "service.name";
+    private static final String POLICY_ID_FROM_JSON = "{policy:[{id:Oper12,from:''}]}";
+    private static final String ID_WITH_CHAIN_JSON = "{Oper12:{ab:["
+            + "{name:timeout,value:500},"
+            + "{policyConfigurations:["
+            + "[{name:maxRetries,value:5},"
+            + "{name:retryTimeLimit,value:1000},"
+            + "{name:recipe,value:go},"
+            + "{name:targetResourceId,"
+            + "value:resid234}]]}]},"
+            + "global:[{name:service,value:" + SERVICE_NAME + "}]}";
+    private static final String SIMPLE_JSON = "{}";
+    private static final String NOT_JSON = "not json";
+    private static final String MESSAGE_VALUE = "message";
+    private static final String RECIPE_TOPIC_VALUE = "recipe.topic";
+
+    @Mock
+    private Exchange exchange;
+
+    @Mock
+    private PolicyClient policyClient;
+
+    @Mock
+    private ClampProperties refProp;
+
+    @InjectMocks
+    private OperationalPolicyDelegate operationalPolicyDelegate;
+
+    @Test
+    public void shouldExecuteSuccessfully() throws BuilderException, UnsupportedEncodingException {
+        // given
+        when(exchange.getProperty(eq(TEST_KEY))).thenReturn(true);
+        when(exchange.getProperty(eq(MODEL_BPMN_KEY))).thenReturn(POLICY_ID_FROM_JSON);
+        when(exchange.getProperty(eq(MODEL_PROP_KEY))).thenReturn(ID_WITH_CHAIN_JSON);
+        when(policyClient.sendBrmsPolicy(any(), any(), any())).thenReturn(MESSAGE_VALUE);
+        when(refProp.getStringValue(eq(RECIPE_TOPIC_KEY), eq(SERVICE_NAME))).thenReturn(RECIPE_TOPIC_VALUE);
+
+        // when
+        operationalPolicyDelegate.execute(exchange);
+
+        // then
+        verify(exchange).setProperty(eq(MESSAGE_KEY), eq(MESSAGE_VALUE.getBytes()));
+    }
+
+    @Test
+    public void shouldExecutePolicyNotFound() throws BuilderException, UnsupportedEncodingException {
+        // given
+        when(exchange.getProperty(eq(TEST_KEY))).thenReturn(false);
+        when(exchange.getProperty(eq(MODEL_BPMN_KEY))).thenReturn(SIMPLE_JSON);
+        when(exchange.getProperty(eq(MODEL_PROP_KEY))).thenReturn(SIMPLE_JSON);
+
+        // when
+        operationalPolicyDelegate.execute(exchange);
+
+        // then
+        verify(policyClient, never()).sendBrmsPolicy(any(), any(), any());
+    }
+
+    @Test(expected = ModelBpmnException.class)
+    public void shouldThrowModelBpmnException() throws BuilderException, UnsupportedEncodingException {
+        // given
+        when(exchange.getProperty(eq(TEST_KEY))).thenReturn(true);
+        when(exchange.getProperty(eq(MODEL_BPMN_KEY))).thenReturn(NOT_JSON);
+
+        // when
+        operationalPolicyDelegate.execute(exchange);
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void shouldThrowNullPointerException() throws BuilderException, UnsupportedEncodingException {
+        // when
+        operationalPolicyDelegate.execute(exchange);
+    }
+}
index 36d4eb8..e1b963c 100644 (file)
@@ -179,10 +179,9 @@ public class CsarInstallerItCase {
             ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/prop-text-for-tca-2.json"),
             StandardCharsets.UTF_8), cldsModel2.getPropText(), true);
         CldsModel cldsModel3 = verifyClosedLoopModelLoadedInDb(csar, "tca_3.yaml");
-        JSONAssert.assertEquals(
-            IOUtils.toString(ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/prop-text-for-tca.json"),
-                StandardCharsets.UTF_8),
-            cldsModel3.getPropText(), true);
+        JSONAssert.assertEquals(IOUtils.toString(
+            ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/prop-text-for-tca-3.json"),
+            StandardCharsets.UTF_8), cldsModel3.getPropText(), true);
     }
 
     private CldsModel verifyClosedLoopModelLoadedInDb(CsarHandler csar, String artifactName)
index 211bb39..7a1f9f0 100644 (file)
@@ -142,18 +142,18 @@ public class BlueprintParserTest {
     public void getNodeRepresentationFromCompleteYaml() {
         final JsonObject jsonObject = jsonObjectBlueprintValid;
 
-        MicroService expected = new MicroService(SECOND_APPP, MODEL_TYPE1, FIRST_APPP, "", SECOND_APPP);
+        MicroService expected = new MicroService(SECOND_APPP, MODEL_TYPE1, FIRST_APPP, "");
         Entry<String, JsonElement> entry = jsonObject.entrySet().iterator().next();
-        MicroService actual = new BlueprintParser().getNodeRepresentation(entry);
+        MicroService actual = new BlueprintParser().getNodeRepresentation(entry, jsonObject);
 
         Assert.assertEquals(expected, actual);
     }
 
     @Test
     public void getMicroServicesFromBlueprintTest() {
-        MicroService thirdApp = new MicroService(THIRD_APPP, MODEL_TYPE3, "", "", THIRD_APPP);
-        MicroService firstApp = new MicroService(FIRST_APPP, MODEL_TYPE1, THIRD_APPP, "", FIRST_APPP);
-        MicroService secondApp = new MicroService(SECOND_APPP, MODEL_TYPE2, FIRST_APPP, "", SECOND_APPP);
+        MicroService thirdApp = new MicroService(THIRD_APPP, MODEL_TYPE3, "", "");
+        MicroService firstApp = new MicroService(FIRST_APPP, MODEL_TYPE1, THIRD_APPP, "");
+        MicroService secondApp = new MicroService(SECOND_APPP, MODEL_TYPE2, FIRST_APPP, "");
 
         Set<MicroService> expected = new HashSet<>(Arrays.asList(firstApp, secondApp, thirdApp));
         Set<MicroService> actual = new BlueprintParser().getMicroServices(microServiceTheWholeBlueprintValid);
@@ -164,7 +164,7 @@ public class BlueprintParserTest {
     @Test
     public void fallBackToOneMicroServiceTCATest() {
         MicroService tcaMS = new MicroService(BlueprintParser.TCA, "onap.policies.monitoring.cdap.tca.hi.lo.app", "",
-            "", "");
+            "");
 
         List<MicroService> expected = Collections.singletonList(tcaMS);
         List<MicroService> actual = new BlueprintParser().fallbackToOneMicroService(microServiceBlueprintOldStyleTCA);
@@ -175,7 +175,7 @@ public class BlueprintParserTest {
     @Test
     public void fallBackToOneMicroServiceHolmesTest() {
         MicroService holmesMS = new MicroService(BlueprintParser.HOLMES, "onap.policies.monitoring.cdap.tca.hi.lo.app",
-            "", "", "");
+            "", "");
 
         List<MicroService> expected = Collections.singletonList(holmesMS);
         List<MicroService> actual = new BlueprintParser()
index 1eb66ea..4b41ee8 100644 (file)
@@ -38,10 +38,10 @@ public class ChainGeneratorTest {
 
     @Test
     public void getChainOfMicroServicesTest() {
-        MicroService ms1 = new MicroService(FIRST_APPP, "", "", "", "");
-        MicroService ms2 = new MicroService(SECOND_APPP, "", FIRST_APPP, "", "");
-        MicroService ms3 = new MicroService(THIRD_APPP, "", SECOND_APPP, "", "");
-        MicroService ms4 = new MicroService(FOURTH_APPP, "", THIRD_APPP, "", "");
+        MicroService ms1 = new MicroService(FIRST_APPP, "", "", "");
+        MicroService ms2 = new MicroService(SECOND_APPP, "", FIRST_APPP, "");
+        MicroService ms3 = new MicroService(THIRD_APPP, "", SECOND_APPP, "");
+        MicroService ms4 = new MicroService(FOURTH_APPP, "", THIRD_APPP, "");
 
         List<MicroService> expectedList = Arrays.asList(ms1, ms2, ms3, ms4);
         Set<MicroService> inputSet = new HashSet<>(expectedList);
@@ -52,10 +52,10 @@ public class ChainGeneratorTest {
 
     @Test
     public void getChainOfMicroServicesTwiceNoInputTest() {
-        MicroService ms1 = new MicroService(FIRST_APPP, "", "", "", "");
-        MicroService ms2 = new MicroService(SECOND_APPP, "", "", "", "");
-        MicroService ms3 = new MicroService(THIRD_APPP, "", SECOND_APPP, "", "");
-        MicroService ms4 = new MicroService(FOURTH_APPP, "", FIRST_APPP, "", "");
+        MicroService ms1 = new MicroService(FIRST_APPP, "", "", "");
+        MicroService ms2 = new MicroService(SECOND_APPP, "", "", "");
+        MicroService ms3 = new MicroService(THIRD_APPP, "", SECOND_APPP, "");
+        MicroService ms4 = new MicroService(FOURTH_APPP, "", FIRST_APPP, "");
 
         Set<MicroService> inputSet = new HashSet<>(Arrays.asList(ms1, ms2, ms3, ms4));
         List<MicroService> actualList = new ChainGenerator().getChainOfMicroServices(inputSet);
@@ -64,10 +64,10 @@ public class ChainGeneratorTest {
 
     @Test
     public void getChainOfMicroServicesBranchingTest() {
-        MicroService ms1 = new MicroService(FIRST_APPP, "", "", "", "");
-        MicroService ms2 = new MicroService(SECOND_APPP, "", FIRST_APPP, "", "");
-        MicroService ms3 = new MicroService(THIRD_APPP, "", FIRST_APPP, "", "");
-        MicroService ms4 = new MicroService(FOURTH_APPP, "", FIRST_APPP, "", "");
+        MicroService ms1 = new MicroService(FIRST_APPP, "", "", "");
+        MicroService ms2 = new MicroService(SECOND_APPP, "", FIRST_APPP, "");
+        MicroService ms3 = new MicroService(THIRD_APPP, "", FIRST_APPP, "");
+        MicroService ms4 = new MicroService(FOURTH_APPP, "", FIRST_APPP, "");
 
         Set<MicroService> inputSet = new HashSet<>(Arrays.asList(ms1, ms2, ms3, ms4));
         List<MicroService> actualList = new ChainGenerator().getChainOfMicroServices(inputSet);
index 5eb664f..ff6e1b5 100644 (file)
@@ -56,8 +56,8 @@ public class ClampGraphBuilderTest {
     @Test
     public void clampGraphBuilderCompleteChainTest() {
         String collector = "VES";
-        MicroService ms1 = new MicroService("ms1", "", "", "ms1_jpa_id", "");
-        MicroService ms2 = new MicroService("ms2", "", "", "ms2_jpa_id", "");
+        MicroService ms1 = new MicroService("ms1", "", "", "ms1_jpa_id");
+        MicroService ms2 = new MicroService("ms2", "", "", "ms2_jpa_id");
 
         String policy = "OperationalPolicy";
         List<MicroService> microServices = Arrays.asList(ms1, ms2);
@@ -76,8 +76,8 @@ public class ClampGraphBuilderTest {
     @Test(expected = InvalidStateException.class)
     public void clampGraphBuilderNoPolicyGivenTest() {
         String collector = "VES";
-        MicroService ms1 = new MicroService("ms1", "", "", "ms1_jpa_id", "");
-        MicroService ms2 = new MicroService("ms2", "", "", "ms2_jpa_id", "");
+        MicroService ms1 = new MicroService("ms1", "", "", "ms1_jpa_id");
+        MicroService ms2 = new MicroService("ms2", "", "", "ms2_jpa_id");
 
         ClampGraphBuilder clampGraphBuilder = new ClampGraphBuilder(mockPainter);
         clampGraphBuilder.collector(collector).addMicroService(ms1).addMicroService(ms2).build();
diff --git a/src/test/java/org/onap/clamp/flow/FlowLogOperationTestItCase.java b/src/test/java/org/onap/clamp/flow/FlowLogOperationTestItCase.java
new file mode 100644 (file)
index 0000000..1abeb10
--- /dev/null
@@ -0,0 +1,41 @@
+package org.onap.clamp.flow;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultExchange;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.clamp.clds.util.LoggingUtils;
+import org.onap.clamp.clds.util.ONAPLogConstants;
+import org.onap.clamp.flow.log.FlowLogOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.util.ReflectionTestUtils;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+
+
+public class FlowLogOperationTestItCase {
+
+    @Autowired
+    CamelContext camelContext;
+
+    @Test
+    public void testStratLog() {
+        //given
+        FlowLogOperation flowLogOperation = new FlowLogOperation();
+        Exchange exchange = new DefaultExchange(camelContext);
+        LoggingUtils loggingUtils = mock(LoggingUtils.class);
+        ReflectionTestUtils.setField(flowLogOperation, "util", loggingUtils);
+
+        //when
+        Mockito.when(loggingUtils.getProperties(ONAPLogConstants.MDCs.REQUEST_ID)).thenReturn("MockRequestId");
+        Mockito.when(loggingUtils.getProperties(ONAPLogConstants.MDCs.INVOCATION_ID)).thenReturn("MockInvocationId");
+        Mockito.when(loggingUtils.getProperties(ONAPLogConstants.MDCs.PARTNER_NAME)).thenReturn("MockPartnerName");
+        flowLogOperation.startLog(exchange, "serviceName");
+
+        //then
+        assertThat(exchange.getProperty(ONAPLogConstants.Headers.REQUEST_ID)).isEqualTo("MockRequestId");
+        assertThat(exchange.getProperty(ONAPLogConstants.Headers.INVOCATION_ID)).isEqualTo("MockInvocationId");
+        assertThat(exchange.getProperty(ONAPLogConstants.Headers.PARTNER_NAME)).isEqualTo("MockPartnerName");
+    }
+}
\ No newline at end of file
index 3bf8500..cd6db68 100644 (file)
@@ -51,6 +51,7 @@ import org.onap.clamp.clds.sdc.controller.installer.CsarHandler;
 import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller;
 import org.onap.clamp.clds.util.JsonUtils;
 import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
 import org.onap.sdc.api.notification.IArtifactInfo;
 import org.onap.sdc.api.notification.INotificationData;
 import org.onap.sdc.api.notification.IResourceInstance;
@@ -206,6 +207,17 @@ public class CsarInstallerItCase {
         assertThat(loop.getModelPropertiesJson().get("resourceDetails")).isNotNull();
         JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/model-properties.json"),
             JsonUtils.GSON.toJson(loop.getModelPropertiesJson()), true);
+        assertThat(((MicroServicePolicy) (loop.getMicroServicePolicies().toArray()[0])).getModelType()).isNotEmpty();
+
+        loop = loopsRepo
+            .findById(Loop.generateLoopName(generatedName, "1.0", RESOURCE_INSTANCE_NAME_RESOURCE1, "tca_3.yaml"))
+            .get();
+        assertThat(((MicroServicePolicy) (loop.getMicroServicePolicies().toArray()[0])).getModelType()).isNotEmpty();
+
+        loop = loopsRepo
+            .findById(Loop.generateLoopName(generatedName, "1.0", RESOURCE_INSTANCE_NAME_RESOURCE2, "tca_2.yaml"))
+            .get();
+        assertThat(((MicroServicePolicy) (loop.getMicroServicePolicies().toArray()[0])).getModelType()).isNotEmpty();
     }
 
 }
index 41ca2de..d7a5416 100644 (file)
                {
                        "name": "deployParameters",
                        "value": {
-                               "dh_override": "component_dockerhost",
-                               "dh_location_id": "zone1",
-                               "aaiEnrichmentHost": "none",
-                               "aaiEnrichmentPort": 8443,
-                               "enableAAIEnrichment": false,
-                               "dmaap_host": "dmaap.onap-message-router",
-                               "dmaap_port": 3904,
+                               "aaiEnrichmentHost": "aai.onap.svc.cluster.local",
+                               "aaiEnrichmentPort": "8443",
+                               "enableAAIEnrichment": true,
+                               "dmaap_host": "message-router.onap",
+                               "dmaap_port": "3904",
                                "enableRedisCaching": false,
-                               "redisHosts": "",
-                               "tag_version": "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0",
-                               "consul_host": "consul-server.onap-consul",
+                               "redisHosts": "dcae-redis.onap.svc.cluster.local:6379",
+                               "tag_version": "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1",
+                               "consul_host": "consul-server.onap",
                                "consul_port": "8500",
-                               "cbs_host": "config-binding-service.dcae",
+                               "cbs_host": "config-binding-servicel",
                                "cbs_port": "10000",
-                               "external_port": "32010",
+                               "external_port": "32012",
+                               "policy_model_id": "onap.policies.monitoring.cdap.tca.hi.lo.app",
                                "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT"
                        }
                }
        ]
-}
+}
\ No newline at end of file
diff --git a/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-3.json b/src/test/resources/example/sdc/blueprint-dcae/prop-text-for-tca-3.json
new file mode 100644 (file)
index 0000000..f8f5316
--- /dev/null
@@ -0,0 +1,47 @@
+{
+       "global": [
+               {
+                       "name": "service",
+                       "value": [
+                               "4cc5b45a-1f63-4194-8100-cd8e14248c92"
+                       ]
+               },
+               {
+                       "name": "vf",
+                       "value": [
+                               "07e266fc-49ab-4cd7-8378-ca4676f1b9ec"
+                       ]
+               },
+               {
+                       "name": "actionSet",
+                       "value": [
+                               "vnfRecipe"
+                       ]
+               },
+               {
+                       "name": "location",
+                       "value": [
+                               "DC1"
+                       ]
+               },
+               {
+                       "name": "deployParameters",
+                       "value": {
+                               "aaiEnrichmentHost": "aai.onap.svc.cluster.local",
+                               "aaiEnrichmentPort": "8443",
+                               "enableAAIEnrichment": true,
+                               "dmaap_host": "message-router.onap.svc.cluster.local",
+                               "dmaap_port": "3904",
+                               "enableRedisCaching": false,
+                               "redisHosts": "dcae-redis.onap.svc.cluster.local:6379",
+                               "tag_version": "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest",
+                               "consul_host": "consul-server.onap.svc.cluster.local",
+                               "consul_port": "8500",
+                               "cbs_host": "config-binding-service.dcae.svc.cluster.local",
+                               "cbs_port": "10000",
+                               "external_port": "32012",
+                               "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT"
+                       }
+               }
+       ]
+}
\ No newline at end of file
index c834b1b..56ae32a 100644 (file)
@@ -1,76 +1,92 @@
+#
+# ============LICENSE_START====================================================
+# =============================================================================
+# Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
+# =============================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END======================================================
+
 tosca_definitions_version: cloudify_dsl_1_3
-imports:
-  - "http://www.getcloudify.org/spec/cloudify/3.4/types.yaml"
-  - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dockerplugin/3.2.0/dockerplugin_types.yaml
-  - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/relationshipplugin/1.0.0/relationshipplugin_types.yaml
-  - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml
 
+description: >
+  This blueprint deploys/manages the TCA module as a Docker container
+
+imports:
+  - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml
+  - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml
+#  - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml
+  - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/clamppolicyplugin/1.0.0/clamppolicyplugin_types.yaml
 inputs:
-  dh_override:
-    type: string
-    default: "component_dockerhost"
-  dh_location_id:
-    type: string
-    default: "zone1"
   aaiEnrichmentHost:
     type: string
-    default: "none"
+    default: "aai.onap.svc.cluster.local"
   aaiEnrichmentPort:
-    type: string    
-    default: 8443
+    type: string
+    default: "8443"
   enableAAIEnrichment:
     type: string
-    default: false
+    default: true
   dmaap_host:
     type: string
-    default: dmaap.onap-message-router   
+    default: message-router.onap
   dmaap_port:
     type: string
-    default: 3904    
+    default: "3904"
   enableRedisCaching:
     type: string
-    default: false    
+    default: false
   redisHosts:
-    type: string      
+    type: string
+    default: dcae-redis.onap.svc.cluster.local:6379
   tag_version:
     type: string
-    default: "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0"
+    default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.1"
   consul_host:
     type: string
-    default: consul-server.onap-consul
+    default: consul-server.onap
   consul_port:
     type: string
     default: "8500"
   cbs_host:
     type: string
-    default: "config-binding-service.dcae"
+    default: "config-binding-servicel"
   cbs_port:
     type: string
     default: "10000"
   policy_id:
     type: string
-    default: "none"
+    default: "onap.restart.tca"
   external_port:
     type: string
-    description: "Port for CDAPgui to be exposed"
-    default: "32010"
-
+    description: Kubernetes node port on which CDAPgui is exposed
+    default: "32012"
+  policy_model_id:
+    type: string
+    default: "onap.policies.monitoring.cdap.tca.hi.lo.app"
 node_templates:
-  docker_service_host:
-    properties:
-      docker_host_override:
-        get_input: dh_override
-      location_id:
-        get_input: dh_location_id
-    type: dcae.nodes.SelectedDockerHost
-  tca_docker:
+  tca_k8s:
+    type: dcae.nodes.ContainerizedServiceComponent
     relationships:
-       - type: dcae.relationships.component_contained_in
-         target: docker_service_host
-       - target: tca_policy
-         type: cloudify.relationships.depends_on        
-    type: dcae.nodes.DockerContainerForComponentsUsingDmaap
+      - target: tca_policy
+        type: cloudify.relationships.depends_on
     properties:
+        service_component_type: 'dcaegen2-analytics-tca'
+        application_config: {}
+        docker_config: {}
+        image:
+          get_input: tag_version
+        log_info:
+          log_directory: "/opt/app/TCAnalytics/logs"
         application_config:
             app_config:
                 appDescription: DCAE Analytics Threshold Crossing Alert Application
@@ -84,87 +100,75 @@ node_templates:
                 tcaVESMessageStatusTableTTLSeconds: '86400'
                 thresholdCalculatorFlowletInstances: '2'
             app_preferences:
-                aaiEnrichmentHost: 
+                aaiEnrichmentHost:
                     get_input: aaiEnrichmentHost
                 aaiEnrichmentIgnoreSSLCertificateErrors: 'true'
                 aaiEnrichmentPortNumber: '8443'
                 aaiEnrichmentProtocol: https
-                aaiEnrichmentUserName: DCAE
-                aaiEnrichmentUserPassword: DCAE
+                aaiEnrichmentUserName: dcae@dcae.onap.org
+                aaiEnrichmentUserPassword: demo123456!
                 aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query
                 aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf
-                enableAAIEnrichment: 
+                enableAAIEnrichment:
                     get_input: enableAAIEnrichment
-                enableRedisCaching: 
+                enableRedisCaching:
                     get_input: enableRedisCaching
-                redisHosts: 
+                redisHosts:
                     get_input: redisHosts
                 enableAlertCEFFormat: 'false'
                 publisherContentType: application/json
-                publisherHostName: 
+                publisherHostName:
                     get_input: dmaap_host
-                publisherHostPort: 
-                    get_input: dmaap_port                  
+                publisherHostPort:
+                    get_input: dmaap_port
                 publisherMaxBatchSize: '1'
                 publisherMaxRecoveryQueueSize: '100000'
                 publisherPollingInterval: '20000'
                 publisherProtocol: http
                 publisherTopicName: unauthenticated.DCAE_CL_OUTPUT
-                subscriberConsumerGroup: OpenDCAE-c12
+                subscriberConsumerGroup: OpenDCAE-clamp
                 subscriberConsumerId: c12
                 subscriberContentType: application/json
-                subscriberHostName: 
+                subscriberHostName:
                     get_input: dmaap_host
                 subscriberHostPort:
-                    get_input: dmaap_port                                  
+                    get_input: dmaap_port
                 subscriberMessageLimit: '-1'
                 subscriberPollingInterval: '30000'
                 subscriberProtocol: http
                 subscriberTimeoutMS: '-1'
-                subscriberTopicName: unauthenticated.SEC_MEASUREMENT_OUTPUT
-                tca_policy_default: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"LESS_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBalancer","controlLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"Measurement_vGMUX","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"EQUAL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"GREATER","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]}]}'
-        service_component_type: dcaegen2-analytics_tca    
-        docker_config:
-            healthcheck:
-               endpoint: /healthcheck
-               interval: 15s
-               timeout: 1s
-               type: http
-        image:
-            get_input: tag_version        
+                subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT
+#                tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"LESS_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBalancer","controlLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"Measurement_vGMUX","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"EQUAL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"GREATER","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]}]}'
+        service_component_type: dcaegen2-analytics_tca
     interfaces:
       cloudify.interfaces.lifecycle:
         start:
           inputs:
             envs:
-                DMAAPHOST: 
+                DMAAPHOST:
                     { get_input: dmaap_host }
                 DMAAPPORT:
                     { get_input: dmaap_port }
                 DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT"
-                DMAAPSUBTOPIC: "unauthenticated.SEC_MEASUREMENT_OUTPUT"
-                AAIHOST: 
+                DMAAPSUBTOPIC: "unauthenticated.VES_MEASUREMENT_OUTPUT"
+                AAIHOST:
                     { get_input: aaiEnrichmentHost }
-                AAIPORT: 
+                AAIPORT:
                     { get_input: aaiEnrichmentPort }
-                CONSUL_HOST: 
+                CONSUL_HOST:
                     { get_input: consul_host }
-                CONSUL_PORT: 
+                CONSUL_PORT:
                     { get_input: consul_port }
-                CBS_HOST: 
+                CBS_HOST:
                     { get_input: cbs_host }
-                CBS_PORT: 
+                CBS_PORT:
                     { get_input: cbs_port }
-                CONFIG_BINDING_SERVICE: "config_binding_service"                
+                CONFIG_BINDING_SERVICE: "config_binding_service"
             ports:
-              - concat: ["11011:", { get_input: external_port }]        
-        stop:
-          inputs:
-            cleanup_image: true              
+              - concat: ["11011:", { get_input: external_port }]
   tca_policy:
-    type: dcae.nodes.policy
+    type: clamp.nodes.policy
     properties:
       policy_id:
            get_input: policy_id
            policy_type_id: onap.policies.monitoring.cdap.tca.hi.lo.app
-
index edaa0be..53cfc4f 100644 (file)
 tosca_definitions_version: cloudify_dsl_1_3
+
+description: >
+  This blueprint deploys/manages the TCA module as a Docker container
+
 imports:
-- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml
-- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml
-- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml
-- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml
+  - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml
+  - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/k8splugin/1.4.12/k8splugin_types.yaml
+  - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R4/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml
 inputs:
-  location_id:
+  aaiEnrichmentHost:
     type: string
-  service_id:
+    default: "aai.onap.svc.cluster.local"
+  aaiEnrichmentPort:
     type: string
+    default: "8443"
+  enableAAIEnrichment:
+    type: string
+    default: true
+  dmaap_host:
+    type: string
+    default: message-router.onap.svc.cluster.local
+  dmaap_port:
+    type: string
+    default: "3904"
+  enableRedisCaching:
+    type: string
+    default: false
+  redisHosts:
+    type: string
+    default: dcae-redis.onap.svc.cluster.local:6379
+  tag_version:
+    type: string
+    default: "nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0-STAGING-latest"
+  consul_host:
+    type: string
+    default: consul-server.onap.svc.cluster.local
+  consul_port:
+    type: string
+    default: "8500"
+  cbs_host:
+    type: string
+    default: "config-binding-service.dcae.svc.cluster.local"
+  cbs_port:
+    type: string
+    default: "10000"
   policy_id:
     type: string
+    default: "none"
+  external_port:
+    type: string
+    description: Kubernetes node port on which CDAPgui is exposed
+    default: "32012"
+
 node_templates:
-  policy_0:
-    type: dcae.nodes.policy
-    properties:
-      policy_id: 
-        get_input: policy_id
-        policy_type_id: onap.policies.monitoring.cdap.tca.hi.lo.app
-  cdap_host_host:
-    type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure
-    properties:
-      location_id:
-        get_input: location_id
-      scn_override: cdap_broker.solutioning-central.dcae.onap.org
-    interfaces:
-      cloudify.interfaces.lifecycle: {
-        }
-  tca_tca:
-    type: dcae.nodes.MicroService.cdap
-    properties:
-      app_config:
-        appDescription: DCAE Analytics Threshold Crossing Alert Application
-        appName: dcae-tca
-        tcaSubscriberOutputStreamName: TCASubscriberOutputStream
-        tcaVESAlertsTableName: TCAVESAlertsTable
-        tcaVESAlertsTableTTLSeconds: '1728000'
-        tcaVESMessageStatusTableName: TCAVESMessageStatusTable
-        tcaVESMessageStatusTableTTLSeconds: '86400'
-        thresholdCalculatorFlowletInstances: '2'
-      app_preferences:
-        publisherContentType: application/json
-        publisherHostName: mrlocal-mtnjftle01.onap.org
-        publisherHostPort: '3905'
-        publisherMaxBatchSize: '10'
-        publisherMaxRecoveryQueueSize: '100000'
-        publisherPollingInterval: '20000'
-        publisherProtocol: https
-        publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub
-        publisherUserName: test@tca.af.dcae.onap.org
-        publisherUserPassword: password
-        subscriberConsumerGroup: OpenDCAE-c12
-        subscriberConsumerId: c12
-        subscriberContentType: application/json
-        subscriberHostName: mrlocal-mtnjftle01.onap.org
-        subscriberHostPort: '3905'
-        subscriberMessageLimit: '-1'
-        subscriberPollingInterval: '20000'
-        subscriberProtocol: https
-        subscriberTimeoutMS: '-1'
-        subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub
-        subscriberUserName: test@tca.af.dcae.onap.org
-        subscriberUserPassword: password
-        tca_policy: null
-      artifact_name: dcae-analytics-tca
-      artifact_version: 1.0.0
-      connections:
-        streams_publishes: [
-          ]
-        streams_subscribes: [
-          ]
-      jar_url: http://somejar
-      location_id:
-        get_input: location_id
-      namespace: cdap_tca_hi_lo
-      programs:
-      - program_id: TCAVESCollectorFlow
-        program_type: flows
-      - program_id: TCADMaaPMRSubscriberWorker
-        program_type: workers
-      - program_id: TCADMaaPMRPublisherWorker
-        program_type: workers
-      service_component_type: cdap_app_tca
-      service_id:
-        get_input: service_id
-      streamname: TCASubscriberOutputStream
+  tca_k8s:
+    type: dcae.nodes.ContainerizedServiceComponent
     relationships:
-    - target: topic0
-      type: dcae.relationships.subscribe_to_events
-    - target: topic1
-      type: dcae.relationships.publish_events
-    - target: cdap_host_host
-      type: dcae.relationships.component_contained_in
-    - target: policy_0
-      type: dcae.relationships.depends_on
-  topic0:
-    type: dcae.nodes.Topic
+      - target: tca_policy
+        type: cloudify.relationships.depends_on
     properties:
-      topic_name: ''
-  topic1:
-    type: dcae.nodes.Topic
+        service_component_type: 'dcaegen2-analytics-tca'
+        application_config: {}
+        docker_config: {}
+        image:
+          get_input: tag_version
+        log_info:
+          log_directory: "/opt/app/TCAnalytics/logs"
+        application_config:
+            app_config:
+                appDescription: DCAE Analytics Threshold Crossing Alert Application
+                appName: dcae-tca
+                tcaAlertsAbatementTableName: TCAAlertsAbatementTable
+                tcaAlertsAbatementTableTTLSeconds: '1728000'
+                tcaSubscriberOutputStreamName: TCASubscriberOutputStream
+                tcaVESAlertsTableName: TCAVESAlertsTable
+                tcaVESAlertsTableTTLSeconds: '1728000'
+                tcaVESMessageStatusTableName: TCAVESMessageStatusTable
+                tcaVESMessageStatusTableTTLSeconds: '86400'
+                thresholdCalculatorFlowletInstances: '2'
+            app_preferences:
+                aaiEnrichmentHost:
+                    get_input: aaiEnrichmentHost
+                aaiEnrichmentIgnoreSSLCertificateErrors: 'true'
+                aaiEnrichmentPortNumber: '8443'
+                aaiEnrichmentProtocol: https
+                aaiEnrichmentUserName: dcae@dcae.onap.org
+                aaiEnrichmentUserPassword: demo123456!
+                aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query
+                aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf
+                enableAAIEnrichment:
+                    get_input: enableAAIEnrichment
+                enableRedisCaching:
+                    get_input: enableRedisCaching
+                redisHosts:
+                    get_input: redisHosts
+                enableAlertCEFFormat: 'false'
+                publisherContentType: application/json
+                publisherHostName:
+                    get_input: dmaap_host
+                publisherHostPort:
+                    get_input: dmaap_port
+                publisherMaxBatchSize: '1'
+                publisherMaxRecoveryQueueSize: '100000'
+                publisherPollingInterval: '20000'
+                publisherProtocol: http
+                publisherTopicName: unauthenticated.DCAE_CL_OUTPUT
+                subscriberConsumerGroup: OpenDCAE-c12
+                subscriberConsumerId: c12
+                subscriberContentType: application/json
+                subscriberHostName:
+                    get_input: dmaap_host
+                subscriberHostPort:
+                    get_input: dmaap_port
+                subscriberMessageLimit: '-1'
+                subscriberPollingInterval: '30000'
+                subscriberProtocol: http
+                subscriberTimeoutMS: '-1'
+                subscriberTopicName: unauthenticated.VES_MEASUREMENT_OUTPUT
+                tca_policy: ''
+        service_component_type: dcaegen2-analytics_tca
+    interfaces:
+      cloudify.interfaces.lifecycle:
+        start:
+          inputs:
+            envs:
+                DMAAPHOST:
+                    { get_input: dmaap_host }
+                DMAAPPORT:
+                    { get_input: dmaap_port }
+                DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT"
+                DMAAPSUBTOPIC: "unauthenticated.VES_MEASUREMENT_OUTPUT"
+                AAIHOST:
+                    { get_input: aaiEnrichmentHost }
+                AAIPORT:
+                    { get_input: aaiEnrichmentPort }
+                CONSUL_HOST:
+                    { get_input: consul_host }
+                CONSUL_PORT:
+                    { get_input: consul_port }
+                CBS_HOST:
+                    { get_input: cbs_host }
+                CBS_PORT:
+                    { get_input: cbs_port }
+                CONFIG_BINDING_SERVICE: "config_binding_service"
+            ports:
+              - concat: ["11011:", { get_input: external_port }]
+  tca_policy:
+    type: dcae.nodes.policy
     properties:
-      topic_name: ''
-      
+      policy_id:
+           get_input: policy_id
+           policy_type_id: onap.policies.monitoring.cdap.tca.hi.lo.app
index bacf174..b4e0809 100644 (file)
@@ -1,15 +1,15 @@
 {
        "policy-id": "guard1",
-       "contents": {
+       "content": {
                "recipe": "Rebuild",
                "actor": "SO",
                "clname": "testloop",
-               "guardTargets": ".*",
-               "minGuard": "3",
-               "maxGuard": "7",
-               "limitGuard": "",
-               "timeUnitsGuard": "",
-               "timeWindowGuard": "",
+               "targets": ".*",
+               "min": "3",
+               "max": "7",
+               "limit": "",
+               "timeUnits": "",
+               "timeWindow": "",
                "guardActiveStart": "00:00:01-05:00",
                "guardActiveEnd": "23:59:01-05:00"
        }
index 89f7ec8..29beb6b 100644 (file)
@@ -1,15 +1,15 @@
 {
        "policy-id": "guard2",
-       "contents": {
+       "content": {
                "recipe": "Migrate",
                "actor": "SO",
                "clname": "testloop",
-               "guardTargets": ".*",
-               "minGuard": "1",
-               "maxGuard": "2",
-               "limitGuard": "",
-               "timeUnitsGuard": "",
-               "timeWindowGuard": "",
+               "targets": ".*",
+               "min": "1",
+               "max": "2",
+               "limit": "",
+               "timeUnits": "",
+               "timeWindow": "",
                "guardActiveStart": "00:00:01-05:00",
                "guardActiveEnd": "23:59:01-05:00"
        }
index 5036165..52eabb8 100644 (file)
@@ -4,12 +4,12 @@
                        "recipe": "Rebuild",
                        "actor": "SO",
                        "clname": "testloop",
-                       "guardTargets": ".*",
-                       "minGuard": "3",
-                       "maxGuard": "7",
-                       "limitGuard": "",
-                       "timeUnitsGuard": "",
-                       "timeWindowGuard": "",
+                       "targets": ".*",
+                       "min": "3",
+                       "max": "7",
+                       "limit": "",
+                       "timeUnits": "",
+                       "timeWindow": "",
                        "guardActiveStart": "00:00:01-05:00",
                        "guardActiveEnd": "23:59:01-05:00"
                },
                        "recipe": "Migrate",
                        "actor": "SO",
                        "clname": "testloop",
-                       "guardTargets": ".*",
-                       "minGuard": "1",
-                       "maxGuard": "2",
-                       "limitGuard": "",
-                       "timeUnitsGuard": "",
-                       "timeWindowGuard": "",
+                       "targets": ".*",
+                       "min": "1",
+                       "max": "2",
+                       "limit": "",
+                       "timeUnits": "",
+                       "timeWindow": "",
                        "guardActiveStart": "00:00:01-05:00",
                        "guardActiveEnd": "23:59:01-05:00"
                }