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.rev190624.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev181130.State;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev181130.AdminStates;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev220118.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.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.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.slf4j.Logger;
public class ServiceDataStoreOperationsImpl implements ServiceDataStoreOperations {
private static final Logger LOG = LoggerFactory.getLogger(ServiceDataStoreOperationsImpl.class);
- private static final String SUCCESSFUL_MESSAGE = "Successful";
+ private static final String CREATE_MSG = "create";
+ private static final String DELETING_SERVICE_MSG = "Deleting '{}' Service";
private DataBroker dataBroker;
+ // This is class is public so that these messages can be accessed from Junit (avoid duplications).
+ public static final class LogMessages {
+
+ public static final String SUCCESSFUL_MESSAGE;
+ public static final String SERVICE_NOT_FOUND;
+ public static final String SERVICE_PATH_NOT_FOUND;
+
+ // Static blocks are generated once and spare memory.
+ static {
+ SUCCESSFUL_MESSAGE = "Successful";
+ SERVICE_NOT_FOUND = "Service not found";
+ SERVICE_PATH_NOT_FOUND = "Service path not found";
+ }
+
+ public static String failedTo(String action, String serviceName) {
+ return "Failed to " + action + " service " + serviceName;
+ }
+
+ private LogMessages() {
+ }
+ }
+
+
public ServiceDataStoreOperationsImpl(DataBroker dataBroker) {
this.dataBroker = dataBroker;
}
FluentFuture<? extends @NonNull CommitInfo> future = transaction.commit();
future.get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
- LOG.warn("init failed: {}", e.getMessage());
+ LOG.error("init failed: ", e);
}
}
FluentFuture<? extends @NonNull CommitInfo> future = transaction.commit();
future.get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
- LOG.warn("init failed: {}", e.getMessage());
+ LOG.error("init failed: ", e);
}
}
}
@Override
- public Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.temp.service.list
- .Services> getTempService(String serviceName) {
+ 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);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.warn("Reading services failed:", e);
+ }
+ return Optional.empty();
+ }
+
+ @Override
+ public Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.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
@Override
public OperationResult deleteService(String serviceName) {
- LOG.debug("Deleting '{}' Service", serviceName);
+ 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.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to delete service " + serviceName + " from Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("deleteService : {}", LogMessages.failedTo("delete", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("delete", serviceName));
}
}
@Override
public OperationResult deleteTempService(String commonId) {
- LOG.debug("Deleting '{}' Service", commonId);
+ 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
.ServicesKey(commonId));
writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
writeTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to delete service " + commonId + " from Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("deleteTempService : {}", LogMessages.failedTo("delete Temp", commonId), e);
+ return OperationResult.failed(LogMessages.failedTo("delete Temp", commonId));
}
}
public OperationResult modifyService(String serviceName, State operationalState, AdminStates administrativeState) {
LOG.debug("Modifying '{}' Service", serviceName);
Optional<Services> readService = getService(serviceName);
- if (readService.isPresent()) {
- 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(operationalState)
- .setAdministrativeState(administrativeState)
- .build();
- writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
- writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
- } catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to modify service " + serviceName + " from Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
- }
- } else {
- String message = "Service " + serviceName + " is not present!";
- LOG.warn(message);
- return OperationResult.failed(message);
+ if (!readService.isPresent()) {
+ 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.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
+ } catch (TimeoutException | InterruptedException | ExecutionException e) {
+ LOG.warn("modifyService : {}", LogMessages.failedTo("modify", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("modify", serviceName));
}
}
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()) {
- 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(operationalState)
- .setAdministrativeState(administrativeState)
- .build();
- writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, services);
- writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
- } catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to modify temp service " + serviceName + " from Temp Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
- }
- } else {
- String message = "Temp Service " + serviceName + " is not present!";
- LOG.warn(message);
- return OperationResult.failed(message);
+ if (!readService.isPresent()) {
+ 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.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
+ } catch (TimeoutException | InterruptedException | ExecutionException e) {
+ LOG.warn("modifyTempService : {}", LogMessages.failedTo("modify Temp", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("modify Temp", serviceName));
}
}
WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to create service " + serviceCreateInput.getServiceName() + " to Service List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("createService : {}", LogMessages.failedTo(CREATE_MSG, serviceCreateInput.getServiceName()), e);
+ return OperationResult.failed(LogMessages.failedTo(CREATE_MSG, serviceCreateInput.getServiceName()));
}
}
WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.OPERATIONAL, iid, service);
writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to create Temp service " + tempServiceCreateInput.getCommonId()
- + " to TempService List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("createTempService : {}",
+ LogMessages.failedTo("create Temp", tempServiceCreateInput.getCommonId()), e);
+ return OperationResult.failed(LogMessages.failedTo("create Temp", tempServiceCreateInput.getCommonId()));
}
}
+ @Override
+ 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);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error("Reading service path list failed. Error={}", e.getMessage());
+ }
+ return Optional.empty();
+ }
+
+ @Override
+ 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);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error("Reading service path failed. Error={}", e.getMessage());
+ }
+ return Optional.empty();
+ }
+
@Override
public OperationResult createServicePath(ServiceInput serviceInput, PathComputationRequestOutput outputFromPce) {
LOG.debug("Writing '{}' ServicePath ", serviceInput.getServiceName());
WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
writeTx.put(LogicalDatastoreType.OPERATIONAL, servicePathsIID, servicePath);
writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (TimeoutException | InterruptedException | ExecutionException e) {
- String message = "Failed to create servicePath " + serviceInput.getCommonId() + " to ServicePath List";
- LOG.warn(message, e);
- return OperationResult.failed(message);
+ LOG.warn("createServicePath : {}",
+ LogMessages.failedTo("create servicePath", serviceInput.getCommonId()), e);
+ return OperationResult.failed(LogMessages.failedTo("create servicePath", serviceInput.getCommonId()));
+ }
+ }
+
+ @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));
}
}
servicePathsWriteTx.delete(LogicalDatastoreType.OPERATIONAL, servicePathsIID);
try {
servicePathsWriteTx.commit().get(Timeouts.DATASTORE_DELETE, TimeUnit.MILLISECONDS);
- return OperationResult.ok(SUCCESSFUL_MESSAGE);
+ return OperationResult.ok(LogMessages.SUCCESSFUL_MESSAGE);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
- String message = "Unable to delete service path " + serviceName;
- LOG.error(message, e);
- return OperationResult.failed(message);
+ LOG.error("deleteServicePath : {}", LogMessages.failedTo("delete servicePath", serviceName), e);
+ return OperationResult.failed(LogMessages.failedTo("delete servicePath", serviceName));
}
}
PathComputationRequestOutput output, int choice) {
LOG.debug("WriteOrModifyOrDeleting '{}' Service", serviceName);
WriteTransaction writeTx = this.dataBroker.newWriteOnlyTransaction();
- String result = null;
Optional<Services> readService = getService(serviceName);
- if (readService.isPresent()) {
- /*
- * Modify / Delete Service.
- */
- InstanceIdentifier<Services> iid =
- InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
- ServicesBuilder service = new ServicesBuilder(readService.get());
- String action = null;
- switch (choice) {
- case 0 : /* Modify. */
- LOG.debug("Modifying '{}' Service", serviceName);
- service.setOperationalState(State.InService).setAdministrativeState(AdminStates.InService);
- writeTx.merge(LogicalDatastoreType.OPERATIONAL, iid, service.build());
- action = "modifyService";
- break;
- case 1 : /* Delete */
- LOG.debug("Deleting '{}' Service", serviceName);
- writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
- action = "deleteService";
- break;
- default:
- LOG.debug("No choice found");
- break;
+
+ /*
+ * Write Service.
+ */
+ if (!readService.isPresent()) {
+ 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);
try {
writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- } catch (InterruptedException | ExecutionException | TimeoutException e) {
- LOG.error("Failed to {} service from Service List", action, e);
- result = "Failed to " + action + " service from Service List";
- }
- } else {
- /*
- * Write Service.
- */
- if (choice == 2) {
- 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);
- try {
- writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
- result = null;
- } catch (InterruptedException | TimeoutException | ExecutionException e) {
- LOG.error("Failed to createService service to Service List", e);
- result = "Failed to createService service to Service List";
- }
- } else {
- LOG.info("Service is not present ! ");
- result = "Service is not present ! ";
+ return null;
+ } catch (InterruptedException | TimeoutException | ExecutionException e) {
+ LOG.error("writeOrModifyOrDeleteServiceList : {}", LogMessages.failedTo(CREATE_MSG, serviceName), e);
+ return LogMessages.failedTo(CREATE_MSG, serviceName);
}
}
- return result;
+
+ /*
+ * Modify / Delete Service.
+ */
+ InstanceIdentifier<Services> iid =
+ InstanceIdentifier.create(ServiceList.class).child(Services.class, new ServicesKey(serviceName));
+ ServicesBuilder service = new ServicesBuilder(readService.get());
+ 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());
+ action = "modifyService";
+ break;
+ case 1 : /* Delete */
+ LOG.debug(DELETING_SERVICE_MSG, serviceName);
+ writeTx.delete(LogicalDatastoreType.OPERATIONAL, iid);
+ action = "deleteService";
+ break;
+ default:
+ LOG.debug("No choice found");
+ break;
+ }
+ try {
+ writeTx.commit().get(Timeouts.DATASTORE_WRITE, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.error("writeOrModifyOrDeleteServiceList : {}", LogMessages.failedTo(action, serviceName), e);
+ return LogMessages.failedTo(action, serviceName);
+ }
+
+ 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());
}
}