+ @Override
+ 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()) {
+ 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())
+ .setPathDescription(pathDescription)
+ .setPceRoutingMetric(readServicePath.get().getPceRoutingMetric())
+ .setSoftConstraints(readServicePath.get().getSoftConstraints())
+ .build();
+
+ writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, servicePaths);
+ writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
+ } catch (TimeoutException | InterruptedException | ExecutionException e) {
+ LOG.warn("modifyServicePath : {}", LogMessages.failedTo("modify service path", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("modify service path", serviceName));
+ }
+ }
+