fix for the E2EServiceInstances progress update 13/19513/1
authorSeshu-Kumar-M <seshu.kumar.m@huawei.com>
Wed, 18 Oct 2017 12:32:00 +0000 (18:02 +0530)
committerSeshu-Kumar-M <seshu.kumar.m@huawei.com>
Wed, 18 Oct 2017 12:32:00 +0000 (18:02 +0530)
IssueId : SO-205

Change-Id: I5650400729ab89b5b3ae1e8adb0e892390281489
Signed-off-by: Seshu-Kumar-M <seshu.kumar.m@huawei.com>
mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstancesTest.java

index 2386848..f33774f 100644 (file)
@@ -21,6 +21,7 @@
 package org.openecomp.mso.apihandlerinfra;
 
 import java.io.IOException;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -28,7 +29,6 @@ import java.util.Map;
 
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
@@ -39,6 +39,8 @@ import javax.ws.rs.core.Response;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.codehaus.jackson.map.ObjectMapper;
+import org.hibernate.Session;
+
 import org.openecomp.mso.apihandler.common.ErrorNumbers;
 import org.openecomp.mso.apihandler.common.RequestClient;
 import org.openecomp.mso.apihandler.common.RequestClientFactory;
@@ -51,6 +53,7 @@ import org.openecomp.mso.apihandlerinfra.serviceinstancebeans.RequestInfo;
 import org.openecomp.mso.apihandlerinfra.serviceinstancebeans.RequestParameters;
 import org.openecomp.mso.apihandlerinfra.serviceinstancebeans.ServiceInstancesRequest;
 import org.openecomp.mso.apihandlerinfra.serviceinstancebeans.SubscriberInfo;
+import org.openecomp.mso.db.AbstractSessionFactoryManager;
 import org.openecomp.mso.db.catalog.CatalogDatabase;
 import org.openecomp.mso.db.catalog.beans.Service;
 import org.openecomp.mso.db.catalog.beans.ServiceRecipe;
@@ -58,446 +61,483 @@ import org.openecomp.mso.logger.MessageEnum;
 import org.openecomp.mso.logger.MsoAlarmLogger;
 import org.openecomp.mso.logger.MsoLogger;
 import org.openecomp.mso.requestsdb.InfraActiveRequests;
+import org.openecomp.mso.requestsdb.OperationStatus;
 import org.openecomp.mso.requestsdb.RequestsDatabase;
+import org.openecomp.mso.requestsdb.RequestsDbSessionFactoryManager;
 import org.openecomp.mso.utils.UUIDChecker;
 
 import com.wordnik.swagger.annotations.Api;
 import com.wordnik.swagger.annotations.ApiOperation;
 
 @Path("/e2eServiceInstances")
-@Api(value="/e2eServiceInstances",description="API Requests for E2E Service Instances")
+@Api(value = "/e2eServiceInstances", description = "API Requests for E2E Service Instances")
 public class E2EServiceInstances {
 
-       private HashMap<String, String> instanceIdMap = new HashMap<String,String>();
-       private static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.APIH);
-       private static MsoAlarmLogger alarmLogger = new MsoAlarmLogger ();
-       public final static String MSO_PROP_APIHANDLER_INFRA = "MSO_PROP_APIHANDLER_INFRA";
-
-       public E2EServiceInstances() {
-       }
+       private HashMap<String, String> instanceIdMap = new HashMap<>();
+       private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH);
+       private static MsoAlarmLogger alarmLogger = new MsoAlarmLogger();
+       public static final String MSO_PROP_APIHANDLER_INFRA = "MSO_PROP_APIHANDLER_INFRA";
+       private ServiceInstancesRequest sir = null;
        
