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