2 * Copyright (c) 2015 - 2016 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.vpnservice.fibmanager;
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;
27 public class FibManagerProvider implements BindingAwareProvider, IFibManager, AutoCloseable {
29 private static final Logger LOG = LoggerFactory.getLogger(FibManagerProvider.class);
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;
43 public void onSessionInitiated(ProviderContext session) {
44 LOG.info("FibManagerProvider Session Initiated");
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);
68 public void close() throws Exception {
69 LOG.info("FibManagerProvider Closed");
71 fibNcListener.close();
74 public void setMdsalManager(IMdsalApiManager mdsalManager) {
75 this.mdsalManager = mdsalManager;
78 public void setVpnmanager(IVpnManager vpnmanager) {
79 this.vpnmanager = vpnmanager;
80 vpnmanager.setFibService(this);
83 public void setIdManager(IdManagerService idManager) {
84 this.idManager = idManager;
87 public void setInterfaceManager(OdlInterfaceRpcService interfaceManager) {
88 this.interfaceManager = interfaceManager;
91 public void setITMProvider(ItmRpcService itmManager) {
92 this.itmManager = itmManager;
96 public void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd) {
97 fibManager.populateFibOnNewDpn(dpnId, vpnId, rd);
101 public void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd) {
102 fibManager.cleanUpDpnForVpn(dpnId, vpnId, rd);
106 public List<String> printFibEntries() {
107 return fibManager.printFibEntries();
112 public void addStaticRoute(String prefix, String nextHop, String rd, int label) {
113 this.vpnmanager.addExtraRoute(prefix, nextHop, rd, null, label);
117 public void deleteStaticRoute(String prefix, String rd) {
118 this.vpnmanager.delExtraRoute(prefix, rd, null);
121 public void setRpcProviderRegistry(RpcProviderRegistry rpcProviderRegistry) {
122 this.rpcProviderRegistry = rpcProviderRegistry;
125 private RpcProviderRegistry getRpcProviderRegistry() {
126 return rpcProviderRegistry;