summaryrefslogtreecommitdiffstats
path: root/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java
diff options
context:
space:
mode:
Diffstat (limited to 'ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java')
-rw-r--r--ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java202
1 files changed, 192 insertions, 10 deletions
diff --git a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java
index 8f97dec..ac9a8b1 100644
--- a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java
+++ b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java
@@ -65,6 +65,13 @@ public class OperationsApiController implements OperationsApi {
private static final String CALLED_STR = "{} called.";
private static final String MODULE_NAME = "GENERIC-RESOURCE-API";
+ private static final String SERVICE_OBJECT_PATH_PARAM = "service-object-path";
+ private static final String NETWORK_OBJECT_PATH_PARAM = "network-object-path";
+ private static final String VNF_OBJECT_PATH_PARAM = "vnf-object-path";
+ private static final String PNF_OBJECT_PATH_PARAM = "pnf-object-path";
+ private static final String VF_MODULE_OBJECT_PATH_PARAM = "vf-module-object-path";
+ private static final String VF_MODULE_ID_PARAM = "vf-module-id";
+
private final ObjectMapper objectMapper;
@@ -371,6 +378,13 @@ public class OperationsApiController implements OperationsApi {
|| input.getServiceInformation().getServiceInstanceId().length() == 0;
}
+ private boolean hasInvalidServiceId(GenericResourceApiVnfOperationInformation input) {
+
+ return input == null || input.getServiceInformation() == null
+ || input.getServiceInformation().getServiceInstanceId() == null
+ || input.getServiceInformation().getServiceInstanceId().length() == 0;
+ }
+
private GenericResourceApiPreloaddataPreloadData getConfigPreloadData(String preloadId, String preloadType)
throws JsonProcessingException {
@@ -417,7 +431,8 @@ public class OperationsApiController implements OperationsApi {
}
- private GenericResourceApiServicedataServiceData getConfigServiceData(String svcInstanceId) throws JsonProcessingException {
+ private GenericResourceApiServicedataServiceData getConfigServiceData(String svcInstanceId)
+ throws JsonProcessingException {
List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
@@ -429,11 +444,9 @@ public class OperationsApiController implements OperationsApi {
}
}
-
@Override
public ResponseEntity<GenericResourceApiNetworkTopologyOperation> operationsGENERICRESOURCEAPInetworkTopologyOperationPost(
- @Valid GenericResourceApiNetworkOperationInformationBodyparam input)
- throws RestException {
+ @Valid GenericResourceApiNetworkOperationInformationBodyparam input) throws RestException {
final String svcOperation = "network-topology-operation";
GenericResourceApiNetworkTopologyOperation retval = new GenericResourceApiNetworkTopologyOperation();
GenericResourceApiNetworktopologyoperationOutput resp = new GenericResourceApiNetworktopologyoperationOutput();
@@ -513,9 +526,24 @@ public class OperationsApiController implements OperationsApi {
resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
resp.setResponseCode(respProps.getProperty("error-code", "200"));
resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
- configService.setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+
+
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
if ("200".equals(resp.getResponseCode())) {
+
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ GenericResourceApiInstanceReference networkReference = new GenericResourceApiInstanceReference();
+ networkReference.setInstanceId(respProps.getProperty("networkId"));
+ networkReference.setObjectPath(respProps.getProperty(NETWORK_OBJECT_PATH_PARAM));
+ resp.setNetworkResponseInformation(networkReference);
+
// If DG returns success, update svcData in config and operational trees
// and remember to save operational data.
String ctxJson = ctxOut.toJsonString("service-data");
@@ -535,7 +563,7 @@ public class OperationsApiController implements OperationsApi {
}
// Update status in config services entry
-
+
configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
configService.setServiceStatusResponseCode(resp.getResponseCode());
configService.setServiceStatusResponseMessage(resp.getResponseMessage());
@@ -550,6 +578,7 @@ public class OperationsApiController implements OperationsApi {
operationalServicesRepository.save(operService);
}
retval.setOutput(resp);
+
return (new ResponseEntity<>(retval, HttpStatus.OK));
}
@@ -620,7 +649,6 @@ public class OperationsApiController implements OperationsApi {
configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
configService.setServiceStatusRpcName(svcOperation);
-
// Call DG
try {
// Any of these can throw a nullpointer exception
@@ -631,9 +659,16 @@ public class OperationsApiController implements OperationsApi {
resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
resp.setResponseCode(respProps.getProperty("error-code", "200"));
resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
- configService.setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
- if ("200".equals(resp.getResponseCode())) {
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ if ("200".equals(resp.getResponseCode())) {
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
// If DG returns success, update svcData in config and operational trees
// and remember to save operational data.
String ctxJson = ctxOut.toJsonString("service-data");
@@ -653,7 +688,7 @@ public class OperationsApiController implements OperationsApi {
}
// Update status in config services entry
-
+
configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
configService.setServiceStatusResponseCode(resp.getResponseCode());
configService.setServiceStatusResponseMessage(resp.getResponseMessage());
@@ -672,4 +707,151 @@ public class OperationsApiController implements OperationsApi {
}
+ @Override
+ public ResponseEntity<GenericResourceApiVnfTopologyOperation> operationsGENERICRESOURCEAPIvnfTopologyOperationPost(
+ @Valid GenericResourceApiVnfOperationInformationBodyparam input)
+ throws RestException {
+ final String svcOperation = "vnf-topology-operation";
+ GenericResourceApiVnfTopologyOperation retval = new GenericResourceApiVnfTopologyOperation();
+ GenericResourceApiVnftopologyoperationOutput resp = new GenericResourceApiVnftopologyoperationOutput();
+
+ log.info(CALLED_STR, svcOperation);
+ // Verify input contains service instance id
+ if (hasInvalidServiceId(input.getInput())) {
+ log.debug("exiting {} because of null or empty service-instance-id", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("null or empty service-instance-id");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+ String vnfId = null;
+
+ if ((input.getInput() != null) && (input.getInput().getVnfInformation() != null)) {
+ vnfId = input.getInput().getVnfInformation().getVnfId();
+ }
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ ctxIn.mergeJson("service-data", configService.getSvcData());
+ } else {
+ log.debug("exiting {} because the service-instance does not have any service data in SDN", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("invalid input: the service-instance does not have any service data in SDNC");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ // Add operational tree data to SvcLogicContext
+ List<OperationalServices> operServices = operationalServicesRepository.findBySvcInstanceId(svcInstanceId);
+ OperationalServices operService = null;
+ boolean saveOperationalData = false;
+
+ if (operServices != null && !operServices.isEmpty()) {
+ operService = operServices.get(0);
+ ctxIn.mergeJson("operational-data", operService.getSvcData());
+ } else {
+ operService = new OperationalServices(svcInstanceId, null, null);
+ }
+
+ // Update service status info in config entry from input
+ configService.setServiceStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configService.setServiceStatusRpcName(svcOperation);
+
+
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
+ resp.setResponseCode(respProps.getProperty("error-code", "200"));
+ resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
+
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ if ("200".equals(resp.getResponseCode())) {
+
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ if (vnfId == null) {
+ vnfId = respProps.getProperty("vnfId");
+ }
+ GenericResourceApiInstanceReference vnfReference = new GenericResourceApiInstanceReference();
+ vnfReference.setInstanceId(vnfId);
+ vnfReference.setObjectPath(respProps.getProperty(VNF_OBJECT_PATH_PARAM));
+ resp.setVnfResponseInformation(vnfReference);
+
+ // If DG returns success, update svcData in config and operational trees
+ // and remember to save operational data.
+ String ctxJson = ctxOut.toJsonString("service-data");
+ configService.setSvcData(ctxJson);
+ operService.setSvcData(ctxJson);
+ saveOperationalData = true;
+ }
+
+ } catch (NullPointerException npe) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Check that you populated module, rpc and or mode correctly.");
+ } catch (SvcLogicException e) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ }
+
+ // Update status in config services entry
+
+ configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
+ configService.setServiceStatusResponseCode(resp.getResponseCode());
+ configService.setServiceStatusResponseMessage(resp.getResponseMessage());
+ configService.setServiceStatusResponseTimestamp(Iso8601Util.now());
+
+ // Update config tree
+ configServicesRepository.save(configService);
+
+ // If necessary, sync status to operation service entry and save
+ if (saveOperationalData) {
+ operService.setServiceStatus(configService.getServiceStatus());
+ operationalServicesRepository.save(operService);
+ }
+ retval.setOutput(resp);
+ return (new ResponseEntity<>(retval, HttpStatus.OK));
+ }
+
+
}