2 * Copyright © 2018 Orange, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.transportpce.tapi.connectivity;
10 import com.google.common.util.concurrent.ListenableFuture;
11 import java.util.HashMap;
13 import java.util.UUID;
14 import org.opendaylight.transportpce.common.OperationResult;
15 import org.opendaylight.transportpce.tapi.utils.GenericServiceEndpoint;
16 import org.opendaylight.transportpce.tapi.utils.MappingUtils;
17 import org.opendaylight.transportpce.tapi.validation.CreateConnectivityServiceValidation;
18 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.OrgOpenroadmServiceService;
19 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateOutput;
21 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
22 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
23 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
24 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput;
25 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutput;
26 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutputBuilder;
27 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInput;
28 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutput;
29 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsInput;
30 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsOutput;
31 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsInput;
32 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsOutput;
33 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsInput;
34 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsOutput;
35 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListInput;
36 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListOutput;
37 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.TapiConnectivityService;
38 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceInput;
39 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceOutput;
40 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
41 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder;
42 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection;
43 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionBuilder;
44 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint;
45 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder;
46 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointKey;
47 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.ServiceInterfacePointBuilder;
48 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.output.ServiceBuilder;
49 import org.opendaylight.yangtools.yang.common.RpcResult;
50 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
51 import org.slf4j.Logger;
52 import org.slf4j.LoggerFactory;
55 * Top level service interface providing main TAPI Connectivity services.
57 public class TapiConnectivityImpl implements TapiConnectivityService {
59 private static final Logger LOG = LoggerFactory.getLogger(TapiConnectivityImpl.class);
61 private OrgOpenroadmServiceService serviceHandler;
63 public TapiConnectivityImpl(OrgOpenroadmServiceService serviceHandler) {
64 LOG.info("inside TapiImpl constructor");
65 this.serviceHandler = serviceHandler;
69 public ListenableFuture<RpcResult<CreateConnectivityServiceOutput>> createConnectivityService(
70 CreateConnectivityServiceInput input) {
71 LOG.info("RPC create-connectivity received: {}", input.getEndPoint());
72 OperationResult validationResult = CreateConnectivityServiceValidation.validateCreateConnectivityServiceRequest(
74 if (validationResult.isSuccess()) {
75 LOG.info("input parameter of RPC create-connectivity are being handled");
76 // check uuid of SIP in the map
77 Map<Uuid, GenericServiceEndpoint> map = MappingUtils.getMap();
79 if (map.containsKey(input.getEndPoint().values().stream().findFirst().get()
80 .getServiceInterfacePoint().getServiceInterfacePointUuid())
81 && map.containsKey(input.getEndPoint().values().stream().skip(1).findFirst().get()
82 .getServiceInterfacePoint()
83 .getServiceInterfacePointUuid())) {
84 ServiceCreateInput sci = ConnectivityUtils.buildServiceCreateInput(
85 map.get(input.getEndPoint().values().stream().findFirst().get()
86 .getServiceInterfacePoint()
87 .getServiceInterfacePointUuid()),
88 map.get(input.getEndPoint().values().stream().skip(1).findFirst().get()
89 .getServiceInterfacePoint()
90 .getServiceInterfacePointUuid()));
91 ListenableFuture<RpcResult<ServiceCreateOutput>> output = this.serviceHandler.serviceCreate(sci);
92 if (!output.isDone()) {
93 return RpcResultBuilder.<CreateConnectivityServiceOutput>failed().buildFuture();
96 LOG.error("Unknown UUID");
101 Map<EndPointKey, EndPoint> endPointList = new HashMap<>();
102 EndPoint endpoint1 = new EndPointBuilder()
103 .setLocalId(UUID.randomUUID().toString())
104 .setServiceInterfacePoint(new ServiceInterfacePointBuilder().setServiceInterfacePointUuid(new Uuid(UUID
105 .randomUUID().toString())).build())
107 EndPoint endpoint2 = new EndPointBuilder()
108 .setLocalId(UUID.randomUUID().toString())
109 .setServiceInterfacePoint(new ServiceInterfacePointBuilder().setServiceInterfacePointUuid(new Uuid(UUID
110 .randomUUID().toString())).build())
112 endPointList.put(endpoint1.key(), endpoint1);
113 endPointList.put(endpoint2.key(), endpoint2);
114 Connection connection = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
116 ConnectivityService service = new ConnectivityServiceBuilder()
117 .setUuid(new Uuid(UUID.randomUUID().toString()))
119 Name serviceName = new NameBuilder().setValueName("Service Name").setValue("SENDATE Service 1").build();
120 CreateConnectivityServiceOutput output = new CreateConnectivityServiceOutputBuilder()
121 .setService(new ServiceBuilder(service)
122 .setUuid(new Uuid(UUID.randomUUID().toString()))
123 .setName(Map.of(serviceName.key(), serviceName))
124 .setServiceLayer(input.getEndPoint().values().stream().findFirst().get().getLayerProtocolName())
125 .setEndPoint(endPointList)
126 .setConnection(Map.of(connection.key(), connection))
129 return RpcResultBuilder.success(output).buildFuture();
133 public ListenableFuture<RpcResult<GetConnectivityServiceDetailsOutput>> getConnectivityServiceDetails(
134 GetConnectivityServiceDetailsInput input) {
135 // TODO Auto-generated method stub
140 public ListenableFuture<RpcResult<UpdateConnectivityServiceOutput>> updateConnectivityService(
141 UpdateConnectivityServiceInput input) {
142 // TODO Auto-generated method stub
147 public ListenableFuture<RpcResult<GetConnectionDetailsOutput>> getConnectionDetails(
148 GetConnectionDetailsInput input) {
149 // TODO Auto-generated method stub
154 public ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> deleteConnectivityService(
155 DeleteConnectivityServiceInput input) {
156 //TODO Auto-generated method stub
161 public ListenableFuture<RpcResult<GetConnectivityServiceListOutput>> getConnectivityServiceList(
162 GetConnectivityServiceListInput input) {
163 // TODO Auto-generated method stub
168 public ListenableFuture<RpcResult<GetConnectionEndPointDetailsOutput>> getConnectionEndPointDetails(
169 GetConnectionEndPointDetailsInput input) {
170 // TODO Auto-generated method stub