TAPI topology creation for 100GE Transponder
[transportpce.git] / tapi / src / main / java / org / opendaylight / transportpce / tapi / impl / TapiImpl.java
1 /*
2  * Copyright © 2018 Orange, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.transportpce.tapi.impl;
9
10 import com.google.common.util.concurrent.ListenableFuture;
11
12 import java.util.ArrayList;
13 import java.util.List;
14 import java.util.Map;
15 import java.util.UUID;
16
17 import org.opendaylight.transportpce.common.OperationResult;
18 import org.opendaylight.transportpce.servicehandler.service.ServiceHandlerOperations;
19 import org.opendaylight.transportpce.tapi.utils.GenericServiceEndpoint;
20 import org.opendaylight.transportpce.tapi.utils.MappingUtils;
21 import org.opendaylight.transportpce.tapi.utils.TapiUtils;
22 import org.opendaylight.transportpce.tapi.validation.CreateConnectivityServiceValidation;
23 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
24 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateOutput;
25 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceDeleteInput;
26 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
27 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.Name;
28 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.global._class.NameBuilder;
29 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceInput;
30 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutput;
31 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.CreateConnectivityServiceOutputBuilder;
32 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceInput;
33 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.DeleteConnectivityServiceOutput;
34 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsInput;
35 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionDetailsOutput;
36 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsInput;
37 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectionEndPointDetailsOutput;
38 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsInput;
39 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceDetailsOutput;
40 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListInput;
41 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.GetConnectivityServiceListOutput;
42 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.TapiConnectivityService;
43 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceInput;
44 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.UpdateConnectivityServiceOutput;
45 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityService;
46 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.context.ConnectivityServiceBuilder;
47 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.Connection;
48 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.ConnectionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPoint;
50 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.EndPointBuilder;
51 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.connectivity.service.end.point.ServiceInterfacePointBuilder;
52 import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev181210.create.connectivity.service.output.ServiceBuilder;
53 import org.opendaylight.yangtools.yang.common.RpcResult;
54 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
55 import org.slf4j.Logger;
56 import org.slf4j.LoggerFactory;
57
58 /**
59  * Top level service interface providing main TAPI Connectivity services.
60  */
61 public class TapiImpl implements TapiConnectivityService {
62
63     private static final Logger LOG = LoggerFactory.getLogger(TapiImpl.class);
64
65     private ServiceHandlerOperations serviceHandler;
66
67     public TapiImpl(ServiceHandlerOperations serviceHandler) {
68         LOG.info("inside TapiImpl constructor");
69         this.serviceHandler = serviceHandler;
70     }
71
72     @Override
73     public ListenableFuture<RpcResult<CreateConnectivityServiceOutput>> createConnectivityService(
74         CreateConnectivityServiceInput input) {
75         LOG.info("RPC create-connectivity received");
76         LOG.info(input.getEndPoint().toString());
77         OperationResult validationResult = CreateConnectivityServiceValidation.validateCreateConnectivityServiceRequest(
78             input);
79         if (validationResult.isSuccess()) {
80             LOG.info("input parameter of RPC create-connectivity are being handled");
81             // check uuid of SIP in the map
82             Map<Uuid, GenericServiceEndpoint> map = MappingUtils.getMap();
83
84             if (map.containsKey(input.getEndPoint().get(0).getServiceInterfacePoint().getServiceInterfacePointUuid())
85                 && map.containsKey(input.getEndPoint().get(1).getServiceInterfacePoint()
86                     .getServiceInterfacePointUuid())) {
87                 ServiceCreateInput sci = TapiUtils.buildServiceCreateInput(map.get(input.getEndPoint().get(0)
88                     .getServiceInterfacePoint()
89                     .getServiceInterfacePointUuid()), map.get(input.getEndPoint().get(1).getServiceInterfacePoint()
90                         .getServiceInterfacePointUuid()));
91                 ServiceCreateOutput output = this.serviceHandler.serviceCreate(sci);
92             } else {
93                 LOG.error("Unknown UUID");
94             }
95
96         }
97
98         List<EndPoint> endPointList = new ArrayList<>();
99         EndPoint endpoint1 = new EndPointBuilder()
100             .setLocalId(UUID.randomUUID().toString())
101             .setServiceInterfacePoint(new ServiceInterfacePointBuilder().setServiceInterfacePointUuid(new Uuid(UUID
102                 .randomUUID().toString())).build())
103             .build();
104         EndPoint endpoint2 = new EndPointBuilder()
105             .setLocalId(UUID.randomUUID().toString())
106             .setServiceInterfacePoint(new ServiceInterfacePointBuilder().setServiceInterfacePointUuid(new Uuid(UUID
107                 .randomUUID().toString())).build())
108             .build();
109         endPointList.add(endpoint1);
110         endPointList.add(endpoint2);
111         List<Connection> connectionList = new ArrayList<>();
112         Connection connection1 = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
113             .build();
114         connectionList.add(connection1);
115         ConnectivityService service = new ConnectivityServiceBuilder().build();
116         List<Name> serviceNameList = new ArrayList<>();
117         Name serviceName = new NameBuilder().setValueName("Service Name").setValue("SENDATE Service 1").build();
118         serviceNameList.add(serviceName);
119         CreateConnectivityServiceOutput output = new CreateConnectivityServiceOutputBuilder()
120             .setService(new ServiceBuilder(service)
121                 .setUuid(new Uuid(UUID.randomUUID().toString()))
122                 .setName(serviceNameList)
123                 .setServiceLayer(input.getEndPoint().get(0).getLayerProtocolName())
124                 .setEndPoint(endPointList)
125                 .setConnection(connectionList)
126                 .build())
127             .build();
128
129         return RpcResultBuilder.success(output).buildFuture();
130     }
131
132     @Override
133     public ListenableFuture<RpcResult<GetConnectivityServiceDetailsOutput>> getConnectivityServiceDetails(
134         GetConnectivityServiceDetailsInput input) {
135         // TODO Auto-generated method stub
136         return null;
137     }
138
139     @Override
140     public ListenableFuture<RpcResult<UpdateConnectivityServiceOutput>> updateConnectivityService(
141         UpdateConnectivityServiceInput input) {
142         // TODO Auto-generated method stub
143         return null;
144     }
145
146     @Override
147     public ListenableFuture<RpcResult<GetConnectionDetailsOutput>> getConnectionDetails(
148         GetConnectionDetailsInput input) {
149         // TODO Auto-generated method stub
150         return null;
151     }
152
153     @Override
154     public ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> deleteConnectivityService(
155         DeleteConnectivityServiceInput input) {
156         LOG.info("RPC delete-connectivity received");
157         ServiceDeleteInput inputSh = null;
158         this.serviceHandler.serviceDelete(inputSh);
159         //TODO to continue...
160         return null;
161     }
162
163     @Override
164     public ListenableFuture<RpcResult<GetConnectivityServiceListOutput>> getConnectivityServiceList(
165         GetConnectivityServiceListInput input) {
166         // TODO Auto-generated method stub
167         return null;
168     }
169
170     @Override
171     public ListenableFuture<RpcResult<GetConnectionEndPointDetailsOutput>> getConnectionEndPointDetails(
172         GetConnectionEndPointDetailsInput input) {
173         // TODO Auto-generated method stub
174         return null;
175     }
176 }