summaryrefslogtreecommitdiffstats
path: root/bpmn/MSOCommonBPMN/src/main/java/org/onap
diff options
context:
space:
mode:
authorsarada prasad sahoo <sarada.prasad.sahoo@huawei.com>2019-05-21 09:58:43 +0530
committersarada prasad sahoo <sarada.prasad.sahoo@huawei.com>2019-05-21 15:38:04 +0530
commitbe1075b1dd746bb8a7d5563ff11f985fddf3ad7f (patch)
treeb6ecfc685689f37a0775178707cab2838a28b092 /bpmn/MSOCommonBPMN/src/main/java/org/onap
parent832a7bc6114ef9f539fc172004d3d1c2c355dd62 (diff)
Enhanced logic for multilevel list input
Optimized VF/GROUP/VFC level parsing logic as per doCompareModel call flow Change-Id: If934ee1407a1bad6c9adec9e32533166b5fb4d93 Issue-ID: SO-1393 Signed-off-by: sarada prasad sahoo <sarada.prasad.sahoo@huawei.com>
Diffstat (limited to 'bpmn/MSOCommonBPMN/src/main/java/org/onap')
-rw-r--r--bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java110
1 files changed, 28 insertions, 82 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java
index 18a46dda99..9d0b9e42cc 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java
@@ -92,7 +92,7 @@ public class ResourceRequestBuilder {
*
* @param execution Execution context
*
- * @param currentResource The current Service Resource Object
+ * @param resource The current Service Resource Object
*
* @param uuiServiceParameters the service parameters passed from the API
*
@@ -103,19 +103,17 @@ public class ResourceRequestBuilder {
* @since ONAP Beijing Release
*/
@SuppressWarnings("unchecked")
- public static String buildResourceRequestParameters(Execution execution, Resource currentResource,
+ public static String buildResourceRequestParameters(Execution execution, Resource resource,
String uuiServiceParameters, Map<String, Object> currentVFData) {
List<String> resourceList = jsonUtil.StringArrayToList(execution,
(String) JsonUtils.getJsonValue(uuiServiceParameters, "resources"));
// Get the right location str for resource. default is an empty array.
String locationConstraints = "[]";
- String resourceInputsFromUui = "";
- if (currentResource.getResourceType() == ResourceType.VNF) {
- for (String resource : resourceList) {
- String resCusUuid = (String) JsonUtils.getJsonValue(resource, "resourceCustomizationUuid");
- if ((null != resCusUuid)
- && resCusUuid.equals(currentResource.getModelInfo().getModelCustomizationUuid())) {
- String resourceParameters = JsonUtils.getJsonValue(resource, "parameters");
+ if (resource.getResourceType() == ResourceType.VNF) {
+ for (String eachResource : resourceList) {
+ String resCusUuid = (String) JsonUtils.getJsonValue(eachResource, "resourceCustomizationUuid");
+ if ((null != resCusUuid) && resCusUuid.equals(resource.getModelInfo().getModelCustomizationUuid())) {
+ String resourceParameters = JsonUtils.getJsonValue(eachResource, "parameters");
locationConstraints = JsonUtils.getJsonValue(resourceParameters, "locationConstraints");
}
}
@@ -130,25 +128,9 @@ public class ResourceRequestBuilder {
if (uuiRequestInputs == null) {
uuiRequestInputs = new HashMap();
}
- String resourceInputStr = null;
- ResourceLevel resourceLevel = null;
- switch (currentResource.getResourceType()) {
- case VNF:
- resourceInputStr = ((VnfResource) currentResource).getResourceInput();
- resourceLevel = ResourceLevel.FIRST;
- break;
- case GROUP:
- resourceInputStr = ((GroupResource) currentResource).getVnfcs().get(0).getResourceInput();
- resourceLevel = ResourceLevel.SECOND;
- break;
- }
-
- Map<String, Object> resourceInputsAfterMerge = new HashMap<>();
- if (StringUtils.isNotEmpty(resourceInputStr) && (null != resourceLevel)) {
- resourceInputsAfterMerge =
- getResourceInput(resourceInputStr, uuiRequestInputs, resourceLevel, currentVFData);
- }
+ Map<String, Object> resourceInputsAfterMerge =
+ ResourceRequestBuilder.buildResouceRequest(resource, uuiRequestInputs, currentVFData);
String resourceInputsStr = getJsonString(resourceInputsAfterMerge);
String result = "{\n" + "\"locationConstraints\":" + locationConstraints + ",\n" + "\"requestInputs\":"
@@ -157,70 +139,34 @@ public class ResourceRequestBuilder {
}
@SuppressWarnings("unchecked")
- public static Map<String, Object> buildResouceRequest(String serviceUuid, String resourceCustomizationUuid,
- Map<String, Object> serviceInputs, Map<String, Object> currentVFData) {
+ public static Map<String, Object> buildResouceRequest(Resource resource, Map<String, Object> uuiRequestInputs,
+ Map<String, Object> currentVFData) {
try {
- Map<String, Object> serviceInstnace = getServiceInstnace(serviceUuid);
- // find match of customization uuid in vnf
- Map<String, Map<String, Object>> serviceResources =
- (Map<String, Map<String, Object>>) serviceInstnace.get("serviceResources");
-
- List<Map<String, Object>> serviceVnfCust = (List<Map<String, Object>>) serviceResources.get("serviceVnfs");
- Map<String, String> resourceInputData = getResourceInputStr(serviceVnfCust, resourceCustomizationUuid);
-
- // find match in network resource
- if (resourceInputData.isEmpty()) {
- List<Map<String, Object>> serviceNetworkCust =
- (List<Map<String, Object>>) serviceResources.get("serviceNetworks");
- resourceInputData = getResourceInputStr(serviceNetworkCust, resourceCustomizationUuid);
-
- // find match in AR resource
- if (resourceInputData.isEmpty()) {
- List<Map<String, Object>> serviceArCust =
- (List<Map<String, Object>>) serviceResources.get("serviceAllottedResources");
- resourceInputData = getResourceInputStr(serviceArCust, resourceCustomizationUuid);
- }
- }
-
String resourceInputStr = null;
- ResourceLevel resourceLevel = null;
- if (!resourceInputData.isEmpty()) {
- resourceInputStr = resourceInputData.get("resourceInput");
- resourceLevel = ResourceLevel.valueOf(resourceInputData.get("nodeType"));
+ // Resource Level is considered as first level by default
+ ResourceLevel resourceLevel = ResourceLevel.FIRST;
+ switch (resource.getResourceType()) {
+ case VNF:
+ resourceInputStr = ((VnfResource) resource).getResourceInput();
+ resourceLevel = ResourceLevel.FIRST;
+ break;
+ case GROUP:
+ resourceInputStr = ((GroupResource) resource).getVnfcs().get(0).getResourceInput();
+ resourceLevel = ResourceLevel.SECOND;
+ break;
}
- if (resourceInputStr != null && !resourceInputStr.isEmpty() && resourceLevel != null) {
- return getResourceInput(resourceInputStr, serviceInputs, resourceLevel, currentVFData);
+ Map<String, Object> resourceInputsAfterMerge = new HashMap<>();
+ if (StringUtils.isNotEmpty(resourceInputStr)) {
+ return getResourceInput(resourceInputStr, uuiRequestInputs, resourceLevel, currentVFData);
}
} catch (Exception e) {
- logger.error("not able to retrieve service instance", e);
+ logger.error("not able to retrieve service resource input ", e);
}
return new HashMap();
}
- private static Map<String, String> getResourceInputStr(List<Map<String, Object>> resources,
- String resCustomizationUuid) {
-
- Map<String, String> resourceInputMap = new HashMap<>(2);
- for (Map<String, Object> resource : resources) {
- Map<String, String> modelInfo = (Map<String, String>) resource.get("modelInfo");
-
- if (modelInfo.get("modelCustomizationUuid").equalsIgnoreCase(resCustomizationUuid)) {
- resourceInputMap.put("resourceInput", (String) resource.get("resourceInput"));
- String nodeType = ResourceLevel.FIRST.toString();
- if (((String) resource.get("resourceType")).equalsIgnoreCase("VNF")) {
- nodeType = ResourceLevel.FIRST.toString();
- } else if (((String) resource.get("resourceType")).equals("GROUP")) {
- nodeType = ResourceLevel.SECOND.toString();
- }
- resourceInputMap.put("nodeType", nodeType);
- return resourceInputMap;
- }
- }
- return new HashMap<>();
- }
-
// this method combines resource input with service input
private static Map<String, Object> getResourceInput(String resourceInputStr, Map<String, Object> uuiRequestInputs,
ResourceLevel resourceLevel, Map<String, Object> currentVFData) {
@@ -338,7 +284,7 @@ public class ResourceRequestBuilder {
levelKeyNameUpdated = true;
}
- if (uuiServiceInput.containsKey(keyName)) {
+ if ((null != uuiServiceInput) && (uuiServiceInput.containsKey(keyName))) {
Object vfcLevelObject = uuiServiceInput.get(keyName);
// it will be always list
if (vfcLevelObject instanceof List) {
@@ -369,7 +315,7 @@ public class ResourceRequestBuilder {
} else {
// if not a list type
- if (uuiServiceInput.containsKey(tmpKey)) {
+ if ((null != uuiServiceInput) && (uuiServiceInput.containsKey(tmpKey))) {
value = (String) uuiServiceInput.get(tmpKey);
} else {
if (split.length == 1) { // means value is empty e.g. "a":"key1|"