Add customer name to pathComputationRequest input
[transportpce.git] / servicehandler / src / main / java / org / opendaylight / transportpce / servicehandler / service / ServiceDataStoreOperationsImpl.java
index b971605f74550f43887d4129b0b1ce3530af53a7..0aabf72778a71abd87382a4fa4b31a5231031582 100644 (file)
@@ -10,12 +10,10 @@ package org.opendaylight.transportpce.servicehandler.service;
 import com.google.common.util.concurrent.FluentFuture;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.api.DataBroker;
-import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -23,27 +21,31 @@ import org.opendaylight.transportpce.common.OperationResult;
 import org.opendaylight.transportpce.common.Timeouts;
 import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
 import org.opendaylight.transportpce.servicehandler.ServiceInput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev200128.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205.PathComputationRequestOutput;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceList;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceCreateInput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceList;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.TempServiceListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.Services;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.service.list.ServicesKey;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev200128.service.path.PathDescription;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceCreateInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.ServiceListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceCreateInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.TempServiceListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.Services;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526.service.list.ServicesKey;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.service.types.rev220118.service.path.PathDescription;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.ServicePathList;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePaths;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsBuilder;
 import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev171017.service.path.list.ServicePathsKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@Component(immediate = true)
 public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperations {
     private static final Logger LOG = LoggerFactory.getLogger(ServiceDataStoreOperationsImpl.class);
     private static final String CREATE_MSG = "create";
@@ -73,7 +75,8 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     }
 
 
-    public ServiceDataStoreOperationsImpl(DataBroker dataBroker) {
+    @Activate
+    public ServiceDataStoreOperationsImpl(@Reference DataBroker dataBroker) {
         this.dataBroker = dataBroker;
     }
 
@@ -87,9 +90,10 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
         try {
             LOG.info("initializing service registry");
             WriteTransaction transaction = this.dataBroker.newWriteOnlyTransaction();
-            InstanceIdentifier<ServiceList> iid = InstanceIdentifier.create(ServiceList.class);
-            ServiceList initialRegistry = new ServiceListBuilder().build();
-            transaction.put(LogicalDatastoreType.OPERATIONAL, iid, initialRegistry);
+            transaction.put(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(ServiceList.class),
+                new ServiceListBuilder().build());
             FluentFuture<? extends @NonNull CommitInfo> future = transaction.commit();
             future.get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
@@ -101,9 +105,10 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
         try {
             LOG.info("initializing temp service registry");
             WriteTransaction transaction = this.dataBroker.newWriteOnlyTransaction();
-            InstanceIdentifier<TempServiceList> iid = InstanceIdentifier.create(TempServiceList.class);
-            TempServiceList initialRegistry = new TempServiceListBuilder().build();
-            transaction.put(LogicalDatastoreType.OPERATIONAL, iid, initialRegistry);
+            transaction.put(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(TempServiceList.class),
+                new TempServiceListBuilder().build());
             FluentFuture<? extends @NonNull CommitInfo> future = transaction.commit();
             future.get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
@@ -114,12 +119,13 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     @Override
     public Optional<Services> getService(String serviceName) {
         try {
-            ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction();
-            InstanceIdentifier<Services> iid =
-                    InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
-            Future<java.util.Optional<Services>> future =
-                    readTx.read(LogicalDatastoreType.OPERATIONAL, iid);
-            return future.get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
+            return this.dataBroker.newReadOnlyTransaction()
+                    .read(
+                        LogicalDatastoreType.OPERATIONAL,
+                        InstanceIdentifier.create(ServiceList.class)
+                            .child(Services.class, new ServicesKey(serviceName))
+                        )
+                    .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
             LOG.warn("Reading service {} failed:", serviceName, e);
         }
@@ -129,12 +135,11 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     @Override
     public Optional<ServiceList> getServices() {
         try {
-            ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction();
-            InstanceIdentifier<ServiceList> iid =
-                    InstanceIdentifier.create(ServiceList.class);
-            Future<java.util.Optional<ServiceList>> future =
-                    readTx.read(LogicalDatastoreType.OPERATIONAL, iid);
-            return future.get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
+            return this.dataBroker.newReadOnlyTransaction()
+                    .read(
+                        LogicalDatastoreType.OPERATIONAL,
+                        InstanceIdentifier.create(ServiceList.class))
+                    .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
             LOG.warn("Reading services failed:", e);
         }
@@ -142,18 +147,19 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     }
 
     @Override
-    public Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list.Services>
-            getTempService(String serviceName) {
+    public Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+            .temp.service.list.Services> getTempService(String serviceName) {
         try {
-            ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction();
-            InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                .Services> iid = InstanceIdentifier.create(TempServiceList.class).child(org.opendaylight.yang.gen.v1
-                        .http.org.openroadm.service.rev190531.temp.service.list.Services.class,
-                        new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                            .ServicesKey(serviceName));
-            Future<java.util.Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531
-                .temp.service.list.Services>> future =  readTx.read(LogicalDatastoreType.OPERATIONAL, iid);
-            return future.get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
+            return this.dataBroker.newReadOnlyTransaction()
+                    .read(
+                        LogicalDatastoreType.OPERATIONAL,
+                        InstanceIdentifier.create(TempServiceList.class)
+                            .child(
+                                org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                                    .temp.service.list.Services.class,
+                                new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                                    .temp.service.list.ServicesKey(serviceName)))
+                    .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
             LOG.warn("Reading service {} failed:", serviceName, e);
         }
@@ -165,9 +171,10 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
         LOG.debug(DELETING_SERVICE_MSG, serviceName);
         try {
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-            InstanceIdentifier<Services> iid =
-                    InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
-            writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
+            writeTx.delete(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(ServiceList.class)
+                    .child(Services.class, new ServicesKey(serviceName)));
             writeTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
             return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
@@ -181,12 +188,14 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
         LOG.debug(DELETING_SERVICE_MSG, commonId);
         try {
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-            InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                .Services> iid = InstanceIdentifier.create(TempServiceList.class).child(org.opendaylight.yang.gen.v1
-                        .http.org.openroadm.service.rev190531.temp.service.list.Services.class,
-                        new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                            .ServicesKey(commonId));
-            writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
+            writeTx.delete(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(TempServiceList.class)
+                    .child(
+                        org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                            .temp.service.list.Services.class,
+                        new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                            .temp.service.list.ServicesKey(commonId)));
             writeTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
             return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
@@ -199,19 +208,20 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     public OperationResult modifyService(String serviceName, State operationalState, AdminStates administrativeState) {
         LOG.debug("Modifying '{}' Service", serviceName);
         Optional<Services> readService = getService(serviceName);
-        if (!readService.isPresent()) {
+        if (readService.isEmpty()) {
             LOG.warn("modifyService: {}", LogMessages.SERVICE_NOT_FOUND);
             return OperationResult.failed(LogMessages.SERVICE_NOT_FOUND);
         }
         try {
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-            InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
-                    .child(Services.class, new ServicesKey(serviceName));
-            Services services = new ServicesBuilder(readService.get())
-                .setOperationalState(convertOperState(operationalState))
-                .setAdministrativeState(convertAdminState(administrativeState))
-                .build();
-            writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
+            writeTx.merge(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(ServiceList.class)
+                    .child(Services.class, new ServicesKey(serviceName)),
+                new ServicesBuilder(readService.orElseThrow())
+                    .setOperationalState(operationalState)
+                    .setAdministrativeState(administrativeState)
+                    .build());
             writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
             return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
@@ -221,29 +231,30 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     }
 
     @Override
-    public OperationResult modifyTempService(String serviceName, State operationalState,
-        AdminStates administrativeState) {
+    public OperationResult modifyTempService(
+            String serviceName, State operationalState, AdminStates administrativeState) {
         LOG.debug("Modifying '{}' Temp Service", serviceName);
-        Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-            .Services> readService = getTempService(serviceName);
-        if (!readService.isPresent()) {
+        Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                .temp.service.list.Services> readService = getTempService(serviceName);
+        if (readService.isEmpty()) {
             LOG.warn("modifyTempService: {}", LogMessages.SERVICE_NOT_FOUND);
             return OperationResult.failed(LogMessages.SERVICE_NOT_FOUND);
         }
         try {
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-            InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                .Services> iid = InstanceIdentifier.create(TempServiceList.class)
-                    .child(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                            .Services.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531
-                                .temp.service.list.ServicesKey(serviceName));
-            org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list.Services services =
-                new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list.ServicesBuilder(
-                    readService.get())
-                .setOperationalState(convertOperState(operationalState))
-                .setAdministrativeState(convertAdminState(administrativeState))
-                .build();
-            writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
+            writeTx.merge(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(TempServiceList.class)
+                    .child(
+                        org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                            .temp.service.list.Services.class,
+                        new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                            .temp.service.list.ServicesKey(serviceName)),
+                new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                        .temp.service.list.ServicesBuilder(readService.orElseThrow())
+                    .setOperationalState(operationalState)
+                    .setAdministrativeState(administrativeState)
+                    .build());
             writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
             return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
@@ -256,11 +267,12 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     public OperationResult createService(ServiceCreateInput serviceCreateInput) {
         LOG.debug("Writing '{}' Service", serviceCreateInput.getServiceName());
         try {
-            InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
-                    .child(Services.class, new ServicesKey(serviceCreateInput.getServiceName()));
-            Services service = ModelMappingUtils.mappingServices(serviceCreateInput, null);
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-            writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
+            writeTx.put(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(ServiceList.class)
+                    .child(Services.class, new ServicesKey(serviceCreateInput.getServiceName())),
+                ModelMappingUtils.mappingServices(serviceCreateInput, null));
             writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
             return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
@@ -270,18 +282,21 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     }
 
     @Override
-    public OperationResult createTempService(TempServiceCreateInput tempServiceCreateInput) {
+    public OperationResult createTempService(
+            TempServiceCreateInput tempServiceCreateInput,
+            org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev240205
+                    .service.path.rpc.result.PathDescription pathDescription) {
         LOG.debug("Writing '{}' Temp Service", tempServiceCreateInput.getCommonId());
         try {
-            InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                .Services> iid = InstanceIdentifier.create(TempServiceList.class)
-                    .child(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                            .Services.class, new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp
-                                .service.list.ServicesKey(tempServiceCreateInput.getCommonId()));
-            org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
-                .Services service = ModelMappingUtils.mappingServices(tempServiceCreateInput);
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-            writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
+            writeTx.put(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(TempServiceList.class)
+                    .child(org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                            .temp.service.list.Services.class,
+                        new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev230526
+                            .temp.service.list.ServicesKey(tempServiceCreateInput.getCommonId())),
+                ModelMappingUtils.mappingServices(tempServiceCreateInput, pathDescription));
             writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
             return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
@@ -295,11 +310,11 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     public Optional<ServicePathList> getServicePaths() {
         LOG.debug("Retrieving list of ServicePath...");
         try {
-            ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction();
-            InstanceIdentifier<ServicePathList> servicePathListIID = InstanceIdentifier.create(ServicePathList.class);
-            Future<java.util.Optional<ServicePathList>> future = readTx.read(LogicalDatastoreType.OPERATIONAL,
-                    servicePathListIID);
-            return future.get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
+            return this.dataBroker.newReadOnlyTransaction()
+                    .read(
+                        LogicalDatastoreType.OPERATIONAL,
+                        InstanceIdentifier.create(ServicePathList.class))
+                    .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
             LOG.error("Reading service path list failed. Error={}", e.getMessage());
         }
@@ -310,12 +325,12 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     public Optional<ServicePaths> getServicePath(String serviceName) {
         LOG.debug("Retrieving service path of service {}", serviceName);
         try {
-            ReadTransaction readTx = this.dataBroker.newReadOnlyTransaction();
-            InstanceIdentifier<ServicePaths> servicePathsIID = InstanceIdentifier.create(ServicePathList.class)
-                    .child(ServicePaths.class, new ServicePathsKey(serviceName));
-            Future<java.util.Optional<ServicePaths>> future = readTx.read(LogicalDatastoreType.OPERATIONAL,
-                    servicePathsIID);
-            return future.get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
+            return this.dataBroker.newReadOnlyTransaction()
+                    .read(
+                        LogicalDatastoreType.OPERATIONAL,
+                        InstanceIdentifier.create(ServicePathList.class)
+                            .child(ServicePaths.class, new ServicePathsKey(serviceName)))
+                    .get(Timeouts.DATASTORE_READ, TimeUnit.MILLISECONDS);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
             LOG.error("Reading service path failed. Error={}", e.getMessage());
         }
@@ -326,11 +341,12 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     public OperationResult createServicePath(ServiceInput serviceInput, PathComputationRequestOutput outputFromPce) {
         LOG.debug("Writing '{}' ServicePath ", serviceInput.getServiceName());
         try {
-            InstanceIdentifier<ServicePaths> servicePathsIID = InstanceIdentifier.create(ServicePathList.class)
-                    .child(ServicePaths.class, new ServicePathsKey(serviceInput.getServiceName()));
-            ServicePaths servicePath = ModelMappingUtils.mappingServicePaths(serviceInput, outputFromPce);
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-            writeTx.put(LogicalDatastoreType.OPERATIONAL, servicePathsIID, servicePath);
+            writeTx.put(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(ServicePathList.class)
+                    .child(ServicePaths.class, new ServicePathsKey(serviceInput.getServiceName())),
+                ModelMappingUtils.mappingServicePaths(serviceInput, outputFromPce));
             writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
             return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
@@ -344,31 +360,30 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
     public OperationResult modifyServicePath(PathDescription pathDescription, String serviceName) {
         LOG.debug("Updating servicePath because of a change in the openroadm-topology");
         Optional<ServicePaths> readServicePath = getServicePath(serviceName);
-        if (!readServicePath.isPresent()) {
+        if (readServicePath.isEmpty()) {
             LOG.warn("modifyServicePath: {}", LogMessages.SERVICE_PATH_NOT_FOUND);
             return OperationResult.failed(LogMessages.SERVICE_PATH_NOT_FOUND);
         }
         try {
             WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
-            InstanceIdentifier<ServicePaths> iid = InstanceIdentifier.create(ServicePathList.class)
-                    .child(ServicePaths.class, new ServicePathsKey(serviceName));
-            ServicePaths servicePaths = new ServicePathsBuilder()
-                    .setServiceAEnd(readServicePath.get().getServiceAEnd())
-                    .setServiceHandlerHeader(readServicePath.get().getServiceHandlerHeader())
-                    .setServicePathName(readServicePath.get().getServicePathName())
-                    .setServiceZEnd(readServicePath.get().getServiceZEnd())
-                    .setSupportingServiceName(readServicePath.get().getSupportingServiceName())
-                    .setEquipmentSrgs(readServicePath.get().getEquipmentSrgs())
-                    .setFiberSpanSrlgs(readServicePath.get().getFiberSpanSrlgs())
-                    .setHardConstraints(readServicePath.get().getHardConstraints())
-                    .setLatency(readServicePath.get().getLatency())
-                    .setLocallyProtectedLinks(readServicePath.get().isLocallyProtectedLinks())
+            writeTx.merge(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(ServicePathList.class)
+                    .child(ServicePaths.class, new ServicePathsKey(serviceName)),
+                new ServicePathsBuilder()
+                    .setServiceAEnd(readServicePath.orElseThrow().getServiceAEnd())
+                    .setServiceHandlerHeader(readServicePath.orElseThrow().getServiceHandlerHeader())
+                    .setServicePathName(readServicePath.orElseThrow().getServicePathName())
+                    .setServiceZEnd(readServicePath.orElseThrow().getServiceZEnd())
+                    .setSupportingServiceName(readServicePath.orElseThrow().getSupportingServiceName())
+                    .setEquipmentSrgs(readServicePath.orElseThrow().getEquipmentSrgs())
+                    .setFiberSpanSrlgs(readServicePath.orElseThrow().getFiberSpanSrlgs())
+                    .setHardConstraints(readServicePath.orElseThrow().getHardConstraints())
+                    .setLatency(readServicePath.orElseThrow().getLatency())
                     .setPathDescription(pathDescription)
-                    .setPceMetric(readServicePath.get().getPceMetric())
-                    .setSoftConstraints(readServicePath.get().getSoftConstraints())
-                    .build();
-
-            writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, servicePaths);
+                    .setPceRoutingMetric(readServicePath.orElseThrow().getPceRoutingMetric())
+                    .setSoftConstraints(readServicePath.orElseThrow().getSoftConstraints())
+                    .build());
             writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
             return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
         } catch (TimeoutException | InterruptedException | ExecutionException e) {
@@ -379,7 +394,8 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
 
     @Override
     public OperationResult deleteServicePath(String serviceName) {
-        InstanceIdentifier<ServicePaths> servicePathsIID = InstanceIdentifier.create(ServicePathList.class)
+        InstanceIdentifier<ServicePaths> servicePathsIID =
+            InstanceIdentifier.create(ServicePathList.class)
                 .child(ServicePaths.class, new ServicePathsKey(serviceName));
         LOG.debug("Deleting service from {}", servicePathsIID);
         WriteTransaction servicePathsWriteTx = this.dataBroker.newWriteOnlyTransaction();
@@ -408,26 +424,25 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
      */
     @Deprecated
     @Override
-    public String writeOrModifyOrDeleteServiceList(String serviceName, ServiceCreateInput input,
-            PathComputationRequestOutput output, int choice) {
+    public String writeOrModifyOrDeleteServiceList(
+            String serviceName, ServiceCreateInput input, PathComputationRequestOutput output, int choice) {
         LOG.debug("WriteOrModifyOrDeleting '{}' Service", serviceName);
         WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
         Optional<Services> readService = getService(serviceName);
-
         /*
          * Write Service.
          */
-        if (!readService.isPresent()) {
+        if (readService.isEmpty()) {
             if (choice != 2) {
                 LOG.warn("writeOrModifyOrDeleteServiceList: {}", LogMessages.SERVICE_NOT_FOUND);
                 return LogMessages.SERVICE_NOT_FOUND;
             }
-
             LOG.debug("Writing '{}' Service", serviceName);
-            InstanceIdentifier<Services> iid = InstanceIdentifier.create(ServiceList.class)
-                    .child(Services.class, new ServicesKey(serviceName));
-            Services service = ModelMappingUtils.mappingServices(input, null);
-            writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
+            writeTx.put(
+                LogicalDatastoreType.OPERATIONAL,
+                InstanceIdentifier.create(ServiceList.class)
+                    .child(Services.class, new ServicesKey(serviceName)),
+                ModelMappingUtils.mappingServices(input, null));
             try {
                 writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
                 return null;
@@ -441,15 +456,18 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
          * Modify / Delete Service.
          */
         InstanceIdentifier<Services> iid =
-                InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
-        ServicesBuilder service = new ServicesBuilder(readService.get());
+            InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
         String action = null;
         switch (choice) {
             case 0 : /* Modify. */
                 LOG.debug("Modifying '{}' Service", serviceName);
-                service.setOperationalState(convertOperState(State.InService))
-                    .setAdministrativeState(convertAdminState(AdminStates.InService));
-                writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, service.build());
+                writeTx.merge(
+                    LogicalDatastoreType.OPERATIONAL,
+                    iid,
+                    new ServicesBuilder(readService.orElseThrow())
+                        .setOperationalState(State.InService)
+                        .setAdministrativeState(AdminStates.InService)
+                        .build());
                 action = "modifyService";
                 break;
             case 1 : /* Delete */
@@ -470,16 +488,4 @@ public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperation
 
         return null;
     }
-
-    private org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates
-        convertAdminState(AdminStates adminState61) {
-        return org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates
-            .valueOf(adminState61.name());
-    }
-
-    private org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State
-        convertOperState(State operState61) {
-        return org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State
-            .valueOf(operState61.name());
-    }
 }