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