summaryrefslogtreecommitdiffstats
path: root/bpmn/MSOCommonBPMN/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'bpmn/MSOCommonBPMN/src/main')
-rw-r--r--bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofHoming.groovy42
-rw-r--r--bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofUtils.groovy140
-rw-r--r--bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerAction.java1
-rw-r--r--bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java29
4 files changed, 146 insertions, 66 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofHoming.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofHoming.groovy
index f0f239b50f..1b5a2ecdcb 100644
--- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofHoming.groovy
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofHoming.groovy
@@ -28,6 +28,7 @@ import org.openecomp.mso.bpmn.common.scripts.SDNCAdapterUtils
import org.openecomp.mso.bpmn.core.domain.CloudFlavor
import org.openecomp.mso.bpmn.core.domain.InventoryType
import org.openecomp.mso.bpmn.core.domain.Resource
+import org.openecomp.mso.bpmn.core.domain.ResourceType
import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
import org.openecomp.mso.bpmn.core.domain.Subscriber
import org.openecomp.mso.bpmn.core.domain.VnfResource
@@ -73,6 +74,8 @@ class OofHoming extends AbstractServiceTaskProcessor {
utils.log("DEBUG", "Incoming Request Id is: " + requestId, isDebugEnabled)
String serviceInstanceId = execution.getVariable("serviceInstanceId")
utils.log("DEBUG", "Incoming Service Instance Id is: " + serviceInstanceId, isDebugEnabled)
+ String serviceInstanceName = execution.getVariable("serviceInstanceName")
+ utils.log("DEBUG", "Incoming Service Instance Name is: " + serviceInstanceName, isDebugEnabled)
ServiceDecomposition serviceDecomposition = execution.getVariable("serviceDecomposition")
utils.log("DEBUG", "Incoming Service Decomposition is: " + serviceDecomposition, isDebugEnabled)
String subscriberInfo = execution.getVariable("subscriberInfo")
@@ -86,21 +89,24 @@ class OofHoming extends AbstractServiceTaskProcessor {
if (isBlank(requestId) ||
isBlank(serviceInstanceId) ||
+ isBlank(serviceInstanceName) ||
isBlank(serviceDecomposition.toString()) ||
- isBlank(subscriberInfo) ||
- isBlank(customerLocation.toString()) ||
- isBlank(cloudOwner) ||
- isBlank(cloudRegionId)) {
+ isBlank(customerLocation.toString())) {
exceptionUtil.buildAndThrowWorkflowException(execution, 4000,
"A required input variable is missing or null")
} else {
- String subId = jsonUtil.getJsonValue(subscriberInfo, "globalSubscriberId")
- String subName = jsonUtil.getJsonValue(subscriberInfo, "subscriberName")
- String subCommonSiteId = ""
- if (jsonUtil.jsonElementExist(subscriberInfo, "subscriberCommonSiteId")) {
- subCommonSiteId = jsonUtil.getJsonValue(subscriberInfo, "subscriberCommonSiteId")
+ Subscriber subscriber = null
+ if (isBlank(subscriberInfo)) {
+ subscriber = new Subscriber("", "", "")
+ } else {
+ String subId = jsonUtil.getJsonValue(subscriberInfo, "globalSubscriberId")
+ String subName = jsonUtil.getJsonValue(subscriberInfo, "subscriberName")
+ String subCommonSiteId = ""
+ if (jsonUtil.jsonElementExist(subscriberInfo, "subscriberCommonSiteId")) {
+ subCommonSiteId = jsonUtil.getJsonValue(subscriberInfo, "subscriberCommonSiteId")
+ }
+ subscriber = new Subscriber(subId, subName, subCommonSiteId)
}
- Subscriber subscriber = new Subscriber(subId, subName, subCommonSiteId)
//Authentication
def authHeader = ""
@@ -205,9 +211,16 @@ class OofHoming extends AbstractServiceTaskProcessor {
JSONObject placement = arrSol.getJSONObject(j)
utils.log("DEBUG", "****** JSONObject is: " + placement + " *****", "true")
String jsonServiceResourceId = placement.getString("serviceResourceId")
+ String jsonResourceModuleName = placement.getString("resourceModuleName")
for (Resource resource : resourceList) {
String serviceResourceId = resource.getResourceId()
- if (serviceResourceId.equalsIgnoreCase(jsonServiceResourceId)) {
+ String resourceModuleName = ""
+ if (resource.getResourceType() == ResourceType.ALLOTTED_RESOURCE ||
+ resource.getResourceType() == ResourceType.VNF) {
+ resourceModuleName = resource.getNfFunction()
+ }
+ if (serviceResourceId.equalsIgnoreCase(jsonServiceResourceId) ||
+ resourceModuleName.equalsIgnoreCase(jsonResourceModuleName)) {
JSONObject solution = placement.getJSONObject("solution")
String solutionType = solution.getString("identifierType")
String inventoryType = ""
@@ -244,14 +257,17 @@ class OofHoming extends AbstractServiceTaskProcessor {
flavorsArrayList.add(cloudFlavor)
}
}
- Map<String, String> assignmentMap = jsonUtil.entryArrayToMap(execution, assignmentArr.toString(), "key", "value")
+ Map<String, String> assignmentMap = jsonUtil.entryArrayToMap(execution,
+ assignmentArr.toString(), "key", "value")
String cloudOwner = assignmentMap.get("cloudOwner")
- String cloudRegionId = assignmentMap.get("cloudRegionId")
+ String cloudRegionId = assignmentMap.get("locationId")
resource.getHomingSolution().setCloudOwner(cloudOwner)
resource.getHomingSolution().setCloudRegionId(cloudRegionId)
if (flavorsArrayList != null && flavorsArrayList.size != 0) {
resource.getHomingSolution().setFlavors(flavorsArrayList)
execution.setVariable(cloudRegionId + "_flavorList", flavorsArrayList)
+ utils.log("DEBUG", "***** _flavorList is: " + flavorsArrayList.toString() +
+ " *****", "true")
}
if (inventoryType.equalsIgnoreCase("service")) {
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofUtils.groovy
index 79134fe757..b61739f32c 100644
--- a/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofUtils.groovy
+++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/openecomp/mso/bpmn/common/scripts/OofUtils.groovy
@@ -1,19 +1,21 @@
package org.openecomp.mso.bpmn.common.scripts
-import org.apache.commons.lang3.StringUtils
-import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.DelegateExecution
import org.openecomp.mso.bpmn.common.scripts.AbstractServiceTaskProcessor
import org.openecomp.mso.bpmn.common.scripts.ExceptionUtil
import org.openecomp.mso.bpmn.common.scripts.MsoUtils
import org.openecomp.mso.bpmn.core.domain.HomingSolution
import org.openecomp.mso.bpmn.core.domain.ModelInfo
import org.openecomp.mso.bpmn.core.domain.Resource
+import org.openecomp.mso.bpmn.core.domain.AllottedResource
import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition
import org.openecomp.mso.bpmn.core.domain.ServiceInstance
import org.openecomp.mso.bpmn.core.domain.Subscriber
import org.openecomp.mso.bpmn.core.domain.VnfResource
import org.openecomp.mso.bpmn.core.json.JsonUtils
+import java.lang.reflect.Array
+
import static org.openecomp.mso.bpmn.common.scripts.GenericUtils.*
class OofUtils {
@@ -47,7 +49,7 @@ class OofUtils {
String buildRequest(DelegateExecution execution,
String requestId,
ServiceDecomposition decomposition,
- Subscriber subscriber,
+ Subscriber subscriber = null,
Map customerLocation,
ArrayList existingCandidates = null,
ArrayList excludedCandidates = null,
@@ -60,13 +62,19 @@ class OofUtils {
ServiceInstance serviceInstance = decomposition.getServiceInstance()
def serviceInstanceId = ""
def serviceInstanceName = ""
- if (serviceInstance == null) {
- utils.log("DEBUG", "Unable to obtain Service Instance Id, ServiceInstance Object is null", isDebugEnabled)
+
+ serviceInstanceId = execution.getVariable("serviceInstanceId")
+ serviceInstanceName = execution.getVariable("serviceInstanceName")
+
+ if (serviceInstanceId == null || serviceInstanceId == "null") {
+ utils.log("DEBUG", "Unable to obtain Service Instance Id", isDebugEnabled)
exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Internal Error - Unable to " +
- "obtain Service Instance Id, ServiceInstance Object is null")
- } else {
- serviceInstanceId = serviceInstance.getInstanceId()
- serviceInstanceName = serviceInstance.getInstanceName()
+ "obtain Service Instance Id, execution.getVariable(\"serviceInstanceName\") is null")
+ }
+ if (serviceInstanceName == null || serviceInstanceName == "null") {
+ utils.log("DEBUG", "Unable to obtain Service Instance Name", isDebugEnabled)
+ exceptionUtil.buildAndThrowWorkflowException(execution, 400, "Internal Error - Unable to " +
+ "obtain Service Instance Name, execution.getVariable(\"serviceInstanceName\") is null")
}
//Model Info
ModelInfo model = decomposition.getModelInfo()
@@ -76,9 +84,14 @@ class OofUtils {
String modelName = model.getModelName()
String modelVersion = model.getModelVersion()
//Subscriber Info
- String subscriberId = subscriber.getGlobalId()
- String subscriberName = subscriber.getName()
- String commonSiteId = subscriber.getCommonSiteId()
+ String subscriberId = ""
+ String subscriberName = ""
+ String commonSiteId = ""
+ if (subscriber != null){
+ subscriberId = subscriber.getGlobalId()
+ subscriberName = subscriber.getName()
+ commonSiteId = subscriber.getCommonSiteId()
+ }
//Determine RequestType
//TODO Figure out better way to determine this
@@ -94,28 +107,40 @@ class OofUtils {
//Demands
String placementDemands = ""
StringBuilder sb = new StringBuilder()
- List<Resource> resourceList = decomposition.getServiceAllottedResources()
+ List<AllottedResource> allottedResourceList = decomposition.getServiceAllottedResources()
List<VnfResource> vnfResourceList = decomposition.getServiceVnfs()
- if (resourceList.isEmpty() || resourceList == null) {
+ if (allottedResourceList.isEmpty() || allottedResourceList == null) {
utils.log("DEBUG", "Allotted Resources List is empty - will try to get service VNFs instead.",
isDebugEnabled)
- resourceList = decomposition.getServiceVnfs()
+ allottedResourceList = decomposition.getServiceVnfs()
}
- if (resourceList.isEmpty() || resourceList == null) {
+ if (allottedResourceList.isEmpty() || allottedResourceList == null) {
utils.log("DEBUG", "Resources List is Empty", isDebugEnabled)
} else {
- for (Resource resource : resourceList) {
- ModelInfo resourceModelInfo = resource.getModelInfo()
+ for (AllottedResource resource : allottedResourceList) {
+ utils.log("DEBUG", "Allotted Resource: " + resource.toString(),
+ isDebugEnabled)
def serviceResourceId = resource.getResourceId()
- def resourceModuleName = resource.getResourceType()
- def resouceModelInvariantId = resourceModelInfo.getModelInvariantUuid()
- def resouceModelName = resourceModelInfo.getModelName()
- def resouceModelVersion = resourceModelInfo.getModelVersion()
- def resouceModelVersionId = resourceModelInfo.getModelUuid()
- def resouceModelType = resourceModelInfo.getModelType()
- def tenantId = execution.getTenantId()
+ def resourceModuleName = resource.getNfFunction()
+ utils.log("DEBUG", "resourceModuleName: " + resourceModuleName,
+ isDebugEnabled)
+ def resourceModelInvariantId = "no-resourceModelInvariantId"
+ def resourceModelVersionId = "no-resourceModelVersionId"
+
+ List modelIdLst = execution.getVariable("homingModelIds")
+ utils.log("DEBUG", "Incoming modelIdLst is: " + modelIdLst.toString(), isDebugEnabled)
+ for (Map modelId : modelIdLst )
+ if (resourceModuleName == modelId.resourceModuleName) {
+ resourceModelInvariantId = modelId.resourceModelInvariantId
+ resourceModelVersionId = modelId.resourceModelVersionId
+ }
+
+ def resourceModelName = "" //Optional
+ def resourceModelVersion = "" //Optional
+ def resourceModelType = "" //Optional
+ def tenantId = "" //Optional
def requiredCandidatesJson = ""
requiredCandidatesJson = createCandidateJson(
@@ -124,22 +149,56 @@ class OofUtils {
requiredCandidates)
String demand =
- "{\n" +
- "\"resourceModuleName\": \"${resourceModuleName}\",\n" +
- "\"serviceResourceId\": \"${serviceResourceId}\",\n" +
- "\"tenantId\": \"${tenantId}\",\n" +
- "\"resourceModelInfo\": {\n" +
- " \"modelInvariantId\": \"${resouceModelInvariantId}\",\n" +
- " \"modelVersionId\": \"${resouceModelVersionId}\",\n" +
- " \"modelName\": \"${resouceModelName}\",\n" +
- " \"modelType\": \"${resouceModelType}\",\n" +
- " \"modelVersion\": \"${resouceModelVersion}\",\n" +
- " \"modelCustomizationName\": \"\"\n" +
- " }" + requiredCandidatesJson + "\n" +
- "},"
+ " {\n" +
+ " \"resourceModuleName\": \"${resourceModuleName}\",\n" +
+ " \"serviceResourceId\": \"${serviceResourceId}\",\n" +
+ " \"tenantId\": \"${tenantId}\",\n" +
+ " \"resourceModelInfo\": {\n" +
+ " \"modelInvariantId\": \"${resourceModelInvariantId}\",\n" +
+ " \"modelVersionId\": \"${resourceModelVersionId}\",\n" +
+ " \"modelName\": \"${resourceModelName}\",\n" +
+ " \"modelType\": \"${resourceModelType}\",\n" +
+ " \"modelVersion\": \"${resourceModelVersion}\",\n" +
+ " \"modelCustomizationName\": \"\"\n" +
+ " }" + requiredCandidatesJson + "\n" +
+ " },"
placementDemands = sb.append(demand)
}
+ for (VnfResource vnfResource : vnfResourceList) {
+ utils.log("DEBUG", "VNF Resource: " + vnfResource.toString(),
+ isDebugEnabled)
+ ModelInfo vnfResourceModelInfo = vnfResource.getModelInfo()
+ def serviceResourceId = vnfResource.getResourceId()
+ def resourceModuleName = vnfResource.getNfFunction()
+ utils.log("DEBUG", "resourceModuleName: " + resourceModuleName,
+ isDebugEnabled)
+ def resourceModelInvariantId = vnfResourceModelInfo.getModelInvariantUuid()
+ def resourceModelName = vnfResourceModelInfo.getModelName()
+ def resourceModelVersion = vnfResourceModelInfo.getModelVersion()
+ def resourceModelVersionId = vnfResourceModelInfo.getModelUuid()
+ def resourceModelType = vnfResourceModelInfo.getModelType()
+ def tenantId = "" //Optional
+ def requiredCandidatesJson = ""
+
+
+ String placementDemand =
+ " {\n" +
+ " \"resourceModuleName\": \"${resourceModuleName}\",\n" +
+ " \"serviceResourceId\": \"${serviceResourceId}\",\n" +
+ " \"tenantId\": \"${tenantId}\",\n" +
+ " \"resourceModelInfo\": {\n" +
+ " \"modelInvariantId\": \"${resourceModelInvariantId}\",\n" +
+ " \"modelVersionId\": \"${resourceModelVersionId}\",\n" +
+ " \"modelName\": \"${resourceModelName}\",\n" +
+ " \"modelType\": \"${resourceModelType}\",\n" +
+ " \"modelVersion\": \"${resourceModelVersion}\",\n" +
+ " \"modelCustomizationName\": \"\"\n" +
+ " }" + requiredCandidatesJson + "\n" +
+ " },"
+
+ placementDemands = sb.append(placementDemand)
+ }
placementDemands = placementDemands.substring(0, placementDemands.length() - 1)
}
@@ -265,11 +324,14 @@ class OofUtils {
} else {
return
}
- } else if (JsonUtils.jsonElementExist(response, "requestError") == true) {
+ } else if (response.contains("error") || response.contains("Error") ) {
String errorMessage = ""
if (response.contains("policyException")) {
String text = jsonUtil.getJsonValue(response, "requestError.policyException.text")
errorMessage = "OOF Async Callback Response contains a Request Error Policy Exception: " + text
+ } else if (response.contains("Unable to find any candidate for demand")) {
+ errorMessage = "OOF Async Callback Response contains error: Unable to find any candidate for " +
+ "demand *** Response: " + response.toString()
} else if (response.contains("serviceException")) {
String text = jsonUtil.getJsonValue(response, "requestError.serviceException.text")
errorMessage = "OOF Async Callback Response contains a Request Error Service Exception: " + text
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerAction.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerAction.java
index 713e25abf0..3c00627bff 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerAction.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerAction.java
@@ -84,6 +84,7 @@ public class ApplicationControllerAction {
}
break;
case ConfigModify:
+ case ConfigScaleOut:
appCStatus = payloadAction(action, msoRequestId, vnfId, payload, controllerType);
break;
case UpgradePreCheck:
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java
index 4255df3e87..c9e2e880e7 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/openecomp/mso/client/appc/ApplicationControllerClient.java
@@ -51,7 +51,7 @@ import com.att.eelf.configuration.EELFManager;
public class ApplicationControllerClient {
- public static final String DEFAULT_CONTROLLER_TYPE = "appc";
+ public static final String DEFAULT_CONTROLLER_TYPE = "SDNC";
private static final String CLIENT_NAME = "MSO";
@@ -86,7 +86,10 @@ public class ApplicationControllerClient {
* @param controllerType the controller type: "appc" or "sdnc".
*/
public ApplicationControllerClient(String controllerType) {
- this.controllerType = controllerType;
+ if (controllerType == null) {
+ controllerType = DEFAULT_CONTROLLER_TYPE;
+ }
+ this.controllerType = controllerType.toUpperCase();
appCSupport = new ApplicationControllerSupport();
}
@@ -109,6 +112,10 @@ public class ApplicationControllerClient {
protected LifeCycleManagerStateful createAppCClient(String controllerType) {
try {
+ if (controllerType == null) {
+ controllerType = DEFAULT_CONTROLLER_TYPE;
+ }
+ controllerType = controllerType.toUpperCase();
return AppcClientServiceFactoryProvider.getFactory(AppcLifeCycleManagerServiceFactory.class)
.createLifeCycleManagerStateful(new ApplicationContext(), getLCMProperties(controllerType));
} catch (AppcClientException e) {
@@ -142,21 +149,15 @@ public class ApplicationControllerClient {
Properties properties = new Properties();
Map<String, String> globalProperties = PropertyConfiguration.getInstance()
.getProperties("mso.bpmn.urn.properties");
- if (controllerType==null || controllerType.length()==0 || controllerType.equalsIgnoreCase("appc")) {
- properties.put("topic.read", globalProperties.get("appc.client.topic.read"));
- properties.put("topic.write", globalProperties.get("appc.client.topic.write"));
- } else {
- properties.put("topic.read", globalProperties.get("appc.client.topic." + controllerType + ".read"));
- properties.put("topic.write", globalProperties.get("appc.client.topic." + controllerType + ".write"));
- }
- properties.put("topic.sdnc.read", globalProperties.get("appc.client.topic.sdnc.read"));
- properties.put("topic.sdnc.write", globalProperties.get("appc.client.topic.sdnc.write"));
- properties.put("sdnc-topic.read", globalProperties.get("appc.client.topic.sdnc.read"));
- properties.put("sdnc-topic.write", globalProperties.get("appc.client.topic.sdnc.write"));
+
+ properties.put("topic.read", globalProperties.get("appc.client.topic.read"));
+ properties.put("topic.write", globalProperties.get("appc.client.topic.write"));
+ properties.put("SDNC-topic.read", globalProperties.get("appc.client.topic.sdnc.read"));
+ properties.put("SDNC-topic.write", globalProperties.get("appc.client.topic.sdnc.write"));
properties.put("topic.read.timeout", globalProperties.get("appc.client.topic.read.timeout"));
properties.put("client.response.timeout", globalProperties.get("appc.client.response.timeout"));
properties.put("poolMembers", globalProperties.get("appc.client.poolMembers"));
- properties.put("client.controllerType", controllerType);
+ properties.put("controllerType", controllerType);
properties.put("client.key", globalProperties.get("appc.client.key"));
properties.put("client.secret", globalProperties.get("appc.client.secret"));
properties.put("client.name", CLIENT_NAME);