X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=vpnmanager%2Fvpnmanager-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2FVpnserviceProvider.java;h=e4d6e8970bfad95ad640a91c5e5bdfedf7bcdd08;hb=78638a6543c647ffff30d36e52604f5b7b5e785b;hp=7514cf7f0a6f1055abc88458ad7af0b3e4c7af94;hpb=f663fe9d2a357079006332e7cfff423037156455;p=vpnservice.git diff --git a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnserviceProvider.java b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnserviceProvider.java index 7514cf7f..e4d6e897 100644 --- a/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnserviceProvider.java +++ b/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/vpnservice/VpnserviceProvider.java @@ -7,35 +7,108 @@ */ package org.opendaylight.vpnservice; +import java.math.BigInteger; +import java.util.Collection; +import java.util.Collections; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +import org.opendaylight.bgpmanager.api.IBgpManager; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; - +import org.opendaylight.fibmanager.api.IFibManager; +import org.opendaylight.vpnmanager.api.IVpnManager; +import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager; +import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.CreateIdPoolInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.CreateIdPoolInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.IdManagerService; +import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class VpnserviceProvider implements BindingAwareProvider, +public class VpnserviceProvider implements BindingAwareProvider, IVpnManager, AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(VpnserviceProvider.class); private VpnInterfaceManager vpnInterfaceManager; private VpnManager vpnManager; + private IBgpManager bgpManager; + private IFibManager fibManager; + private IMdsalApiManager mdsalManager; + private IInterfaceManager interfaceManager; + private IdManagerService idManager; @Override public void onSessionInitiated(ProviderContext session) { LOG.info("VpnserviceProvider Session Initiated"); try { final DataBroker dataBroker = session.getSALService(DataBroker.class); - vpnManager = new VpnManager(dataBroker); - vpnInterfaceManager = new VpnInterfaceManager(dataBroker); + vpnManager = new VpnManager(dataBroker, bgpManager); + vpnManager.setIdManager(idManager); + vpnInterfaceManager = new VpnInterfaceManager(dataBroker, bgpManager); + vpnInterfaceManager.setMdsalManager(mdsalManager); + vpnInterfaceManager.setInterfaceManager(interfaceManager); + vpnInterfaceManager.setIdManager(idManager); + createIdPool(); } catch (Exception e) { LOG.error("Error initializing services", e); } } + public void setBgpManager(IBgpManager bgpManager) { + LOG.debug("BGP Manager reference initialized"); + this.bgpManager = bgpManager; + } + + public void setMdsalManager(IMdsalApiManager mdsalManager) { + this.mdsalManager = mdsalManager; + } + + public void setFibManager(IFibManager fibManager) { + this.fibManager = fibManager; + } + + public void setInterfaceManager(IInterfaceManager interfaceManager) { + this.interfaceManager = interfaceManager; + } + + public void setIdManager(IdManagerService idManager) { + this.idManager = idManager; + } + + private void createIdPool() { + CreateIdPoolInput createPool = new CreateIdPoolInputBuilder() + .setPoolName(VpnConstants.VPN_IDPOOL_NAME) + .setIdStart(VpnConstants.VPN_IDPOOL_START) + .setPoolSize(new BigInteger(VpnConstants.VPN_IDPOOL_SIZE)) + .build(); + try { + Future> result = idManager.createIdPool(createPool); + if ((result != null) && (result.get().isSuccessful())) { + LOG.debug("Created IdPool for VPN Service"); + } + } catch (InterruptedException | ExecutionException e) { + LOG.error("Failed to create idPool for VPN Service",e); + } + } + @Override public void close() throws Exception { vpnManager.close(); vpnInterfaceManager.close(); } + + @Override + public Collection getDpnsForVpn(long vpnId) { + return vpnInterfaceManager.getDpnsForVpn(vpnId); + } + + @Override + public void setFibService(IFibManager fibManager) { + LOG.debug("Fib service reference is initialized in VPN Manager"); + this.fibManager = fibManager; + vpnInterfaceManager.setFibManager(fibManager); + } }