summaryrefslogtreecommitdiffstats
path: root/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java
diff options
context:
space:
mode:
Diffstat (limited to 'ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java')
-rw-r--r--ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java955
1 files changed, 323 insertions, 632 deletions
diff --git a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java
index 2cef1a0..7508eb8 100644
--- a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java
+++ b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java
@@ -20,24 +20,61 @@
package org.onap.sdnc.apps.ms.gra.controllers;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Optional;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
+
import org.onap.ccsdk.apps.services.RestApplicationException;
import org.onap.ccsdk.apps.services.RestException;
-import org.onap.ccsdk.apps.services.RestProtocolError;
import org.onap.ccsdk.apps.services.RestProtocolException;
+import org.onap.sdnc.apps.ms.gra.controllers.ServiceDataHelper.ServiceDataTransaction;
+import org.onap.sdnc.apps.ms.gra.data.ConfigContrailRouteAllottedResources;
+import org.onap.sdnc.apps.ms.gra.data.ConfigContrailRouteAllottedResourcesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigNetworksRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPortMirrorConfigurations;
+import org.onap.sdnc.apps.ms.gra.data.ConfigPortMirrorConfigurationsRepository;
import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadData;
import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadDataRepository;
import org.onap.sdnc.apps.ms.gra.data.ConfigServices;
import org.onap.sdnc.apps.ms.gra.data.ConfigServicesRepository;
-import org.onap.sdnc.apps.ms.gra.data.ConfigPortMirrorConfigurations;
-import org.onap.sdnc.apps.ms.gra.data.ConfigPortMirrorConfigurationsRepository;
-import org.onap.sdnc.apps.ms.gra.data.ConfigContrailRouteAllottedResources;
-import org.onap.sdnc.apps.ms.gra.data.ConfigContrailRouteAllottedResourcesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVfModules;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVfModulesRepository;
+import org.onap.sdnc.apps.ms.gra.data.ConfigVnfsRepository;
import org.onap.sdnc.apps.ms.gra.swagger.ConfigApi;
-import org.onap.sdnc.apps.ms.gra.swagger.model.*;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiContrailrouteallottedresourcesContrailRouteAllottedResource;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiContrailrouteallottedresourcesContrailrouteallottedresourceAllottedResourceData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiContrailroutetopologyContrailRouteTopology;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiOnapmodelinformationOnapModelInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiOperStatusData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortmirrorconfigurationsPortmirrorconfigurationConfigurationData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPortmirrorconfigurationtopologyPortMirrorConfigurationTopology;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadModelInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloaddataPreloadData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadmodelinformationPreloadList;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiPreloadnetworktopologyinformationPreloadNetworkTopologyInformation;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServiceModelInfrastructure;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServiceData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnf;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnfVnfData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicemodelinfrastructureService;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicestatusServiceStatus;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiServicetopologyServiceTopology;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVfmoduletopologyVfModuleTopology;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfNetworkData;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfresourceassignmentsVnfResourceAssignments;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks;
+import org.onap.sdnc.apps.ms.gra.swagger.model.GenericResourceApiVnftopologyVnfTopology;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,17 +84,6 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
-import javax.servlet.http.HttpServletRequest;
-import javax.validation.Valid;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
@Controller
@ComponentScan(basePackages = { "org.onap.sdnc.apps.ms.gra.*" })
@EntityScan("org.onap.sdnc.apps.ms.gra.springboot.*")
@@ -75,11 +101,22 @@ public class ConfigApiController implements ConfigApi {
private ConfigServicesRepository configServicesRepository;
@Autowired
+ private ConfigNetworksRepository configNetworksRepository;
+
+ @Autowired
+ private ConfigVnfsRepository configVnfsRepository;
+
+ @Autowired
+ private ConfigVfModulesRepository configVfModulesRepository;
+
+ @Autowired
private ConfigPortMirrorConfigurationsRepository configPortMirrorConfigurationsRepository;
@Autowired
private ConfigContrailRouteAllottedResourcesRepository configContrailRouteAllottedResourcesRepository;
-
+
+ @Autowired
+ private ServiceDataHelper serviceDataHelper;
@Autowired
public ConfigApiController(ObjectMapper objectMapper, HttpServletRequest request) {
@@ -667,8 +704,7 @@ public class ConfigApiController implements ConfigApi {
public ResponseEntity<Void> configGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePreloadDataPost(
String preloadId, String preloadType, @Valid GenericResourceApiPreloaddataPreloadData preloadData)
throws RestApplicationException, RestProtocolException {
- List<ConfigPreloadData> preloadDataEntries = configPreloadDataRepository
- .findByPreloadIdAndPreloadType(preloadId, preloadType);
+
List<ConfigPreloadData> preloadDataItems = configPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId,
preloadType);
@@ -743,6 +779,9 @@ public class ConfigApiController implements ConfigApi {
@Override
public ResponseEntity<Void> configGENERICRESOURCEAPIservicesDelete() {
+ configVfModulesRepository.deleteAll();
+ configVnfsRepository.deleteAll();
+ configNetworksRepository.deleteAll();
configServicesRepository.deleteAll();
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -760,20 +799,26 @@ public class ConfigApiController implements ConfigApi {
for (ConfigServices service : configServicesRepository.findAll()) {
GenericResourceApiServicemodelinfrastructureService serviceItem = new GenericResourceApiServicemodelinfrastructureService();
- serviceItem.setServiceInstanceId(service.getSvcInstanceId());
- if (service.getSvcData() != null) {
- try {
- serviceItem.setServiceData(objectMapper.readValue(service.getSvcData(),
- GenericResourceApiServicedataServiceData.class));
- } catch (JsonProcessingException e) {
- log.error("Could not deserialize service data for {}", service.getSvcInstanceId(), e);
- throw new RestApplicationException("data-conversion",
- "Request could not be completed due to internal error", e,
- HttpStatus.INTERNAL_SERVER_ERROR.value());
+ String svcInstanceId = service.getSvcInstanceId();
- }
- }
+ serviceItem.setServiceInstanceId(svcInstanceId);
serviceItem.setServiceStatus(service.getServiceStatus());
+
+ // Construct service data from networks/vnfs/vfModules
+ GenericResourceApiServicedataServiceData serviceItemSvcData;
+ try {
+ serviceItemSvcData = serviceDataHelper.getServiceData(service);
+ } catch (JsonProcessingException e) {
+ log.error("Could not deserialize service data for {}", service.getSvcInstanceId(), e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+
+ if (serviceItemSvcData != null) {
+ serviceItem.setServiceData(serviceItemSvcData);
+ }
modelInfrastructure.addServiceItem(serviceItem);
}
@@ -782,10 +827,10 @@ public class ConfigApiController implements ConfigApi {
}
@Override
- public ResponseEntity<Void> configGENERICRESOURCEAPIservicesPost(
- @Valid GenericResourceApiServiceModelInfrastructure modelInfrastructure)
+ public ResponseEntity<Void> configGENERICRESOURCEAPIservicesPost(@Valid GenericResourceApiServiceModelInfrastructure modelInfrastructure)
throws RestApplicationException, RestProtocolException {
- List<ConfigServices> newServices = new LinkedList<>();
+
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
for (GenericResourceApiServicemodelinfrastructureService serviceItem : modelInfrastructure.getService()) {
String svcInstanceId = serviceItem.getServiceInstanceId();
@@ -797,8 +842,10 @@ public class ConfigApiController implements ConfigApi {
}
ConfigServices service = new ConfigServices();
service.setSvcInstanceId(svcInstanceId);
+ service.setServiceStatus(serviceItem.getServiceStatus());
+
try {
- service.setSvcData(objectMapper.writeValueAsString(serviceItem.getServiceData()));
+ serviceDataHelper.saveService(service, serviceItem.getServiceData(), transaction);
} catch (JsonProcessingException e) {
log.error("Could not serialize service data for {}", service.getSvcInstanceId(), e);
throw new RestApplicationException("data-conversion",
@@ -806,13 +853,9 @@ public class ConfigApiController implements ConfigApi {
HttpStatus.INTERNAL_SERVER_ERROR.value());
}
- service.setServiceStatus(serviceItem.getServiceStatus());
- newServices.add(service);
}
- for (ConfigServices service : newServices) {
- configServicesRepository.save(service);
- }
+ transaction.commit();
return new ResponseEntity<>(HttpStatus.CREATED);
@@ -822,7 +865,7 @@ public class ConfigApiController implements ConfigApi {
public ResponseEntity<Void> configGENERICRESOURCEAPIservicesPut(
@Valid GenericResourceApiServiceModelInfrastructure modelInfrastructure) throws RestApplicationException {
- List<ConfigServices> newServices = new LinkedList<>();
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
boolean dataExists = false;
for (GenericResourceApiServicemodelinfrastructureService serviceItem : modelInfrastructure.getService()) {
@@ -833,8 +876,9 @@ public class ConfigApiController implements ConfigApi {
}
ConfigServices service = new ConfigServices();
service.setSvcInstanceId(svcInstanceId);
+ service.setServiceStatus(serviceItem.getServiceStatus());
try {
- service.setSvcData(objectMapper.writeValueAsString(serviceItem.getServiceData()));
+ serviceDataHelper.saveService(service, serviceItem.getServiceData(), transaction);
} catch (JsonProcessingException e) {
log.error("Could not serialize service data for {}", service.getSvcInstanceId(), e);
throw new RestApplicationException("data-conversion",
@@ -842,13 +886,9 @@ public class ConfigApiController implements ConfigApi {
HttpStatus.INTERNAL_SERVER_ERROR.value());
}
- service.setServiceStatus(serviceItem.getServiceStatus());
- newServices.add(service);
}
- for (ConfigServices service : newServices) {
- configServicesRepository.save(service);
- }
+ transaction.commit();
if (dataExists) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
@@ -863,10 +903,8 @@ public class ConfigApiController implements ConfigApi {
@Valid GenericResourceApiServicemodelinfrastructureService servicesData) throws RestApplicationException {
String svcInstanceId = servicesData.getServiceInstanceId();
try {
- String svcData = objectMapper.writeValueAsString(servicesData.getServiceData());
- ConfigServices configService = new ConfigServices(svcInstanceId, svcData, servicesData.getServiceStatus());
- configServicesRepository.deleteBySvcInstanceId(svcInstanceId);
- configServicesRepository.save(configService);
+ ConfigServices configService = new ConfigServices(svcInstanceId, servicesData.getServiceStatus());
+ serviceDataHelper.saveService(configService, servicesData.getServiceData());
} catch (JsonProcessingException e) {
log.error("Cannot convert service data", e);
throw new RestApplicationException("data-conversion",
@@ -880,7 +918,7 @@ public class ConfigApiController implements ConfigApi {
@Override
public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdDelete(
String serviceInstanceId) {
- configServicesRepository.deleteBySvcInstanceId(serviceInstanceId);
+ serviceDataHelper.deleteService(serviceInstanceId);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -899,8 +937,7 @@ public class ConfigApiController implements ConfigApi {
retval.setServiceInstanceId(serviceInstanceId);
retval.setServiceStatus(service.getServiceStatus());
try {
- retval.setServiceData(
- objectMapper.readValue(service.getSvcData(), GenericResourceApiServicedataServiceData.class));
+ retval.setServiceData(serviceDataHelper.getServiceData(service));
} catch (JsonProcessingException e) {
log.error("Could not deserialize service data for service instance id {}", serviceInstanceId, e);
throw new RestApplicationException("data-conversion",
@@ -927,8 +964,9 @@ public class ConfigApiController implements ConfigApi {
}
ConfigServices service = new ConfigServices();
service.setSvcInstanceId(svcInstanceId);
+ service.setServiceStatus(newService.getServiceStatus());
try {
- service.setSvcData(objectMapper.writeValueAsString(newService.getServiceData()));
+ serviceDataHelper.saveService(service, newService.getServiceData());
} catch (JsonProcessingException e) {
log.error("Could not serialize service data for {}", service.getSvcInstanceId(), e);
throw new RestApplicationException("data-conversion",
@@ -936,8 +974,6 @@ public class ConfigApiController implements ConfigApi {
HttpStatus.INTERNAL_SERVER_ERROR.value());
}
- service.setServiceStatus(newService.getServiceStatus());
- configServicesRepository.save(service);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -960,8 +996,9 @@ public class ConfigApiController implements ConfigApi {
service.setSvcInstanceId(svcInstanceId);
}
+ service.setServiceStatus(newService.getServiceStatus());
try {
- service.setSvcData(objectMapper.writeValueAsString(newService.getServiceData()));
+ serviceDataHelper.saveService(service, newService.getServiceData());
} catch (JsonProcessingException e) {
log.error("Could not serialize service data for {}", service.getSvcInstanceId(), e);
throw new RestApplicationException("data-conversion",
@@ -969,8 +1006,6 @@ public class ConfigApiController implements ConfigApi {
HttpStatus.INTERNAL_SERVER_ERROR.value());
}
- service.setServiceStatus(newService.getServiceStatus());
- configServicesRepository.save(service);
if (dataExists) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
@@ -989,11 +1024,10 @@ public class ConfigApiController implements ConfigApi {
}
ConfigServices service = services.get(0);
- if (service.getSvcData() == null) {
+ if (!serviceDataHelper.hasServiceData(service)) {
throw new RestProtocolException("data-missing", "No service-data found", HttpStatus.NOT_FOUND.value());
}
- service.setSvcData(null);
- configServicesRepository.save(service);
+ serviceDataHelper.clearServiceData(service);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@@ -1009,8 +1043,7 @@ public class ConfigApiController implements ConfigApi {
}
try {
- serviceData = objectMapper.readValue(services.get(0).getSvcData(),
- GenericResourceApiServicedataServiceData.class);
+ serviceData = serviceDataHelper.getServiceData(services.get(0));
return new ResponseEntity<>(serviceData, HttpStatus.OK);
} catch (JsonProcessingException e) {
log.error("Could not parse service data", e);
@@ -1038,15 +1071,14 @@ public class ConfigApiController implements ConfigApi {
}
service = services.get(0);
- if ((service.getSvcData() != null) && (service.getSvcData().length() > 0)) {
+ if (serviceDataHelper.hasServiceData(service)) {
log.error("service-data already exists for svcInstanceId {}", serviceInstanceId);
throw new RestProtocolException("data-exists", "Data already exists for " + serviceInstanceId,
HttpStatus.CONFLICT.value());
}
try {
- service.setSvcData(objectMapper.writeValueAsString(serviceData));
- configServicesRepository.save(service);
+ serviceDataHelper.saveService(service, serviceData);
} catch (JsonProcessingException e) {
log.error("Could not serialize service data for svc instance id {}", serviceInstanceId, e);
throw new RestApplicationException("data-conversion",
@@ -1077,13 +1109,10 @@ public class ConfigApiController implements ConfigApi {
}
service = services.get(0);
- if ((service.getSvcData() != null) && (service.getSvcData().length() > 0)) {
- dataExists = true;
- }
+ dataExists = serviceDataHelper.hasServiceData(service);
try {
- service.setSvcData(objectMapper.writeValueAsString(serviceData));
- configServicesRepository.save(service);
+ serviceDataHelper.saveService(service, serviceData);
} catch (JsonProcessingException e) {
log.error("Could not serialize service data for svc instance id {}", serviceInstanceId, e);
throw new RestApplicationException("data-conversion",
@@ -1217,17 +1246,6 @@ public class ConfigApiController implements ConfigApi {
String serviceInstanceId, String vnfId) throws RestException {
log.info("DELETE | VNF Data for ({})", vnfId);
- /*
- * The logic may need to be moved inside of this check or this check may need to
- * be removed.
- */
- if (getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- log.info("Something with header.");
- } else {
- log.warn(
- "ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
-
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
ConfigServices data;
if ((services == null) || (services.isEmpty())) {
@@ -1239,49 +1257,18 @@ public class ConfigApiController implements ConfigApi {
data = services.get(0);
}
- GenericResourceApiServicedataServiceData svcData;
- try {
- svcData = objectMapper.readValue(data.getSvcData(), GenericResourceApiServicedataServiceData.class);
- } catch (JsonProcessingException e) {
- // Or throw the data not found error?
- log.error("Could not map service data for ({})", serviceInstanceId);
- return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
- }
- if (svcData == null) {
- // Or throw the data not found error?
+ if (!serviceDataHelper.hasServiceData(data)) {
log.info("Could not find Service Data for ({}).", serviceInstanceId);
throw new RestProtocolException("data-missing", "Service data not found.", HttpStatus.NOT_FOUND.value());
}
- GenericResourceApiServicedataServicedataVnfs vnfs = svcData.getVnfs();
- if (vnfs == null) {
- // Or throw the data not found error?
- log.info("VNF List not found for ({}).", serviceInstanceId);
- throw new RestProtocolException("data-missing", "VNFs not found.", HttpStatus.NOT_FOUND.value());
- }
-
- Stream<GenericResourceApiServicedataServicedataVnfsVnf> vnfStream = svcData.getVnfs().getVnf().stream();
- if (vnfStream.noneMatch(targetVnf -> targetVnf.getVnfId().equals(vnfId))) {
+ if (serviceDataHelper.deleteVnf(serviceInstanceId, vnfId) > 0) {
+ return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+ } else {
// Data was not found
log.error("Did not find VNF ({}) in data.", vnfId);
throw new RestProtocolException("data-missing", "VNF ID not found.", HttpStatus.NOT_FOUND.value());
}
- // Recreate the stream per Sonar?
- vnfStream = svcData.getVnfs().getVnf().stream();
- svcData.getVnfs().setVnf(
- vnfStream.filter(targetVnf -> !targetVnf.getVnfId().equals(vnfId)).collect(Collectors.toList()));
-
- // Map and save the new data
- try {
- data.setSvcData(objectMapper.writeValueAsString(svcData));
- configServicesRepository.save(data);
- return new ResponseEntity<>(HttpStatus.NO_CONTENT);
- } catch (JsonProcessingException e) {
- log.error("Error mapping object to JSON", e);
- // Should probably be a 500 INTERNAL_SERVICE_ERROR
- throw new RestProtocolException("internal-service-error", "Failed to save data.",
- HttpStatus.BAD_REQUEST.value());
- }
}
/**
@@ -1299,21 +1286,24 @@ public class ConfigApiController implements ConfigApi {
public ResponseEntity<GenericResourceApiServicedataServicedataVnfsVnf> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdGet(
String serviceInstanceId, String vnfId) throws RestException {
log.info("GET | VNF Data for ({})", vnfId);
- if (getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- if (getAcceptHeader().get().contains("application/json")) {
- }
- } else {
- log.warn(
- "ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
+
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
if ((services == null) || (services.isEmpty())) {
throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
}
- Optional<GenericResourceApiServicedataServicedataVnfsVnf> vnf = getVnfObject(services.get(0), vnfId);
- if (vnf.isPresent()) {
- return new ResponseEntity<>(vnf.get(), HttpStatus.OK);
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+ try {
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if (vnf != null) {
+ return new ResponseEntity<>(vnf, HttpStatus.OK);
} else {
log.info("No information found for {}", vnfId);
throw new RestApplicationException("data-missing",
@@ -1323,30 +1313,6 @@ public class ConfigApiController implements ConfigApi {
}
/**
- * Extracts a vf-module object from the database,
- * @param configServices A Config Services option created from a Service
- * Instance ID
- * @param vnfId the target VNF ID
- * @param vfModuleId the target vf-module ID
- * @return An empty Optional if the Service Data does not exist, an empty
- * Optional if the VNF is not found, or an optional containing the
- * found VNF.
- */
- private Optional<GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule> getVfModuleObject (
- ConfigServices configServices, String vnfId, String vfModuleId) {
- // Map the Marshall the JSON String into a Java Object
- log.info("Getting vf-module Data for ({})", vfModuleId);
-
- Optional<GenericResourceApiServicedataServicedataVnfsVnf> vnf = getVnfObject(configServices, vnfId);
- GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.get().getVnfData();
-
- return vnfData.getVfModules().getVfModule()
- .stream()
- .filter(vf -> vf.getVfModuleId().equals(vfModuleId))
- .findFirst();
- }
-
- /**
* Creates or updates VNF data in the Config table for a specified Service
* Instance. If it is a new Service Instance or a new VNF, creates all necessary
* parent data containers, then performs the updates.
@@ -1366,68 +1332,35 @@ public class ConfigApiController implements ConfigApi {
@Override
public ResponseEntity<Void> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdPut(
String serviceInstanceId, String vnfId,
- GenericResourceApiServicedataServicedataVnfsVnf genericResourceApiServicedataServicedataVnfsVnfBodyParam)
+ GenericResourceApiServicedataServicedataVnfsVnf vnf)
throws RestException {
log.info("PUT | VNF Data for ({})", vnfId);
- if (!vnfId.equals(genericResourceApiServicedataServicedataVnfsVnfBodyParam.getVnfId())) {
+ if (!vnfId.equals(vnf.getVnfId())) {
throw new RestProtocolException("bad-attribute", "vnf-id mismatch", HttpStatus.BAD_REQUEST.value());
}
- if (getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- log.info("Something with header");
- } else {
- log.warn(
- "ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
ConfigServices data;
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
if ((services == null) || (services.isEmpty())) {
log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
data = new ConfigServices();
data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
} else {
data = services.get(0);
}
- GenericResourceApiServicedataServiceData svcData = null;
- try {
- svcData = objectMapper.readValue(data.getSvcData(), GenericResourceApiServicedataServiceData.class);
- } catch (JsonProcessingException e) {
- log.error("Could not map service data for ({})", serviceInstanceId);
- }
- if (svcData == null) {
- log.info("Could not find Service Data for ({}). Creating new Service Data Container", serviceInstanceId);
- svcData = new GenericResourceApiServicedataServiceData();
- }
- if (svcData.getVnfs() == null) {
- log.info("VNF List not found for ({}). Creating new VNF List Container.", serviceInstanceId);
- svcData.setVnfs(new GenericResourceApiServicedataServicedataVnfs());
- svcData.getVnfs().setVnf(new ArrayList<>());
- }
-
- GenericResourceApiServicedataServicedataVnfs vnflist = new GenericResourceApiServicedataServicedataVnfs();
- HttpStatus responseStatus = HttpStatus.NO_CONTENT;
- if (svcData.getVnfs().getVnf().isEmpty()) {
- log.info("Creating VNF data for ({})", vnfId);
- vnflist.addVnfItem(genericResourceApiServicedataServicedataVnfsVnfBodyParam);
- responseStatus = HttpStatus.CREATED;
- } else {
- log.info("Updating VNF data for ({})", vnfId);
- // Filter out all of the other vnf objects into a new VNF List
- // Replace if a delete method exists
- svcData.getVnfs().getVnf().stream().filter(targetVnf -> !targetVnf.getVnfId().equals(vnfId))
- .forEach(vnflist::addVnfItem);
- vnflist.addVnfItem(genericResourceApiServicedataServicedataVnfsVnfBodyParam);
- }
- svcData.setVnfs(vnflist);
- // Map and save the new data
try {
- data.setSvcData(objectMapper.writeValueAsString(svcData));
- configServicesRepository.save(data);
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+ if (serviceDataHelper.getVnf(serviceInstanceId, vnfId) == null) {
+ responseStatus = HttpStatus.CREATED;
+ }
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
return new ResponseEntity<>(responseStatus);
} catch (JsonProcessingException e) {
- log.error("Error mapping object to JSON", e);
- // Should probably be a 500 INTERNAL_SERVICE_ERROR
+ log.error("Error saving vnf", e);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
@@ -1448,23 +1381,26 @@ public class ConfigApiController implements ConfigApi {
public ResponseEntity<GenericResourceApiVnftopologyVnfTopology> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVnfTopologyGet(
String serviceInstanceId, String vnfId) throws RestException {
log.info("GET | VNF Topology for ({})", vnfId);
- if (getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- if (getAcceptHeader().get().contains("application/json")) {
- }
- } else {
- log.warn(
- "ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
if ((services == null) || (services.isEmpty())) {
throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
}
- Optional<GenericResourceApiServicedataServicedataVnfsVnf> vnf = getVnfObject(services.get(0), vnfId);
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+
+ try {
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
// Drill down to find the data
- if (vnf.isPresent() && vnf.get().getVnfData() != null && vnf.get().getVnfData().getVnfTopology() != null) {
- return new ResponseEntity<>(vnf.get().getVnfData().getVnfTopology(), HttpStatus.OK);
+ if (vnf != null && vnf.getVnfData() != null && vnf.getVnfData().getVnfTopology() != null) {
+ return new ResponseEntity<>(vnf.getVnfData().getVnfTopology(), HttpStatus.OK);
} else {
log.info("No information found for {}", vnfId);
throw new RestApplicationException("data-missing",
@@ -1498,11 +1434,7 @@ public class ConfigApiController implements ConfigApi {
String serviceInstanceId, String vnfId,
GenericResourceApiOperStatusData genericResourceApiOperStatusDataBodyParam) throws RestException {
log.info("PUT | VNF Level Oper Status ({})", vnfId);
- if (getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- } else {
- log.warn(
- "ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
ConfigServices data;
@@ -1510,66 +1442,31 @@ public class ConfigApiController implements ConfigApi {
log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
data = new ConfigServices();
data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
} else {
data = services.get(0);
}
- GenericResourceApiServicedataServiceData svcData = null;
- try {
- svcData = objectMapper.readValue(data.getSvcData(), GenericResourceApiServicedataServiceData.class);
- } catch (JsonProcessingException e) {
- log.error("Could not map service data for ({})", serviceInstanceId);
- }
- if (svcData == null) {
- log.info("Could not find Service Data for ({}). Creating new Service Data Container", serviceInstanceId);
- svcData = new GenericResourceApiServicedataServiceData();
- }
- if (svcData.getVnfs() == null) {
- log.info("VNF List not found for ({}). Creating new VNF List Container.", serviceInstanceId);
- svcData.setVnfs(new GenericResourceApiServicedataServicedataVnfs());
- svcData.getVnfs().setVnf(new ArrayList<>());
- }
-
- GenericResourceApiServicedataServicedataVnfs vnflist = new GenericResourceApiServicedataServicedataVnfs();
HttpStatus responseStatus = HttpStatus.NO_CONTENT;
- if (svcData.getVnfs().getVnf().isEmpty()) {
- log.info("Creating VNF data for ({})", vnfId);
- GenericResourceApiServicedataServicedataVnfsVnf vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
- vnf.setVnfId(vnfId);
- vnf.setVnfData(new GenericResourceApiServicedataServicedataVnfsVnfVnfData());
- vnf.getVnfData().setVnfLevelOperStatus(genericResourceApiOperStatusDataBodyParam);
- vnflist.addVnfItem(vnf);
- responseStatus = HttpStatus.CREATED;
- } else {
- log.info("Updating VNF data for ({})", vnfId);
- // Filter out all of the other vnf objects into a new VNF List
- // Replace if a delete method exists
- svcData.getVnfs().getVnf().stream().filter(targetVnf -> !targetVnf.getVnfId().equals(vnfId))
- .forEach(vnflist::addVnfItem);
- GenericResourceApiServicedataServicedataVnfsVnf vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
- // If the vnf exists, set it up with new data
- Optional<GenericResourceApiServicedataServicedataVnfsVnf> vnfOptional = getVnfObject(data, vnfId);
- if (vnfOptional.isPresent()) {
- vnf = vnfOptional.get();
- }
- if (vnf.getVnfData() == null) {
- vnf.setVnfData(new GenericResourceApiServicedataServicedataVnfsVnfVnfData());
- responseStatus = HttpStatus.CREATED;
- }
-
- vnf.getVnfData().setVnfLevelOperStatus(genericResourceApiOperStatusDataBodyParam);
- vnflist.addVnfItem(vnf);
- }
- svcData.setVnfs(vnflist);
- // Map and save the new data
try {
- data.setSvcData(objectMapper.writeValueAsString(svcData));
- configServicesRepository.save(data);
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ if (vnf == null) {
+ responseStatus = HttpStatus.CREATED;
+ vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ vnf.setVnfId(vnfId);
+ }
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.getVnfData();
+ if (vnfData == null) {
+ vnfData = new GenericResourceApiServicedataServicedataVnfsVnfVnfData();
+ }
+ vnfData.setVnfLevelOperStatus(genericResourceApiOperStatusDataBodyParam);
+ vnf.setVnfData(vnfData);
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
return new ResponseEntity<>(responseStatus);
} catch (JsonProcessingException e) {
- log.error("Error mapping object to JSON", e);
- // Should probably be a 500 INTERNAL_SERVICE_ERROR
+ log.error("Error saving vnf", e);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
}
@@ -1614,11 +1511,7 @@ public class ConfigApiController implements ConfigApi {
GenericResourceApiOnapmodelinformationOnapModelInformation genericResourceApiOnapmodelinformationOnapModelInformationBodyParam)
throws RestException {
log.info("PUT | VNF Topology Onap Model Information ({})", vnfId);
- if (getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- } else {
- log.warn(
- "ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
ConfigServices data;
@@ -1626,68 +1519,40 @@ public class ConfigApiController implements ConfigApi {
log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
data = new ConfigServices();
data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
} else {
data = services.get(0);
}
- GenericResourceApiServicedataServiceData svcData = null;
+
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+
try {
- svcData = objectMapper.readValue(data.getSvcData(), GenericResourceApiServicedataServiceData.class);
- } catch (JsonProcessingException e) {
- log.error("Could not map service data for ({})", serviceInstanceId);
- }
- if (svcData == null) {
- log.info("Could not find Service Data for ({}). Creating new Service Data Container", serviceInstanceId);
- svcData = new GenericResourceApiServicedataServiceData();
- }
- if (svcData.getVnfs() == null) {
- log.info("VNF List not found for ({}). Creating new VNF List Container.", serviceInstanceId);
- svcData.setVnfs(new GenericResourceApiServicedataServicedataVnfs());
- svcData.getVnfs().setVnf(new ArrayList<>());
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch(JsonProcessingException e) {
+
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
}
- GenericResourceApiServicedataServicedataVnfs vnflist = new GenericResourceApiServicedataServicedataVnfs();
- HttpStatus responseStatus = HttpStatus.NO_CONTENT;
- if (svcData.getVnfs().getVnf().isEmpty()) {
- log.info("Creating VNF data for ({})", vnfId);
- GenericResourceApiServicedataServicedataVnfsVnf vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ if (vnf == null) {
+ responseStatus = HttpStatus.CREATED;
+ vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
vnf.setVnfId(vnfId);
vnf.setVnfData(new GenericResourceApiServicedataServicedataVnfsVnfVnfData());
vnf.getVnfData().setVnfTopology(new GenericResourceApiVnftopologyVnfTopology());
- vnf.getVnfData().getVnfTopology()
- .setOnapModelInformation(genericResourceApiOnapmodelinformationOnapModelInformationBodyParam);
- vnflist.addVnfItem(vnf);
- responseStatus = HttpStatus.CREATED;
- } else {
- log.info("Updating VNF data for ({})", vnfId);
- // Filter out all of the other vnf objects into a new VNF List
- // Replace if a delete method exists
- svcData.getVnfs().getVnf().stream().filter(targetVnf -> !targetVnf.getVnfId().equals(vnfId))
- .forEach(vnflist::addVnfItem);
- GenericResourceApiServicedataServicedataVnfsVnf vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
- // If the vnf exists, set it up with new data
- Optional<GenericResourceApiServicedataServicedataVnfsVnf> vnfOptional = getVnfObject(data, vnfId);
- if (vnfOptional.isPresent()) {
- vnf = vnfOptional.get();
- }
- if (vnf.getVnfData() == null) {
- vnf.setVnfData(new GenericResourceApiServicedataServicedataVnfsVnfVnfData());
- }
- if (vnf.getVnfData().getVnfTopology() == null) {
- vnf.getVnfData().setVnfTopology(new GenericResourceApiVnftopologyVnfTopology());
- responseStatus = HttpStatus.CREATED;
- }
-
- vnf.getVnfData().getVnfTopology()
- .setOnapModelInformation(genericResourceApiOnapmodelinformationOnapModelInformationBodyParam);
- vnflist.addVnfItem(vnf);
}
- svcData.setVnfs(vnflist);
- // Map and save the new data
+ vnf.getVnfData().getVnfTopology()
+ .setOnapModelInformation(genericResourceApiOnapmodelinformationOnapModelInformationBodyParam);
+
+ // Save the updated VNF (and service, if new)
try {
- data.setSvcData(objectMapper.writeValueAsString(svcData));
- configServicesRepository.save(data);
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
return new ResponseEntity<>(responseStatus);
} catch (JsonProcessingException e) {
log.error("Error mapping object to JSON", e);
@@ -1718,86 +1583,61 @@ public class ConfigApiController implements ConfigApi {
GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks genericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworksBodyParam)
throws RestException {
log.info("PUT | VNF Topology VNF Resource Assignments VNF Networks ({})", vnfId);
- if (getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- } else {
- log.warn(
- "ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
ConfigServices data;
if ((services == null) || (services.isEmpty())) {
log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
data = new ConfigServices();
data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
} else {
data = services.get(0);
}
- GenericResourceApiServicedataServiceData svcData = null;
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+
try {
- svcData = objectMapper.readValue(data.getSvcData(), GenericResourceApiServicedataServiceData.class);
- } catch (JsonProcessingException e) {
- log.error("Could not map service data for ({})", serviceInstanceId);
- }
- if (svcData == null) {
- log.info("Could not find Service Data for ({}). Creating new Service Data Container", serviceInstanceId);
- svcData = new GenericResourceApiServicedataServiceData();
- }
- if (svcData.getVnfs() == null) {
- log.info("VNF List not found for ({}). Creating new VNF List Container.", serviceInstanceId);
- svcData.setVnfs(new GenericResourceApiServicedataServicedataVnfs());
- svcData.getVnfs().setVnf(new ArrayList<>());
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch(JsonProcessingException e) {
+
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
}
- GenericResourceApiServicedataServicedataVnfs vnflist = new GenericResourceApiServicedataServicedataVnfs();
- HttpStatus responseStatus = HttpStatus.NO_CONTENT;
- if (svcData.getVnfs().getVnf().isEmpty()) {
+ if (vnf == null) {
log.info("Creating VNF data for ({})", vnfId);
- GenericResourceApiServicedataServicedataVnfsVnf vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
vnf.setVnfId(vnfId);
- vnf.setVnfData(new GenericResourceApiServicedataServicedataVnfsVnfVnfData());
- vnf.getVnfData().setVnfTopology(new GenericResourceApiVnftopologyVnfTopology());
- vnf.getVnfData().getVnfTopology()
- .setVnfResourceAssignments(new GenericResourceApiVnfresourceassignmentsVnfResourceAssignments());
- vnf.getVnfData().getVnfTopology().getVnfResourceAssignments()
- .setVnfNetworks(genericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworksBodyParam);
- vnflist.addVnfItem(vnf);
responseStatus = HttpStatus.CREATED;
- } else {
- log.info("Updating VNF data for ({})", vnfId);
- // Filter out all of the other vnf objects into a new VNF List
- // Replace if a delete method exists
- svcData.getVnfs().getVnf().stream().filter(targetVnf -> !targetVnf.getVnfId().equals(vnfId))
- .forEach(vnflist::addVnfItem);
- GenericResourceApiServicedataServicedataVnfsVnf vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
- // If the vnf exists, set it up with new data
- Optional<GenericResourceApiServicedataServicedataVnfsVnf> vnfOptional = getVnfObject(data, vnfId);
- if (vnfOptional.isPresent()) {
- vnf = vnfOptional.get();
- }
- if (vnf.getVnfData() == null) {
- vnf.setVnfData(new GenericResourceApiServicedataServicedataVnfsVnfVnfData());
- }
- if (vnf.getVnfData().getVnfTopology() == null) {
- vnf.getVnfData().setVnfTopology(new GenericResourceApiVnftopologyVnfTopology());
- }
- if (vnf.getVnfData().getVnfTopology().getVnfResourceAssignments() == null) {
- vnf.getVnfData().getVnfTopology().setVnfResourceAssignments(
- new GenericResourceApiVnfresourceassignmentsVnfResourceAssignments());
- responseStatus = HttpStatus.CREATED;
- }
+ }
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.getVnfData();
+ if (vnfData == null) {
+ vnfData = new GenericResourceApiServicedataServicedataVnfsVnfVnfData();
+ }
+
+ GenericResourceApiVnftopologyVnfTopology vnfTopology = vnfData.getVnfTopology();
+ if (vnfTopology == null) {
+ vnfTopology = new GenericResourceApiVnftopologyVnfTopology();
+ }
- vnf.getVnfData().getVnfTopology().getVnfResourceAssignments()
- .setVnfNetworks(genericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworksBodyParam);
- vnflist.addVnfItem(vnf);
+ GenericResourceApiVnfresourceassignmentsVnfResourceAssignments vnfResourceAssignments = vnfTopology.getVnfResourceAssignments();
+ if (vnfResourceAssignments == null) {
+ vnfResourceAssignments = new GenericResourceApiVnfresourceassignmentsVnfResourceAssignments();
}
+ vnfResourceAssignments.setVnfNetworks(genericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworksBodyParam);
+ vnfTopology.setVnfResourceAssignments(vnfResourceAssignments);
+ vnfData.setVnfTopology(vnfTopology);
+ vnf.setVnfData(vnfData);
- svcData.setVnfs(vnflist);
// Map and save the new data
try {
- data.setSvcData(objectMapper.writeValueAsString(svcData));
- configServicesRepository.save(data);
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
return new ResponseEntity<>(responseStatus);
} catch (JsonProcessingException e) {
log.error("Error mapping object to JSON", e);
@@ -1834,11 +1674,8 @@ public class ConfigApiController implements ConfigApi {
if (!networkRole.equals(genericResourceApiVnfNetworkDataBodyParam.getNetworkRole())) {
throw new RestProtocolException("bad-attribute", "network-role mismatch", HttpStatus.BAD_REQUEST.value());
}
- if (getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- } else {
- log.warn(
- "ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
+
+ ServiceDataTransaction transaction = serviceDataHelper.createTransaction();
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
ConfigServices data;
@@ -1846,102 +1683,71 @@ public class ConfigApiController implements ConfigApi {
log.info("Could not find data for ({}). Creating new Service Object.", serviceInstanceId);
data = new ConfigServices();
data.setSvcInstanceId(serviceInstanceId);
+ transaction.save(data);
} else {
data = services.get(0);
}
- GenericResourceApiServicedataServiceData svcData = null;
+ HttpStatus responseStatus = HttpStatus.NO_CONTENT;
+ GenericResourceApiServicedataServicedataVnfsVnf vnf = null;
+
try {
- svcData = objectMapper.readValue(data.getSvcData(), GenericResourceApiServicedataServiceData.class);
- } catch (JsonProcessingException e) {
- log.error("Could not map service data for ({})", serviceInstanceId);
- }
- if (svcData == null) {
- log.info("Could not find Service Data for ({}). Creating new Service Data Container", serviceInstanceId);
- svcData = new GenericResourceApiServicedataServiceData();
- }
- if (svcData.getVnfs() == null) {
- log.info("VNF List not found for ({}). Creating new VNF List Container.", serviceInstanceId);
- svcData.setVnfs(new GenericResourceApiServicedataServicedataVnfs());
- svcData.getVnfs().setVnf(new ArrayList<>());
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch(JsonProcessingException e) {
+
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
}
- GenericResourceApiServicedataServicedataVnfs vnflist = new GenericResourceApiServicedataServicedataVnfs();
- HttpStatus responseStatus = HttpStatus.NO_CONTENT;
- if (svcData.getVnfs().getVnf().isEmpty()) {
+ if (vnf == null) {
log.info("Creating VNF data for ({})", vnfId);
- GenericResourceApiServicedataServicedataVnfsVnf vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
+ vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
vnf.setVnfId(vnfId);
- vnf.setVnfData(new GenericResourceApiServicedataServicedataVnfsVnfVnfData());
- vnf.getVnfData().setVnfTopology(new GenericResourceApiVnftopologyVnfTopology());
- vnf.getVnfData().getVnfTopology()
- .setVnfResourceAssignments(new GenericResourceApiVnfresourceassignmentsVnfResourceAssignments());
- vnf.getVnfData().getVnfTopology().getVnfResourceAssignments()
- .setVnfNetworks(new GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks());
- vnf.getVnfData().getVnfTopology().getVnfResourceAssignments().getVnfNetworks()
- .setVnfNetwork(new ArrayList<>());
- vnf.getVnfData().getVnfTopology().getVnfResourceAssignments().getVnfNetworks()
- .addVnfNetworkItem(genericResourceApiVnfNetworkDataBodyParam);
- vnflist.addVnfItem(vnf);
responseStatus = HttpStatus.CREATED;
- } else {
- log.info("Updating VNF data for ({})", vnfId);
- // Filter out all of the other vnf objects into a new VNF List
- // Replace if a delete method exists
- svcData.getVnfs().getVnf().stream().filter(targetVnf -> !targetVnf.getVnfId().equals(vnfId))
- .forEach(vnflist::addVnfItem);
- GenericResourceApiServicedataServicedataVnfsVnf vnf = new GenericResourceApiServicedataServicedataVnfsVnf();
- // If the vnf exists, set it up with new data
- Optional<GenericResourceApiServicedataServicedataVnfsVnf> vnfOptional = getVnfObject(data, vnfId);
- if (vnfOptional.isPresent()) {
- vnf = vnfOptional.get();
- }
- if (vnf.getVnfData() == null) {
- vnf.setVnfData(new GenericResourceApiServicedataServicedataVnfsVnfVnfData());
- }
- if (vnf.getVnfData().getVnfTopology() == null) {
- vnf.getVnfData().setVnfTopology(new GenericResourceApiVnftopologyVnfTopology());
- }
- if (vnf.getVnfData().getVnfTopology().getVnfResourceAssignments() == null) {
- vnf.getVnfData().getVnfTopology().setVnfResourceAssignments(
- new GenericResourceApiVnfresourceassignmentsVnfResourceAssignments());
- }
- if (vnf.getVnfData().getVnfTopology().getVnfResourceAssignments().getVnfNetworks() == null) {
- log.info("Creating new VnfNetworks");
- vnf.getVnfData().getVnfTopology().getVnfResourceAssignments().setVnfNetworks(
- new GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks());
- }
+ }
+ GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.getVnfData();
+ if (vnfData == null) {
+ vnfData = new GenericResourceApiServicedataServicedataVnfsVnfVnfData();
+ }
- GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks networkList = new GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks();
- if (vnf.getVnfData().getVnfTopology().getVnfResourceAssignments().getVnfNetworks().getVnfNetwork()
- .isEmpty()) {
- log.info("First entry into network info.");
- vnf.getVnfData().getVnfTopology().getVnfResourceAssignments().getVnfNetworks()
- .addVnfNetworkItem(genericResourceApiVnfNetworkDataBodyParam);
- responseStatus = HttpStatus.CREATED;
- } else {
- log.info("Found networks. Filtering.");
- vnf.getVnfData().getVnfTopology().getVnfResourceAssignments().getVnfNetworks().getVnfNetwork().stream()
- .filter(targetNetwork -> !targetNetwork.getNetworkRole().equals(networkRole))
- .forEach(networkList::addVnfNetworkItem);
- networkList.addVnfNetworkItem(genericResourceApiVnfNetworkDataBodyParam);
-
- if (networkList.getVnfNetwork().size() != vnf.getVnfData().getVnfTopology().getVnfResourceAssignments()
- .getVnfNetworks().getVnfNetwork().size()) {
- log.info("Added a new Item");
- responseStatus = HttpStatus.CREATED;
- }
- vnf.getVnfData().getVnfTopology().getVnfResourceAssignments().setVnfNetworks(networkList);
- }
+ GenericResourceApiVnftopologyVnfTopology vnfTopology = vnfData.getVnfTopology();
+ if (vnfTopology == null) {
+ vnfTopology = new GenericResourceApiVnftopologyVnfTopology();
+ }
- vnflist.addVnfItem(vnf);
+ GenericResourceApiVnfresourceassignmentsVnfResourceAssignments vnfResourceAssignments = vnfTopology.getVnfResourceAssignments();
+ if (vnfResourceAssignments == null) {
+ vnfResourceAssignments = new GenericResourceApiVnfresourceassignmentsVnfResourceAssignments();
}
- svcData.setVnfs(vnflist);
- // Map and save the new data
+ GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks vnfNetworks = vnfResourceAssignments.getVnfNetworks();
+ if (vnfNetworks == null) {
+ vnfNetworks = new GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks();
+ vnfNetworks.setVnfNetwork(new ArrayList<>());
+ }
+
+
+ if (vnfNetworks.getVnfNetwork().isEmpty()) {
+ vnfNetworks.addVnfNetworkItem(genericResourceApiVnfNetworkDataBodyParam);
+ } else {
+ GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks vnfNetworksNew = new GenericResourceApiVnfresourceassignmentsVnfresourceassignmentsVnfNetworks();
+ vnfNetworksNew.setVnfNetwork(new ArrayList<>());
+ vnfNetworks.getVnfNetwork().stream()
+ .filter(targetNetwork -> !targetNetwork.getNetworkRole().equals(networkRole)).forEach(vnfNetworksNew::addVnfNetworkItem);
+
+ vnfNetworksNew.addVnfNetworkItem(genericResourceApiVnfNetworkDataBodyParam);
+ vnfNetworks = vnfNetworksNew;
+ }
+
+ vnfResourceAssignments.setVnfNetworks(vnfNetworks);
+ vnfTopology.setVnfResourceAssignments(vnfResourceAssignments);
+ vnfData.setVnfTopology(vnfTopology);
+ vnf.setVnfData(vnfData);
try {
- data.setSvcData(objectMapper.writeValueAsString(svcData));
- configServicesRepository.save(data);
+ serviceDataHelper.saveVnf(serviceInstanceId, vnf, transaction);
+ transaction.commit();
return new ResponseEntity<>(responseStatus);
} catch (JsonProcessingException e) {
log.error("Error mapping object to JSON", e);
@@ -1950,35 +1756,6 @@ public class ConfigApiController implements ConfigApi {
}
}
- /**
- * Extracts a VNF object from the database,
- *
- * @param configServices A Config Services option created from a Service
- * Instance ID
- * @param vnfId the target VNF ID
- * @return An empty Optional if the Service Data does not exist, an empty
- * Optional if the VNF is not found, or an optional containing the found
- * VNF.
- */
- private Optional<GenericResourceApiServicedataServicedataVnfsVnf> getVnfObject(ConfigServices configServices,
- String vnfId) {
- // Map the Marshall the JSON String into a Java Object
- log.info("Getting VNF Data for ({})", vnfId);
- GenericResourceApiServicedataServiceData svcData;
- try {
- svcData = objectMapper.readValue(configServices.getSvcData(),
- GenericResourceApiServicedataServiceData.class);
- } catch (JsonProcessingException e) {
- log.error("Error", e);
- return Optional.empty();
- }
-
- /*
- * Get a stream of the VNF Objects and return the target if it's found, assuming
- * that each VNF ID is unique within a Service Instance Object
- */
- return svcData.getVnfs().getVnf().stream().filter(targetVnf -> targetVnf.getVnfId().equals(vnfId)).findFirst();
- }
@Override
public ResponseEntity<GenericResourceApiServicetopologyServiceTopology> configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataServiceTopologyGet(
@@ -1991,13 +1768,14 @@ public class ConfigApiController implements ConfigApi {
throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
}
+ ConfigServices service = services.get(0);
+
try {
- if (services.get(0).getSvcData().isEmpty()) {
+ if ( (service.getSvcData() == null) || service.getSvcData().isEmpty()) {
throw new RestProtocolException("data-missing", "No service-data entry found",
HttpStatus.NOT_FOUND.value());
} else {
- serviceData = objectMapper.readValue(services.get(0).getSvcData(),
- GenericResourceApiServicedataServiceData.class);
+ serviceData = serviceDataHelper.getServiceData(service);
serviceTopology = serviceData.getServiceTopology();
}
if (serviceTopology == null) {
@@ -2031,21 +1809,24 @@ public class ConfigApiController implements ConfigApi {
log.info("GET | Vf Module Data for ({})", vfModuleId);
- if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- if(getAcceptHeader().get().contains("application/json")) {
- }
- } else {
- log.warn("ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
+
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
if((services == null) || (services.isEmpty())) {
throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
}
- Optional<GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule> vfModule =
- getVfModuleObject(services.get(0), vnfId, vfModuleId);
- if(vfModule.isPresent()) {
- return new ResponseEntity<>(vfModule.get(), HttpStatus.OK);
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vfModule;
+ try {
+ vfModule = serviceDataHelper.getVfModule(serviceInstanceId, vnfId, vfModuleId);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+
+ if(vfModule != null) {
+ return new ResponseEntity<>(vfModule, HttpStatus.OK);
} else {
log.info("No vf-module found for [{}]", vfModuleId);
throw new RestApplicationException("data-missing",
@@ -2074,75 +1855,42 @@ public class ConfigApiController implements ConfigApi {
if(! vfModuleId.equals(genericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModuleBodyParam.getVfModuleId())) {
throw new RestProtocolException("bad-attribute", "vf-module-id mismatch", HttpStatus.BAD_REQUEST.value());
}
- if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- log.info("Something with header");
- } else {
- log.warn("ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
+
HttpStatus responseStatus = HttpStatus.NO_CONTENT;
- ConfigServices service;
- GenericResourceApiServicedataServiceData svcData;
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
if((services == null) || (services.isEmpty())) {
log.error("service-instance-id ({}) not found in SDN.", serviceInstanceId);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
- } else {
- service = services.get(0);
- }
+ }
+
+ GenericResourceApiServicedataServicedataVnfsVnf vnf;
try {
- svcData = objectMapper.readValue(service.getSvcData(), GenericResourceApiServicedataServiceData.class);
- } catch(JsonProcessingException e) {
- log.error("Error", e);
- return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
+ vnf = serviceDataHelper.getVnf(serviceInstanceId, vnfId);
+ } catch (JsonProcessingException e1) {
+ log.error("Could not parse service data", e1);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e1,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
}
- GenericResourceApiServicedataServicedataVnfs vnfs = svcData.getVnfs();
- Optional<GenericResourceApiServicedataServicedataVnfsVnf> vnf =
- vnfs.getVnf()
- .stream()
- .filter(targetVnf -> targetVnf.getVnfId().equals(vnfId))
- .findFirst();
-
- if(! vnf.isPresent()) {
+ if(vnf == null) {
log.error("vnf-id ({}) not found in SDN.", vnfId);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
}
- GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.get().getVnfData();
- GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules existingVfModules = vnfData.getVfModules();
- GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules newVfModules = new GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules();
+ // See if this is the first vf module being added
+ List<ConfigVfModules> configVfModules = configVfModulesRepository.findBySvcInstanceIdAndVnfId(serviceInstanceId, vnfId);
- if (existingVfModules == null || existingVfModules.getVfModule().isEmpty()) {
- log.info("No existing vf-module found. Creating the first vf-module for vnf [{}]", vnfId);
- newVfModules.addVfModuleItem(genericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModuleBodyParam);
+ if ((configVfModules == null) || configVfModules.isEmpty()) {
responseStatus = HttpStatus.CREATED;
}
- else {
- ArrayList<String> vfModuleIds = new ArrayList<>();
- for (GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vf : existingVfModules.getVfModule()) {
- vfModuleIds.add(vf.getVfModuleId());
- }
- log.info("[{}] vf-module(s) {} found in vnf [{}]", existingVfModules.getVfModule().size(), vfModuleIds, vnfId);
- if (!vfModuleIds.isEmpty() && vfModuleIds.contains(vfModuleId)) {
- log.info("Overwriting vf-module [{}] in vnf [{}]", vfModuleId, vnfId);
- } else {
- log.info("Adding vf-module [{}] to vnf [{}]", vfModuleId, vnfId);
- }
- existingVfModules.getVfModule()
- .stream()
- .filter(vf -> ! vf.getVfModuleId().equals(vfModuleId))
- .forEach(newVfModules::addVfModuleItem);
- newVfModules.addVfModuleItem(genericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModuleBodyParam);
- responseStatus = HttpStatus.OK;
- }
- vnfData.setVfModules(newVfModules);
- // Map and save the new data
+
+ // Add vf module
try {
- service.setSvcData(objectMapper.writeValueAsString(svcData));
- configServicesRepository.save(service);
+ serviceDataHelper.saveVfModule(serviceInstanceId, vnfId, genericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModuleBodyParam, null);
return new ResponseEntity<>(responseStatus);
} catch(JsonProcessingException e) {
log.error("Error mapping object to JSON", e);
@@ -2167,13 +1915,7 @@ public class ConfigApiController implements ConfigApi {
configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdVfModuleDataVfModuleTopologyGet(
String serviceInstanceId, String vnfId, String vfModuleId) throws RestException {
log.info("GET | vf-module-topology for ({})", vfModuleId);
- if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- if (getAcceptHeader().get().contains("application/json")) {
- log.info("Something with header");
- }
- } else {
- log.warn("ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
+
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
if((services == null) || (services.isEmpty())) {
throw new RestApplicationException("data-missing",
@@ -2181,12 +1923,19 @@ public class ConfigApiController implements ConfigApi {
HttpStatus.NOT_FOUND.value());
}
- Optional<GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule> vfModule =
- getVfModuleObject(services.get(0), vnfId, vfModuleId);
- if(vfModule.isPresent()
- && vfModule.get().getVfModuleData() != null
- && vfModule.get().getVfModuleData().getVfModuleTopology() != null) {
- return new ResponseEntity<>(vfModule.get().getVfModuleData().getVfModuleTopology(), HttpStatus.OK);
+ GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vfModule;
+ try {
+ vfModule = serviceDataHelper.getVfModule(serviceInstanceId, vnfId, vfModuleId);
+ } catch (JsonProcessingException e) {
+ log.error("Could not parse service data", e);
+ throw new RestApplicationException("data-conversion",
+ "Request could not be completed due to internal error", e,
+ HttpStatus.INTERNAL_SERVER_ERROR.value());
+ }
+ if (vfModule != null
+ && vfModule.getVfModuleData() != null
+ && vfModule.getVfModuleData().getVfModuleTopology() != null) {
+ return new ResponseEntity<>(vfModule.getVfModuleData().getVfModuleTopology(), HttpStatus.OK);
} else {
log.info("No information found for {}", vfModuleId);
throw new RestApplicationException("data-missing",
@@ -2201,78 +1950,20 @@ public class ConfigApiController implements ConfigApi {
log.info("DELETE | vf-module Data for ({})", vfModuleId);
- if (getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
- log.info("Something with header.");
- } else {
- log.warn("ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
- }
- ConfigServices service;
- GenericResourceApiServicedataServiceData svcData;
+
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
if((services == null) || (services.isEmpty())) {
log.error("service-instance-id ({}) not found in SDN.", serviceInstanceId);
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
- } else {
- service = services.get(0);
- }
+ }
- try {
- svcData = objectMapper.readValue(service.getSvcData(), GenericResourceApiServicedataServiceData.class);
- } catch(JsonProcessingException e) {
- log.error("Error", e);
- return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
- }
- GenericResourceApiServicedataServicedataVnfs vnfs = svcData.getVnfs();
- Optional<GenericResourceApiServicedataServicedataVnfsVnf> vnf =
- vnfs.getVnf()
- .stream()
- .filter(targetVnf -> targetVnf.getVnfId().equals(vnfId))
- .findFirst();
- if(! vnf.isPresent()) {
- log.error("vnf-id ({}) not found in SDN.", vnfId);
- return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
- }
-
- GenericResourceApiServicedataServicedataVnfsVnfVnfData vnfData = vnf.get().getVnfData();
- GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules existingVfModules = vnfData.getVfModules();
- GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules newVfModules = new GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfModules();
-
- if (existingVfModules == null || existingVfModules.getVfModule().isEmpty()) {
- log.info("No existing vf-module found. Creating the first vf-module for vnf [{}]", vnfId);
- return new ResponseEntity<>(HttpStatus.OK);
- }
-
- ArrayList<String> vfModuleIds = new ArrayList<>();
- for (GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule vf : existingVfModules.getVfModule()) {
- vfModuleIds.add(vf.getVfModuleId());
- }
- log.info("[{}] vf-module(s) {} found in vnf [{}]", existingVfModules.getVfModule().size(), vfModuleIds, vnfId);
- if (!vfModuleIds.isEmpty() && vfModuleIds.contains(vfModuleId)) {
- log.info("Deleting vf-module [{}] from vnf [{}]", vfModuleId, vnfId);
- } else {
- log.info("vf-module [{}] not found in vnf [{}]", vfModuleId, vnfId);
- return new ResponseEntity<>(HttpStatus.OK);
- }
- existingVfModules.getVfModule()
- .stream()
- .filter(vf -> ! vf.getVfModuleId().equals(vfModuleId))
- .forEach(newVfModules::addVfModuleItem);
- vnfData.setVfModules(newVfModules);
- log.info("vf-module [{}] deleted from vnf [{}]", vfModuleId, vnfId);
-
- // Map and save the new data
- try {
- service.setSvcData(objectMapper.writeValueAsString(svcData));
- configServicesRepository.save(service);
- return new ResponseEntity<>(HttpStatus.OK);
- } catch(JsonProcessingException e) {
- log.error("Error mapping object to JSON", e);
- // Should probably be a 500 INTERNAL_SERVICE_ERROR
- return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
- }
+ serviceDataHelper.deleteVfModule(serviceInstanceId, vnfId, vfModuleId);
+ return new ResponseEntity<>(HttpStatus.OK);
+
}
}
+