+       public static final String END_OF_THE_TRANSACTION = "End of the transaction, the final response is: ";
+       public static final String EXCEPTION_CREATING_DB_RECORD = "Exception while creating record in DB";
+       public static final String EXCEPTION_COMMUNICATE_BPMN_ENGINE = "Exception while communicate with BPMN engine";
+
        /**
-     *POST Requests for E2E Service create Instance on a version provided
-     */
+        * POST Requests for E2E Service create Instance on a version provided
+        */
 
        @POST
        @Path("/{version:[vV][3-5]}")
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.APPLICATION_JSON)
-       @ApiOperation(value="Create a E2E Service Instance on a version provided",response=Response.class)
+       @ApiOperation(value = "Create a E2E Service Instance on a version provided", response = Response.class)
        public Response createE2EServiceInstance(String request, @PathParam("version") String version) {
 
-        return E2EserviceInstances(request, Action.createInstance,     null, version);
+               return processE2EserviceInstances(request, Action.createInstance, null, version);
        }
 
        /**
-     *DELETE Requests for E2E Service delete Instance on a specified version and serviceId
-     */
-       
+        * DELETE Requests for E2E Service delete Instance on a specified version
+        * and serviceId
+        */
+
        @DELETE
        @Path("/{version:[vV][3-5]}/{serviceId}")
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.APPLICATION_JSON)
-       @ApiOperation(value="Delete E2E Service Instance on a specified version and serviceId",response=Response.class)
-       public Response deleteE2EServiceInstance(String request, @PathParam("version") String version, @PathParam("serviceId") String serviceId) {
+       @ApiOperation(value = "Delete E2E Service Instance on a specified version and serviceId", response = Response.class)
+       public Response deleteE2EServiceInstance(String request, @PathParam("version") String version,
+                       @PathParam("serviceId") String serviceId) {
 
-        instanceIdMap.put("serviceId", serviceId);
+               instanceIdMap.put("serviceId", serviceId);
 
-        return E2EserviceInstances(request, Action.deleteInstance, null, version);
+               return processE2EserviceInstances(request, Action.deleteInstance, null, version);
        }
-       
-       private Response E2EserviceInstances(String requestJSON, Action action,
-        HashMap<String, String> instanceIdMap, String version) {
+
+       private Response processE2EserviceInstances(String requestJSON, Action action,
+                       HashMap<String, String> instanceIdMap, String version) {
 
                String requestId = UUIDChecker.generateUUID(msoLogger);
                long startTime = System.currentTimeMillis();
                msoLogger.debug("requestId is: " + requestId);
-               E2EServiceInstanceRequest sir = null;
+               E2EServiceInstanceRequest e2eSir = null;
 
                MsoRequest msoRequest = new MsoRequest(requestId);
                ObjectMapper mapper = new ObjectMapper();
                try {
-                       sir = mapper
-                                       .readValue(requestJSON, E2EServiceInstanceRequest.class);
+                       e2eSir = mapper.readValue(requestJSON, E2EServiceInstanceRequest.class);
 
                } catch (Exception e) {
 
                        msoLogger.debug("Mapping of request to JSON object failed : ", e);
-                       Response response = msoRequest.buildServiceErrorResponse(
-                                       HttpStatus.SC_BAD_REQUEST,
-                                       MsoException.ServiceException,
-                                       "Mapping of request to JSON object failed.  "
-                                                       + e.getMessage(), ErrorNumbers.SVC_BAD_PARAMETER,
-                                                       null);
-                       msoLogger.error(MessageEnum.APIH_REQUEST_VALIDATION_ERROR,
-                                       MSO_PROP_APIHANDLER_INFRA, "", "",
+                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_REQUEST,
+                                       MsoException.ServiceException, "Mapping of request to JSON object failed.  " + e.getMessage(),
+                                       ErrorNumbers.SVC_BAD_PARAMETER, null);
+                       msoLogger.error(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "",
                                        MsoLogger.ErrorCode.SchemaError, requestJSON, e);
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
-                                       MsoLogger.ResponseCode.SchemaError,
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.SchemaError,
                                        "Mapping of request to JSON object failed");
-                       msoLogger.debug("End of the transaction, the final response is: "
-                                       + (String) response.getEntity());
+                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
                        return response;
                }
 
-               InfraActiveRequests dup = null;
-               String instanceName = sir.getService().getName();
-               String requestScope = sir.getService().getParameters().getNodeType();
+               mapReqJsonToSvcInstReq(e2eSir, requestJSON);
+               sir.getRequestDetails().getRequestParameters().setaLaCarte(true);
+               try {
+                       msoRequest.parse(sir, instanceIdMap, action, version);
+               } catch (Exception e) {
+                       msoLogger.debug("Validation failed: ", e);
+                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_REQUEST,
+                                       MsoException.ServiceException, "Error parsing request.  " + e.getMessage(),
+                                       ErrorNumbers.SVC_BAD_PARAMETER, null);
+                       if (msoRequest.getRequestId() != null) {
+                               msoLogger.debug("Logging failed message to the database");
+                               msoRequest.createRequestRecord(Status.FAILED, action);
+                       }
+                       msoLogger.error(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "",
+                                       MsoLogger.ErrorCode.SchemaError, requestJSON, e);
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.SchemaError,
+                                       "Validation of the input request failed");
+                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
+                       return response;
+               }
 
