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=a5198ba74d77f56b2a02b0e2d47054315aa79de4;hb=8e7149129d3918e86e9b8c7866c8df0d22d536d4;hp=a93dc1c2611d4e711452b28b744efb2aa55d819c;hpb=f5efefc2ace32941e3da0878578ddd00abf5ab06;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 a93dc1c2..a5198ba7 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,26 +7,38 @@ */ 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) { @@ -34,8 +46,13 @@ public class VpnserviceProvider implements BindingAwareProvider, try { final DataBroker dataBroker = session.getSALService(DataBroker.class); vpnManager = new VpnManager(dataBroker, bgpManager); + vpnManager.setIdManager(idManager); vpnInterfaceManager = new VpnInterfaceManager(dataBroker, bgpManager); vpnInterfaceManager.setMdsalManager(mdsalManager); + vpnInterfaceManager.setInterfaceManager(interfaceManager); + vpnInterfaceManager.setIdManager(idManager); + vpnManager.setVpnInterfaceManager(vpnInterfaceManager); + createIdPool(); } catch (Exception e) { LOG.error("Error initializing services", e); } @@ -50,13 +67,49 @@ public class VpnserviceProvider implements BindingAwareProvider, 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); + } }