summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorxuegao <xg353y@intl.att.com>2019-12-13 11:50:24 +0100
committerxuegao <xg353y@intl.att.com>2019-12-16 13:00:03 +0100
commit9047defa7549ebd9a84cef3e10bbfd90f068097b (patch)
tree4cb5d0f32ca599d6a8ae7d3490f331af1e40383b /src
parent4d8c1ab21a3f5baf82a91a3cc9ab2af8823e6e34 (diff)
Update deploymentParameters
Update deploymentParameters to allow a map of <msName, deploymentParams> instead of a single deploymentParam Issue-ID: CLAMP-569, CLAMP-570 Change-Id: I6abc4fe193157644bd6abe1c893a1416cadec988 Signed-off-by: xuegao <xg353y@intl.att.com>
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java5
-rw-r--r--src/main/java/org/onap/clamp/loop/CsarInstaller.java36
-rw-r--r--src/main/java/org/onap/clamp/loop/deploy/DeployParameters.java127
-rw-r--r--src/test/java/org/onap/clamp/loop/deploy/DeployParametersTest.java86
-rw-r--r--src/test/resources/example/sdc/expected-result/deployment-parameters.json43
5 files changed, 263 insertions, 34 deletions
diff --git a/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java b/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java
index b383c18b..558102c5 100644
--- a/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java
+++ b/src/main/java/org/onap/clamp/clds/model/dcae/DcaeInventoryCache.java
@@ -38,6 +38,11 @@ public class DcaeInventoryCache {
private Map<String, Set<DcaeInventoryResponse>> blueprintsMap = new ConcurrentHashMap<>();
+ /**
+ * Add Dcae inventory response.
+ *
+ * @param inventoryResponse the Dcae inventory response
+ */
public void addDcaeInventoryResponse(DcaeInventoryResponse inventoryResponse) {
Set<DcaeInventoryResponse> responsesSet = blueprintsMap.get(inventoryResponse.getAsdcServiceId());
if (responsesSet == null) {
diff --git a/src/main/java/org/onap/clamp/loop/CsarInstaller.java b/src/main/java/org/onap/clamp/loop/CsarInstaller.java
index 3f69e116..371f88e8 100644
--- a/src/main/java/org/onap/clamp/loop/CsarInstaller.java
+++ b/src/main/java/org/onap/clamp/loop/CsarInstaller.java
@@ -45,6 +45,7 @@ import org.onap.clamp.clds.sdc.controller.installer.CsarHandler;
import org.onap.clamp.clds.sdc.controller.installer.MicroService;
import org.onap.clamp.clds.util.JsonUtils;
import org.onap.clamp.clds.util.drawing.SvgFacade;
+import org.onap.clamp.loop.deploy.DeployParameters;
import org.onap.clamp.loop.service.Service;
import org.onap.clamp.loop.service.ServiceRepository;
import org.onap.clamp.policy.Policy;
@@ -240,9 +241,7 @@ public class CsarInstaller {
}
private JsonObject createGlobalPropertiesJson(BlueprintArtifact blueprintArtifact, Loop newLoop) {
- JsonObject globalProperties = new JsonObject();
- globalProperties.add("dcaeDeployParameters", getAllBlueprintParametersInJson(blueprintArtifact, newLoop));
- return globalProperties;
+ return new DeployParameters(blueprintArtifact, newLoop).getDeploymentParametersinJson();
}
private static JsonObject createVfModuleProperties(CsarHandler csar) {
@@ -280,24 +279,6 @@ public class CsarInstaller {
return resourcesProp;
}
- private JsonObject getAllBlueprintParametersInJson(BlueprintArtifact blueprintArtifact, Loop newLoop) {
- JsonObject node = new JsonObject();
- Yaml yaml = new Yaml();
- Map<String, Object> inputsNodes = ((Map<String, Object>) ((Map<String, Object>) yaml
- .load(blueprintArtifact.getDcaeBlueprint())).get("inputs"));
- inputsNodes.entrySet().stream().filter(e -> !e.getKey().contains("policy_id")).forEach(elem -> {
- Object defaultValue = ((Map<String, Object>) elem.getValue()).get("default");
- if (defaultValue != null) {
- addPropertyToNode(node, elem.getKey(), defaultValue);
- } else {
- node.addProperty(elem.getKey(), "");
- }
- });
- // For Dublin only one micro service is expected
- node.addProperty("policy_id", ((MicroServicePolicy) newLoop.getMicroServicePolicies().toArray()[0]).getName());
- return node;
- }
-
/**
* ll get the latest version of the artifact (version can be specified to DCAE
* call).
@@ -311,17 +292,4 @@ public class CsarInstaller {
blueprintArtifact.getResourceAttached().getResourceInvariantUUID());
}
- private void addPropertyToNode(JsonObject node, String key, Object value) {
- if (value instanceof String) {
- node.addProperty(key, (String) value);
- } else if (value instanceof Number) {
- node.addProperty(key, (Number) value);
- } else if (value instanceof Boolean) {
- node.addProperty(key, (Boolean) value);
- } else if (value instanceof Character) {
- node.addProperty(key, (Character) value);
- } else {
- node.addProperty(key, JsonUtils.GSON.toJson(value));
- }
- }
}
diff --git a/src/main/java/org/onap/clamp/loop/deploy/DeployParameters.java b/src/main/java/org/onap/clamp/loop/deploy/DeployParameters.java
new file mode 100644
index 00000000..c994af7c
--- /dev/null
+++ b/src/main/java/org/onap/clamp/loop/deploy/DeployParameters.java
@@ -0,0 +1,127 @@
+/*-
+ * ============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.loop.deploy;
+
+import com.google.gson.JsonObject;
+
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+
+import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact;
+import org.onap.clamp.clds.util.JsonUtils;
+import org.onap.clamp.loop.Loop;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
+import org.yaml.snakeyaml.Yaml;
+
+public class DeployParameters {
+
+ private LinkedHashMap<String, JsonObject> deploymentParamMap = new LinkedHashMap<String, JsonObject>();
+
+ /**
+ * Constructor.
+ *
+ * @param blueprintArtifactList A list of blueprint artifacts
+ * @param loop The loop object
+ */
+ public DeployParameters(LinkedHashSet<BlueprintArtifact> blueprintArtifactList, Loop loop) {
+ this.init(blueprintArtifactList, loop);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param blueprintArtifact One blueprint artifact
+ * @param loop The loop object
+ */
+ public DeployParameters(BlueprintArtifact blueprintArtifact, Loop loop) {
+ LinkedHashSet<BlueprintArtifact> blueprintArtifactList = new LinkedHashSet<BlueprintArtifact>();
+ blueprintArtifactList.add(blueprintArtifact);
+ this.init(blueprintArtifactList, loop);
+ }
+
+ private void init(LinkedHashSet<BlueprintArtifact> blueprintArtifactList, Loop loop) {
+ String microServiceName = ((MicroServicePolicy) loop.getMicroServicePolicies().toArray()[0]).getName();
+ // Add index to the microservice name from the 2nd blueprint artifact for now.
+ // Update the microservice names, when able to link the microserivce <-> blueprint in the future
+ int index = 0;
+ for (BlueprintArtifact blueprintArtifact: blueprintArtifactList) {
+ if (index > 0) {
+ deploymentParamMap.put(microServiceName + index,
+ generateDeployParameter(blueprintArtifact, microServiceName));
+ } else {
+ deploymentParamMap.put(microServiceName, generateDeployParameter(blueprintArtifact, microServiceName));
+ }
+ index++;
+ }
+ }
+
+ private JsonObject generateDeployParameter(BlueprintArtifact blueprintArtifact, String microServiceName) {
+ JsonObject deployJsonBody = new JsonObject();
+ Yaml yaml = new Yaml();
+ Map<String, Object> inputsNodes = ((Map<String, Object>) ((Map<String, Object>) yaml
+ .load(blueprintArtifact.getDcaeBlueprint())).get("inputs"));
+ inputsNodes.entrySet().stream().filter(e -> !e.getKey().contains("policy_id")).forEach(elem -> {
+ Object defaultValue = ((Map<String, Object>) elem.getValue()).get("default");
+ if (defaultValue != null) {
+ addPropertyToNode(deployJsonBody, elem.getKey(), defaultValue);
+ } else {
+ deployJsonBody.addProperty(elem.getKey(), "");
+ }
+ });
+ // For Dublin only one micro service is expected
+ deployJsonBody.addProperty("policy_id", microServiceName);
+ return deployJsonBody;
+ }
+
+ private void addPropertyToNode(JsonObject node, String key, Object value) {
+ if (value instanceof String) {
+ node.addProperty(key, (String) value);
+ } else if (value instanceof Number) {
+ node.addProperty(key, (Number) value);
+ } else if (value instanceof Boolean) {
+ node.addProperty(key, (Boolean) value);
+ } else if (value instanceof Character) {
+ node.addProperty(key, (Character) value);
+ } else {
+ node.addProperty(key, JsonUtils.GSON.toJson(value));
+ }
+ }
+
+ /**
+ * Convert the object in Json.
+ *
+ * @return The deploymentParameters in Json
+ */
+ public JsonObject getDeploymentParametersinJson() {
+ JsonObject globalProperties = new JsonObject();
+ JsonObject deployParamJson = new JsonObject();
+ for (Map.Entry<String, JsonObject> mapElement: deploymentParamMap.entrySet()) {
+ deployParamJson.add(mapElement.getKey(), mapElement.getValue());
+ }
+ globalProperties.add("dcaeDeployParameters", deployParamJson);
+ return globalProperties;
+ }
+
+}
diff --git a/src/test/java/org/onap/clamp/loop/deploy/DeployParametersTest.java b/src/test/java/org/onap/clamp/loop/deploy/DeployParametersTest.java
new file mode 100644
index 00000000..8834ef66
--- /dev/null
+++ b/src/test/java/org/onap/clamp/loop/deploy/DeployParametersTest.java
@@ -0,0 +1,86 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights
+ * reserved.
+ * ================================================================================
+ * Modifications copyright (c) 2019 Nokia
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
+ * 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.loop.deploy;
+
+import com.google.gson.JsonObject;
+
+import java.io.IOException;
+import java.util.LinkedHashSet;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact;
+import org.onap.clamp.clds.util.JsonUtils;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.onap.clamp.loop.Loop;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
+import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
+
+public class DeployParametersTest {
+
+ private BlueprintArtifact buildFakeBuildprintArtifact(String blueprintFilePath) throws IOException {
+ BlueprintArtifact blueprintArtifact = Mockito.mock(BlueprintArtifact.class);
+ Mockito.when(blueprintArtifact.getDcaeBlueprint())
+ .thenReturn(ResourceFileUtil.getResourceAsString(blueprintFilePath));
+ return blueprintArtifact;
+ }
+
+ private LinkedHashSet<BlueprintArtifact> buildFakeCsarHandler() throws IOException, SdcToscaParserException {
+
+ LinkedHashSet<BlueprintArtifact> blueprintSet = new LinkedHashSet<BlueprintArtifact>();
+
+ BlueprintArtifact blueprintArtifact = buildFakeBuildprintArtifact("example/sdc/blueprint-dcae/tca.yaml");
+
+ blueprintSet.add(blueprintArtifact);
+ // Create fake blueprint artifact 2 on resource2
+ blueprintArtifact = buildFakeBuildprintArtifact("example/sdc/blueprint-dcae/tca_2.yaml");
+ blueprintSet.add(blueprintArtifact);
+
+ // Create fake blueprint artifact 3 on resource 1 so that it's possible to
+ // test multiple CL deployment per Service/vnf
+ blueprintArtifact = buildFakeBuildprintArtifact("example/sdc/blueprint-dcae/tca_3.yaml");
+ blueprintSet.add(blueprintArtifact);
+ return blueprintSet;
+ }
+
+ @Test
+ public void getDeploymentParametersinJsonTest() throws IOException, SdcToscaParserException {
+ Loop loop = Mockito.mock(Loop.class);
+ MicroServicePolicy umService = Mockito.mock(MicroServicePolicy.class);
+ LinkedHashSet<MicroServicePolicy> umServiceSet = new LinkedHashSet<MicroServicePolicy>();
+ Mockito.when(umService.getName()).thenReturn("testName");
+ umServiceSet.add(umService);
+ Mockito.when(loop.getMicroServicePolicies()).thenReturn(umServiceSet);
+
+ DeployParameters deployParams = new DeployParameters(buildFakeCsarHandler(), loop);
+ JsonObject paramJson = deployParams.getDeploymentParametersinJson();
+
+ Assert.assertEquals(JsonUtils.GSON_JPA_MODEL.toJson(paramJson),
+ ResourceFileUtil.getResourceAsString("example/sdc/expected-result/deployment-parameters.json"));
+ }
+}
diff --git a/src/test/resources/example/sdc/expected-result/deployment-parameters.json b/src/test/resources/example/sdc/expected-result/deployment-parameters.json
new file mode 100644
index 00000000..2e10ac37
--- /dev/null
+++ b/src/test/resources/example/sdc/expected-result/deployment-parameters.json
@@ -0,0 +1,43 @@
+{
+ "dcaeDeployParameters": {
+ "testName": {
+ "location_id": "",
+ "service_id": "",
+ "policy_id": "testName"
+ },
+ "testName1": {
+ "aaiEnrichmentHost": "aai.onap.svc.cluster.local",
+ "aaiEnrichmentPort": "8443",
+ "enableAAIEnrichment": true,
+ "dmaap_host": "message-router.onap",
+ "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.1",
+ "consul_host": "consul-server.onap",
+ "consul_port": "8500",
+ "cbs_host": "config-binding-servicel",
+ "cbs_port": "10000",
+ "external_port": "32012",
+ "policy_model_id": "onap.policies.monitoring.cdap.tca.hi.lo.app",
+ "policy_id": "testName"
+ },
+ "testName2": {
+ "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_model_id": "onap.policies.monitoring.cdap.tca.hi.lo.app",
+ "policy_id": "testName"
+ }
+ }
+} \ No newline at end of file