+               InfraActiveRequests dup = null;
+//             String instanceName = sir.getService().getName();
+//             String requestScope = sir.getService().getParameters().getNodeType();
+               String instanceName = sir.getRequestDetails().getRequestInfo().getInstanceName();
+               String requestScope = sir.getRequestDetails().getModelInfo().getModelType().name();
                try {
-                       if(!(instanceName==null && "service".equals(requestScope) && (action == Action.createInstance || action
-                                       == Action.activateInstance))){
-                               dup = (RequestsDatabase.getInstance()).checkInstanceNameDuplicate (instanceIdMap, instanceName, requestScope);
+                       if (!(instanceName == null && "service".equals(requestScope)
+                                       && (action == Action.createInstance || action == Action.activateInstance))) {
+                               dup = (RequestsDatabase.getInstance()).checkInstanceNameDuplicate(instanceIdMap, instanceName,
+                                               requestScope);
                        }
                } catch (Exception e) {
-                       msoLogger.error (MessageEnum.APIH_DUPLICATE_CHECK_EXC, MSO_PROP_APIHANDLER_INFRA, "", "", MsoLogger.ErrorCode.DataError, "Error during duplicate check ", e);
-
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR, MsoException.ServiceException,
-                                       e.getMessage(),
-                                       ErrorNumbers.SVC_DETAILED_SERVICE_ERROR,
-                                       null) ;
+                       msoLogger.error(MessageEnum.APIH_DUPLICATE_CHECK_EXC, MSO_PROP_APIHANDLER_INFRA, "", "",
+                                       MsoLogger.ErrorCode.DataError, "Error during duplicate check ", e);
 
+                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR,
+                                       MsoException.ServiceException, e.getMessage(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
 
-                       msoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, "Error during duplicate check");
-                       msoLogger.debug ("End of the transaction, the final response is: " + (String) response.getEntity ());
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
+                                       "Error during duplicate check");
+                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
                        return response;
                }
 
                if (dup != null) {
                        // Found the duplicate record. Return the appropriate error.
                        String instance = null;
-                       if(instanceName != null){
+                       if (instanceName != null) {
                                instance = instanceName;
-                       }else{
+                       } else {
                                instance = instanceIdMap.get(requestScope + "InstanceId");
                        }
-                       String dupMessage = "Error: Locked instance - This " + requestScope + " (" + instance + ") " + "already has a request being worked with a status of " + dup.getRequestStatus() + " (RequestId - " + dup.getRequestId() + "). The existing request must finish or be cleaned up before proceeding.";
-
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_CONFLICT, MsoException.ServiceException,
-                                       dupMessage,
-                                       ErrorNumbers.SVC_DETAILED_SERVICE_ERROR,
-                                       null) ;
-
-
-                       msoLogger.warn (MessageEnum.APIH_DUPLICATE_FOUND, dupMessage, "", "", MsoLogger.ErrorCode.SchemaError, "Duplicate request - Subscriber already has a request for this service");
-                       msoRequest.createRequestRecord (Status.FAILED, action);
-                       msoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.Conflict, dupMessage);
-                       msoLogger.debug ("End of the transaction, the final response is: " + (String) response.getEntity ());
+                       String dupMessage = "Error: Locked instance - This " + requestScope + " (" + instance + ") "
+                                       + "already has a request being worked with a status of " + dup.getRequestStatus() + " (RequestId - "
+                                       + dup.getRequestId() + "). The existing request must finish or be cleaned up before proceeding.";
+
+                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_CONFLICT,
+                                       MsoException.ServiceException, dupMessage, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
+
+                       msoLogger.warn(MessageEnum.APIH_DUPLICATE_FOUND, dupMessage, "", "", MsoLogger.ErrorCode.SchemaError,
+                                       "Duplicate request - Subscriber already has a request for this service");
+                       msoRequest.createRequestRecord(Status.FAILED, action);
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.Conflict,
+                                       dupMessage);
+                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
                        return response;
                }
