package org.opendaylight.transportpce.renderer.rpcs;
-import java.util.concurrent.Future;
-
+import com.google.common.util.concurrent.ListenableFuture;
+import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
+import org.opendaylight.transportpce.common.service.ServiceTypes;
import org.opendaylight.transportpce.renderer.provisiondevice.DeviceRendererService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererRollbackOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.RendererService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.renderer.rev170228.ServicePathOutputBuilder;
+import org.opendaylight.transportpce.renderer.provisiondevice.OtnDeviceRendererService;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.CreateOtsOmsOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.OtnServicePathOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.RendererRollbackOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathInput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.ServicePathOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.device.renderer.rev210618.TransportpceDeviceRendererService;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class DeviceRendererRPCImpl implements RendererService {
+public class DeviceRendererRPCImpl implements TransportpceDeviceRendererService {
private static final Logger LOG = LoggerFactory.getLogger(DeviceRendererRPCImpl.class);
private DeviceRendererService deviceRenderer;
+ private OtnDeviceRendererService otnDeviceRendererService;
- public DeviceRendererRPCImpl(DeviceRendererService deviceRenderer) {
+ public DeviceRendererRPCImpl(DeviceRendererService deviceRenderer,
+ OtnDeviceRendererService otnDeviceRendererService) {
this.deviceRenderer = deviceRenderer;
+ this.otnDeviceRendererService = otnDeviceRendererService;
}
/**
* @return Result of the request
*/
@Override
- public Future<RpcResult<ServicePathOutput>> servicePath(ServicePathInput input) {
- if (input.getOperation().getIntValue() == 1) {
- LOG.info("Create operation request received");
- return RpcResultBuilder.success(deviceRenderer.setupServicePath(input, null)).buildFuture();
- } else if (input.getOperation().getIntValue() == 2) {
- LOG.info("Delete operation request received");
- return RpcResultBuilder.success(deviceRenderer.deleteServicePath(input)).buildFuture();
+ public ListenableFuture<RpcResult<ServicePathOutput>> servicePath(ServicePathInput input) {
+ if (input.getOperation() != null) {
+ if (input.getOperation().getIntValue() == 1) {
+ LOG.info("Create operation request received");
+ return RpcResultBuilder.success(
+ this.deviceRenderer.setupServicePath(input, null))
+ .buildFuture();
+ } else if (input.getOperation().getIntValue() == 2) {
+ LOG.info("Delete operation request received");
+ return RpcResultBuilder
+ .success(this.deviceRenderer.deleteServicePath(input))
+ .buildFuture();
+ }
}
return RpcResultBuilder.success(new ServicePathOutputBuilder().setResult("Invalid operation")).buildFuture();
}
+ @Override
+ public ListenableFuture<RpcResult<OtnServicePathOutput>> otnServicePath(OtnServicePathInput input) {
+ if (input.getOperation() != null && input.getServiceFormat() != null && input.getServiceRate() != null) {
+ String serviceType = ServiceTypes.getOtnServiceType(input.getServiceFormat(), input.getServiceRate());
+ if (input.getOperation().getIntValue() == 1) {
+ LOG.info("Create operation request received");
+ return RpcResultBuilder.success(this.otnDeviceRendererService
+ .setupOtnServicePath(input, serviceType)).buildFuture();
+ } else if (input.getOperation().getIntValue() == 2) {
+ LOG.info("Delete operation request received");
+ return RpcResultBuilder.success(this.otnDeviceRendererService
+ .deleteOtnServicePath(input, serviceType)).buildFuture();
+ }
+ }
+ return RpcResultBuilder.success(new OtnServicePathOutputBuilder().setResult("Invalid operation")).buildFuture();
+ }
+
/**
* Rollback created interfaces and cross connects specified by input.
*
- * @param input Lists of created interfaces and connections per node
+ * @param input
+ * Lists of created interfaces and connections per node
* @return Success flag and nodes which failed to rollback
*/
@Override
- public Future<RpcResult<RendererRollbackOutput>> rendererRollback(RendererRollbackInput input) {
- return RpcResultBuilder.success(deviceRenderer.rendererRollback(input)).buildFuture();
+ public ListenableFuture<RpcResult<RendererRollbackOutput>> rendererRollback(RendererRollbackInput input) {
+ return RpcResultBuilder.success(this.deviceRenderer.rendererRollback(input)).buildFuture();
+ }
+
+ @Override
+ public ListenableFuture<RpcResult<CreateOtsOmsOutput>> createOtsOms(CreateOtsOmsInput input) {
+ LOG.info("Request received to create oms and ots interfaces on {}: {}", input.getNodeId(), input
+ .getLogicalConnectionPoint());
+ try {
+ return RpcResultBuilder.success(deviceRenderer.createOtsOms(input)).buildFuture();
+ } catch (OpenRoadmInterfaceException e) {
+ LOG.error("failed to send request to create oms and ots interfaces on {}: {}", input.getNodeId(),
+ input.getLogicalConnectionPoint(),e);
+ }
+ return null;
}
}