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.GetTunnelInterfaceNameInput;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameOutput;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelInterfaceNameOutputBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelTypeInput;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetTunnelTypeOutput;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetWatchPortForTunnelInput;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.GetWatchPortForTunnelOutput;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentInput;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentOutput;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsDcgwPresentOutputBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsTunnelInternalOrExternalInput;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.IsTunnelInternalOrExternalOutput;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointInput;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelEndpointOutput;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsInput;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveExternalTunnelFromDpnsOutput;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsInput;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.RemoveTerminatingServiceActionsOutput;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdParamOnTunnelInput;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.SetBfdParamOnTunnelOutput;
63 import org.opendaylight.yangtools.yang.common.RpcResult;
64 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
65 import org.opendaylight.yangtools.yang.common.Uint64;
67 public final class ItmRpcTestImpl implements ItmRpcService {
69 // FIXME: access is complete synchronized, why are these ConcurrentHashMaps???
70 private final Map<Uint64, IpAddress> tepIps = new ConcurrentHashMap<>();
71 private final Map<Uint64, Map<String, String>> interfaceNames = new ConcurrentHashMap<>();
72 private final Map<Uint64, Map<String, String>> externalInterfaceNames = new ConcurrentHashMap<>();
74 public synchronized void addDpn(Uint64 dpnId, String tepIp) {
75 tepIps.put(dpnId, IpAddressBuilder.getDefaultInstance(tepIp));
78 public synchronized void addInterface(Uint64 dpnId, String dstTep, String interfaceName) {
79 interfaceNames.putIfAbsent(dpnId, new ConcurrentHashMap<>());
80 interfaceNames.get(dpnId).put(dstTep, interfaceName);
83 public synchronized void addL2GwInterface(Uint64 dpnId, String nodeId, String interfaceName) {
84 externalInterfaceNames.putIfAbsent(dpnId, new ConcurrentHashMap<>());
85 externalInterfaceNames.get(dpnId).put(nodeId, interfaceName);
88 public synchronized void addExternalInterface(Uint64 dpnId, String dstTep, String interfaceName) {
89 //dstTep = IpAddressBuilder.getDefaultInstance(dstTep).toString();
90 externalInterfaceNames.putIfAbsent(dpnId, new ConcurrentHashMap<>());
91 externalInterfaceNames.get(dpnId).put(dstTep, interfaceName);
95 public synchronized ListenableFuture<RpcResult<BuildExternalTunnelFromDpnsOutput>> buildExternalTunnelFromDpns(
96 BuildExternalTunnelFromDpnsInput input) {
97 return RpcResultBuilder.<BuildExternalTunnelFromDpnsOutput>success().buildFuture();
101 public synchronized ListenableFuture<RpcResult<RemoveExternalTunnelEndpointOutput>> removeExternalTunnelEndpoint(
102 RemoveExternalTunnelEndpointInput input) {
103 return RpcResultBuilder.<RemoveExternalTunnelEndpointOutput>success().buildFuture();
107 public ListenableFuture<RpcResult<GetDpnInfoOutput>> getDpnInfo(GetDpnInfoInput input) {
108 throw new UnsupportedOperationException("getDpnInfo");
112 public synchronized ListenableFuture<RpcResult<AddL2GwMlagDeviceOutput>> addL2GwMlagDevice(
113 AddL2GwMlagDeviceInput input) {
114 return RpcResultBuilder.<AddL2GwMlagDeviceOutput>success().buildFuture();
118 public synchronized ListenableFuture<RpcResult<RemoveExternalTunnelFromDpnsOutput>> removeExternalTunnelFromDpns(
119 RemoveExternalTunnelFromDpnsInput input) {
120 return RpcResultBuilder.<RemoveExternalTunnelFromDpnsOutput>success().buildFuture();
124 public synchronized ListenableFuture<RpcResult<DeleteL2GwDeviceOutput>> deleteL2GwDevice(
125 DeleteL2GwDeviceInput input) {
126 return RpcResultBuilder.<DeleteL2GwDeviceOutput>success().buildFuture();
130 public synchronized ListenableFuture<RpcResult<AddL2GwDeviceOutput>> addL2GwDevice(AddL2GwDeviceInput input) {
131 return RpcResultBuilder.<AddL2GwDeviceOutput>success().buildFuture();
135 public ListenableFuture<RpcResult<GetWatchPortForTunnelOutput>> getWatchPortForTunnel(
136 GetWatchPortForTunnelInput input) {
137 throw new UnsupportedOperationException("TODO");
141 public synchronized ListenableFuture<RpcResult<IsTunnelInternalOrExternalOutput>> isTunnelInternalOrExternal(
142 IsTunnelInternalOrExternalInput input) {
143 throw new UnsupportedOperationException("TODO");
147 public synchronized ListenableFuture<RpcResult<GetTunnelInterfaceNameOutput>> getTunnelInterfaceName(
148 GetTunnelInterfaceNameInput input) {
149 String interfaceName = interfaceNames.get(input.getSourceDpid())
150 .get(tepIps.get(input.getDestinationDpid()).stringValue());
151 GetTunnelInterfaceNameOutput output =
152 new GetTunnelInterfaceNameOutputBuilder().setInterfaceName(interfaceName).build();
153 return RpcResultBuilder.success(output).buildFuture();
157 public synchronized ListenableFuture<RpcResult<IsDcgwPresentOutput>> isDcgwPresent(IsDcgwPresentInput input) {
158 IsDcgwPresentOutput output = new IsDcgwPresentOutputBuilder().setRetVal(0L).build();
159 return RpcResultBuilder.success(output).buildFuture();
163 public synchronized ListenableFuture<RpcResult<GetExternalTunnelInterfaceNameOutput>>
164 getExternalTunnelInterfaceName(GetExternalTunnelInterfaceNameInput input) {
165 String interfaceName = externalInterfaceNames.get(Uint64.valueOf(input.getSourceNode()))
166 .get(input.getDestinationNode());
167 GetExternalTunnelInterfaceNameOutput output = new GetExternalTunnelInterfaceNameOutputBuilder()
168 .setInterfaceName(interfaceName)
170 return RpcResultBuilder.success(output).buildFuture();
174 public synchronized ListenableFuture<RpcResult<CreateTerminatingServiceActionsOutput>>
175 createTerminatingServiceActions(CreateTerminatingServiceActionsInput input) {
176 return RpcResultBuilder.<CreateTerminatingServiceActionsOutput>success().buildFuture();
180 public synchronized ListenableFuture<RpcResult<GetDpnEndpointIpsOutput>> getDpnEndpointIps(
181 GetDpnEndpointIpsInput input) {
182 GetDpnEndpointIpsOutput output = new GetDpnEndpointIpsOutputBuilder()
183 .setNexthopipList(Lists.newArrayList(tepIps.get(input.getSourceDpid()))).build();
184 return RpcResultBuilder.success(output).buildFuture();
188 public synchronized ListenableFuture<RpcResult<DeleteL2GwMlagDeviceOutput>> deleteL2GwMlagDevice(
189 DeleteL2GwMlagDeviceInput input) {
190 return RpcResultBuilder.<DeleteL2GwMlagDeviceOutput>success().buildFuture();
194 public synchronized ListenableFuture<RpcResult<GetInternalOrExternalInterfaceNameOutput>>
195 getInternalOrExternalInterfaceName(GetInternalOrExternalInterfaceNameInput input) {
196 throw new UnsupportedOperationException("TODO");
200 public synchronized ListenableFuture<RpcResult<RemoveTerminatingServiceActionsOutput>>
201 removeTerminatingServiceActions(RemoveTerminatingServiceActionsInput input) {
202 return RpcResultBuilder.<RemoveTerminatingServiceActionsOutput>success().buildFuture();
206 public synchronized ListenableFuture<RpcResult<AddExternalTunnelEndpointOutput>> addExternalTunnelEndpoint(
207 AddExternalTunnelEndpointInput input) {
208 return RpcResultBuilder.<AddExternalTunnelEndpointOutput>success().buildFuture();
212 public synchronized ListenableFuture<RpcResult<SetBfdParamOnTunnelOutput>> setBfdParamOnTunnel(
213 SetBfdParamOnTunnelInput input) {
214 throw new UnsupportedOperationException("TODO");
218 public synchronized ListenableFuture<RpcResult<GetEgressActionsForTunnelOutput>>
219 getEgressActionsForTunnel(GetEgressActionsForTunnelInput input) {
220 throw new UnsupportedOperationException("TODO");
224 public synchronized ListenableFuture<RpcResult<GetTunnelTypeOutput>> getTunnelType(GetTunnelTypeInput input) {
225 throw new UnsupportedOperationException("TODO");