-
+               
                CatalogDatabase db = null;
                RecipeLookupResult recipeLookupResult = null;
                try {
                        db = CatalogDatabase.getInstance();
-                       recipeLookupResult = getServiceInstanceOrchestrationURI(db, sir, action);
+                       recipeLookupResult = getServiceInstanceOrchestrationURI(db, action);
                } catch (Exception e) {
-                       msoLogger.error (MessageEnum.APIH_DB_ACCESS_EXC, MSO_PROP_APIHANDLER_INFRA, "", "", MsoLogger.ErrorCode.AvailabilityError, "Exception while communciate with Catalog DB", e);
-                       msoRequest.setStatus (org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
-                       Response response = msoRequest.buildServiceErrorResponse (HttpStatus.SC_NOT_FOUND,
-                                       MsoException.ServiceException,
-                                       "No communication to catalog DB " + e.getMessage (),
-                                       ErrorNumbers.SVC_NO_SERVER_RESOURCES,
-                                       null);
-                       alarmLogger.sendAlarm ("MsoDatabaseAccessError",
-                                       MsoAlarmLogger.CRITICAL,
-                                       Messages.errors.get (ErrorNumbers.NO_COMMUNICATION_TO_CATALOG_DB));
-                       msoRequest.createRequestRecord (Status.FAILED,action);
-                       msoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, "Exception while communciate with DB");
-                       msoLogger.debug ("End of the transaction, the final response is: " + (String) response.getEntity ());
+                       msoLogger.error(MessageEnum.APIH_DB_ACCESS_EXC, MSO_PROP_APIHANDLER_INFRA, "", "",
+                                       MsoLogger.ErrorCode.AvailabilityError, "Exception while communciate with Catalog DB", e);
+                       msoRequest.setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
+                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_NOT_FOUND,
+                                       MsoException.ServiceException, "No communication to catalog DB " + e.getMessage(),
+                                       ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
+                       alarmLogger.sendAlarm("MsoDatabaseAccessError", MsoAlarmLogger.CRITICAL,
+                                       Messages.errors.get(ErrorNumbers.NO_COMMUNICATION_TO_CATALOG_DB));
+                       msoRequest.createRequestRecord(Status.FAILED, action);
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
+                                       "Exception while communciate with DB");
+                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
                        return response;
                } finally {
-                       if(db != null) {
-                           db.close();
-                       }
+                       closeCatalogDB(db);
                }
 
                if (recipeLookupResult == null) {
-                       msoLogger.error (MessageEnum.APIH_DB_ATTRIBUTE_NOT_FOUND, MSO_PROP_APIHANDLER_INFRA, "", "", MsoLogger.ErrorCode.DataError, "No recipe found in DB");
-                       msoRequest.setStatus (org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
-                       Response response = msoRequest.buildServiceErrorResponse (HttpStatus.SC_NOT_FOUND,
-                                       MsoException.ServiceException,
-                                       "Recipe does not exist in catalog DB",
-                                       ErrorNumbers.SVC_GENERAL_SERVICE_ERROR,
-                                       null);
-                       msoRequest.createRequestRecord (Status.FAILED, action);
-                       msoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DataNotFound, "No recipe found in DB");
-                       msoLogger.debug ("End of the transaction, the final response is: " + (String) response.getEntity ());
+                       msoLogger.error(MessageEnum.APIH_DB_ATTRIBUTE_NOT_FOUND, MSO_PROP_APIHANDLER_INFRA, "", "",
+                                       MsoLogger.ErrorCode.DataError, "No recipe found in DB");
+                       msoRequest.setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
+                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_NOT_FOUND,
+                                       MsoException.ServiceException, "Recipe does not exist in catalog DB",
+                                       ErrorNumbers.SVC_GENERAL_SERVICE_ERROR, null);
+                       msoRequest.createRequestRecord(Status.FAILED, action);
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DataNotFound,
+                                       "No recipe found in DB");
+                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
 
                        return response;
                }
 
                try {
-                       msoRequest.createRequestRecord (Status.PENDING, action);
+                       msoRequest.createRequestRecord(Status.PENDING, action);
+                       createOperationStatusRecord(action, requestId);
                } catch (Exception e) {
-                       msoLogger.error (MessageEnum.APIH_DB_ACCESS_EXC_REASON, "Exception while creating record in DB", "", "", MsoLogger.ErrorCode.SchemaError, "Exception while creating record in DB", e);
-                       msoRequest.setStatus (org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
-                       Response response = msoRequest.buildServiceErrorResponse (HttpStatus.SC_INTERNAL_SERVER_ERROR,
-                                       MsoException.ServiceException,
-                                       "Exception while creating record in DB " + e.getMessage(),
-                                       ErrorNumbers.SVC_BAD_PARAMETER,
-                                       null);
-                       msoLogger.recordAuditEvent (startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError, "Exception while creating record in DB");
-                       msoLogger.debug ("End of the transaction, the final response is: " + (String) response.getEntity ());
+                       msoLogger.error(MessageEnum.APIH_DB_ACCESS_EXC_REASON, "Exception while creating record in DB", "", "",
+                                       MsoLogger.ErrorCode.SchemaError, "Exception while creating record in DB", e);
+                       msoRequest.setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
+                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR,
+                                       MsoException.ServiceException, "Exception while creating record in DB " + e.getMessage(),
+                                       ErrorNumbers.SVC_BAD_PARAMETER, null);
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
+                                       "Exception while creating record in DB");
+                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
                        return response;
                }
 
-               String modelInfo = sir.getService().getParameters().getNodeTemplateName();
+               String modelInfo = e2eSir.getService().getParameters().getNodeTemplateName();
                String[] arrayOfInfo = modelInfo.split(":");
                String serviceInstanceType = arrayOfInfo[0];
 
-
-
                String serviceId = "";
 
                RequestClient requestClient = null;
                HttpResponse response = null;
 
                long subStartTime = System.currentTimeMillis();
