Set mandatory UUID in TAPI connectivity module
[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 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.servicehandler.service.ServiceHandlerOperations;
16 import org.opendaylight.transportpce.tapi.utils.GenericServiceEndpoint;
17 import org.opendaylight.transportpce.tapi.utils.MappingUtils;
18 import org.opendaylight.transportpce.tapi.utils.TapiUtils;
19 import org.opendaylight.transportpce.tapi.validation.CreateConnectivityServiceValidation;
20 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev190531.ServiceCreateInput;
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;
53
54 /**
55  * Top level service interface providing main TAPI Connectivity services.
56  */
57 public class TapiImpl implements TapiConnectivityService {
58
59     private static final Logger LOG = LoggerFactory.getLogger(TapiImpl.class);
60
61     private ServiceHandlerOperations serviceHandler;
62
63     public TapiImpl(ServiceHandlerOperations serviceHandler) {
64         LOG.info("inside TapiImpl constructor");
65         this.serviceHandler = serviceHandler;
66     }
67
68     @Override
69     public ListenableFuture<RpcResult<CreateConnectivityServiceOutput>> createConnectivityService(
70         CreateConnectivityServiceInput input) {
71         LOG.info("RPC create-connectivity received: {}", input.getEndPoint());
72         OperationResult validationResult = CreateConnectivityServiceValidation.validateCreateConnectivityServiceRequest(
73             input);
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();
78
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 = TapiUtils.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                 this.serviceHandler.serviceCreate(sci);
92             } else {
93                 LOG.error("Unknown UUID");
94             }
95
96         }
97
98         Map<EndPointKey, EndPoint> endPointList = new HashMap<>();
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.put(endpoint1.key(), endpoint1);
110         endPointList.put(endpoint2.key(), endpoint2);
111         Connection connection = new ConnectionBuilder().setConnectionUuid(new Uuid(UUID.randomUUID().toString()))
112             .build();
113         ConnectivityService service = new ConnectivityServiceBuilder()
114             .setUuid(new Uuid(UUID.randomUUID().toString()))
115             .build();
116         Name serviceName = new NameBuilder().setValueName("Service Name").setValue("SENDATE Service 1").build();
117         CreateConnectivityServiceOutput output = new CreateConnectivityServiceOutputBuilder()
118             .setService(new ServiceBuilder(service)
119                 .setUuid(new Uuid(UUID.randomUUID().toString()))
120                 .setName(Map.of(serviceName.key(), serviceName))
121                 .setServiceLayer(input.getEndPoint().values().stream().findFirst().get().getLayerProtocolName())
122                 .setEndPoint(endPointList)
123                 .setConnection(Map.of(connection.key(), connection))
124                 .build())
125             .build();
126
127         return RpcResultBuilder.success(output).buildFuture();
128     }
129
130     @Override
131     public ListenableFuture<RpcResult<GetConnectivityServiceDetailsOutput>> getConnectivityServiceDetails(
132         GetConnectivityServiceDetailsInput input) {
133         // TODO Auto-generated method stub
134         return null;
135     }
136
137     @Override
138     public ListenableFuture<RpcResult<UpdateConnectivityServiceOutput>> updateConnectivityService(
139         UpdateConnectivityServiceInput input) {
140         // TODO Auto-generated method stub
141         return null;
142     }
143
144     @Override
145     public ListenableFuture<RpcResult<GetConnectionDetailsOutput>> getConnectionDetails(
146         GetConnectionDetailsInput input) {
147         // TODO Auto-generated method stub
148         return null;
149     }
150
151     @Override
152     public ListenableFuture<RpcResult<DeleteConnectivityServiceOutput>> deleteConnectivityService(
153         DeleteConnectivityServiceInput input) {
154         //TODO Auto-generated method stub
155         return null;
156     }
157
158     @Override
159     public ListenableFuture<RpcResult<GetConnectivityServiceListOutput>> getConnectivityServiceList(
160         GetConnectivityServiceListInput input) {
161         // TODO Auto-generated method stub
162         return null;
163     }
164
165     @Override
166     public ListenableFuture<RpcResult<GetConnectionEndPointDetailsOutput>> getConnectionEndPointDetails(
167         GetConnectionEndPointDetailsInput input) {
168         // TODO Auto-generated method stub
169         return null;
170     }
171 }