Merge "LLDP monitor interval update fixes"
[vpnservice.git] / fibmanager / fibmanager-impl / src / main / java / org / opendaylight / vpnservice / fibmanager / FibManagerProvider.java
1 /*
2  * Copyright (c) 2015 - 2016 Ericsson India Global Services Pvt Ltd. 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.vpnservice.fibmanager;
9
10 import java.math.BigInteger;
11 import java.util.List;
12 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
13 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
14 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
15 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration;
16 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
17 import org.opendaylight.fibmanager.api.IFibManager;
18 import org.opendaylight.vpnmanager.api.IVpnManager;
19 import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.fib.rpc.rev160121.FibRpcService;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.rpcs.rev151217.ItmRpcService;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.IdManagerService;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rpcs.rev151003.OdlInterfaceRpcService;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 public class FibManagerProvider implements BindingAwareProvider, IFibManager, AutoCloseable {
28
29   private static final Logger LOG = LoggerFactory.getLogger(FibManagerProvider.class);
30
31   private FibManager fibManager;
32   private IMdsalApiManager mdsalManager;
33   private IVpnManager vpnmanager;
34   private NexthopManager nexthopManager;
35   private IdManagerService idManager;
36   private ItmRpcService itmManager;
37   private OdlInterfaceRpcService interfaceManager;
38   private FibNodeCapableListener fibNcListener;
39   private RpcProviderRegistry rpcProviderRegistry;
40   private RpcRegistration<FibRpcService> rpcRegistration;
41
42   @Override
43   public void onSessionInitiated(ProviderContext session) {
44     LOG.info("FibManagerProvider Session Initiated");
45     try {
46       final  DataBroker dataBroker = session.getSALService(DataBroker.class);
47       nexthopManager = new NexthopManager(dataBroker);
48       nexthopManager.setMdsalManager(mdsalManager);
49       nexthopManager.setIdManager(idManager);
50       nexthopManager.setInterfaceManager(interfaceManager);
51       nexthopManager.setITMRpcService(itmManager);
52       fibManager = new FibManager(dataBroker);
53       fibManager.setMdsalManager(mdsalManager);
54       fibManager.setVpnmanager(vpnmanager);
55       fibManager.setNextHopManager(nexthopManager);
56       fibManager.setITMRpcService(itmManager);
57       fibManager.setInterfaceManager(interfaceManager);
58       fibManager.setIdManager(idManager);
59       fibNcListener = new FibNodeCapableListener(dataBroker, fibManager);
60       FibRpcService fibRpcService = new FibRpcServiceImpl(dataBroker, mdsalManager, this);
61       rpcRegistration = getRpcProviderRegistry().addRpcImplementation(FibRpcService.class, fibRpcService);
62     } catch (Exception e) {
63       LOG.error("Error initializing services", e);
64     }
65   }
66
67   @Override
68   public void close() throws Exception {
69     LOG.info("FibManagerProvider Closed");
70     fibManager.close();
71     fibNcListener.close();
72   }
73
74   public void setMdsalManager(IMdsalApiManager mdsalManager) {
75     this.mdsalManager = mdsalManager;
76   }
77
78   public void setVpnmanager(IVpnManager vpnmanager) {
79     this.vpnmanager = vpnmanager;
80     vpnmanager.setFibService(this);
81   }
82
83   public void setIdManager(IdManagerService idManager) {
84     this.idManager = idManager;
85   }
86
87   public void setInterfaceManager(OdlInterfaceRpcService interfaceManager) {
88     this.interfaceManager = interfaceManager;
89   }
90
91   public void setITMProvider(ItmRpcService itmManager) {
92     this.itmManager = itmManager;
93   }
94
95   @Override
96   public void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd) {
97     fibManager.populateFibOnNewDpn(dpnId, vpnId, rd);
98   }
99
100   @Override
101   public void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd) {
102     fibManager.cleanUpDpnForVpn(dpnId, vpnId, rd);
103   }
104
105   @Override
106   public List<String> printFibEntries() {
107     return fibManager.printFibEntries();
108   }
109
110   //Temp
111   @Override
112   public void addStaticRoute(String prefix, String nextHop, String rd, int label) {
113     this.vpnmanager.addExtraRoute(prefix, nextHop, rd, null, label);
114   }
115
116   @Override
117   public void deleteStaticRoute(String prefix, String rd) {
118     this.vpnmanager.delExtraRoute(prefix, rd, null);
119   }
120
121   public void setRpcProviderRegistry(RpcProviderRegistry rpcProviderRegistry) {
122     this.rpcProviderRegistry = rpcProviderRegistry;
123   }
124
125   private RpcProviderRegistry getRpcProviderRegistry() {
126     return rpcProviderRegistry;
127   }
128
129 }