-               String sirRequestJson = mappingObtainedRequestJSONToServiceInstanceRequest(sir);
+               String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
 
                try {
-                       requestClient = RequestClientFactory.getRequestClient (recipeLookupResult.getOrchestrationURI (), MsoPropertiesUtils.loadMsoProperties ());
+                       requestClient = RequestClientFactory.getRequestClient(recipeLookupResult.getOrchestrationURI(),
+                                       MsoPropertiesUtils.loadMsoProperties());
 
                        // Capture audit event
-                       msoLogger.debug ("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl ());
+                       msoLogger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl());
 
-                       response = requestClient.post(requestId, false,
-                                       recipeLookupResult.getRecipeTimeout(),
-                                       action.name(), serviceId, null, null, null, null, serviceInstanceType,
-                                       null, null, null, sirRequestJson);
+                       response = requestClient.post(requestId, false, recipeLookupResult.getRecipeTimeout(), action.name(),
+                                       serviceId, null, null, null, null, serviceInstanceType, null, null, null, sirRequestJson);
 
-                       msoLogger.recordMetricEvent(subStartTime,
-                                       MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
-                                       "Successfully received response from BPMN engine", "BPMN",
-                                       recipeLookupResult.getOrchestrationURI(), null);
+                       msoLogger.recordMetricEvent(subStartTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                                       "Successfully received response from BPMN engine", "BPMN", recipeLookupResult.getOrchestrationURI(),
+                                       null);
                } catch (Exception e) {
-                       msoLogger.recordMetricEvent(subStartTime,
-                                       MsoLogger.StatusCode.ERROR,
-                                       MsoLogger.ResponseCode.CommunicationError,
-                                       "Exception while communicate with BPMN engine", "BPMN",
+                       msoLogger.recordMetricEvent(subStartTime, MsoLogger.StatusCode.ERROR,
+                                       MsoLogger.ResponseCode.CommunicationError, "Exception while communicate with BPMN engine", "BPMN",
                                        recipeLookupResult.getOrchestrationURI(), null);
-                       Response resp = msoRequest.buildServiceErrorResponse(
-                                       HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException,
-                                       "Failed calling bpmn " + e.getMessage(),
+                       Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY,
+                                       MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(),
                                        ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
-                       alarmLogger.sendAlarm("MsoConfigurationError",
-                                       MsoAlarmLogger.CRITICAL,
+                       alarmLogger.sendAlarm("MsoConfigurationError", MsoAlarmLogger.CRITICAL,
                                        Messages.errors.get(ErrorNumbers.NO_COMMUNICATION_TO_BPEL));
-                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR,
-                                       MSO_PROP_APIHANDLER_INFRA, "", "",
-                                       MsoLogger.ErrorCode.AvailabilityError,
+                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "",
+                                       MsoLogger.ErrorCode.AvailabilityError, "Exception while communicate with BPMN engine");
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError,
                                        "Exception while communicate with BPMN engine");
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
-                                       MsoLogger.ResponseCode.CommunicationError,
-                                       "Exception while communicate with BPMN engine");
-                       msoLogger.debug("End of the transaction, the final response is: "
-                                       + (String) resp.getEntity());
+                       msoLogger.debug("End of the transaction, the final response is: " + (String) resp.getEntity());
                        return resp;
                }
 
                if (response == null) {
-                       Response resp = msoRequest.buildServiceErrorResponse(
-                                       HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException,
-                                       "bpelResponse is null",
-                                       ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
-                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR,
-                                       MSO_PROP_APIHANDLER_INFRA, "", "",
-                                       MsoLogger.ErrorCode.BusinessProcesssError,
-                                       "Null response from BPEL");
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
-                                       MsoLogger.ResponseCode.InternalError,
+                       Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY,
+                                       MsoException.ServiceException, "bpelResponse is null", ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
+                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "",
+                                       MsoLogger.ErrorCode.BusinessProcesssError, "Null response from BPEL");
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.InternalError,
                                        "Null response from BPMN");
-                       msoLogger.debug("End of the transaction, the final response is: "
-                                       + (String) resp.getEntity());
+                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
                        return resp;
                }
 
-               ResponseHandler respHandler = new ResponseHandler(response,
-                               requestClient.getType());
+               ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType());
                int bpelStatus = respHandler.getStatus();
 
