summaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTestItCase.java (renamed from src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java)47
-rw-r--r--src/test/java/org/onap/clamp/loop/DcaeComponentTest.java92
-rw-r--r--src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java208
-rw-r--r--src/test/resources/clds/camel/routes/dcae-flows.xml250
-rwxr-xr-xsrc/test/resources/http-cache/third_party_proxy.py19
5 files changed, 612 insertions, 4 deletions
diff --git a/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java b/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTestItCase.java
index 26cc831ec..50da40049 100644
--- a/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTest.java
+++ b/src/test/java/org/onap/clamp/clds/model/dcae/DcaeInventoryResponseCacheTestItCase.java
@@ -24,14 +24,31 @@
package org.onap.clamp.clds.model.dcae;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.ExchangeBuilder;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.clamp.clds.Application;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
-public class DcaeInventoryResponseCacheTest {
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class DcaeInventoryResponseCacheTestItCase {
public static DcaeInventoryCache inventoryCache = new DcaeInventoryCache();
+ @Autowired
+ CamelContext camelContext;
+
/**
* Initialize the responses.
*/
@@ -78,4 +95,32 @@ public class DcaeInventoryResponseCacheTest {
}
}
+ @Test
+ public void testDcaeInventoryResponse() {
+ Exchange exchange = ExchangeBuilder.anExchange(camelContext).build();
+ Exchange exchangeResponse = camelContext.createProducerTemplate()
+ .send("direct:get-all-dcae-blueprint-inventory", exchange);
+ assertThat(exchangeResponse.getIn().getHeader("CamelHttpResponseCode")).isEqualTo(200);
+ Set<DcaeInventoryResponse> blueprint = inventoryCache.getAllBlueprintsPerLoopId("testAsdcServiceId");
+ assertThat(blueprint.size()).isEqualTo(2);
+
+ DcaeInventoryResponse response1 = new DcaeInventoryResponse();
+ response1.setAsdcResourceId("0");
+ response1.setTypeName("testTypeName");
+ response1.setAsdcServiceId("testAsdcServiceId");
+ response1.setBlueprintTemplate("testBlueprintTemplate");
+ response1.setTypeId("testtypeId");
+ DcaeInventoryResponse response2 = new DcaeInventoryResponse();
+ response2.setAsdcResourceId("1");
+ response2.setTypeName("testTypeName2");
+ response2.setAsdcServiceId("testAsdcServiceId");
+ response2.setBlueprintTemplate("testBlueprintTemplate2");
+ response2.setTypeId("testtypeId2");
+
+ Set<DcaeInventoryResponse> expectedBlueprint = new HashSet<>();
+ expectedBlueprint.add(response1);
+ expectedBlueprint.add(response2);
+
+ assertEquals(blueprint, expectedBlueprint);
+ }
}
diff --git a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java
index 969215144..9352e9131 100644
--- a/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java
+++ b/src/test/java/org/onap/clamp/loop/DcaeComponentTest.java
@@ -30,11 +30,15 @@ import com.google.gson.JsonObject;
import java.io.IOException;
import java.util.HashSet;
+import java.util.List;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
+import org.json.simple.parser.ParseException;
+import org.junit.Ignore;
import org.junit.Test;
import org.mockito.Mockito;
+import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse;
import org.onap.clamp.clds.model.dcae.DcaeOperationStatusResponse;
import org.onap.clamp.loop.components.external.DcaeComponent;
import org.onap.clamp.loop.components.external.ExternalComponentState;
@@ -65,7 +69,8 @@ public class DcaeComponentTest {
@Test
public void convertDcaeResponseTest() throws IOException {
- String dcaeFakeResponse = "{'requestId':'testId','operationType':'install','status':'state','error':'errorMessage', 'links':{'self':'selfUrl','uninstall':'uninstallUrl'}}";
+ String dcaeFakeResponse = "{'requestId':'testId','operationType':'install','status':'state','error':'errorMessage', "
+ + "'links':{'self':'selfUrl','uninstall':'uninstallUrl'}}";
DcaeOperationStatusResponse responseObject = DcaeComponent.convertDcaeResponse(dcaeFakeResponse);
assertThat(responseObject.getRequestId()).isEqualTo("testId");
assertThat(responseObject.getOperationType()).isEqualTo("install");
@@ -151,4 +156,89 @@ public class DcaeComponentTest {
ExternalComponentState state9 = dcae.computeState(exchange);
assertThat(state9.getStateName()).isEqualTo("IN_ERROR");
}
+
+ @Test
+ public void convertToDcaeInventoryResponseTest() throws IOException, ParseException {
+ String dcaeFakeResponse = "{\n"
+ + " \"links\": {\n"
+ + " \"previousLink\": {\n"
+ + " \"title\": \"string\",\n"
+ + " \"rel\": \"string\",\n"
+ + " \"uri\": \"string\",\n"
+ + " \"uriBuilder\": {},\n"
+ + " \"rels\": [\n"
+ + " \"string\"\n"
+ + " ],\n"
+ + " \"params\": {\n"
+ + " \"additionalProp1\": \"string\",\n"
+ + " \"additionalProp2\": \"string\",\n"
+ + " \"additionalProp3\": \"string\"\n"
+ + " },\n"
+ + " \"type\": \"string\"\n"
+ + " },\n"
+ + " \"nextLink\": {\n"
+ + " \"title\": \"string\",\n"
+ + " \"rel\": \"string\",\n"
+ + " \"uri\": \"string\",\n"
+ + " \"uriBuilder\": {},\n"
+ + " \"rels\": [\n"
+ + " \"string\"\n"
+ + " ],\n"
+ + " \"params\": {\n"
+ + " \"additionalProp1\": \"string\",\n"
+ + " \"additionalProp2\": \"string\",\n"
+ + " \"additionalProp3\": \"string\"\n"
+ + " },\n"
+ + " \"type\": \"string\"\n"
+ + " }\n"
+ + " },\n"
+ + " \"totalCount\": 0,\n"
+ + " \"items\": [\n"
+ + " {\n"
+ + " \"owner\": \"testOwner\",\n"
+ + " \"application\": \"testApplication\",\n"
+ + " \"component\": \"testComponent\",\n"
+ + " \"typeName\": \"testTypeName\",\n"
+ + " \"typeVersion\": 0,\n"
+ + " \"blueprintTemplate\": \"testBlueprintTemplate\",\n"
+ + " \"serviceIds\": [\n"
+ + " \"serviceId1\", \"serviceId2\"\n"
+ + " ],\n"
+ + " \"vnfTypes\": [\n"
+ + " \"vnfType1\", \"vnfType2\"\n"
+ + " ],\n"
+ + " \"serviceLocations\": [\n"
+ + " \"serviceLocation1\", \"serviceLocation2\"\n"
+ + " ],\n"
+ + " \"asdcServiceId\": \"testAsdcServiceId\",\n"
+ + " \"asdcResourceId\": \"testAsdcResourceId\",\n"
+ + " \"asdcServiceURL\": \"testAsdcServiceURL\",\n"
+ + " \"typeId\": \"testTypeId\",\n"
+ + " \"selfLink\": {\n"
+ + " \"title\": \"selfLinkTitle\",\n"
+ + " \"rel\": \"selfLinkRel\",\n"
+ + " \"uri\": \"selfLinkUri\",\n"
+ + " \"uriBuilder\": {},\n"
+ + " \"rels\": [\n"
+ + " \"string\"\n"
+ + " ],\n"
+ + " \"params\": {\n"
+ + " \"additionalProp1\": \"string\",\n"
+ + " \"additionalProp2\": \"string\",\n"
+ + " \"additionalProp3\": \"string\"\n"
+ + " },\n"
+ + " \"type\": \"string\"\n"
+ + " },\n"
+ + " \"created\": \"2020-01-22T09:38:15.436Z\",\n"
+ + " \"deactivated\": \"2020-01-22T09:38:15.437Z\"\n"
+ + " }\n"
+ + " ]\n"
+ + "}";
+ List<DcaeInventoryResponse> responseObject = DcaeComponent.convertToDcaeInventoryResponse(dcaeFakeResponse);
+ assertThat(responseObject.get(0).getAsdcResourceId()).isEqualTo("testAsdcResourceId");
+ assertThat(responseObject.get(0).getAsdcServiceId()).isEqualTo("testAsdcServiceId");
+ assertThat(responseObject.get(0).getTypeName()).isEqualTo("testTypeName");
+ assertThat(responseObject.get(0).getTypeId()).isEqualTo("testTypeId");
+ assertThat(responseObject.get(0).getBlueprintTemplate()).isEqualTo("testBlueprintTemplate");
+ }
}
diff --git a/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java
new file mode 100644
index 000000000..d7c2edadc
--- /dev/null
+++ b/src/test/java/org/onap/clamp/loop/DeployFlowTestItCase.java
@@ -0,0 +1,208 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2020 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;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonSyntaxException;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.transaction.Transactional;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.ExchangeBuilder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.onap.clamp.clds.Application;
+import org.onap.clamp.loop.template.LoopTemplate;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class DeployFlowTestItCase {
+ private Gson gson = new Gson();
+
+ @Autowired
+ CamelContext camelContext;
+
+ @Autowired
+ LoopService loopService;
+
+ @Test
+ @Transactional
+ public void deployWithSingleBlueprintTest() throws JsonSyntaxException, IOException {
+ Loop loopTest = createLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}",
+ "UUID-blueprint");
+ LoopTemplate template = new LoopTemplate();
+ template.setName("templateName");
+ template.setBlueprint("yamlcontent");
+ loopTest.setLoopTemplate(template);
+ MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true);
+ loopTest.addMicroServicePolicy(microServicePolicy);
+ loopService.saveOrUpdateLoop(loopTest);
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext)
+ .withProperty("loopObject", loopTest).build();
+
+ camelContext.createProducerTemplate()
+ .send("direct:deploy-loop", myCamelExchange);
+
+ Loop loopAfterTest = loopService.getLoop("ControlLoopTest");
+ assertThat(loopAfterTest.getDcaeDeploymentStatusUrl()).isNotNull();
+ assertThat(loopAfterTest.getDcaeDeploymentId()).isNotNull();
+ }
+
+ @Test
+ @Transactional
+ public void deployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException {
+ Loop loopTest2 = createLoop("ControlLoopTest2", "<xml></xml>", "yamlcontent", "{\"dcaeDeployParameters\": {"
+ + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"},"
+ + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}"
+ + "}}", "UUID-blueprint");
+ LoopTemplate template = new LoopTemplate();
+ template.setName("templateName");
+ loopTest2.setLoopTemplate(template);
+ MicroServicePolicy microServicePolicy1 = getMicroServicePolicy("microService1", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true);
+ MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("microService2", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true);
+ loopTest2.addMicroServicePolicy(microServicePolicy1);
+ loopTest2.addMicroServicePolicy(microServicePolicy2);
+ loopService.saveOrUpdateLoop(loopTest2);
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext)
+ .withProperty("loopObject", loopTest2).build();
+
+ camelContext.createProducerTemplate()
+ .send("direct:deploy-loop", myCamelExchange);
+
+ Loop loopAfterTest = loopService.getLoop("ControlLoopTest2");
+ Set<MicroServicePolicy> policyList = loopAfterTest.getMicroServicePolicies();
+ for (MicroServicePolicy policy : policyList) {
+ assertThat(policy.getDcaeDeploymentStatusUrl()).isNotNull();
+ assertThat(policy.getDcaeDeploymentId()).isNotNull();
+ }
+ assertThat(loopAfterTest.getDcaeDeploymentStatusUrl()).isNull();
+ assertThat(loopAfterTest.getDcaeDeploymentId()).isNull();
+ }
+
+ @Test
+ @Transactional
+ public void undeployWithSingleBlueprintTest() throws JsonSyntaxException, IOException {
+ Loop loopTest = createLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}",
+ "UUID-blueprint");
+ LoopTemplate template = new LoopTemplate();
+ template.setName("templateName");
+ template.setBlueprint("yamlcontent");
+ loopTest.setLoopTemplate(template);
+ loopTest.setDcaeDeploymentId("testDeploymentId");
+ loopTest.setDcaeDeploymentStatusUrl("testUrl");
+ MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true);
+ loopTest.addMicroServicePolicy(microServicePolicy);
+ loopService.saveOrUpdateLoop(loopTest);
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext)
+ .withProperty("loopObject", loopTest).build();
+
+ camelContext.createProducerTemplate()
+ .send("direct:undeploy-loop", myCamelExchange);
+
+ Loop loopAfterTest = loopService.getLoop("ControlLoopTest");
+ assertThat(loopAfterTest.getDcaeDeploymentStatusUrl().contains("/uninstall")).isTrue();
+ }
+
+ @Test
+ @Transactional
+ public void undeployWithMultipleBlueprintTest() throws JsonSyntaxException, IOException {
+ Loop loopTest2 = createLoop("ControlLoopTest2", "<xml></xml>", "yamlcontent", "{\"dcaeDeployParameters\": {"
+ + "\"microService1\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"},"
+ + "\"microService2\": {\"location_id\": \"\", \"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName2_tca\"}"
+ + "}}", "UUID-blueprint");
+ LoopTemplate template = new LoopTemplate();
+ template.setName("templateName");
+ loopTest2.setLoopTemplate(template);
+ MicroServicePolicy microServicePolicy1 = getMicroServicePolicy("microService1", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true, "testDeploymentId1", "testDeploymentStatusUrl1");
+ MicroServicePolicy microServicePolicy2 = getMicroServicePolicy("microService2", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true, "testDeploymentId2", "testDeploymentStatusUrl2");
+ loopTest2.addMicroServicePolicy(microServicePolicy1);
+ loopTest2.addMicroServicePolicy(microServicePolicy2);
+ loopService.saveOrUpdateLoop(loopTest2);
+ Exchange myCamelExchange = ExchangeBuilder.anExchange(camelContext)
+ .withProperty("loopObject", loopTest2).build();
+
+ camelContext.createProducerTemplate()
+ .send("direct:undeploy-loop", myCamelExchange);
+
+ Loop loopAfterTest = loopService.getLoop("ControlLoopTest2");
+ Set<MicroServicePolicy> policyList = loopAfterTest.getMicroServicePolicies();
+ for (MicroServicePolicy policy : policyList) {
+ assertThat(policy.getDcaeDeploymentStatusUrl().contains("/uninstall")).isTrue();
+ }
+ assertThat(loopAfterTest.getDcaeDeploymentStatusUrl()).isNull();
+ assertThat(loopAfterTest.getDcaeDeploymentId()).isNull();
+ }
+
+ private Loop createLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson,
+ String dcaeBlueprintId) throws JsonSyntaxException, IOException {
+ Loop loop = new Loop(name, blueprint, svgRepresentation);
+ loop.setGlobalPropertiesJson(new Gson().fromJson(globalPropertiesJson, JsonObject.class));
+ loop.setLastComputedState(LoopState.DESIGN);
+ loop.setDcaeBlueprintId(dcaeBlueprintId);
+ return loop;
+ }
+
+ private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation,
+ String policyTosca, String jsonProperties, boolean shared) {
+ MicroServicePolicy microService = new MicroServicePolicy(name, modelType, policyTosca, shared,
+ gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>());
+ microService.setConfigurationsJson(new Gson().fromJson(jsonProperties, JsonObject.class));
+ return microService;
+ }
+
+ private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation,
+ String policyTosca, String jsonProperties, boolean shared, String deploymengId, String deploymentStatusUrl) {
+ MicroServicePolicy microService = getMicroServicePolicy(name, modelType, jsonRepresentation,
+ policyTosca, jsonProperties, shared);
+
+ microService.setDcaeDeploymentId(deploymengId);
+ microService.setDcaeDeploymentStatusUrl(deploymentStatusUrl);
+ return microService;
+ }
+}
diff --git a/src/test/resources/clds/camel/routes/dcae-flows.xml b/src/test/resources/clds/camel/routes/dcae-flows.xml
index fb3bc90ec..48cda7a05 100644
--- a/src/test/resources/clds/camel/routes/dcae-flows.xml
+++ b/src/test/resources/clds/camel/routes/dcae-flows.xml
@@ -1,6 +1,106 @@
<routes xmlns="http://camel.apache.org/schema/spring">
<route id="deploy-loop">
<from uri="direct:deploy-loop" />
+ <choice>
+ <when>
+ <simple>${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null
+ </simple>
+ <to uri="direct:deploy-loop-single-blueprint" />
+ </when>
+ <when>
+ <simple>${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null
+ </simple>
+ <to uri="direct:deploy-loop-multi-blueprint" />
+ </when>
+ </choice>
+ </route>
+ <route id="deploy-loop-multi-blueprint">
+ <from uri="direct:deploy-loop-multi-blueprint" />
+ <doTry>
+ <log loggingLevel="INFO"
+ message="Deploying the blueprints for loop: ${exchangeProperty[loopObject].getName()}" />
+ <to
+ uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Deploying the loop with multiple blueprints')" />
+ <split>
+ <simple>${exchangeProperty[loopObject].getMicroServicePolicies()}
+ </simple>
+ <setProperty propertyName="microServicePolicy">
+ <simple>${body}</simple>
+ </setProperty>
+ <log
+ loggingLevel="INFO"
+ message="Processing Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" />
+ <setProperty propertyName="raiseHttpExceptionFlag">
+ <simple resultType="java.lang.Boolean">false</simple>
+ </setProperty>
+ <setBody>
+ <method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+ method="getDeployPayload(${exchangeProperty[loopObject]},${exchangeProperty[microServicePolicy].getName()})" />
+ </setBody>
+ <setProperty propertyName="dcaeDeploymentId">
+ <method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+ method="generateDeploymentId()" />
+ </setProperty>
+ <setHeader headerName="CamelHttpMethod">
+ <constant>PUT</constant>
+ </setHeader>
+ <setHeader headerName="Content-Type">
+ <constant>application/json</constant>
+ </setHeader>
+ <setHeader headerName="X-ONAP-RequestID">
+ <simple>${exchangeProperty[X-ONAP-RequestID]}
+ </simple>
+ </setHeader>
+ <setHeader headerName="X-ONAP-InvocationID">
+ <simple>${exchangeProperty[X-ONAP-InvocationID]}
+ </simple>
+ </setHeader>
+ <setHeader headerName="X-ONAP-PartnerName">
+ <simple>${exchangeProperty[X-ONAP-PartnerName]}
+ </simple>
+ </setHeader>
+ <log loggingLevel="INFO"
+ message="Endpoint to deploy loop: {{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[dcaeDeploymentId]}"></log>
+ <toD
+ uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[dcaeDeploymentId]}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=300000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+ <convertBodyTo type="java.lang.String" />
+ <setProperty propertyName="dcaeResponse">
+ <method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+ method="convertDcaeResponse(${body})" />
+ </setProperty>
+ <setProperty propertyName="dcaeStatusUrl">
+ <method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+ method="getStatusUrl(${exchangeProperty[dcaeResponse]})" />
+ </setProperty>
+ <to
+ uri="bean:org.onap.clamp.policy.microservice.MicroServicePolicyService?method=updateDcaeDeploymentFields(${exchangeProperty[microServicePolicy]},${exchangeProperty[dcaeDeploymentId]},${exchangeProperty[dcaeStatusUrl]})" />
+ </split>
+ <doCatch>
+ <exception>java.lang.Exception</exception>
+ <handled>
+ <constant>false</constant>
+ </handled>
+ <setProperty propertyName="logMessage">
+ <simple>DEPLOY micro service failed
+ (MicroService name:${exchangeProperty[microServicePolicy].getName()}),
+ Dep-id:${exchangeProperty[dcaeDeploymentId]},
+ StatusUrl:${exchangeProperty[dcaeStatusUrl]})
+ </simple>
+ </setProperty>
+ <setProperty propertyName="logComponent">
+ <simple>DCAE</simple>
+ </setProperty>
+ <to uri="direct:dump-loop-log-http-response" />
+ </doCatch>
+ <doFinally>
+ <to uri="direct:reset-raise-http-exception-flag" />
+ <to
+ uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+ </doFinally>
+ </doTry>
+ </route>
+ <route id="deploy-loop-single-blueprint">
+ <from uri="direct:deploy-loop-single-blueprint" />
<doTry>
<log loggingLevel="INFO"
message="Deploying the loop: ${exchangeProperty[loopObject].getName()}" />
@@ -41,6 +141,8 @@
<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
method="convertDcaeResponse(${body})" />
</setProperty>
+
+
<setProperty propertyName="dcaeStatusUrl">
<method ref="org.onap.clamp.loop.components.external.DcaeComponent"
method="getStatusUrl(${exchangeProperty[dcaeResponse]})" />
@@ -64,9 +166,111 @@
</doFinally>
</doTry>
</route>
-
<route id="undeploy-loop">
<from uri="direct:undeploy-loop" />
+ <choice>
+ <when>
+ <simple>${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} != null
+ </simple>
+ <to uri="direct:undeploy-loop-single-blueprint" />
+ </when>
+ <when>
+ <simple>${exchangeProperty['loopObject'].getLoopTemplate().getBlueprint()} == null
+ </simple>
+ <to uri="direct:undeploy-loop-multi-blueprint" />
+ </when>
+ </choice>
+ </route>
+ <route id="undeploy-loop-multi-blueprint">
+ <from uri="direct:undeploy-loop-multi-blueprint" />
+ <doTry>
+ <log loggingLevel="INFO"
+ message="Undeploying the blueprints for loop: ${exchangeProperty[loopObject].getName()}" />
+ <to
+ uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Undeploying the loop with multiple blueprints')" />
+ <split>
+ <simple>${exchangeProperty[loopObject].getMicroServicePolicies()}
+ </simple>
+ <setProperty propertyName="microServicePolicy">
+ <simple>${body}</simple>
+ </setProperty>
+ <log
+ loggingLevel="INFO"
+ message="Processing Micro Service Policy: ${exchangeProperty[microServicePolicy].getName()}" />
+ <choice>
+ <when>
+ <simple>${exchangeProperty[microServicePolicy].getDcaeDeploymentId()} != null
+ </simple>
+ <setBody>
+ <method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+ method="getUndeployPayload(${exchangeProperty[microServicePolicy]})" />
+ </setBody>
+ <setHeader headerName="CamelHttpMethod">
+ <constant>DELETE</constant>
+ </setHeader>
+ <setHeader headerName="Content-Type">
+ <constant>application/json</constant>
+ </setHeader>
+ <setHeader headerName="X-ONAP-RequestID">
+ <simple>${exchangeProperty[X-ONAP-RequestID]}
+ </simple>
+ </setHeader>
+ <setHeader headerName="X-ONAP-InvocationID">
+ <simple>${exchangeProperty[X-ONAP-InvocationID]}
+ </simple>
+ </setHeader>
+ <setHeader headerName="X-ONAP-PartnerName">
+ <simple>${exchangeProperty[X-ONAP-PartnerName]}
+ </simple>
+ </setHeader>
+ <log loggingLevel="INFO"
+ message="Endpoint to undeploy loop: {{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[microServicePolicy].getDcaeDeploymentId()}"></log>
+ <toD
+ uri="{{clamp.config.dcae.deployment.url}}/dcae-deployments/${exchangeProperty[microServicePolicy].getDcaeDeploymentId()}?bridgeEndpoint=true&amp;useSystemProperties=true&amp;mapHttpMessageHeaders=false&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=300000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+ <convertBodyTo type="java.lang.String" />
+ <setProperty propertyName="dcaeResponse">
+ <method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+ method="convertDcaeResponse(${body})" />
+ </setProperty>
+ <setProperty propertyName="dcaeStatusUrl">
+ <method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+ method="getStatusUrl(${exchangeProperty[dcaeResponse]})" />
+ </setProperty>
+ <to
+ uri="bean:org.onap.clamp.policy.microservice.MicroServicePolicyService?method=updateDcaeDeploymentFields(${exchangeProperty[microServicePolicy]},${exchangeProperty[microServicePolicy].getDcaeDeploymentId()},${exchangeProperty[dcaeStatusUrl]})" />
+ </when>
+ <otherwise>
+ <log loggingLevel="WARNING"
+ message="Cannot Undeploy for the micro service: ${exchangeProperty[microServicePolicy].getName()}, the Deployment ID does not exist !" />
+ <to
+ uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Cannot Undeploy for the micro service: ${exchangeProperty[microServicePolicy].getName()}, the Deployment ID does not exist !','WARNING',${exchangeProperty[loopObject]})" />
+ </otherwise>
+ </choice>
+ </split>
+ <doCatch>
+ <exception>java.lang.Exception</exception>
+ <handled>
+ <constant>false</constant>
+ </handled>
+ <setProperty propertyName="logMessage">
+ <simple>UNDEPLOY micro service failed
+ (MicroService name:${exchangeProperty[microServicePolicy].getName()})
+ </simple>
+ </setProperty>
+ <setProperty propertyName="logComponent">
+ <simple>DCAE</simple>
+ </setProperty>
+ <to uri="direct:dump-loop-log-http-response" />
+ </doCatch>
+ <doFinally>
+ <to uri="direct:reset-raise-http-exception-flag" />
+ <to
+ uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+ </doFinally>
+ </doTry>
+ </route>
+ <route id="undeploy-loop-single-blueprint">
+ <from uri="direct:undeploy-loop-single-blueprint" />
<log loggingLevel="INFO"
message="Undeploying the loop: ${exchangeProperty[loopObject].getName()} : ${exchangeProperty[loopObject].getDcaeDeploymentId()}" />
<to
@@ -134,7 +338,6 @@
message="Cannot Undeploy for the loop: ${exchangeProperty[loopObject].getName()}, the Deployment ID does not exist !" />
<to
uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('Cannot Undeploy for the loop: ${exchangeProperty[loopObject].getName()}, the Deployment ID does not exist !','WARNING',${exchangeProperty[loopObject]})" />
-
</otherwise>
</choice>
</route>
@@ -213,4 +416,47 @@
</doTry>
</route>
+ <route id="get-all-dcae-blueprint-inventory">
+ <from uri="direct:get-all-dcae-blueprint-inventory" />
+ <log loggingLevel="INFO"
+ message="Getting all DCAE blueprint from inventory" />
+ <to uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeLog('DCAE', 'Getting all blueprint from inventory')" />
+ <doTry>
+ <setHeader headerName="CamelHttpMethod">
+ <constant>GET</constant>
+ </setHeader>
+ <setHeader headerName="X-ONAP-RequestID">
+ <simple>${exchangeProperty[X-ONAP-RequestID]}
+ </simple>
+ </setHeader>
+ <setHeader headerName="X-ONAP-InvocationID">
+ <simple>${exchangeProperty[X-ONAP-InvocationID]}
+ </simple>
+ </setHeader>
+ <setHeader headerName="X-ONAP-PartnerName">
+ <simple>${exchangeProperty[X-ONAP-PartnerName]}
+ </simple>
+ </setHeader>
+ <log loggingLevel="INFO"
+ message="Endpoint to query Blueprints from DCAE inventory: {{clamp.config.dcae.inventory.url}}/dcae-service-types?${header[CamelHttpQuery]}"></log>
+ <toD uri="{{clamp.config.dcae.inventory.url}}/dcae-service-types;bridgeEndpoint=true&amp;useSystemProperties=true&amp;throwExceptionOnFailure=${exchangeProperty[raiseHttpExceptionFlag]}&amp;authMethod=Basic&amp;authUsername={{clamp.config.dcae.deployment.userName}}&amp;authPassword={{clamp.config.dcae.deployment.password}}&amp;connectionTimeToLive=5000&amp;httpClient.connectTimeout=10000&amp;httpClient.socketTimeout=30000&amp;authenticationPreemptive=true&amp;connectionClose=true" />
+ <convertBodyTo type="java.lang.String" />
+ <setProperty propertyName="dcaeResponseList">
+ <method ref="org.onap.clamp.loop.components.external.DcaeComponent"
+ method="convertToDcaeInventoryResponse(${body})" />
+ </setProperty>
+ <split>
+ <simple>${exchangeProperty[dcaeResponseList]}</simple>
+ <convertBodyTo type="org.onap.clamp.clds.model.dcae.DcaeInventoryResponse" />
+ <setProperty propertyName="dcaeResponse">
+ <simple>${body}</simple>
+ </setProperty>
+ <to uri="bean:org.onap.clamp.clds.model.dcae.DcaeInventoryCache?method=addDcaeInventoryResponse(${exchangeProperty[dcaeResponse]})" />
+ </split>
+ <doFinally>
+ <to uri="direct:reset-raise-http-exception-flag" />
+ <to uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=invokeReturnLog()" />
+ </doFinally>
+ </doTry>
+ </route>
</routes> \ No newline at end of file
diff --git a/src/test/resources/http-cache/third_party_proxy.py b/src/test/resources/http-cache/third_party_proxy.py
index 9dcc4b3a3..32f7faf4e 100755
--- a/src/test/resources/http-cache/third_party_proxy.py
+++ b/src/test/resources/http-cache/third_party_proxy.py
@@ -249,6 +249,22 @@ class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
with open(cached_file_content, 'w') as f:
f.write(jsonGenerated)
return True
+ elif self.path.startswith("/dcae-service-types") and http_type == "GET":
+ if not _file_available:
+ self.path = "/dcae-service-types"
+ cached_file_folder = '%s/%s' % (TMP_ROOT, self.path)
+ cached_file_content = self._get_cached_content_file_name(cached_file_folder)
+ cached_file_header = self._get_cached_header_file_name(cached_file_folder)
+ print "self.path start with /dcae-service-types, generating response json..."
+ response = "{\"links\": {\"previousLink\": {\"title\": \"string\",\"rel\": \"string\",\"uri\": \"string\",\"uriBuilder\": {},\"rels\": [\"string\"],\"params\": {\"additionalProp1\": \"string\",\"additionalProp2\": \"string\",\"additionalProp3\": \"string\"},\"type\": \"string\"},\"nextLink\": {\"title\": \"string\",\"rel\": \"string\",\"uri\": \"string\",\"uriBuilder\": {},\"rels\": [\"string\"],\"params\": {\"additionalProp1\": \"string\",\"additionalProp2\": \"string\",\"additionalProp3\": \"string\"},\"type\": \"string\"}},\"totalCount\": 1,\"items\": [{\"owner\": \"testOwner\",\"application\": \"testApplication\",\"component\": \"testComponent\",\"typeName\": \"testTypeName\",\"typeVersion\": 0,\"blueprintTemplate\": \"testBlueprintTemplate\",\"serviceIds\": [\"serviceId1\", \"serviceId2\"],\"vnfTypes\": [\"vnfType1\", \"vnfType2\"],\"serviceLocations\": [\"serviceLocation1\", \"serviceLocation2\"],\"asdcServiceId\": \"testAsdcServiceId\",\"asdcResourceId\": \"0\",\"asdcServiceURL\": \"testAsdcServiceURL\",\"typeId\": \"testtypeId\",\"selfLink\": {\"title\": \"selfLinkTitle\",\"rel\": \"selfLinkRel\",\"uri\": \"selfLinkUri\",\"uriBuilder\": {},\"rels\": [\"string\"],\"params\": {\"additionalProp1\": \"string\",\"additionalProp2\": \"string\",\"additionalProp3\": \"string\"},\"type\": \"string\"},\"created\": \"2020-01-22T09:38:15.436Z\",\"deactivated\": \"2020-01-22T09:38:15.437Z\"},{\"owner\": \"testOwner2\",\"application\": \"testApplication1\",\"component\": \"testComponent2\",\"typeName\": \"testTypeName2\",\"typeVersion\": 0,\"blueprintTemplate\": \"testBlueprintTemplate2\",\"serviceIds\": [\"serviceId3\", \"serviceId4\"],\"vnfTypes\": [\"vnfType13\", \"vnfType4\"],\"serviceLocations\": [\"serviceLocation3\", \"serviceLocation4\"],\"asdcServiceId\": \"testAsdcServiceId\",\"asdcResourceId\": \"1\",\"asdcServiceURL\": \"testAsdcServiceURL2\",\"typeId\": \"testtypeId2\",\"selfLink\": {\"title\": \"selfLinkTitle\",\"rel\": \"selfLinkRel\",\"uri\": \"selfLinkUri\",\"uriBuilder\": {},\"rels\": [\"string\"],\"params\": {\"additionalProp1\": \"string\",\"additionalProp2\": \"string\",\"additionalProp3\": \"string\"},\"type\": \"string\"},\"created\": \"2020-01-22T09:38:15.436Z\",\"deactivated\": \"2020-01-22T09:38:15.437Z\"}]}"
+ print "jsonGenerated: " + response
+
+ os.makedirs(cached_file_folder, 0777)
+ with open(cached_file_header, 'w') as f:
+ f.write("{\"Content-Length\": \"" + str(len(response)) + "\", \"Content-Type\": \"application/json\"}")
+ with open(cached_file_content, 'w') as f:
+ f.write(response)
+ return True
else:
return False
@@ -305,6 +321,9 @@ class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
if self.path.startswith("/dcae-service-types?asdcResourceId="):
print "DCAE case deleting folder created " + cached_file_folder
shutil.rmtree(cached_file_folder, ignore_errors=False, onerror=None)
+ elif self.path.startswith("/dcae-service-types"):
+ print "DCAE case deleting folder created " + cached_file_folder
+ shutil.rmtree(cached_file_folder, ignore_errors=False, onerror=None)
else:
print "NOT in DCAE case deleting folder created " + cached_file_folder