aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPamela Dragosh <pdragosh@research.att.com>2018-08-28 15:22:22 +0000
committerGerrit Code Review <gerrit@onap.org>2018-08-28 15:22:22 +0000
commit9b1c49dafdb5f5a87ab91bf97e75e57cfd3825ab (patch)
tree167e1235a9cd0d552635bae909f83c4e450fdbe7
parentacfe06391a8ec90636c33f7f5c830a3d33f2aeb7 (diff)
parentf43b3e32fdf4cdb3361c584491730af18ef46baf (diff)
Merge "use new SO API for scale-out"
-rw-r--r--controlloop/common/actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SOActorServiceProvider.java140
-rw-r--r--controlloop/common/actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/TestSOActorServiceProvider.java75
-rw-r--r--controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqGenericVnf.java18
-rw-r--r--controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqVfModule.java20
-rw-r--r--controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqGenericVnfTest.java7
-rw-r--r--controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqVfModuleTest.java9
-rw-r--r--controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SOManager.java67
-rw-r--r--controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestDetails.java58
-rw-r--r--controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestParameters.java20
-rw-r--r--controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSOManager.java102
-rw-r--r--controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSoDummyServer.java87
-rw-r--r--controlloop/common/policy-yaml/src/test/resources/v2.0.0/policy_ONAP_demo_vDNS.yaml3
-rw-r--r--controlloop/common/simulators/src/main/java/org/onap/policy/simulators/SoSimulatorJaxRs.java27
-rw-r--r--controlloop/common/simulators/src/test/java/org/onap/policy/simulators/SoSimulatorTest.java20
-rw-r--r--controlloop/packages/basex-controlloop/src/files/bin/create-cl-casablanca2
-rw-r--r--controlloop/packages/basex-controlloop/src/files/bin/push-policies-casablanca2
-rw-r--r--controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vDNS.yaml7
-rw-r--r--controlloop/templates/archetype-cl-casablanca/src/main/resources/META-INF/maven/archetype-metadata.xml2
-rw-r--r--controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vDNS.yaml3
19 files changed, 421 insertions, 248 deletions
diff --git a/controlloop/common/actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SOActorServiceProvider.java b/controlloop/common/actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SOActorServiceProvider.java
index f68c6f676..ccc13a557 100644
--- a/controlloop/common/actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SOActorServiceProvider.java
+++ b/controlloop/common/actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SOActorServiceProvider.java
@@ -20,8 +20,11 @@
package org.onap.policy.controlloop.actor.so;
+import java.lang.reflect.Type;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
+import java.util.UUID;
import org.drools.core.WorkingMemory;
import org.onap.policy.aai.AaiNqExtraProperty;
import org.onap.policy.aai.AaiNqInventoryResponseItem;
@@ -44,6 +47,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.gson.reflect.TypeToken;
public class SOActorServiceProvider implements Actor {
private static final Logger logger = LoggerFactory.getLogger(SOActorServiceProvider.class);
@@ -59,9 +63,19 @@ public class SOActorServiceProvider implements Actor {
private static final ImmutableList<String> recipes = ImmutableList.of(RECIPE_VF_MODULE_CREATE);
private static final ImmutableMap<String, List<String>> targets = new ImmutableMap.Builder<String, List<String>>()
- .put(RECIPE_VF_MODULE_CREATE, ImmutableList.of(TARGET_VFC)).build();
+ .put(RECIPE_VF_MODULE_CREATE, ImmutableList.of(TARGET_VFC)).build();
- // Static variables required to hold the IDs of the last service item and VNF item. Note that in
+ // name of request parameters within policy payload
+ public static final String REQ_PARAM_NM = "requestParameters";
+
+ // name of configuration parameters within policy payload
+ public static final String CONFIG_PARAM_NM = "configurationParameters";
+
+ // used to decode configuration parameters via gson
+ public static Type CONFIG_TYPE = new TypeToken<List<Map<String, String>>>() {}.getType();
+
+ // Static variables required to hold the IDs of the last service item and VNF item.
+ // Note that in
// a multithreaded deployment this WILL break
private static String lastVNFItemVnfId;
private static String lastServiceItemServiceInstanceId;
@@ -87,17 +101,19 @@ public class SOActorServiceProvider implements Actor {
}
/**
- * Constructs a SO request conforming to the lcm API. The actual request is constructed and then
- * placed in a wrapper object used to send through DMAAP.
+ * Constructs a SO request conforming to the lcm API. The actual request is
+ * constructed and then placed in a wrapper object used to send through DMAAP.
*
* @param onset the event that is reporting the alert for policy to perform an action
- * @param operation the control loop operation specifying the actor, operation, target, etc.
- * @param policy the policy the was specified from the yaml generated by CLAMP or through the
- * Policy GUI/API
+ * @param operation the control loop operation specifying the actor, operation,
+ * target, etc.
+ * @param policy the policy the was specified from the yaml generated by CLAMP or
+ * through the Policy GUI/API
* @param aaiResponseWrapper wrapper for AAI vserver named-query response
* @return a SO request conforming to the lcm API using the DMAAP wrapper
*/
- public SORequest constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation, Policy policy, AaiNqResponseWrapper aaiResponseWrapper) {
+ public SORequest constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation, Policy policy,
+ AaiNqResponseWrapper aaiResponseWrapper) {
String modelNamePropertyKey = "model-ver.model-name";
String modelVersionPropertyKey = "model-ver.model-version";
String modelVersionIdPropertyKey = "model-ver.model-version-id";
@@ -120,10 +136,10 @@ public class SOActorServiceProvider implements Actor {
// Extract the items we're interested in from the response
try {
vnfItem = aaiResponseWrapper.getAaiNqResponse().getInventoryResponseItems().get(0).getItems()
- .getInventoryResponseItems().get(0);
+ .getInventoryResponseItems().get(0);
} catch (Exception e) {
logger.error("VNF Item not found in AAI response {}", Serialization.gsonPretty.toJson(aaiResponseWrapper),
- e);
+ e);
return null;
}
@@ -131,16 +147,16 @@ public class SOActorServiceProvider implements Actor {
vnfServiceItem = vnfItem.getItems().getInventoryResponseItems().get(0);
} catch (Exception e) {
logger.error("VNF Service Item not found in AAI response {}",
- Serialization.gsonPretty.toJson(aaiResponseWrapper), e);
+ Serialization.gsonPretty.toJson(aaiResponseWrapper), e);
return null;
}
try {
tenantItem = aaiResponseWrapper.getAaiNqResponse().getInventoryResponseItems().get(0).getItems()
- .getInventoryResponseItems().get(1);
+ .getInventoryResponseItems().get(1);
} catch (Exception e) {
logger.error("Tenant Item not found in AAI response {}",
- Serialization.gsonPretty.toJson(aaiResponseWrapper), e);
+ Serialization.gsonPretty.toJson(aaiResponseWrapper), e);
return null;
}
@@ -172,15 +188,17 @@ public class SOActorServiceProvider implements Actor {
//
request.getRequestDetails().getCloudConfiguration().setTenantId(tenantItem.getTenant().getTenantId());
request.getRequestDetails().getCloudConfiguration().setLcpCloudRegionId(
- tenantItem.getItems().getInventoryResponseItems().get(0).getCloudRegion().getCloudRegionId());
+ tenantItem.getItems().getInventoryResponseItems().get(0).getCloudRegion().getCloudRegionId());
//
// modelInfo
//
request.getRequestDetails().getModelInfo().setModelType("vfModule");
request.getRequestDetails().getModelInfo()
- .setModelInvariantId(vfModuleItem.getVfModule().getModelInvariantId());
+ .setModelInvariantId(vfModuleItem.getVfModule().getModelInvariantId());
request.getRequestDetails().getModelInfo().setModelVersionId(vfModuleItem.getVfModule().getModelVersionId());
+ request.getRequestDetails().getModelInfo()
+ .setModelCustomizationId(vfModuleItem.getVfModule().getModelCustomizationId());
for (AaiNqExtraProperty prop : vfModuleItem.getExtraProperties().getExtraProperty()) {
if (prop.getPropertyName().equals(modelNamePropertyKey)) {
@@ -193,7 +211,8 @@ public class SOActorServiceProvider implements Actor {
//
// requestInfo
//
- request.getRequestDetails().getRequestInfo().setInstanceName(aaiResponseWrapper.genVfModuleName());
+ String vfModuleName = aaiResponseWrapper.genVfModuleName();
+ request.getRequestDetails().getRequestInfo().setInstanceName(vfModuleName);
request.getRequestDetails().getRequestInfo().setSource("POLICY");
request.getRequestDetails().getRequestInfo().setSuppressRollback(false);
request.getRequestDetails().getRequestInfo().setRequestorId("policy");
@@ -201,27 +220,35 @@ public class SOActorServiceProvider implements Actor {
//
// relatedInstanceList
//
+ SORelatedInstanceListElement relatedInstanceListElement0 = new SORelatedInstanceListElement();
SORelatedInstanceListElement relatedInstanceListElement1 = new SORelatedInstanceListElement();
SORelatedInstanceListElement relatedInstanceListElement2 = new SORelatedInstanceListElement();
relatedInstanceListElement1.setRelatedInstance(new SORelatedInstance());
relatedInstanceListElement2.setRelatedInstance(new SORelatedInstance());
+ // Volume Group Item
+ relatedInstanceListElement0.setRelatedInstance(new SORelatedInstance());
+ relatedInstanceListElement0.getRelatedInstance().setInstanceId(UUID.randomUUID().toString());
+ relatedInstanceListElement0.getRelatedInstance().setInstanceName(vfModuleName + "_vol");
+ relatedInstanceListElement0.getRelatedInstance().setModelInfo(new SOModelInfo());
+ relatedInstanceListElement0.getRelatedInstance().getModelInfo().setModelType("volumeGroup");
+
// Service Item
relatedInstanceListElement1.getRelatedInstance()
- .setInstanceId(vnfServiceItem.getServiceInstance().getServiceInstanceId());
+ .setInstanceId(vnfServiceItem.getServiceInstance().getServiceInstanceId());
relatedInstanceListElement1.getRelatedInstance().setModelInfo(new SOModelInfo());
relatedInstanceListElement1.getRelatedInstance().getModelInfo().setModelType("service");
relatedInstanceListElement1.getRelatedInstance().getModelInfo()
- .setModelInvariantId(vnfServiceItem.getServiceInstance().getModelInvariantId());
+ .setModelInvariantId(vnfServiceItem.getServiceInstance().getModelInvariantId());
for (AaiNqExtraProperty prop : vnfServiceItem.getExtraProperties().getExtraProperty()) {
if (prop.getPropertyName().equals(modelNamePropertyKey)) {
relatedInstanceListElement1.getRelatedInstance().getModelInfo().setModelName(prop.getPropertyValue());
} else if (prop.getPropertyName().equals(modelVersionPropertyKey)) {
relatedInstanceListElement1.getRelatedInstance().getModelInfo()
- .setModelVersion(prop.getPropertyValue());
+ .setModelVersion(prop.getPropertyValue());
} else if (prop.getPropertyName().equals(modelVersionIdPropertyKey)) {
- relatedInstanceListElement1.getRelatedInstance().getModelInfo()
- .setModelVersionId(prop.getPropertyValue());
+ relatedInstanceListElement1.getRelatedInstance().getModelInfo()
+ .setModelVersionId(prop.getPropertyValue());
}
}
@@ -230,28 +257,38 @@ public class SOActorServiceProvider implements Actor {
relatedInstanceListElement2.getRelatedInstance().setModelInfo(new SOModelInfo());
relatedInstanceListElement2.getRelatedInstance().getModelInfo().setModelType("vnf");
relatedInstanceListElement2.getRelatedInstance().getModelInfo()
- .setModelInvariantId(vnfItem.getGenericVnf().getModelInvariantId());
+ .setModelInvariantId(vnfItem.getGenericVnf().getModelInvariantId());
for (AaiNqExtraProperty prop : vnfItem.getExtraProperties().getExtraProperty()) {
if (prop.getPropertyName().equals(modelNamePropertyKey)) {
relatedInstanceListElement2.getRelatedInstance().getModelInfo().setModelName(prop.getPropertyValue());
} else if (prop.getPropertyName().equals(modelVersionPropertyKey)) {
relatedInstanceListElement2.getRelatedInstance().getModelInfo()
- .setModelVersion(prop.getPropertyValue());
+ .setModelVersion(prop.getPropertyValue());
} else if (prop.getPropertyName().equals(modelVersionIdPropertyKey)) {
relatedInstanceListElement2.getRelatedInstance().getModelInfo()
- .setModelVersionId(prop.getPropertyValue());
+ .setModelVersionId(prop.getPropertyValue());
}
}
- relatedInstanceListElement2.getRelatedInstance().getModelInfo().setModelCustomizationName(vnfItem
- .getGenericVnf().getVnfType().substring(vnfItem.getGenericVnf().getVnfType().lastIndexOf('/') + 1));
+ relatedInstanceListElement2.getRelatedInstance().getModelInfo()
+ .setModelCustomizationName(vnfItem.getGenericVnf().getVnfType()
+ .substring(vnfItem.getGenericVnf().getVnfType().lastIndexOf('/') + 1));
+ relatedInstanceListElement2.getRelatedInstance().getModelInfo()
+ .setModelCustomizationId(vnfItem.getGenericVnf().getModelCustomizationId());
// Insert the Service Item and VNF Item
+ request.getRequestDetails().getRelatedInstanceList().add(relatedInstanceListElement0);
request.getRequestDetails().getRelatedInstanceList().add(relatedInstanceListElement1);
request.getRequestDetails().getRelatedInstanceList().add(relatedInstanceListElement2);
+ // Request Parameters
+ request.getRequestDetails().setRequestParameters(buildRequestParameters(policy));
+
+ // Configuration Parameters
+ request.getRequestDetails().setConfigurationParameters(buildConfigurationParameters(policy));
+
// Save the instance IDs for the VNF and service to static fields
preserveInstanceIds(vnfItem.getGenericVnf().getVnfId(),
- vnfServiceItem.getServiceInstance().getServiceInstanceId());
+ vnfServiceItem.getServiceInstance().getServiceInstanceId());
if (logger.isDebugEnabled()) {
logger.debug("SO request sent: {}", Serialization.gsonPretty.toJson(request));
@@ -261,8 +298,8 @@ public class SOActorServiceProvider implements Actor {
}
/**
- * This method is needed to get the serviceInstanceId and vnfInstanceId which is used in the
- * asyncSORestCall.
+ * This method is needed to get the serviceInstanceId and vnfInstanceId which is used
+ * in the asyncSORestCall.
*
* @param requestId the request Id
* @param wm the working memory
@@ -271,7 +308,7 @@ public class SOActorServiceProvider implements Actor {
public static void sendRequest(String requestId, WorkingMemory wm, Object request) {
SOManager soManager = new SOManager();
soManager.asyncSORestCall(requestId, wm, lastServiceItemServiceInstanceId, lastVNFItemVnfId,
- (SORequest) request);
+ (SORequest) request);
}
/**
@@ -288,8 +325,47 @@ public class SOActorServiceProvider implements Actor {
}
/**
- * This method is called to remember the last service instance ID and VNF Item VNF ID. Note
- * these fields are static, beware for multithreaded deployments
+ * Builds the request parameters from the policy payload.
+ *
+ * @param policy the policy
+ * @return the request parameters, or {@code null} if the payload is {@code null}
+ */
+ private SORequestParameters buildRequestParameters(Policy policy) {
+ if (policy.getPayload() == null) {
+ return null;
+ }
+
+ String json = policy.getPayload().get(REQ_PARAM_NM);
+ if (json == null) {
+ return null;
+ }
+
+ return Serialization.gsonPretty.fromJson(json, SORequestParameters.class);
+ }
+
+ /**
+ * Builds the configuration parameters from the policy payload.
+ *
+ * @param policy the policy
+ * @return the configuration parameters, or {@code null} if the payload is
+ * {@code null}
+ */
+ private List<Map<String, String>> buildConfigurationParameters(Policy policy) {
+ if (policy.getPayload() == null) {
+ return null;
+ }
+
+ String json = policy.getPayload().get(CONFIG_PARAM_NM);
+ if (json == null) {
+ return null;
+ }
+
+ return Serialization.gsonPretty.fromJson(json, CONFIG_TYPE);
+ }
+
+ /**
+ * This method is called to remember the last service instance ID and VNF Item VNF ID.
+ * Note these fields are static, beware for multithreaded deployments
*
* @param vnfInstanceId update the last VNF instance ID to this value
* @param serviceInstanceId update the last service instance ID to this value
diff --git a/controlloop/common/actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/TestSOActorServiceProvider.java b/controlloop/common/actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/TestSOActorServiceProvider.java
index 25bbda0f4..c3155367b 100644
--- a/controlloop/common/actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/TestSOActorServiceProvider.java
+++ b/controlloop/common/actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/TestSOActorServiceProvider.java
@@ -9,9 +9,9 @@
* 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.
@@ -28,6 +28,10 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
import java.util.UUID;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
@@ -37,6 +41,7 @@ import org.onap.policy.controlloop.ControlLoopOperation;
import org.onap.policy.controlloop.VirtualControlLoopEvent;
import org.onap.policy.controlloop.policy.Policy;
import org.onap.policy.so.SORequest;
+import org.onap.policy.so.SORequestParameters;
import org.onap.policy.so.util.Serialization;
public class TestSOActorServiceProvider {
@@ -59,6 +64,8 @@ public class TestSOActorServiceProvider {
assertNull(new SOActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp));
policy.setRecipe("VF Module Create");
+
+ // empty policy payload
SORequest request = new SOActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp);
assertNotNull(request);
@@ -66,6 +73,15 @@ public class TestSOActorServiceProvider {
assertEquals("policy", request.getRequestDetails().getRequestInfo().getRequestorId());
assertEquals("RegionOne", request.getRequestDetails().getCloudConfiguration().getLcpCloudRegionId());
+ // non-empty policy payload
+ policy.setPayload(makePayload());
+ request = new SOActorServiceProvider().constructRequest(onset, operation, policy, aaiNqResp);
+ assertNotNull(request);
+ assertEquals(true, request.getRequestDetails().getRequestParameters().isUsePreload());
+ assertEquals("avalue", request.getRequestDetails().getRequestParameters().getUserParams().get(0).get("akey"));
+ assertEquals(1, request.getRequestDetails().getConfigurationParameters().size());
+ assertEquals("cvalue", request.getRequestDetails().getConfigurationParameters().get(0).get("ckey"));
+
// null response
assertNull(new SOActorServiceProvider().constructRequest(onset, operation, policy, null));
@@ -98,15 +114,64 @@ public class TestSOActorServiceProvider {
}
/**
+ * Creates a policy payload containing request & configuration parameters.
+ *
+ * @return the payload
+ */
+ private Map<String, String> makePayload() {
+ Map<String, String> payload = new TreeMap<>();
+
+ payload.put(SOActorServiceProvider.REQ_PARAM_NM, makeReqParams());
+ payload.put(SOActorServiceProvider.CONFIG_PARAM_NM, makeConfigParams());
+
+ return payload;
+ }
+
+ /**
+ * Creates request parameters.
+ *
+ * @return request parameters, encoded as JSON
+ */
+ private String makeReqParams() {
+ SORequestParameters params = new SORequestParameters();
+
+ params.setUsePreload(true);
+
+ Map<String, String> map = new TreeMap<>();
+ map.put("akey", "avalue");
+
+ List<Map<String, String>> lst = new LinkedList<>();
+ lst.add(map);
+
+ params.setUserParams(lst);
+
+ return Serialization.gsonPretty.toJson(params);
+ }
+
+ /**
+ * Creates configuration parameters.
+ *
+ * @return configuration parameters, encoded as JSON
+ */
+ private String makeConfigParams() {
+ Map<String, String> map = new TreeMap<>();
+ map.put("ckey", "cvalue");
+
+ List<Map<String, String>> lst = new LinkedList<>();
+ lst.add(map);
+
+ return Serialization.gsonPretty.toJson(lst);
+ }
+
+ /**
* Reads an AAI vserver named-query response from a file.
- *
+ *
* @param onset the ONSET event
* @param fileName name of the file containing the JSON response
* @return output from the AAI vserver named-query
* @throws IOException if the file cannot be read
*/
- private AaiNqResponseWrapper loadAaiResponse(VirtualControlLoopEvent onset, String fileName)
- throws IOException {
+ private AaiNqResponseWrapper loadAaiResponse(VirtualControlLoopEvent onset, String fileName) throws IOException {
String resp = IOUtils.toString(getClass().getResource(fileName), StandardCharsets.UTF_8);
AaiNqResponse aaiNqResponse = Serialization.gsonPretty.fromJson(resp, AaiNqResponse.class);
diff --git a/controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqGenericVnf.java b/controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqGenericVnf.java
index 342fefbec..788d236e7 100644
--- a/controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqGenericVnf.java
+++ b/controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqGenericVnf.java
@@ -7,9 +7,9 @@
* 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.
@@ -21,12 +21,11 @@
package org.onap.policy.aai;
import com.google.gson.annotations.SerializedName;
-
import java.io.Serializable;
public class AaiNqGenericVnf implements Serializable {
- private static final long serialVersionUID = 834322706248060559L;
+ private static final long serialVersionUID = 834322706248060560L;
@SerializedName("vnf-id")
private String vnfId;
@@ -79,6 +78,9 @@ public class AaiNqGenericVnf implements Serializable {
@SerializedName("model-version-id")
private String modelVersionId;
+ @SerializedName("model-customization-id")
+ private String modelCustomizationId = null;
+
public String getVnfId() {
return vnfId;
}
@@ -147,6 +149,10 @@ public class AaiNqGenericVnf implements Serializable {
return modelVersionId;
}
+ public String getModelCustomizationId() {
+ return modelCustomizationId;
+ }
+
public void setVnfId(String vnfId) {
this.vnfId = vnfId;
}
@@ -214,4 +220,8 @@ public class AaiNqGenericVnf implements Serializable {
public void setModelVersionId(String modelVersionId) {
this.modelVersionId = modelVersionId;
}
+
+ public void setModelCustomizationId(String modelCustomizationId) {
+ this.modelCustomizationId = modelCustomizationId;
+ }
}
diff --git a/controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqVfModule.java b/controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqVfModule.java
index 923092a25..d8021af28 100644
--- a/controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqVfModule.java
+++ b/controlloop/common/model-impl/aai/src/main/java/org/onap/policy/aai/AaiNqVfModule.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* aai
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
@@ -21,11 +21,10 @@
package org.onap.policy.aai;
import com.google.gson.annotations.SerializedName;
-
import java.io.Serializable;
public class AaiNqVfModule implements Serializable {
- private static final long serialVersionUID = 8019133081429638231L;
+ private static final long serialVersionUID = 8019133081429638232L;
@SerializedName("vf-module-id")
private String vfModuleId;
@@ -66,6 +65,9 @@ public class AaiNqVfModule implements Serializable {
@SerializedName("model-version-id")
private String modelVersionId;
+ @SerializedName("model-customization-id")
+ private String modelCustomizationId = null;
+
public String getVfModuleId() {
return vfModuleId;
}
@@ -118,6 +120,10 @@ public class AaiNqVfModule implements Serializable {
return modelVersionId;
}
+ public String getModelCustomizationId() {
+ return modelCustomizationId;
+ }
+
public void setVfModuleId(String vfModuleId) {
this.vfModuleId = vfModuleId;
}
@@ -169,4 +175,8 @@ public class AaiNqVfModule implements Serializable {
public void setModelVersionId(String modelVersionId) {
this.modelVersionId = modelVersionId;
}
+
+ public void setModelCustomizationId(String modelCustomizationId) {
+ this.modelCustomizationId = modelCustomizationId;
+ }
}
diff --git a/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqGenericVnfTest.java b/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqGenericVnfTest.java
index 680e66e7c..4ca91e73a 100644
--- a/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqGenericVnfTest.java
+++ b/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqGenericVnfTest.java
@@ -7,9 +7,9 @@
* 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.
@@ -22,7 +22,6 @@ package org.onap.policy.aai;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -45,6 +44,7 @@ public class AaiNqGenericVnfTest {
aaiNqGenericVnf.setIsClosedLoopDisabled(false);
aaiNqGenericVnf.setModelInvariantId("653d2caa-7e47-4614-95b3-26c8d82755b8");
aaiNqGenericVnf.setModelVersionId("98f410f6-4c63-447b-97d2-42508437cec0");
+ aaiNqGenericVnf.setModelCustomizationId("SomeCustomizationId");
aaiNqGenericVnf.setOperationalState("active");
aaiNqGenericVnf.setPersonaModelId("653d2caa-7e47-4614-95b3-26c8d82755b8");
aaiNqGenericVnf.setPersonaModelVersion("98f410f6-4c63-447b-97d2-42508437cec0");
@@ -64,6 +64,7 @@ public class AaiNqGenericVnfTest {
assertEquals(false, aaiNqGenericVnf.getIsClosedLoopDisabled());
assertEquals("653d2caa-7e47-4614-95b3-26c8d82755b8", aaiNqGenericVnf.getModelInvariantId());
assertEquals("98f410f6-4c63-447b-97d2-42508437cec0", aaiNqGenericVnf.getModelVersionId());
+ assertEquals("SomeCustomizationId", aaiNqGenericVnf.getModelCustomizationId());
assertEquals("active", aaiNqGenericVnf.getOperationalState());
assertEquals("653d2caa-7e47-4614-95b3-26c8d82755b8", aaiNqGenericVnf.getPersonaModelId());
assertEquals("98f410f6-4c63-447b-97d2-42508437cec0", aaiNqGenericVnf.getPersonaModelVersion());
diff --git a/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqVfModuleTest.java b/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqVfModuleTest.java
index 1bbb711a5..b4fbd7652 100644
--- a/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqVfModuleTest.java
+++ b/controlloop/common/model-impl/aai/src/test/java/org/onap/policy/aai/AaiNqVfModuleTest.java
@@ -7,9 +7,9 @@
* 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.
@@ -22,7 +22,6 @@ package org.onap.policy.aai;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -56,6 +55,7 @@ public class AaiNqVfModuleTest {
aaiNqVfModule.setContrailServiceInstanceFqdn("example-contrail-service-instance-fqdn-val-86796");
aaiNqVfModule.setModelInvariantId("SomeId");
aaiNqVfModule.setModelVersionId("SomeVersion");
+ aaiNqVfModule.setModelCustomizationId("SomeCustomizationId");
assertNotNull(aaiNqVfModule);
assertEquals("example-vf-module-id-val-49261", aaiNqVfModule.getVfModuleId());
assertEquals("example-vf-module-name-val-73074", aaiNqVfModule.getVfModuleName());
@@ -68,9 +68,10 @@ public class AaiNqVfModuleTest {
assertEquals("example-widget-model-id-val-92571", aaiNqVfModule.getWidgetModelId());
assertEquals("example-widget-model-version-val-83317", aaiNqVfModule.getWidgetModelVersion());
assertEquals("example-contrail-service-instance-fqdn-val-86796",
- aaiNqVfModule.getContrailServiceInstanceFqdn());
+ aaiNqVfModule.getContrailServiceInstanceFqdn());
assertEquals("SomeId", aaiNqVfModule.getModelInvariantId());
assertEquals("SomeVersion", aaiNqVfModule.getModelVersionId());
+ assertEquals("SomeCustomizationId", aaiNqVfModule.getModelCustomizationId());
logger.info(Serialization.gsonPretty.toJson(aaiNqVfModule));
}
diff --git a/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SOManager.java b/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SOManager.java
index ae43f5bd9..92d52f4c2 100644
--- a/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SOManager.java
+++ b/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SOManager.java
@@ -7,9 +7,9 @@
* 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.
@@ -22,14 +22,12 @@ package org.onap.policy.so;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
-
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-
import org.drools.core.WorkingMemory;
import org.onap.policy.drools.system.PolicyEngine;
import org.onap.policy.rest.RESTManager;
@@ -40,15 +38,15 @@ import org.slf4j.LoggerFactory;
/**
- * This class handles the interface towards SO (Service Orchestrator) for the ONAP Policy Framework.
- * The SO API is defined at this link:
+ * This class handles the interface towards SO (Service Orchestrator) for the ONAP Policy
+ * Framework. The SO API is defined at this link:
* http://onap.readthedocs.io/en/latest/submodules/so.git/docs/SO_R1_Interface.html#get-orchestration-request
- *
+ *
*/
public final class SOManager {
private static final Logger logger = LoggerFactory.getLogger(SOManager.class);
private static final Logger netLogger =
- LoggerFactory.getLogger(org.onap.policy.common.endpoints.event.comm.Topic.NETWORK_LOGGER);
+ LoggerFactory.getLogger(org.onap.policy.common.endpoints.event.comm.Topic.NETWORK_LOGGER);
private static ExecutorService executors = Executors.newCachedThreadPool();
private static final int SO_RESPONSE_ERROR = 999;
@@ -73,7 +71,7 @@ public final class SOManager {
/**
* Create a service instance in SO.
- *
+ *
* @param url the SO URL
* @param urlBase the base URL
* @param username user name on SO
@@ -82,13 +80,13 @@ public final class SOManager {
* @return
*/
public SOResponse createModuleInstance(final String url, final String urlBase, final String username,
- final String password, final SORequest request) {
+ final String password, final SORequest request) {
// Issue the HTTP POST request to SO to create the service instance
String requestJson = Serialization.gsonPretty.toJson(request);
netLogger.info("[OUT|{}|{}|{}|{}|{}|{}|]{}{}", "SO", url, username, password, createSimpleHeaders(), MEDIA_TYPE,
- LINE_SEPARATOR, requestJson);
+ LINE_SEPARATOR, requestJson);
Pair<Integer, String> httpResponse =
- restManager.post(url, username, password, createSimpleHeaders(), MEDIA_TYPE, requestJson);
+ restManager.post(url, username, password, createSimpleHeaders(), MEDIA_TYPE, requestJson);
// Process the response from SO
SOResponse response = waitForSOOperationCompletion(urlBase, username, password, url, httpResponse);
@@ -100,9 +98,9 @@ public final class SOManager {
}
/**
- * This method makes an asynchronous Rest call to MSO and inserts the response into Drools
- * working memory.
- *
+ * This method makes an asynchronous Rest call to MSO and inserts the response into
+ * Drools working memory.
+ *
* @param wm the Drools working memory
* @param url the URL to use on the POST request
* @param urlBase the SO base URL
@@ -112,7 +110,7 @@ public final class SOManager {
* @return a concurrent Future for the thread that handles the request
*/
public Future<SOResponse> asyncSORestCall(final String requestID, final WorkingMemory wm,
- final String serviceInstanceId, final String vnfInstanceId, final SORequest request) {
+ final String serviceInstanceId, final String vnfInstanceId, final SORequest request) {
return executors.submit(new AsyncSORestCallThread(requestID, wm, serviceInstanceId, vnfInstanceId, request));
}
@@ -128,7 +126,7 @@ public final class SOManager {
/**
* Constructor, sets the context of the request.
- *
+ *
* @param requestID The request ID
* @param wm reference to the Drools working memory
* @param serviceInstanceId the service instance in SO to use
@@ -136,7 +134,7 @@ public final class SOManager {
* @param request the request itself
*/
private AsyncSORestCallThread(final String requestID, final WorkingMemory wm, final String serviceInstanceId,
- final String vnfInstanceId, final SORequest request) {
+ final String vnfInstanceId, final SORequest request) {
this.requestID = requestID;
this.wm = wm;
this.serviceInstanceId = serviceInstanceId;
@@ -154,15 +152,15 @@ public final class SOManager {
String password = PolicyEngine.manager.getEnvironmentProperty("so.password");
// The URL of the request we will POST
- String url =
- urlBase + "/serviceInstances/v5/" + serviceInstanceId + "/vnfs/" + vnfInstanceId + "/vfModules";
+ String url = urlBase + "/serviceInstantiation/v7/" + serviceInstanceId + "/vnfs/" + vnfInstanceId
+ + "/vfModules/scaleOut";
// Create a JSON representation of the request
String soJson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create().toJson(request);
netLogger.info("[OUT|{}|{}|]{}{}", "SO", url, LINE_SEPARATOR, soJson);
Pair<Integer, String> httpResponse =
- restManager.post(url, username, password, createSimpleHeaders(), MEDIA_TYPE, soJson);
+ restManager.post(url, username, password, createSimpleHeaders(), MEDIA_TYPE, soJson);
// Process the response from SO
SOResponse response = waitForSOOperationCompletion(urlBase, username, password, url, httpResponse);
@@ -177,7 +175,7 @@ public final class SOManager {
/**
* Wait for the SO operation we have ordered to complete.
- *
+ *
* @param urlBaseSO The base URL for SO
* @param username user name on SO
* @param password password on SO
@@ -186,7 +184,8 @@ public final class SOManager {
* @return The parsed final response of SO to the request
*/
private SOResponse waitForSOOperationCompletion(final String urlBaseSO, final String username,
- final String password, final String initialRequestURL, final Pair<Integer, String> initialHTTPResponse) {
+ final String password, final String initialRequestURL,
+ final Pair<Integer, String> initialHTTPResponse) {
// Process the initial response from SO, the response to a post
SOResponse response = processSOResponse(initialRequestURL, initialHTTPResponse);
if (SO_RESPONSE_ERROR == response.getHttpResponseCode()) {
@@ -201,7 +200,8 @@ public final class SOManager {
// Wait for the response from SO
for (int attemptsLeft = GET_REQUESTS_BEFORE_TIMEOUT; attemptsLeft >= 0; attemptsLeft--) {
- // The SO request may have completed even on the first request so we check the response
+ // The SO request may have completed even on the first request so we check the
+ // response
// here before
// issuing any other requests
if (isRequestStateFinished(latestHTTPResponse, response)) {
@@ -220,7 +220,7 @@ public final class SOManager {
// Issue a GET to find the current status of our request
netLogger.info("[OUT|{}|{}|{}|{}|{}|{}|]{}", "SO", urlGet, username, password, createSimpleHeaders(),
- MEDIA_TYPE, LINE_SEPARATOR);
+ MEDIA_TYPE, LINE_SEPARATOR);
Pair<Integer, String> httpResponse = restManager.get(urlGet, username, password, createSimpleHeaders());
// Get our response
@@ -240,7 +240,7 @@ public final class SOManager {
/**
* Parse the response message from SO into a SOResponse object.
- *
+ *
* @param requestURL The URL of the HTTP request
* @param httpDetails The HTTP message returned from SO
* @return The parsed response
@@ -248,7 +248,8 @@ public final class SOManager {
private SOResponse processSOResponse(final String requestURL, final Pair<Integer, String> httpResponse) {
SOResponse response = new SOResponse();
- // A null httpDetails indicates a HTTP problem, a valid response from SO must be either 200
+ // A null httpDetails indicates a HTTP problem, a valid response from SO must be
+ // either 200
// or 202
if (!httpResultIsNullFree(httpResponse) || (httpResponse.a != 200 && httpResponse.a != 202)) {
logger.error("Invalid HTTP response received from SO");
@@ -282,7 +283,7 @@ public final class SOManager {
/**
* Method to allow tuning of REST get timeout.
- *
+ *
* @param restGetTimeout the timeout value
*/
protected void setRestGetTimeout(final long restGetTimeout) {
@@ -291,18 +292,18 @@ public final class SOManager {
/**
* Check that the request state of a response is defined.
- *
+ *
* @param response The response to check
* @return true if the request for the response is defined
*/
private boolean isRequestStateDefined(final SOResponse response) {
return response != null && response.getRequest() != null && response.getRequest().getRequestStatus() != null
- && response.getRequest().getRequestStatus().getRequestState() != null;
+ && response.getRequest().getRequestStatus().getRequestState() != null;
}
/**
* Check that the request state of a response is finished.
- *
+ *
* @param latestHTTPDetails the HTTP details of the response
* @param response The response to check
* @return true if the request for the response is finished
@@ -318,7 +319,7 @@ public final class SOManager {
/**
* Check that a HTTP operation result has no nulls.
- *
+ *
* @param httpOperationResult the result to check
* @return true if no nulls are found
*/
@@ -328,7 +329,7 @@ public final class SOManager {
/**
* Create simple HTTP headers for unauthenticated requests to SO.
- *
+ *
* @return the HTTP headers
*/
private Map<String, String> createSimpleHeaders() {
diff --git a/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestDetails.java b/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestDetails.java
index 72e35d96e..13d25cf81 100644
--- a/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestDetails.java
+++ b/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestDetails.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* so
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
@@ -23,7 +23,7 @@ package org.onap.policy.so;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
-
+import java.util.Map;
import com.google.gson.annotations.SerializedName;
public class SORequestDetails implements Serializable {
@@ -48,6 +48,9 @@ public class SORequestDetails implements Serializable {
@SerializedName("requestParameters")
private SORequestParameters requestParameters;
+ @SerializedName("configurationParameters")
+ private List<Map<String, String>> configurationParameters = new LinkedList<>();
+
public SORequestDetails() {
}
@@ -73,38 +76,37 @@ public class SORequestDetails implements Serializable {
if (cloudConfiguration == null) {
if (other.cloudConfiguration != null)
return false;
- }
- else if (!cloudConfiguration.equals(other.cloudConfiguration))
+ } else if (!cloudConfiguration.equals(other.cloudConfiguration))
+ return false;
+ if (configurationParameters == null) {
+ if (other.configurationParameters != null)
+ return false;
+ } else if (!configurationParameters.equals(other.configurationParameters))
return false;
if (modelInfo == null) {
if (other.modelInfo != null)
return false;
- }
- else if (!modelInfo.equals(other.modelInfo))
+ } else if (!modelInfo.equals(other.modelInfo))
return false;
if (relatedInstanceList == null) {
if (other.relatedInstanceList != null)
return false;
- }
- else if (!relatedInstanceList.equals(other.relatedInstanceList))
+ } else if (!relatedInstanceList.equals(other.relatedInstanceList))
return false;
if (requestInfo == null) {
if (other.requestInfo != null)
return false;
- }
- else if (!requestInfo.equals(other.requestInfo))
+ } else if (!requestInfo.equals(other.requestInfo))
return false;
if (requestParameters == null) {
if (other.requestParameters != null)
return false;
- }
- else if (!requestParameters.equals(other.requestParameters))
+ } else if (!requestParameters.equals(other.requestParameters))
return false;
if (subscriberInfo == null) {
if (other.subscriberInfo != null)
return false;
- }
- else if (!subscriberInfo.equals(other.subscriberInfo))
+ } else if (!subscriberInfo.equals(other.subscriberInfo))
return false;
return true;
}
@@ -129,6 +131,10 @@ public class SORequestDetails implements Serializable {
return requestParameters;
}
+ public List<Map<String, String>> getConfigurationParameters() {
+ return configurationParameters;
+ }
+
public SOSubscriberInfo getSubscriberInfo() {
return subscriberInfo;
}
@@ -137,13 +143,13 @@ public class SORequestDetails implements Serializable {
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result
- + ((cloudConfiguration == null) ? 0 : cloudConfiguration.hashCode());
+ result = prime * result + ((cloudConfiguration == null) ? 0 : cloudConfiguration.hashCode());
+ result = prime * result + ((configurationParameters == null) ? 0 : configurationParameters.hashCode());
result = prime * result + ((modelInfo == null) ? 0 : modelInfo.hashCode());
- result = prime * result
- + ((relatedInstanceList == null) ? 0 : relatedInstanceList.hashCode());
+ result = prime * result + ((relatedInstanceList == null) ? 0 : relatedInstanceList.hashCode());
result = prime * result + ((requestInfo == null) ? 0 : requestInfo.hashCode());
result = prime * result + ((requestParameters == null) ? 0 : requestParameters.hashCode());
+ result = prime * result + ((subscriberInfo == null) ? 0 : subscriberInfo.hashCode());
return result;
}
@@ -163,6 +169,10 @@ public class SORequestDetails implements Serializable {
this.requestParameters = requestParameters;
}
+ public void setConfigurationParameters(List<Map<String, String>> configurationParameters) {
+ this.configurationParameters = configurationParameters;
+ }
+
public void setSubscriberInfo(SOSubscriberInfo subscriberInfo) {
this.subscriberInfo = subscriberInfo;
}
@@ -173,10 +183,10 @@ public class SORequestDetails implements Serializable {
@Override
public String toString() {
- return "SORequestDetails [modelInfo=" + modelInfo + ", cloudConfiguration="
- + cloudConfiguration + ", requestInfo=" + requestInfo + ", relatedInstanceList="
- + relatedInstanceList + ", requestParameters=" + requestParameters +
- ", subscriberInfo=" + subscriberInfo + "]";
+ return "SORequestDetails [modelInfo=" + modelInfo + ", cloudConfiguration=" + cloudConfiguration
+ + ", requestInfo=" + requestInfo + ", subscriberInfo=" + subscriberInfo
+ + ", relatedInstanceList=" + relatedInstanceList + ", requestParameters=" + requestParameters
+ + ", configurationParameters=" + configurationParameters + "]";
}
}
diff --git a/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestParameters.java b/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestParameters.java
index 169752057..7ea20defd 100644
--- a/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestParameters.java
+++ b/controlloop/common/model-impl/so/src/main/java/org/onap/policy/so/SORequestParameters.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* so
* ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 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.
@@ -24,16 +24,18 @@ import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-
import com.google.gson.annotations.SerializedName;
public class SORequestParameters implements Serializable {
- private static final long serialVersionUID = -3283942659786236032L;
+ private static final long serialVersionUID = -3283942659786236033L;
@SerializedName("subscriptionServiceType")
private String subscriptionServiceType;
+ @SerializedName("usePreload")
+ private boolean usePreload;
+
@SerializedName("userParams")
private List<Map<String, String>> userParams = new LinkedList<>();
@@ -45,6 +47,10 @@ public class SORequestParameters implements Serializable {
return subscriptionServiceType;
}
+ public boolean isUsePreload() {
+ return usePreload;
+ }
+
public List<Map<String, String>> getUserParams() {
return userParams;
}
@@ -53,6 +59,10 @@ public class SORequestParameters implements Serializable {
this.subscriptionServiceType = subscriptionServiceType;
}
+ public void setUsePreload(boolean usePreload) {
+ this.usePreload = usePreload;
+ }
+
public void setUserParams(List<Map<String, String>> userParams) {
this.userParams = userParams;
}
diff --git a/controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSOManager.java b/controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSOManager.java
index 864362649..4a7fdda8d 100644
--- a/controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSOManager.java
+++ b/controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSOManager.java
@@ -7,9 +7,9 @@
* 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.
@@ -24,12 +24,10 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-
import java.io.IOException;
import java.net.URI;
import java.util.UUID;
import java.util.concurrent.Future;
-
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
@@ -46,14 +44,14 @@ import org.junit.Test;
import org.onap.policy.drools.system.PolicyEngine;
public class TestSOManager {
- private static final String BASE_URI = "http://localhost:46553/TestSOManager";
+ private static final String BASE_URI = "http://localhost:46553/TestSOManager";
private static final String BASE_SO_URI = BASE_URI + "/SO";
private static HttpServer server;
@BeforeClass
public static void setUp() {
final ResourceConfig rc = new ResourceConfig(TestSoDummyServer.class);
- server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
+ server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
}
@AfterClass
@@ -77,13 +75,16 @@ public class TestSOManager {
assertNotNull(manager);
manager.setRestGetTimeout(100);
- SOResponse response = manager.createModuleInstance("http:/localhost:99999999", BASE_SO_URI, "sean", "citizen", null);
+ SOResponse response =
+ manager.createModuleInstance("http:/localhost:99999999", BASE_SO_URI, "sean", "citizen", null);
assertNull(response);
- response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstances/v5", BASE_SO_URI, "sean", "citizen", null);
+ response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstantiation/v7", BASE_SO_URI, "sean",
+ "citizen", null);
assertNull(response);
- response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstances/v5", BASE_SO_URI, "sean", "citizen", new SORequest());
+ response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstantiation/v7", BASE_SO_URI, "sean",
+ "citizen", new SORequest());
assertNull(response);
SORequest request = new SORequest();
@@ -94,16 +95,19 @@ public class TestSOManager {
request.setRequestStatus(new SORequestStatus());
request.getRequestStatus().setRequestState("ONGOING");
- response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstances/v5", BASE_SO_URI, "sean", "citizen", request);
+ response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstantiation/v7", BASE_SO_URI, "sean",
+ "citizen", request);
assertNull(response);
request.setRequestType("ReturnCompleted");
- response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstances/v5", BASE_SO_URI, "sean", "citizen", request);
+ response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstantiation/v7", BASE_SO_URI, "sean",
+ "citizen", request);
assertNotNull(response);
assertEquals("COMPLETE", response.getRequest().getRequestStatus().getRequestState());
request.setRequestType("ReturnFailed");
- response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstances/v5", BASE_SO_URI, "sean", "citizen", request);
+ response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstantiation/v7", BASE_SO_URI, "sean",
+ "citizen", request);
assertNotNull(response);
assertEquals("FAILED", response.getRequest().getRequestStatus().getRequestState());
@@ -111,14 +115,16 @@ public class TestSOManager {
request.setRequestType("ReturnOnging200");
request.setRequestScope(new Integer(10).toString());
- response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstances/v5", BASE_SO_URI, "sean", "citizen", request);
+ response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstantiation/v7", BASE_SO_URI, "sean",
+ "citizen", request);
assertNotNull(response);
assertNotNull(response.getRequest());
assertEquals("COMPLETE", response.getRequest().getRequestStatus().getRequestState());
request.setRequestType("ReturnOnging202");
request.setRequestScope(new Integer(20).toString());
- response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstances/v5", BASE_SO_URI, "sean", "citizen", request);
+ response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstantiation/v7", BASE_SO_URI, "sean",
+ "citizen", request);
assertNotNull(response);
assertNotNull(response.getRequest());
assertEquals("COMPLETE", response.getRequest().getRequestStatus().getRequestState());
@@ -126,13 +132,15 @@ public class TestSOManager {
// Test timeout after 20 attempts for a response
request.setRequestType("ReturnOnging202");
request.setRequestScope(new Integer(21).toString());
- response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstances/v5", BASE_SO_URI, "sean", "citizen", request);
+ response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstantiation/v7", BASE_SO_URI, "sean",
+ "citizen", request);
assertNull(response);
// Test bad response after 3 attempts for a response
request.setRequestType("ReturnBadAfterWait");
request.setRequestScope(new Integer(3).toString());
- response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstances/v5", BASE_SO_URI, "sean", "citizen", request);
+ response = manager.createModuleInstance(BASE_SO_URI + "/serviceInstantiation/v7", BASE_SO_URI, "sean",
+ "citizen", request);
assertNull(response);
}
@@ -148,31 +156,31 @@ public class TestSOManager {
WorkingMemory wm = new DummyWorkingMemory();
PolicyEngine.manager.setEnvironmentProperty("so.url", "http:/localhost:99999999");
- Future<SOResponse> asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), null);
+ Future<SOResponse> asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm,
+ UUID.randomUUID().toString(), UUID.randomUUID().toString(), null);
try {
SOResponse response = asyncRestCallFuture.get();
assertEquals(999, response.getHttpResponseCode());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
-
+
PolicyEngine.manager.setEnvironmentProperty("so.url", BASE_SO_URI);
- asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), null);
+ asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), null);
try {
SOResponse response = asyncRestCallFuture.get();
assertEquals(999, response.getHttpResponseCode());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
- asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), new SORequest());
+ asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), new SORequest());
try {
SOResponse response = asyncRestCallFuture.get();
assertEquals(999, response.getHttpResponseCode());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
@@ -184,33 +192,33 @@ public class TestSOManager {
request.setRequestStatus(new SORequestStatus());
request.getRequestStatus().setRequestState("ONGOING");
- asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), request);
+ asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), request);
try {
SOResponse response = asyncRestCallFuture.get();
assertEquals(999, response.getHttpResponseCode());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
request.setRequestType("ReturnCompleted");
- asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), request);
+ asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), request);
try {
SOResponse response = asyncRestCallFuture.get();
assertEquals("COMPLETE", response.getRequest().getRequestStatus().getRequestState());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
request.setRequestType("ReturnFailed");
- asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), request);
+ asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), request);
try {
SOResponse response = asyncRestCallFuture.get();
assertEquals("FAILED", response.getRequest().getRequestStatus().getRequestState());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
@@ -218,49 +226,49 @@ public class TestSOManager {
request.setRequestType("ReturnOnging200");
request.setRequestScope(new Integer(10).toString());
- asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), request);
+ asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), request);
try {
SOResponse response = asyncRestCallFuture.get();
assertNotNull(response.getRequest());
assertEquals("COMPLETE", response.getRequest().getRequestStatus().getRequestState());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
request.setRequestType("ReturnOnging202");
request.setRequestScope(new Integer(20).toString());
- asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), request);
+ asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), request);
try {
SOResponse response = asyncRestCallFuture.get();
assertNotNull(response.getRequest());
assertEquals("COMPLETE", response.getRequest().getRequestStatus().getRequestState());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
// Test timeout after 20 attempts for a response
request.setRequestType("ReturnOnging202");
request.setRequestScope(new Integer(21).toString());
- asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), request);
+ asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), request);
try {
SOResponse response = asyncRestCallFuture.get();
assertEquals(999, response.getHttpResponseCode());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
// Test bad response after 3 attempts for a response
request.setRequestType("ReturnBadAfterWait");
request.setRequestScope(new Integer(3).toString());
- asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(), UUID.randomUUID().toString(), request);
+ asyncRestCallFuture = manager.asyncSORestCall(UUID.randomUUID().toString(), wm, UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(), request);
try {
SOResponse response = asyncRestCallFuture.get();
assertEquals(999, response.getHttpResponseCode());
- }
- catch (Exception e) {
+ } catch (Exception e) {
fail("test should not throw an exception");
}
}
diff --git a/controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSoDummyServer.java b/controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSoDummyServer.java
index 907ca69bc..348523140 100644
--- a/controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSoDummyServer.java
+++ b/controlloop/common/model-impl/so/src/test/java/org/onap/policy/so/TestSoDummyServer.java
@@ -4,12 +4,14 @@
* ================================================================================
* Copyright (C) 2018 Ericsson. All rights reserved.
* ================================================================================
+ * Modifications Copyright (C) 2018 AT&T. 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.
@@ -22,13 +24,11 @@ package org.onap.policy.so;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
-
import com.google.gson.Gson;
@Path("/SO")
@@ -45,7 +45,8 @@ public class TestSoDummyServer {
@Path("/Stats")
public Response serviceGetStats() {
statMessagesReceived++;
- return Response.status(200).entity("{\"GET\": " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived + ",\"POST\": " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build();
+ return Response.status(200).entity("{\"GET\": " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived
+ + ",\"POST\": " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build();
}
@GET
@@ -56,7 +57,7 @@ public class TestSoDummyServer {
}
@POST
- @Path("/serviceInstances/v5")
+ @Path("/serviceInstantiation/v7")
public Response servicePostRequest(final String jsonString) {
postMessagesReceived++;
@@ -67,8 +68,7 @@ public class TestSoDummyServer {
SORequest request = null;
try {
request = new Gson().fromJson(jsonString, SORequest.class);
- }
- catch (Exception e) {
+ } catch (Exception e) {
return Response.status(400).build();
}
@@ -82,8 +82,10 @@ public class TestSoDummyServer {
if ("ReturnBadJson".equals(request.getRequestType())) {
return Response.status(200)
- .entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}")
- .build();
+ .entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived
+ + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": "
+ + putMessagesReceived + "}")
+ .build();
}
SOResponse response = new SOResponse();
@@ -95,18 +97,14 @@ public class TestSoDummyServer {
response.getRequest().getRequestStatus().setRequestState("COMPLETE");
response.setHttpResponseCode(200);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
if ("ReturnFailed".equals(request.getRequestType())) {
response.getRequest().getRequestStatus().setRequestState("FAILED");
response.setHttpResponseCode(200);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
if ("ReturnOnging202".equals(request.getRequestType())) {
@@ -115,9 +113,7 @@ public class TestSoDummyServer {
response.getRequest().getRequestStatus().setRequestState("ONGOING");
response.setHttpResponseCode(202);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
if ("ReturnOnging200".equals(request.getRequestType())) {
@@ -126,9 +122,7 @@ public class TestSoDummyServer {
response.getRequest().getRequestStatus().setRequestState("ONGOING");
response.setHttpResponseCode(200);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
@@ -138,20 +132,16 @@ public class TestSoDummyServer {
response.getRequest().getRequestStatus().setRequestState("ONGOING");
response.setHttpResponseCode(200);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
return null;
}
@POST
- @Path("/serviceInstances/v5/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules")
- public Response servicePostRequestVfModules(
- @PathParam("serviceInstanceId") final String serviceInstanceId,
- @PathParam("vnfInstanceId") final String vnfInstanceId,
- final String jsonString) {
+ @Path("/serviceInstantiation/v7/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/scaleOut")
+ public Response servicePostRequestVfModules(@PathParam("serviceInstanceId") final String serviceInstanceId,
+ @PathParam("vnfInstanceId") final String vnfInstanceId, final String jsonString) {
postMessagesReceived++;
if (jsonString == null) {
@@ -161,8 +151,7 @@ public class TestSoDummyServer {
SORequest request = null;
try {
request = new Gson().fromJson(jsonString, SORequest.class);
- }
- catch (Exception e) {
+ } catch (Exception e) {
return Response.status(400).build();
}
@@ -176,8 +165,10 @@ public class TestSoDummyServer {
if ("ReturnBadJson".equals(request.getRequestType())) {
return Response.status(200)
- .entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}")
- .build();
+ .entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived
+ + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": "
+ + putMessagesReceived + "}")
+ .build();
}
SOResponse response = new SOResponse();
@@ -189,18 +180,14 @@ public class TestSoDummyServer {
response.getRequest().getRequestStatus().setRequestState("COMPLETE");
response.setHttpResponseCode(200);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
if ("ReturnFailed".equals(request.getRequestType())) {
response.getRequest().getRequestStatus().setRequestState("FAILED");
response.setHttpResponseCode(200);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
if ("ReturnOnging202".equals(request.getRequestType())) {
@@ -209,9 +196,7 @@ public class TestSoDummyServer {
response.getRequest().getRequestStatus().setRequestState("ONGOING");
response.setHttpResponseCode(202);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
if ("ReturnOnging200".equals(request.getRequestType())) {
@@ -220,9 +205,7 @@ public class TestSoDummyServer {
response.getRequest().getRequestStatus().setRequestState("ONGOING");
response.setHttpResponseCode(200);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
@@ -232,9 +215,7 @@ public class TestSoDummyServer {
response.getRequest().getRequestStatus().setRequestState("ONGOING");
response.setHttpResponseCode(200);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
return null;
@@ -250,9 +231,7 @@ public class TestSoDummyServer {
if (--iterationsLeft > 0) {
response.getRequest().setRequestScope(new Integer(iterationsLeft).toString());
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
ongoingRequestMap.remove(nsInstanceId);
@@ -265,8 +244,6 @@ public class TestSoDummyServer {
response.getRequest().setRequestScope("0");
response.setHttpResponseCode(200);
String responseString = new Gson().toJson(response, SOResponse.class);
- return Response.status(response.getHttpResponseCode())
- .entity(responseString)
- .build();
+ return Response.status(response.getHttpResponseCode()).entity(responseString).build();
}
}
diff --git a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/policy_ONAP_demo_vDNS.yaml b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/policy_ONAP_demo_vDNS.yaml
index 0daff741e..08b82d92b 100644
--- a/controlloop/common/policy-yaml/src/test/resources/v2.0.0/policy_ONAP_demo_vDNS.yaml
+++ b/controlloop/common/policy-yaml/src/test/resources/v2.0.0/policy_ONAP_demo_vDNS.yaml
@@ -50,6 +50,9 @@ policies:
recipe: VF Module Create
target:
resourceID: 59a2ee3fB58045feB5a1.nodes.heat.vdns
+ payload:
+ requestParameters: '{"usePreload":true,"userParams":[{"name":"gtp_bind_addr","value":"vmme_private_ip_0"},{"name":"mmc","value":"001"},{"name":"mme_addr","value":"vmme_private_ip_0"},{"name":"mnc","value":"01"},{"name":"n_prob","value":"50"},{"name":"vnfHostIpAddress","value":"veb_private_ip_0"}]}'
+ configurationParameters: '[{"availability-zone":"$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[0]","xtz-123":"$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[0]"}]'
retry: 0
timeout: 1200
success: final_success
diff --git a/controlloop/common/simulators/src/main/java/org/onap/policy/simulators/SoSimulatorJaxRs.java b/controlloop/common/simulators/src/main/java/org/onap/policy/simulators/SoSimulatorJaxRs.java
index 0d08aa216..35abf55b0 100644
--- a/controlloop/common/simulators/src/main/java/org/onap/policy/simulators/SoSimulatorJaxRs.java
+++ b/controlloop/common/simulators/src/main/java/org/onap/policy/simulators/SoSimulatorJaxRs.java
@@ -7,9 +7,9 @@
* 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.
@@ -21,50 +21,47 @@
package org.onap.policy.simulators;
import java.util.UUID;
-
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
-
import org.onap.policy.so.SORequest;
import org.onap.policy.so.SORequestReferences;
import org.onap.policy.so.SORequestStatus;
import org.onap.policy.so.SOResponse;
-
import com.att.aft.dme2.internal.gson.Gson;
-@Path("/serviceInstances")
+@Path("/serviceInstantiation")
public class SoSimulatorJaxRs {
-
- /**
+
+ /**
* SO post query.
- *
+ *
* @param serviceInstanceId the service instance Id
* @param vnfInstanceId the VNF Id
* @return the response
*/
@POST
- @Path("/v5/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules")
+ @Path("/v7/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/scaleOut")
@Consumes(MediaType.APPLICATION_JSON)
@Produces("application/json")
- public String soPostQuery(@PathParam("serviceInstanceId") final String serviceInstanceId, @PathParam("vnfInstanceId") final String vnfInstanceId)
- {
+ public String soPostQuery(@PathParam("serviceInstanceId") final String serviceInstanceId,
+ @PathParam("vnfInstanceId") final String vnfInstanceId) {
final SORequest request = new SORequest();
final SORequestStatus requestStatus = new SORequestStatus();
requestStatus.setRequestState("COMPLETE");
request.setRequestStatus(requestStatus);
request.setRequestId(UUID.randomUUID());
-
+
final SOResponse response = new SOResponse();
-
+
final SORequestReferences requestReferences = new SORequestReferences();
final String requestId = UUID.randomUUID().toString();
requestReferences.setRequestId(requestId);
response.setRequestReferences(requestReferences);
-
+
response.setRequest(request);
return new Gson().toJson(response);
diff --git a/controlloop/common/simulators/src/test/java/org/onap/policy/simulators/SoSimulatorTest.java b/controlloop/common/simulators/src/test/java/org/onap/policy/simulators/SoSimulatorTest.java
index 837c52cd6..4e0654df1 100644
--- a/controlloop/common/simulators/src/test/java/org/onap/policy/simulators/SoSimulatorTest.java
+++ b/controlloop/common/simulators/src/test/java/org/onap/policy/simulators/SoSimulatorTest.java
@@ -22,10 +22,8 @@ package org.onap.policy.simulators;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
-
import java.util.HashMap;
import java.util.UUID;
-
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -96,7 +94,7 @@ public class SoSimulatorTest {
// requestInfo
//
request.getRequestDetails().getRequestInfo()
- .setInstanceName("vDNS_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8");
+ .setInstanceName("vDNS_Ete_Named90e1ab3-dcd5-4877-9edb-eadfc84e32c8");
request.getRequestDetails().getRequestInfo().setSource("POLICY");
request.getRequestDetails().getRequestInfo().setSuppressRollback(false);
request.getRequestDetails().getRequestInfo().setRequestorId("policy");
@@ -112,9 +110,9 @@ public class SoSimulatorTest {
relatedInstanceListElement1.getRelatedInstance().setModelInfo(new SOModelInfo());
relatedInstanceListElement1.getRelatedInstance().getModelInfo().setModelType("service");
relatedInstanceListElement1.getRelatedInstance().getModelInfo()
- .setModelInvariantId("4fcbc1c0-7793-46d8-8aa1-fa1c2ed9ec7b");
+ .setModelInvariantId("4fcbc1c0-7793-46d8-8aa1-fa1c2ed9ec7b");
relatedInstanceListElement1.getRelatedInstance().getModelInfo()
- .setModelVersionId("5c996219-b2e2-4c76-9b43-7e8672a33c1d");
+ .setModelVersionId("5c996219-b2e2-4c76-9b43-7e8672a33c1d");
relatedInstanceListElement1.getRelatedInstance().getModelInfo().setModelName("8330e932-2a23-4943-8606");
relatedInstanceListElement1.getRelatedInstance().getModelInfo().setModelVersion("1.0");
//
@@ -122,13 +120,13 @@ public class SoSimulatorTest {
relatedInstanceListElement2.getRelatedInstance().setModelInfo(new SOModelInfo());
relatedInstanceListElement2.getRelatedInstance().getModelInfo().setModelType("vnf");
relatedInstanceListElement2.getRelatedInstance().getModelInfo()
- .setModelInvariantId("033a32ed-aa65-4764-a736-36f2942f1aa0");
+ .setModelInvariantId("033a32ed-aa65-4764-a736-36f2942f1aa0");
relatedInstanceListElement2.getRelatedInstance().getModelInfo()
- .setModelVersionId("d4d072dc-4e21-4a03-9524-628985819a8e");
+ .setModelVersionId("d4d072dc-4e21-4a03-9524-628985819a8e");
relatedInstanceListElement2.getRelatedInstance().getModelInfo().setModelName("c15ce9e1-e914-4c8f-b8bb");
relatedInstanceListElement2.getRelatedInstance().getModelInfo().setModelVersion("1");
relatedInstanceListElement2.getRelatedInstance().getModelInfo()
- .setModelCustomizationName("c15ce9e1-e914-4c8f-b8bb 1");
+ .setModelCustomizationName("c15ce9e1-e914-4c8f-b8bb 1");
//
request.getRequestDetails().getRelatedInstanceList().add(relatedInstanceListElement1);
request.getRequestDetails().getRelatedInstanceList().add(relatedInstanceListElement2);
@@ -139,9 +137,9 @@ public class SoSimulatorTest {
@Test
public void testResponse() {
final String request = Serialization.gsonPretty.toJson(this.createTestRequest());
- final Pair<Integer, String> httpDetails =
- new RESTManager().post("http://localhost:6667/serviceInstances/v5/12345/vnfs/12345/vfModules",
- "username", "password", new HashMap<>(), "application/json", request);
+ final Pair<Integer, String> httpDetails = new RESTManager().post(
+ "http://localhost:6667/serviceInstantiation/v7/12345/vnfs/12345/vfModules/scaleOut", "username",
+ "password", new HashMap<>(), "application/json", request);
assertNotNull(httpDetails);
final SOResponse response = Serialization.gsonPretty.fromJson(httpDetails.b, SOResponse.class);
assertNotNull(response);
diff --git a/controlloop/packages/basex-controlloop/src/files/bin/create-cl-casablanca b/controlloop/packages/basex-controlloop/src/files/bin/create-cl-casablanca
index d32657444..dd88b5ccc 100644
--- a/controlloop/packages/basex-controlloop/src/files/bin/create-cl-casablanca
+++ b/controlloop/packages/basex-controlloop/src/files/bin/create-cl-casablanca
@@ -47,7 +47,7 @@ VFW_CONTROL_LOOP_YAML="controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoop
# vDNS Policy Parameters
VDNS_CONTROL_LOOP_NAME="ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3"
VDNS_POLICY_NAME="vdns"
-VDNS_CONTROL_LOOP_YAML="controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0D%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-scale-up%0D%0A++++name%3A+Create+a+new+VF+Module%0D%0A++++description%3A%0D%0A++++actor%3A+SO%0D%0A++++recipe%3A+VF+Module+Create%0D%0A++++target%3A%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard"
+VDNS_CONTROL_LOOP_YAML="controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0D%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-scale-up%0D%0A++++name%3A+Create+a+new+VF+Module%0D%0A++++description%3A%0D%0A++++actor%3A+SO%0D%0A++++recipe%3A+VF+Module+Create%0D%0A++++target%3A%0D%0A++++++type%3A+VNF%0D%0A++++payload%3A%0D%0A++++++requestParameters%3A+%27%7B%22usePreload%22%3Atrue,%22userParams%22%3A%5B%7B%22name%22%3A%22gtp_bind_addr%22,%22value%22%3A%22vmme_private_ip_0%22%7D,%7B%22name%22%3A%22mmc%22,%22value%22%3A%22001%22%7D,%7B%22name%22%3A%22mme_addr%22,%22value%22%3A%22vmme_private_ip_0%22%7D,%7B%22name%22%3A%22mnc%22,%22value%22%3A%2201%22%7D,%7B%22name%22%3A%22n_prob%22,%22value%22%3A%2250%22%7D,%7B%22name%22%3A%22vnfHostIpAddress%22,%22value%22%3A%22veb_private_ip_0%22%7D%5D%7D%27%0D%0A++++++configurationParameters%3A+%27%5B%7B%22availability-zone%22%3A%22$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone%5B0%5D%22,%22xtz-123%22%3A%22$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone%5B0%5D%22%7D%5D%27%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard"
# VoLTE Policy Parameters
VOLTE_CONTROL_LOOP_NAME="ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b"
diff --git a/controlloop/packages/basex-controlloop/src/files/bin/push-policies-casablanca b/controlloop/packages/basex-controlloop/src/files/bin/push-policies-casablanca
index 685deb1c3..5bd23f49b 100644
--- a/controlloop/packages/basex-controlloop/src/files/bin/push-policies-casablanca
+++ b/controlloop/packages/basex-controlloop/src/files/bin/push-policies-casablanca
@@ -94,7 +94,7 @@ echo
echo "Inserting vDNS Policy..."
curl --silent --user @1b3rt:31nst31n -X PUT --header 'Content-Type: text/plain' -d '{
"closedLoopControlName": "ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3",
- "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0D%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-scale-up%0D%0A++++name%3A+Create+a+new+VF+Module%0D%0A++++description%3A%0D%0A++++actor%3A+SO%0D%0A++++recipe%3A+VF+Module+Create%0D%0A++++target%3A%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard",
+ "controlLoopYaml": "controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0D%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-scale-up%0D%0A++++name%3A+Create+a+new+VF+Module%0D%0A++++description%3A%0D%0A++++actor%3A+SO%0D%0A++++recipe%3A+VF+Module+Create%0D%0A++++target%3A%0D%0A++++++type%3A+VNF%0D%0A++++payload%3A%0D%0A++++++requestParameters%3A+%27%7B%22usePreload%22%3Atrue,%22userParams%22%3A%5B%7B%22name%22%3A%22gtp_bind_addr%22,%22value%22%3A%22vmme_private_ip_0%22%7D,%7B%22name%22%3A%22mmc%22,%22value%22%3A%22001%22%7D,%7B%22name%22%3A%22mme_addr%22,%22value%22%3A%22vmme_private_ip_0%22%7D,%7B%22name%22%3A%22mnc%22,%22value%22%3A%2201%22%7D,%7B%22name%22%3A%22n_prob%22,%22value%22%3A%2250%22%7D,%7B%22name%22%3A%22vnfHostIpAddress%22,%22value%22%3A%22veb_private_ip_0%22%7D%5D%7D%27%0D%0A++++++configurationParameters%3A+%27%5B%7B%22availability-zone%22%3A%22$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone%5B0%5D%22,%22xtz-123%22%3A%22$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone%5B0%5D%22%7D%5D%27%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard",
"policyName": "vdns",
"policyScope": "DCAE",
"policyVersion": "1.2.0"
diff --git a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vDNS.yaml b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vDNS.yaml
index 6a905c20f..71ee386ef 100644
--- a/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vDNS.yaml
+++ b/controlloop/templates/archetype-cl-amsterdam/src/main/resources/archetype-resources/src/main/config/vDNS.yaml
@@ -15,7 +15,7 @@ controlLoop:
version: 2.0.0
controlLoopName: ${closedLoopControlName}
trigger_policy: unique-policy-id-1-scale-up
- timeout: 3600
+ timeout: 1200
abatement: false
policies:
@@ -26,7 +26,10 @@ policies:
recipe: VF Module Create
target:
type: VNF
- retry: 3
+ payload:
+ requestParameters: '{"usePreload":true,"userParams":[{"name":"gtp_bind_addr","value":"vmme_private_ip_0"},{"name":"mmc","value":"001"},{"name":"mme_addr","value":"vmme_private_ip_0"},{"name":"mnc","value":"01"},{"name":"n_prob","value":"50"},{"name":"vnfHostIpAddress","value":"veb_private_ip_0"}]}'
+ configurationParameters: '[{"availability-zone":"$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[0]","xtz-123":"$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[0]"}]'
+ retry: 0
timeout: 1200
success: final_success
failure: final_failure
diff --git a/controlloop/templates/archetype-cl-casablanca/src/main/resources/META-INF/maven/archetype-metadata.xml b/controlloop/templates/archetype-cl-casablanca/src/main/resources/META-INF/maven/archetype-metadata.xml
index 2acec10dd..4ef410083 100644
--- a/controlloop/templates/archetype-cl-casablanca/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -50,7 +50,7 @@
<defaultValue>vdns</defaultValue>
</requiredProperty>
<requiredProperty key="vdnsControlLoopYaml">
- <defaultValue>controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0D%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-scale-up%0D%0A++++name%3A+Create+a+new+VF+Module%0D%0A++++description%3A%0D%0A++++actor%3A+SO%0D%0A++++recipe%3A+VF+Module+Create%0D%0A++++target%3A%0D%0A++++++type%3A+VNF%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard</defaultValue>
+ <defaultValue>controlLoop%3A%0D%0A++version%3A+2.0.0%0D%0A++controlLoopName%3A+ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3%0D%0A++trigger_policy%3A+unique-policy-id-1-scale-up%0D%0A++timeout%3A+1200%0D%0A++abatement%3A+false%0D%0Apolicies%3A%0D%0A++-+id%3A+unique-policy-id-1-scale-up%0D%0A++++name%3A+Create+a+new+VF+Module%0D%0A++++description%3A%0D%0A++++actor%3A+SO%0D%0A++++recipe%3A+VF+Module+Create%0D%0A++++target%3A%0D%0A++++++type%3A+VNF%0D%0A++++payload%3A%0D%0A++++++requestParameters%3A+%27%7B%22usePreload%22%3Atrue,%22userParams%22%3A%5B%7B%22name%22%3A%22gtp_bind_addr%22,%22value%22%3A%22vmme_private_ip_0%22%7D,%7B%22name%22%3A%22mmc%22,%22value%22%3A%22001%22%7D,%7B%22name%22%3A%22mme_addr%22,%22value%22%3A%22vmme_private_ip_0%22%7D,%7B%22name%22%3A%22mnc%22,%22value%22%3A%2201%22%7D,%7B%22name%22%3A%22n_prob%22,%22value%22%3A%2250%22%7D,%7B%22name%22%3A%22vnfHostIpAddress%22,%22value%22%3A%22veb_private_ip_0%22%7D%5D%7D%27%0D%0A++++++configurationParameters%3A+%27%5B%7B%22availability-zone%22%3A%22$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone%5B0%5D%22,%22xtz-123%22%3A%22$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone%5B0%5D%22%7D%5D%27%0D%0A++++retry%3A+0%0D%0A++++timeout%3A+1200%0D%0A++++success%3A+final_success%0D%0A++++failure%3A+final_failure%0D%0A++++failure_timeout%3A+final_failure_timeout%0D%0A++++failure_retries%3A+final_failure_retries%0D%0A++++failure_exception%3A+final_failure_exception%0D%0A++++failure_guard%3A+final_failure_guard</defaultValue>
</requiredProperty>
<requiredProperty key="volteClosedLoopControlName">
<defaultValue>ControlLoop-VOLTE-2179b738-fd36-4843-a71a-a8c24c70c55b</defaultValue>
diff --git a/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vDNS.yaml b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vDNS.yaml
index d4ed17396..ff5c08900 100644
--- a/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vDNS.yaml
+++ b/controlloop/templates/archetype-cl-casablanca/src/main/resources/archetype-resources/src/main/config/vDNS.yaml
@@ -26,6 +26,9 @@ policies:
recipe: VF Module Create
target:
type: VNF
+ payload:
+ requestParameters: '{"usePreload":true,"userParams":[{"name":"gtp_bind_addr","value":"vmme_private_ip_0"},{"name":"mmc","value":"001"},{"name":"mme_addr","value":"vmme_private_ip_0"},{"name":"mnc","value":"01"},{"name":"n_prob","value":"50"},{"name":"vnfHostIpAddress","value":"veb_private_ip_0"}]}'
+ configurationParameters: '[{"availability-zone":"$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[0]","xtz-123":"$.vnf-topology.vnf-resource-assignments.availability-zones.availability-zone[0]"}]'
retry: 3
timeout: 1200
success: final_success