+               return beplStatusUpdate(requestId, startTime, msoRequest, requestClient, respHandler, bpelStatus);
+       }
+
+       private void closeCatalogDB(CatalogDatabase db) {
+               if (db != null) {
+                       db.close();
+               }
+       }
+
+       private InfraActiveRequests checkForDuplicateRecord(Action action, HashMap<String, String> instanceIdMap,
+                       String instanceName, String requestScope) {
+               InfraActiveRequests dupValue = null;
+               if (!(instanceName == null && "service".equals(requestScope)
+                               && (action == Action.createInstance || action == Action.activateInstance))) {
+                       dupValue = (RequestsDatabase.getInstance()).checkInstanceNameDuplicate(instanceIdMap, instanceName,
+                                       requestScope);
+               }
+               return dupValue;
+       }
+
+       private Response duplicateRecordFound(Action action, HashMap<String, String> instanceIdMap, long startTime,
+                       MsoRequest msoRequest, InfraActiveRequests dup, String instanceName, String requestScope) {
+               String instance = null;
+               if (instanceName != null) {
+                       instance = instanceName;
+               } else {
+                       instance = instanceIdMap.get(requestScope + "InstanceId");
+               }
+               String dupMessage = "Error: Locked instance - This " + requestScope + " (" + instance + ") "
+                               + "already has a request being worked with a status of " + dup.getRequestStatus() + " (RequestId - "
+                               + dup.getRequestId() + "). The existing request must finish or be cleaned up before proceeding.";
+
+               Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_CONFLICT, MsoException.ServiceException,
+                               dupMessage, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
+
+               msoLogger.warn(MessageEnum.APIH_DUPLICATE_FOUND, dupMessage, "", "", MsoLogger.ErrorCode.SchemaError,
+                               "Duplicate request - Subscriber already has a request for this service");
+               msoRequest.createRequestRecord(Status.FAILED, action);
+               msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.Conflict, dupMessage);
+               msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
+               return response;
+       }
+
+       private Response beplStatusUpdate(String requestId, long startTime, MsoRequest msoRequest,
+                       RequestClient requestClient, ResponseHandler respHandler, int bpelStatus) {
                // BPEL accepted the request, the request is in progress
                if (bpelStatus == HttpStatus.SC_ACCEPTED) {
                        String camundaJSONResponseBody = respHandler.getResponseBody();
-                       msoLogger
-                       .debug("Received from Camunda: " + camundaJSONResponseBody);
-                       (RequestsDatabase.getInstance()).updateInfraStatus(requestId,
-                                       Status.IN_PROGRESS.toString(),
-                                       Constants.PROGRESS_REQUEST_IN_PROGRESS,
-                                       Constants.MODIFIED_BY_APIHANDLER);
-
-                       msoLogger.recordAuditEvent(startTime,
-                                       MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                       msoLogger.debug("Received from Camunda: " + camundaJSONResponseBody);
+                       (RequestsDatabase.getInstance()).updateInfraStatus(requestId, Status.IN_PROGRESS.toString(),
+                                       Constants.PROGRESS_REQUEST_IN_PROGRESS, Constants.MODIFIED_BY_APIHANDLER);
+
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
                                        "BPMN accepted the request, the request is in progress");
-                       msoLogger.debug("End of the transaction, the final response is: "
-                                       + (String) camundaJSONResponseBody);
-                       return Response.status(HttpStatus.SC_ACCEPTED)
-                                       .entity(camundaJSONResponseBody).build();
+                       msoLogger.debug(END_OF_THE_TRANSACTION + camundaJSONResponseBody);
+                       return Response.status(HttpStatus.SC_ACCEPTED).entity(camundaJSONResponseBody).build();
                } else {
-                       List<String> variables = new ArrayList<String>();
+                       List<String> variables = new ArrayList<>();
                        variables.add(bpelStatus + "");
                        String camundaJSONResponseBody = respHandler.getResponseBody();
-                       if (camundaJSONResponseBody != null
-                                       && !camundaJSONResponseBody.isEmpty()) {
-                               Response resp = msoRequest.buildServiceErrorResponse(
-                                               bpelStatus, MsoException.ServiceException,
-                                               "Request Failed due to BPEL error with HTTP Status= %1 "
-                                                               + '\n' + camundaJSONResponseBody,
-                                                               ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, variables);
-                               msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR,
-                                               requestClient.getUrl(), "", "",
+                       if (camundaJSONResponseBody != null && !camundaJSONResponseBody.isEmpty()) {
+                               Response resp = msoRequest.buildServiceErrorResponse(bpelStatus, MsoException.ServiceException,
+                                               "Request Failed due to BPEL error with HTTP Status= %1 " + '\n' + camundaJSONResponseBody,
+                                               ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, variables);
+                               msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR, requestClient.getUrl(), "", "",
                                                MsoLogger.ErrorCode.BusinessProcesssError,
-                                               "Response from BPEL engine is failed with HTTP Status="
-                                                               + bpelStatus);
-                               msoLogger.recordAuditEvent(startTime,
-                                               MsoLogger.StatusCode.ERROR,
-                                               MsoLogger.ResponseCode.InternalError,
+                                               "Response from BPEL engine is failed with HTTP Status=" + bpelStatus);
+                               msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.InternalError,
                                                "Response from BPMN engine is failed");
-                               msoLogger
-                               .debug("End of the transaction, the final response is: "
-                                               + (String) resp.getEntity());
+                               msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
                                return resp;
                        } else {
-                               Response resp = msoRequest
-                                               .buildServiceErrorResponse(
-                                                               bpelStatus,
-                                                               MsoException.ServiceException,
-                                                               "Request Failed due to BPEL error with HTTP Status= %1",
-                                                               ErrorNumbers.SVC_DETAILED_SERVICE_ERROR,
-                                                               variables);
-                               msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR,
-                                               requestClient.getUrl(), "", "",
-                                               MsoLogger.ErrorCode.BusinessProcesssError,
-                                               "Response from BPEL engine is empty");
-                               msoLogger.recordAuditEvent(startTime,
-                                               MsoLogger.StatusCode.ERROR,
-                                               MsoLogger.ResponseCode.InternalError,
+                               Response resp = msoRequest.buildServiceErrorResponse(bpelStatus, MsoException.ServiceException,
+                                               "Request Failed due to BPEL error with HTTP Status= %1",
+                                               ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, variables);
+                               msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR, requestClient.getUrl(), "", "",
+                                               MsoLogger.ErrorCode.BusinessProcesssError, "Response from BPEL engine is empty");
+                               msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.InternalError,
                                                "Response from BPEL engine is empty");
-                               msoLogger
-                               .debug("End of the transaction, the final response is: "
-                                               + (String) resp.getEntity());
+                               msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
                                return resp;
                        }
                }
        }
 
