diff options
14 files changed, 100 insertions, 657 deletions
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/AaiUtil.java b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/AaiUtil.java index 89c100d084..29f27d05e9 100644 --- a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/AaiUtil.java +++ b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/AaiUtil.java @@ -32,13 +32,13 @@ import org.openecomp.mso.adapters.vfc.model.RestfulResponse; */ public class AaiUtil { - public static RestfulResponse addRelation(String serviceInstanceID, String resourceInstanceID) + public static RestfulResponse addRelation(String globalSubsriberId, String serviceType, String serviceInstanceId, String resourceInstanceId) { //sent rest to aai to add relation for service and ns. return null; } - public static RestfulResponse removeRelation(String serviceInstanceID ,String resourceInstanceID) + public static RestfulResponse removeRelation(String globalSubsriberId, String serviceType, String serviceInstanceId ,String resourceInstanceId) { //sent rest to aai to remove relation between service an ns. return null; diff --git a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcAdapterRest.java b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcAdapterRest.java index 438393bc35..f4c295337a 100644 --- a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcAdapterRest.java +++ b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcAdapterRest.java @@ -22,6 +22,7 @@ package org.openecomp.mso.adapters.vfc; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; @@ -92,7 +93,7 @@ public class VfcAdapterRest { * @return response * @since ONAP Amsterdam Release */ - @POST + @DELETE @Path("/ns/{nsInstanceId}") @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) diff --git a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcManager.java b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcManager.java index f4572c8351..c2d5fe241c 100644 --- a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcManager.java +++ b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/VfcManager.java @@ -17,6 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.openecomp.mso.adapters.vfc; import java.util.HashMap; @@ -51,7 +52,7 @@ import org.slf4j.LoggerFactory; * </p> * * @author - * @version ONAP Amsterdam Release 2017-08-28 + * @version ONAP Amsterdam Release 2017-08-28 */ public class VfcManager { @@ -71,14 +72,15 @@ public class VfcManager { nfvoUrlMap.put(Step.QUERY, CommonConstant.NFVO_QUERY_URL); } - public VfcManager(){ - + public VfcManager() { + } + /** * create network service * <br> * - * @param segInput input parameters for current node from http request + * @param segInput input parameters for current node from http request * @return * @since ONAP Amsterdam Release */ @@ -117,7 +119,9 @@ public class VfcManager { LOGGER.info("create ns -> end"); LOGGER.info("save segment and operaton info -> begin"); // Step 5: add relation between service and NS - AaiUtil.addRelation(segInput.getNsOperationKey().getServiceId(), nsInstanceId); + AaiUtil.addRelation(segInput.getNsOperationKey().getGlobalSubscriberId(), + segInput.getNsOperationKey().getServiceType(), segInput.getNsOperationKey().getServiceId(), + nsInstanceId); // Step 6: save resource operation information ResourceOperationStatus nsOperInfo = (RequestsDatabase.getInstance()).getResourceOperationStatus( @@ -146,7 +150,7 @@ public class VfcManager { * @return * @since ONAP Amsterdam Release */ - public RestfulResponse deleteNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException{ + public RestfulResponse deleteNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException { LOGGER.info("delete ns -> begin"); // Step1: prepare url and methodType String url = getUrl(nsInstanceId, CommonConstant.Step.DELETE); @@ -158,8 +162,8 @@ public class VfcManager { LOGGER.info("delete ns response status is : {}", deleteRsp.getStatus()); LOGGER.info("delete ns response content is : {}", deleteRsp.getResponseContent()); LOGGER.info("delete ns -> end"); - ResourceOperationStatus nsOperInfo = (RequestsDatabase.getInstance()).getResourceOperationStatus(nsOperationKey.getServiceId(), - nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID()); + ResourceOperationStatus nsOperInfo = (RequestsDatabase.getInstance()).getResourceOperationStatus( + nsOperationKey.getServiceId(), nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID()); if(!HttpCode.isSucess(deleteRsp.getStatus())) { LOGGER.error("fail to delete ns"); @@ -171,7 +175,8 @@ public class VfcManager { } // Step3: remove relation info between service and ns - AaiUtil.removeRelation(nsOperationKey.getServiceId(), nsInstanceId); + AaiUtil.removeRelation(nsOperationKey.getGlobalSubscriberId(), nsOperationKey.getServiceType(), + nsOperationKey.getServiceId(), nsInstanceId); LOGGER.info("delete segment information -> end"); // Step4: update service segment operation status @@ -188,12 +193,13 @@ public class VfcManager { * instantiate network service * <br> * - * @param nsInstanceId The NS instance id + * @param nsInstanceId The NS instance id * @param segInput input parameters for current node from http request * @return * @since ONAP Amsterdam Release */ - public RestfulResponse instantiateNs(String nsInstanceId, NSResourceInputParameter segInput) throws ApplicationException{ + public RestfulResponse instantiateNs(String nsInstanceId, NSResourceInputParameter segInput) + throws ApplicationException { // Call the NFVO or SDNO service to instantiate service LOGGER.info("instantiate ns -> begin"); @@ -257,11 +263,11 @@ public class VfcManager { * @return * @since ONAP Amsterdam Release */ - public RestfulResponse terminateNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException{ + public RestfulResponse terminateNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException { // Step1: save segment operation info for delete process LOGGER.info("save segment operation for delete process"); - ResourceOperationStatus nsOperInfo = (RequestsDatabase.getInstance()).getResourceOperationStatus(nsOperationKey.getServiceId(), - nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID()); + ResourceOperationStatus nsOperInfo = (RequestsDatabase.getInstance()).getResourceOperationStatus( + nsOperationKey.getServiceId(), nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID()); nsOperInfo.setStatus(RequestsDbConstant.Status.PROCESSING); (RequestsDatabase.getInstance()).updateResOperStatus(nsOperInfo); @@ -322,12 +328,12 @@ public class VfcManager { * @return * @since ONAP Amsterdam Release */ - public RestfulResponse getNsProgress(NsOperationKey nsOperationKey, String jobId) throws ApplicationException{ + public RestfulResponse getNsProgress(NsOperationKey nsOperationKey, String jobId) throws ApplicationException { ValidateUtil.assertObjectNotNull(jobId); // Step 1: query the current resource operation status - ResourceOperationStatus nsOperInfo = (RequestsDatabase.getInstance()).getResourceOperationStatus(nsOperationKey.getServiceId(), - nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID()); + ResourceOperationStatus nsOperInfo = (RequestsDatabase.getInstance()).getResourceOperationStatus( + nsOperationKey.getServiceId(), nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID()); // Step 2: start query LOGGER.info("query ns status -> begin"); @@ -338,7 +344,7 @@ public class VfcManager { ValidateUtil.assertObjectNotNull(rsp); LOGGER.info("query ns progress response status is : {}", rsp.getStatus()); LOGGER.info("query ns progress response content is : {}", rsp.getResponseContent()); - //Step 3:check the response staus + // Step 3:check the response staus if(!HttpCode.isSucess(rsp.getStatus())) { LOGGER.info("fail to query job status"); nsOperInfo.setErrorCode(String.valueOf(rsp.getStatus())); diff --git a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/model/NsOperationKey.java b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/model/NsOperationKey.java index d6cfbde906..e4d6d66cda 100644 --- a/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/model/NsOperationKey.java +++ b/adapters/mso-vfc-adapter/src/main/java/org/openecomp/mso/adapters/vfc/model/NsOperationKey.java @@ -31,6 +31,16 @@ package org.openecomp.mso.adapters.vfc.model; public class NsOperationKey {
/**
+ * The subscriber id
+ */
+ private String globalSubscriberId;
+
+ /**
+ * The serviceType
+ */
+ private String serviceType;
+
+ /**
* The service ID
*/
private String serviceId;
@@ -45,6 +55,41 @@ public class NsOperationKey { */
private String nodeTemplateUUID;
+
+
+
+ /**
+ * @return Returns the globalSubscriberId.
+ */
+ public String getGlobalSubscriberId() {
+ return globalSubscriberId;
+ }
+
+
+ /**
+ * @param globalSubscriberId The globalSubscriberId to set.
+ */
+ public void setGlobalSubscriberId(String globalSubscriberId) {
+ this.globalSubscriberId = globalSubscriberId;
+ }
+
+ /**
+ * @return Returns the serviceType.
+ */
+ public String getServiceType() {
+ return serviceType;
+ }
+
+
+
+ /**
+ * @param serviceType The serviceType to set.
+ */
+ public void setServiceType(String serviceType) {
+ this.serviceType = serviceType;
+ }
+
+
/**
*
* <br>
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/openecomp/mso/adapters/vfc/VfcAdapterTest.java b/adapters/mso-vfc-adapter/src/test/java/org/openecomp/mso/adapters/vfc/VfcAdapterTest.java index 4c316f3196..f17c7215cf 100644 --- a/adapters/mso-vfc-adapter/src/test/java/org/openecomp/mso/adapters/vfc/VfcAdapterTest.java +++ b/adapters/mso-vfc-adapter/src/test/java/org/openecomp/mso/adapters/vfc/VfcAdapterTest.java @@ -95,9 +95,16 @@ public class VfcAdapterTest { */ @Mock public RestfulResponse send(String url, String methodType, String content) { - if(url.contains(CommonConstant.NFVO_CREATE_URL) && methodType.equals(CommonConstant.MethodType.POST)) { + if(url.equals(CommonConstant.NFVO_CREATE_URL) && methodType.equals(CommonConstant.MethodType.POST)) { return getResponse("createNsRsp.json"); - } else { + } else if(url.contains("instantiate") && methodType.equals(CommonConstant.MethodType.POST)) { + return getResponse("instantiateNsRsp.json"); + } else if(methodType.equals(CommonConstant.MethodType.DELETE)) { + return getResponse(null); + } else if(url.contains("terminate") && methodType.equals(CommonConstant.MethodType.POST)) { + return getResponse("terminateNsRsp.json"); + } + else { return null; } } @@ -175,17 +182,22 @@ public class VfcAdapterTest { @Test public void deleteTest() { - + // get request + mockRestfulUtil(FILE_PATH + "deleteNsReq.json"); + vfcAdapter.deleteNfvoNs(null, "9b9f02c0-298b-458a-bc9c-be3692e4f354"); } @Test public void instantiateTest() { - + // get request + mockRestfulUtil(FILE_PATH + "instantiateNsReq.json"); + vfcAdapter.instantiateNfvoNs(null, "9b9f02c0-298b-458a-bc9c-be3692e4f354"); } @Test public void terminateTest() { - + mockRestfulUtil(FILE_PATH + "terminateNsReq.json"); + vfcAdapter.terminateNfvoNs(null, "9b9f02c0-298b-458a-bc9c-be3692e4f354"); } @Test diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json index da50897b7c..9534e5ece5 100644 --- a/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json +++ b/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json @@ -2,6 +2,8 @@ "nsServiceName":"vIMS", "nsServiceDescription":"vIMS NS", "nsOperationKey":{ + "globalSubscriberId":"9b9f02c0-298b-458a-bc9c-be3692e4f350", + "serviceType":"service", "serviceId":"9b9f02c0-298b-458a-bc9c-be3692e4f351", "operationId":"9b9f02c0-298b-458a-bc9c-be3692e4f352", "nodeTemplateUUID":"9b9f02c0-298b-458a-bc9c-be3692e4f353" diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/deleteNsReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/deleteNsReq.json index 4f7c29f9d0..ac095e6aa3 100644 --- a/adapters/mso-vfc-adapter/src/test/resources/json/deleteNsReq.json +++ b/adapters/mso-vfc-adapter/src/test/resources/json/deleteNsReq.json @@ -1,4 +1,6 @@ { + "globalSubscriberId":"9b9f02c0-298b-458a-bc9c-be3692e4f350", + "serviceType":"service", "serviceId":"9b9f02c0-298b-458a-bc9c-be3692e4f351", "operationId":"9b9f02c0-298b-458a-bc9c-be3692e4f352", "nodeTemplateUUID":"9b9f02c0-298b-458a-bc9c-be3692e4f353" diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsReq.json index da50897b7c..9534e5ece5 100644 --- a/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsReq.json +++ b/adapters/mso-vfc-adapter/src/test/resources/json/instantiateNsReq.json @@ -2,6 +2,8 @@ "nsServiceName":"vIMS", "nsServiceDescription":"vIMS NS", "nsOperationKey":{ + "globalSubscriberId":"9b9f02c0-298b-458a-bc9c-be3692e4f350", + "serviceType":"service", "serviceId":"9b9f02c0-298b-458a-bc9c-be3692e4f351", "operationId":"9b9f02c0-298b-458a-bc9c-be3692e4f352", "nodeTemplateUUID":"9b9f02c0-298b-458a-bc9c-be3692e4f353" diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsReq.json index 4f7c29f9d0..ac095e6aa3 100644 --- a/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsReq.json +++ b/adapters/mso-vfc-adapter/src/test/resources/json/terminateNsReq.json @@ -1,4 +1,6 @@ { + "globalSubscriberId":"9b9f02c0-298b-458a-bc9c-be3692e4f350", + "serviceType":"service", "serviceId":"9b9f02c0-298b-458a-bc9c-be3692e4f351", "operationId":"9b9f02c0-298b-458a-bc9c-be3692e4f352", "nodeTemplateUUID":"9b9f02c0-298b-458a-bc9c-be3692e4f353" diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java deleted file mode 100644 index bcab58201a..0000000000 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java +++ /dev/null @@ -1,438 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.mso.apihandlerinfra; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - -import org.apache.http.HttpResponse; -import org.apache.http.HttpStatus; -import org.codehaus.jackson.map.ObjectMapper; -import org.openecomp.mso.apihandler.common.ErrorNumbers; -import org.openecomp.mso.apihandler.common.RequestClient; -import org.openecomp.mso.apihandler.common.RequestClientFactory; -import org.openecomp.mso.apihandler.common.ResponseHandler; -import org.openecomp.mso.apihandlerinfra.serviceinstancebeans.E2EServiceInstanceRequest; -import org.openecomp.mso.db.catalog.CatalogDatabase; -import org.openecomp.mso.db.catalog.beans.Service; -import org.openecomp.mso.db.catalog.beans.ServiceRecipe; -import org.openecomp.mso.logger.MessageEnum; -import org.openecomp.mso.logger.MsoAlarmLogger; -import org.openecomp.mso.logger.MsoLogger; -import org.openecomp.mso.properties.MsoJavaProperties; -import org.openecomp.mso.requestsdb.InfraActiveRequests; -import org.openecomp.mso.requestsdb.RequestsDatabase; -import org.openecomp.mso.utils.UUIDChecker; - -@Path("/") -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"; - - private static MsoJavaProperties props = MsoPropertiesUtils - .loadMsoProperties(); - - public E2EServiceInstances() { - } - - @POST - @Path("e2eServiceInstances/{version:[vV][2-3]}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createE2EServiceInstance(String request, - @PathParam("version") String version) { - - Response response = E2EserviceInstances(request, Action.createInstance, - null, version); - - return response; - } - - @DELETE - @Path("e2eServiceInstances/{version:[vV][2-3]}/{serviceId}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response deleteE2EServiceInstance(String request, - @PathParam("version") String version) { - - Response response = E2EserviceInstances(request, Action.deleteInstance, - null, version); - - return response; - } - - private Response E2EserviceInstances(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; - MsoRequest msoRequest = new MsoRequest(requestId); - ObjectMapper mapper = new ObjectMapper(); - try { - sir = 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, "", "", - MsoLogger.ErrorCode.SchemaError, requestJSON, e); - 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()); - return response; - } - - InfraActiveRequests dup = null; - String instanceName = sir.getService().getName(); - String requestScope = sir.getService().getName(); - - try { - if (!(instanceName == null && requestScope.equals("E2EService") && action == Action.createInstance)) { - 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.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) { - 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"); - 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; - try { - db = CatalogDatabase.getInstance(); - ; - } 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)); - 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()); - return response; - } - - RecipeLookupResult recipeLookupResult = null; - - try { - recipeLookupResult = getServiceInstanceOrchestrationURI(db, sir, action); - - } catch (Exception e) { - msoLogger.error(MessageEnum.APIH_DB_ACCESS_EXC, - MSO_PROP_APIHANDLER_INFRA, "", "", - MsoLogger.ErrorCode.DataError, - "Exception while querying Catalog DB", e); - msoRequest - .setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED); - Response response = msoRequest.buildServiceErrorResponse( - HttpStatus.SC_NOT_FOUND, - MsoException.ServiceException, - "Recipe could not be retrieved from catalog DB " - + e.getMessage(), - ErrorNumbers.SVC_GENERAL_SERVICE_ERROR, null); - alarmLogger.sendAlarm("MsoDatabaseAccessError", - MsoAlarmLogger.CRITICAL, - Messages.errors.get(ErrorNumbers.ERROR_FROM_CATALOG_DB)); - msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, - MsoLogger.ResponseCode.DBAccessError, - "Exception while querying Catalog DB"); - msoLogger.debug("End of the transaction, the final response is: " - + (String) response.getEntity()); - db.close(); - return response; - } - - 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); - 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()); - db.close(); - return response; - } - - RequestClient requestClient = null; - HttpResponse response = null; - long subStartTime = System.currentTimeMillis(); - try { - requestClient = RequestClientFactory.getRequestClient( - recipeLookupResult.getOrchestrationURI(), props); - // Capture audit event - msoLogger - .debug("MSO API Handler Posting call to BPEL engine for url: " - + requestClient.getUrl()); - - // System.out.println("URL : " + requestClient.getUrl()); - - response = requestClient - .post(requestId, false, - recipeLookupResult.getRecipeTimeout(), - action.name(), null, null, null, null, null, null, - null, null, null, requestJSON); - - 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", - recipeLookupResult.getOrchestrationURI(), null); - 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, - Messages.errors.get(ErrorNumbers.NO_COMMUNICATION_TO_BPEL)); - 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.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, - "Null response from BPMN"); - msoLogger.debug("End of the transaction, the final response is: " - + (String) resp.getEntity()); - return resp; - } - - ResponseHandler respHandler = new ResponseHandler(response, - requestClient.getType()); - int bpelStatus = respHandler.getStatus(); - - // 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, - "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(); - } else { - List<String> variables = new ArrayList<String>(); - 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(), "", "", - MsoLogger.ErrorCode.BusinessProcesssError, - "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()); - 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 from BPEL engine is empty"); - msoLogger - .debug("End of the transaction, the final response is: " - + (String) resp.getEntity()); - return resp; - } - } - } - - private RecipeLookupResult getServiceInstanceOrchestrationURI( - CatalogDatabase db, E2EServiceInstanceRequest sir, Action action) { - RecipeLookupResult recipeLookupResult = null; - - if (sir.getService().getName().equals("E2EService")) { - recipeLookupResult = getServiceURI(db, sir, action); - } - if (recipeLookupResult != null) { - 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) { - - Service serviceRecord = null; - ServiceRecipe recipe = null; - - if (sir.getService().getName().equalsIgnoreCase("E2EService")) { - serviceRecord = db - .getServiceByModelName(sir.getService().getName()); - recipe = db.getServiceRecipeByModelUUID( - serviceRecord.getModelUUID(), action.name()); - } - if (recipe == null) { - return null; - } - return new RecipeLookupResult(recipe.getOrchestrationUri(), - recipe.getRecipeTimeout()); - - } -}
\ No newline at end of file diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2EAdditionalParamForNs_.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2EAdditionalParamForNs_.java deleted file mode 100644 index 57c4c8b229..0000000000 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2EAdditionalParamForNs_.java +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.mso.apihandlerinfra.serviceinstancebeans; - -import java.util.HashMap; -import java.util.Map; - -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; -import org.codehaus.jackson.annotate.JsonProperty; - -@JsonIgnoreProperties(ignoreUnknown = true) -public class E2EAdditionalParamForNs_ { - - @JsonProperty("E2EService.param1") - private String e2EServiceParam1; - @JsonProperty("E2EService.param2") - private String e2EServiceParam2; - @JsonIgnore - private Map<String, Object> additionalProperties = new HashMap<>(); - - public String getE2EServiceParam1() { - return e2EServiceParam1; - } - - public void setE2EServiceParam1(String e2EServiceParam1) { - this.e2EServiceParam1 = e2EServiceParam1; - } - - public String getE2EServiceParam2() { - return e2EServiceParam2; - } - - public void setE2EServiceParam2(String e2EServiceParam2) { - this.e2EServiceParam2 = e2EServiceParam2; - } - - public Map<String, Object> getAdditionalProperties() { - return this.additionalProperties; - } - - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2ELocationConstraints_.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2ELocationConstraints_.java deleted file mode 100644 index 9491e007cc..0000000000 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2ELocationConstraints_.java +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.mso.apihandlerinfra.serviceinstancebeans; - -import java.util.HashMap; -import java.util.Map; - -import org.codehaus.jackson.annotate.JsonAnyGetter; -import org.codehaus.jackson.annotate.JsonAnySetter; -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; - -@JsonIgnoreProperties({ "additionalProperties" }) -public class E2ELocationConstraints_ { - - @JsonIgnore - private Map<String, Object> additionalProperties = new HashMap<>(); - - public Map<String, Object> getAdditionalProperties() { - return this.additionalProperties; - } - - public void setAdditionalProperty(String name, Object value) { - this.additionalProperties.put(name, value); - } - -} diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2ENsParameters_.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2ENsParameters_.java deleted file mode 100644 index c0cb41f588..0000000000 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2ENsParameters_.java +++ /dev/null @@ -1,66 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.mso.apihandlerinfra.serviceinstancebeans; - -import java.util.HashMap; -import java.util.Map; - -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; -import org.codehaus.jackson.annotate.JsonProperty; - -@JsonIgnoreProperties({ "additionalProperties" }) -public class E2ENsParameters_ { - - @JsonProperty("locationConstraints") - private E2ELocationConstraints_ locationConstraints; - @JsonProperty("additionalParamForNs") - private E2EAdditionalParamForNs_ additionalParamForNs; - @JsonIgnore - private Map<String, Object> additionalProperties = new HashMap<>(); - - public E2ELocationConstraints_ getLocationConstraints() { - return locationConstraints; - } - - public void setLocationConstraints( - E2ELocationConstraints_ locationConstraints) { - this.locationConstraints = locationConstraints; - } - - public E2EAdditionalParamForNs_ getAdditionalParamForNs() { - return additionalParamForNs; - } - - public void setAdditionalParamForNs( - E2EAdditionalParamForNs_ additionalParamForNs) { - this.additionalParamForNs = additionalParamForNs; - } - - public Map<String, Object> getAdditionalProperties() { - return additionalProperties; - } - - public void setAdditionalProperties(Map<String, Object> additionalProperties) { - this.additionalProperties = additionalProperties; - } - -} diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2EParameters.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2EParameters.java index 0fe36bb0cf..58d57bc8bd 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2EParameters.java +++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/serviceinstancebeans/E2EParameters.java @@ -38,9 +38,8 @@ public class E2EParameters { @JsonProperty("nodeType") private String nodeType; @JsonProperty("segments") - private List<E2ESegment> segments = null; - @JsonProperty("nsParameters") - private E2ENsParameters_ nsParameters; + + @JsonIgnore private Map<String, Object> additionalProperties = new HashMap<>(); @@ -68,21 +67,6 @@ public class E2EParameters { this.nodeType = nodeType; } - public List<E2ESegment> getSegments() { - return segments; - } - - public void setSegments(List<E2ESegment> segments) { - this.segments = segments; - } - - public E2ENsParameters_ getNsParameters() { - return nsParameters; - } - - public void setNsParameters(E2ENsParameters_ nsParameters) { - this.nsParameters = nsParameters; - } public Map<String, Object> getAdditionalProperties() { return additionalProperties; |