2 * Copyright © 2017 Ericsson India Global Services Pvt Ltd. 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.genius.testutils.itm;
10 import com.google.common.collect.Lists;
11 import com.google.common.util.concurrent.ListenableFuture;
13 import java.util.concurrent.ConcurrentHashMap;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointInput;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddExternalTunnelEndpointOutput;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceInput;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwDeviceOutput;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwMlagDeviceInput;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.AddL2GwMlagDeviceOutput;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.BuildExternalTunnelFromDpnsInput;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.BuildExternalTunnelFromDpnsOutput;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.CreateTerminatingServiceActionsInput;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.CreateTerminatingServiceActionsOutput;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwDeviceInput;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwDeviceOutput;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwMlagDeviceInput;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.DeleteL2GwMlagDeviceOutput;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsInput;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutput;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnEndpointIpsOutputBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnInfoInput;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetDpnInfoOutput;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetEgressActionsForTunnelInput;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetEgressActionsForTunnelOutput;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameInput;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameOutput;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetExternalTunnelInterfaceNameOutputBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetInternalOrExternalInterfaceNameInput;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetInternalOrExternalInterfaceNameOutput;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTepIpInput;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTepIpOutput;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameInput;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameOutput;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameOutputBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelTypeInput;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelTypeOutput;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetWatchPortForTunnelInput;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetWatchPortForTunnelOutput;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentInput;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentOutput;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentOutputBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsTunnelInternalOrExternalInput;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsTunnelInternalOrExternalOutput;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInput;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointOutput;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsInput;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsOutput;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInput;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsOutput;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdParamOnTunnelInput;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdParamOnTunnelOutput;
65 import org.opendaylight.yangtools.yang.common.RpcResult;
66 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
67 import org.opendaylight.yangtools.yang.common.Uint64;
69 public final class ItmRpcTestImpl implements ItmRpcService {
71 // FIXME: access is complete synchronized, why are these ConcurrentHashMaps???
72 private final Map<Uint64, IpAddress> tepIps = new ConcurrentHashMap<>();
73 private final Map<Uint64, Map<String, String>> interfaceNames = new ConcurrentHashMap<>();
74 private final Map<Uint64, Map<String, String>> externalInterfaceNames = new ConcurrentHashMap<>();
76 public synchronized void addDpn(Uint64 dpnId, String tepIp) {
77 tepIps.put(dpnId, IpAddressBuilder.getDefaultInstance(tepIp));
80 public synchronized void addInterface(Uint64 dpnId, String dstTep, String interfaceName) {
81 interfaceNames.putIfAbsent(dpnId, new ConcurrentHashMap<>());
82 interfaceNames.get(dpnId).put(dstTep, interfaceName);
85 public synchronized void addL2GwInterface(Uint64 dpnId, String nodeId, String interfaceName) {
86 externalInterfaceNames.putIfAbsent(dpnId, new ConcurrentHashMap<>());
87 externalInterfaceNames.get(dpnId).put(nodeId, interfaceName);
90 public synchronized void addExternalInterface(Uint64 dpnId, String dstTep, String interfaceName) {
91 //dstTep = IpAddressBuilder.getDefaultInstance(dstTep).toString();
92 externalInterfaceNames.putIfAbsent(dpnId, new ConcurrentHashMap<>());
93 externalInterfaceNames.get(dpnId).put(dstTep, interfaceName);
97 public synchronized ListenableFuture<RpcResult<BuildExternalTunnelFromDpnsOutput>> buildExternalTunnelFromDpns(
98 BuildExternalTunnelFromDpnsInput input) {
99 return RpcResultBuilder.<BuildExternalTunnelFromDpnsOutput>success().buildFuture();
103 public synchronized ListenableFuture<RpcResult<RemoveExternalTunnelEndpointOutput>> removeExternalTunnelEndpoint(
104 RemoveExternalTunnelEndpointInput input) {
105 return RpcResultBuilder.<RemoveExternalTunnelEndpointOutput>success().buildFuture();
109 public ListenableFuture<RpcResult<GetDpnInfoOutput>> getDpnInfo(GetDpnInfoInput input) {
110 throw new UnsupportedOperationException("getDpnInfo");
114 public synchronized ListenableFuture<RpcResult<AddL2GwMlagDeviceOutput>> addL2GwMlagDevice(
115 AddL2GwMlagDeviceInput input) {
116 return RpcResultBuilder.<AddL2GwMlagDeviceOutput>success().buildFuture();
120 public synchronized ListenableFuture<RpcResult<RemoveExternalTunnelFromDpnsOutput>> removeExternalTunnelFromDpns(
121 RemoveExternalTunnelFromDpnsInput input) {
122 return RpcResultBuilder.<RemoveExternalTunnelFromDpnsOutput>success().buildFuture();
126 public synchronized ListenableFuture<RpcResult<DeleteL2GwDeviceOutput>> deleteL2GwDevice(
127 DeleteL2GwDeviceInput input) {
128 return RpcResultBuilder.<DeleteL2GwDeviceOutput>success().buildFuture();
132 public synchronized ListenableFuture<RpcResult<AddL2GwDeviceOutput>> addL2GwDevice(AddL2GwDeviceInput input) {
133 return RpcResultBuilder.<AddL2GwDeviceOutput>success().buildFuture();
137 public ListenableFuture<RpcResult<GetWatchPortForTunnelOutput>> getWatchPortForTunnel(
138 GetWatchPortForTunnelInput input) {
139 throw new UnsupportedOperationException("TODO");
142 public ListenableFuture<RpcResult<GetTepIpOutput>> getTepIp(GetTepIpInput input) {
147 public synchronized ListenableFuture<RpcResult<IsTunnelInternalOrExternalOutput>> isTunnelInternalOrExternal(
148 IsTunnelInternalOrExternalInput input) {
149 throw new UnsupportedOperationException("TODO");
153 public synchronized ListenableFuture<RpcResult<GetTunnelInterfaceNameOutput>> getTunnelInterfaceName(
154 GetTunnelInterfaceNameInput input) {
155 String interfaceName = interfaceNames.get(input.getSourceDpid())
156 .get(tepIps.get(input.getDestinationDpid()).stringValue());
157 GetTunnelInterfaceNameOutput output =
158 new GetTunnelInterfaceNameOutputBuilder().setInterfaceName(interfaceName).build();
159 return RpcResultBuilder.success(output).buildFuture();
163 public synchronized ListenableFuture<RpcResult<IsDcgwPresentOutput>> isDcgwPresent(IsDcgwPresentInput input) {
164 IsDcgwPresentOutput output = new IsDcgwPresentOutputBuilder().setRetVal(0L).build();
165 return RpcResultBuilder.success(output).buildFuture();
169 public synchronized ListenableFuture<RpcResult<GetExternalTunnelInterfaceNameOutput>>
170 getExternalTunnelInterfaceName(GetExternalTunnelInterfaceNameInput input) {
171 String interfaceName = externalInterfaceNames.get(Uint64.valueOf(input.getSourceNode()))
172 .get(input.getDestinationNode());
173 GetExternalTunnelInterfaceNameOutput output = new GetExternalTunnelInterfaceNameOutputBuilder()
174 .setInterfaceName(interfaceName)
176 return RpcResultBuilder.success(output).buildFuture();
180 public synchronized ListenableFuture<RpcResult<CreateTerminatingServiceActionsOutput>>
181 createTerminatingServiceActions(CreateTerminatingServiceActionsInput input) {
182 return RpcResultBuilder.<CreateTerminatingServiceActionsOutput>success().buildFuture();
186 public synchronized ListenableFuture<RpcResult<GetDpnEndpointIpsOutput>> getDpnEndpointIps(
187 GetDpnEndpointIpsInput input) {
188 GetDpnEndpointIpsOutput output = new GetDpnEndpointIpsOutputBuilder()
189 .setNexthopipList(Lists.newArrayList(tepIps.get(input.getSourceDpid()))).build();
190 return RpcResultBuilder.success(output).buildFuture();
194 public synchronized ListenableFuture<RpcResult<DeleteL2GwMlagDeviceOutput>> deleteL2GwMlagDevice(
195 DeleteL2GwMlagDeviceInput input) {
196 return RpcResultBuilder.<DeleteL2GwMlagDeviceOutput>success().buildFuture();
200 public synchronized ListenableFuture<RpcResult<GetInternalOrExternalInterfaceNameOutput>>
201 getInternalOrExternalInterfaceName(GetInternalOrExternalInterfaceNameInput input) {
202 throw new UnsupportedOperationException("TODO");
206 public synchronized ListenableFuture<RpcResult<RemoveTerminatingServiceActionsOutput>>
207 removeTerminatingServiceActions(RemoveTerminatingServiceActionsInput input) {
208 return RpcResultBuilder.<RemoveTerminatingServiceActionsOutput>success().buildFuture();
212 public synchronized ListenableFuture<RpcResult<AddExternalTunnelEndpointOutput>> addExternalTunnelEndpoint(
213 AddExternalTunnelEndpointInput input) {
214 return RpcResultBuilder.<AddExternalTunnelEndpointOutput>success().buildFuture();
218 public synchronized ListenableFuture<RpcResult<SetBfdParamOnTunnelOutput>> setBfdParamOnTunnel(
219 SetBfdParamOnTunnelInput input) {
220 throw new UnsupportedOperationException("TODO");
224 public synchronized ListenableFuture<RpcResult<GetEgressActionsForTunnelOutput>>
225 getEgressActionsForTunnel(GetEgressActionsForTunnelInput input) {
226 throw new UnsupportedOperationException("TODO");
230 public synchronized ListenableFuture<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
231 throw new UnsupportedOperationException("TODO");