-       private RecipeLookupResult getServiceInstanceOrchestrationURI(
-                       CatalogDatabase db, E2EServiceInstanceRequest sir, Action action) {
-
-               RecipeLookupResult recipeLookupResult = null;
+       /**
+        * Getting recipes from catalogDb
+        * 
+        * @param db
+        * @param action
+        * @return
+        */
+       private RecipeLookupResult getServiceInstanceOrchestrationURI(CatalogDatabase db, Action action) {
 
-               recipeLookupResult = getServiceURI(db, sir, action);
+               RecipeLookupResult recipeLookupResult = getServiceURI(db, action);
 
                if (recipeLookupResult != null) {
-                       msoLogger.debug ("Orchestration URI is: " + recipeLookupResult.getOrchestrationURI() + ", recipe Timeout is: " + Integer.toString(recipeLookupResult.getRecipeTimeout ()));
-               }
-               else {
+                       msoLogger.debug("Orchestration URI is: " + recipeLookupResult.getOrchestrationURI()
+                                       + ", recipe Timeout is: " + Integer.toString(recipeLookupResult.getRecipeTimeout()));
+               else {
                        msoLogger.debug("No matching recipe record found");
                }
                return recipeLookupResult;
        }
 
-       private RecipeLookupResult getServiceURI(CatalogDatabase db,
-                       E2EServiceInstanceRequest sir, Action action) {
+       /**
+        * Getting recipes from catalogDb
+        * 
+        * @param db
+        * @param action
+        * @return
+        */
+       private RecipeLookupResult getServiceURI(CatalogDatabase db, Action action) {
 
                String defaultServiceModelName = "UUI_DEFAULT";
 
-               Service serviceRecord = null;
-               ServiceRecipe recipe = null;
-
-               serviceRecord = db.getServiceByModelName(defaultServiceModelName);
-               recipe = db.getServiceRecipeByModelUUID(serviceRecord.getModelUUID(), action.name());
+               Service serviceRecord = db.getServiceByModelName(defaultServiceModelName);
+               ServiceRecipe recipe = db.getServiceRecipeByModelUUID(serviceRecord.getModelUUID(), action.name());
 
                if (recipe == null) {
                        return null;
                }
-               return new RecipeLookupResult(recipe.getOrchestrationUri(),
-                               recipe.getRecipeTimeout());
+               return new RecipeLookupResult(recipe.getOrchestrationUri(), recipe.getRecipeTimeout());
 
        }
 
-       private String mappingObtainedRequestJSONToServiceInstanceRequest(E2EServiceInstanceRequest e2eSir){
+       /**
+        * Converting E2EServiceInstanceRequest to ServiceInstanceRequest and
+        * passing it to camunda engine.
+        * 
+        * @param e2eSir
+        * @return
+        */
+       private String mapReqJsonToSvcInstReq(E2EServiceInstanceRequest e2eSir, String requestJSON) {
 
-               ServiceInstancesRequest sir = new ServiceInstancesRequest();
+               sir = new ServiceInstancesRequest();
 
                String returnString = null;
                RequestDetails requestDetails = new RequestDetails();
                ModelInfo modelInfo = new ModelInfo();
-               
-               //ModelInvariantId
+
+               // ModelInvariantId
                modelInfo.setModelInvariantId(e2eSir.getService().getServiceDefId());
-               
-               //modelNameVersionId
+
+               // modelNameVersionId
                modelInfo.setModelNameVersionId(e2eSir.getService().getTemplateId());
-               
+
                String modelInfoValue = e2eSir.getService().getParameters().getNodeTemplateName();
                String[] arrayOfInfo = modelInfoValue.split(":");
                String modelName = arrayOfInfo[0];
                String modelVersion = arrayOfInfo[1];
-               
-               //modelName
+
+               // modelName
                modelInfo.setModelName(modelName);
-               
-               //modelVersion
+
+               // modelVersion
                modelInfo.setModelVersion(modelVersion);
-               
-               //modelType
-               //if(ModelType.service.equals(e2eSir.getService().getParameters().getNodeType())){
-                       modelInfo.setModelType(ModelType.service);
-               //}
-               
-               //setting modelInfo to requestDetails
+
+               // modelType
+               modelInfo.setModelType(ModelType.service);
+
+               // setting modelInfo to requestDetails
                requestDetails.setModelInfo(modelInfo);
-               
+
                SubscriberInfo subscriberInfo = new SubscriberInfo();
 
-               //globalsubscriberId
+               // globalsubscriberId
                subscriberInfo.setGlobalSubscriberId(e2eSir.getService().getParameters().getGlobalSubscriberId());
 
-               //subscriberName
+               // subscriberName
                subscriberInfo.setSubscriberName(e2eSir.getService().getParameters().getSubscriberName());
-               
-               //setting subscriberInfo to requestDetails
+
+               // setting subscriberInfo to requestDetails
                requestDetails.setSubscriberInfo(subscriberInfo);
-               
+
                RequestInfo requestInfo = new RequestInfo();
-               
-               //instanceName
+
+               // instanceName
                requestInfo.setInstanceName(e2eSir.getService().getName());
 
-               //source
+               // source
                requestInfo.setSource("UUI");
 
-               //suppressRollback
+               // suppressRollback
                requestInfo.setSuppressRollback(true);
 
-               //setting requestInfo to requestDetails
+               // setting requestInfo to requestDetails
                requestDetails.setRequestInfo(requestInfo);
-               
+
                RequestParameters requestParameters = new RequestParameters();
-               
-               //subscriptionServiceType
+
+               // subscriptionServiceType
                requestParameters.setSubscriptionServiceType("MOG");
 
-               //Userparams
+               // Userparams
                List<E2EUserParam> userParams;
                userParams = e2eSir.getService().getParameters().getRequestParameters().getUserParams();
                List<Map<String, String>> userParamList = new ArrayList<>();
-               Map<String,String> userParamMap= new HashMap<>();
-               for(E2EUserParam userp: userParams){
+               Map<String, String> userParamMap = new HashMap<>();
+               //complete json request updated in the camunda
+               userParamMap.put("UUIRequest", requestJSON);
+               userParamMap.put("ServiceInstanceName", e2eSir.getService().getName());
+
+               Map<String, String> userParamMap3 = null;
+               for (E2EUserParam userp : userParams) {
                        userParamMap.put(userp.getName(), userp.getValue());
                        userParamList.add(userParamMap);
                }
 
                requestParameters.setUserParams(userParamList);
-               
-               //setting requestParameters to requestDetails
+
+               // setting requestParameters to requestDetails
                requestDetails.setRequestParameters(requestParameters);
-               
+
                sir.setRequestDetails(requestDetails);
 
-               //converting to string
+               // converting to string
                ObjectMapper mapper = new ObjectMapper();
                try {
                        returnString = mapper.writeValueAsString(sir);
@@ -507,4 +547,42 @@ public class E2EServiceInstances {
 
                return returnString;
        }
+
+       private void createOperationStatusRecord(Action action, String requestId) {
+               {
+                       AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager();
+
+                       Session session = null;
+                       try {
+
+                               session = requestsDbSessionFactoryManager.getSessionFactory().openSession();
+                               session.beginTransaction();
+
+                               // if (null == sir) {
+                               // sir = new ServiceInstancesRequest();
+                               // }
+                               OperationStatus os = new OperationStatus();
+                               os.setOperation(action.name());
+                               os.setOperationContent("");
+                               os.setOperationId("");
+                               os.setProgress("0");
+                               os.setReason("");
+                               os.setResult("Processing");
+                               os.setServiceId(requestId);
+                               os.setUserId("");
+                               os.setFinishedAt(new Timestamp(System.currentTimeMillis()));
+                               os.setOperateAt(new Timestamp(System.currentTimeMillis()));
+
+                               session.save(os);
+                               session.getTransaction().commit();
+
+                       } catch (Exception e) {
+                               msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.DataError, "Exception when creation record request in Operation", e);
+                       } finally {
+                               if (null != session) {
+                                       session.close();
+                               }
+                       }
+               }
+       }
 }
\ No newline at end of file
index 98a2a11..b247d81 100644 (file)
@@ -111,7 +111,7 @@ public class E2EServiceInstancesTest {
         };\r
         \r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("Exception while creating record in DB null") != -1);\r
@@ -175,7 +175,7 @@ public class E2EServiceInstancesTest {
         };\r
         \r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("Exception while creating record in DB null") != -1);\r
@@ -239,7 +239,7 @@ public class E2EServiceInstancesTest {
         };\r
         \r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("Exception while creating record in DB null") != -1);\r
@@ -291,7 +291,7 @@ public class E2EServiceInstancesTest {
         };\r
         \r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("Exception while creating record in DB null") != -1);\r
@@ -340,7 +340,7 @@ public class E2EServiceInstancesTest {
         };\r
         \r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("Exception while creating record in DB null") != -1);\r
@@ -370,7 +370,7 @@ public class E2EServiceInstancesTest {
             }\r
         };\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("Exception while creating record in DB null") != -1);\r
@@ -401,7 +401,7 @@ public class E2EServiceInstancesTest {
             }\r
         };\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                //assertTrue(respStr.indexOf("Recipe could not be retrieved from catalog DB ") !=-1);\r
@@ -422,7 +422,7 @@ public class E2EServiceInstancesTest {
             }\r
         };\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("The existing request must finish or be cleaned up before proceeding.") != -1);\r
@@ -437,7 +437,7 @@ public class E2EServiceInstancesTest {
             }\r
         };\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                //assertTrue(respStr.indexOf("Recipe could not be retrieved from catalog DB ") != -1);\r
@@ -447,7 +447,7 @@ public class E2EServiceInstancesTest {
        @Test\r
        public void createE2EServiceInstanceTestDBQueryFail(){\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("SVC2000") != -1);\r
@@ -465,7 +465,7 @@ public class E2EServiceInstancesTest {
        @Test\r
        public void deleteE2EServiceInstanceTestNormal(){\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
+               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
                Response resp = instance.deleteE2EServiceInstance(request, "v3", "12345678");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("SVC2000") != -1);\r