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.fibmanager.api.IFibManager;
16 import org.opendaylight.vpnmanager.api.IVpnManager;
17 import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.itm.rpcs.rev151217.ItmRpcService;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.IdManagerService;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rpcs.rev151003.OdlInterfaceRpcService;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
24 public class FibManagerProvider implements BindingAwareProvider, IFibManager, AutoCloseable {
26 private static final Logger LOG = LoggerFactory.getLogger(FibManagerProvider.class);
28 private FibManager fibManager;
29 private IMdsalApiManager mdsalManager;
30 private IVpnManager vpnmanager;
31 private NexthopManager nexthopManager;
32 private IdManagerService idManager;
33 private ItmRpcService itmManager;
34 private OdlInterfaceRpcService interfaceManager;
35 private FibNodeCapableListener fibNcListener;
38 public void onSessionInitiated(ProviderContext session) {
39 LOG.info("FibManagerProvider Session Initiated");
41 final DataBroker dataBroker = session.getSALService(DataBroker.class);
42 nexthopManager = new NexthopManager(dataBroker);
43 nexthopManager.setMdsalManager(mdsalManager);
44 nexthopManager.setIdManager(idManager);
45 nexthopManager.setInterfaceManager(interfaceManager);
46 nexthopManager.setITMRpcService(itmManager);
47 fibManager = new FibManager(dataBroker);
48 fibManager.setMdsalManager(mdsalManager);
49 fibManager.setVpnmanager(vpnmanager);
50 fibManager.setNextHopManager(nexthopManager);
51 fibManager.setITMRpcService(itmManager);
52 fibManager.setInterfaceManager(interfaceManager);
53 fibNcListener = new FibNodeCapableListener(dataBroker, fibManager);
54 } catch (Exception e) {
55 LOG.error("Error initializing services", e);
60 public void close() throws Exception {
61 LOG.info("FibManagerProvider Closed");
63 fibNcListener.close();
66 public void setMdsalManager(IMdsalApiManager mdsalManager) {
67 this.mdsalManager = mdsalManager;
70 public void setVpnmanager(IVpnManager vpnmanager) {
71 this.vpnmanager = vpnmanager;
72 vpnmanager.setFibService(this);
75 public void setIdManager(IdManagerService idManager) {
76 this.idManager = idManager;
79 public void setInterfaceManager(OdlInterfaceRpcService interfaceManager) {
80 this.interfaceManager = interfaceManager;
83 public void setITMProvider(ItmRpcService itmManager) {
84 this.itmManager = itmManager;
88 public void populateFibOnNewDpn(BigInteger dpnId, long vpnId, String rd) {
89 fibManager.populateFibOnNewDpn(dpnId, vpnId, rd);
93 public void cleanUpDpnForVpn(BigInteger dpnId, long vpnId, String rd) {
94 fibManager.cleanUpDpnForVpn(dpnId, vpnId, rd);
98 public List<String> printFibEntries() {
99 return fibManager.printFibEntries();
104 public void addStaticRoute(String prefix, String nextHop, String rd, int label) {
105 this.vpnmanager.addExtraRoute(prefix, nextHop, rd, null, label);
109 public void deleteStaticRoute(String prefix, String rd) {
110 this.vpnmanager.delExtraRoute(prefix, rd, null);