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.neutronvpn;
10 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
11 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
12 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
13 import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
14 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
15 import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager;
16 import org.opendaylight.vpnservice.neutronvpn.interfaces.INeutronVpnManager;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports.Port;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets.Subnet;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.lockmanager.rev150819.LockManagerService;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.neutronvpn.rev150602.NeutronvpnService;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
26 import java.util.List;
28 public class NeutronvpnProvider implements BindingAwareProvider, INeutronVpnManager, AutoCloseable {
30 private static final Logger LOG = LoggerFactory.getLogger(NeutronvpnProvider.class);
31 private NeutronvpnManager nvManager;
32 private IMdsalApiManager mdsalManager;
33 private LockManagerService lockManager;
34 private NeutronBgpvpnChangeListener bgpvpnListener;
35 private NeutronNetworkChangeListener networkListener;
36 private NeutronSubnetChangeListener subnetListener;
37 private NeutronRouterChangeListener routerListener;
38 private NeutronPortChangeListener portListener;
39 private RpcProviderRegistry rpcProviderRegistry;
41 public NeutronvpnProvider(RpcProviderRegistry rpcRegistry) {
42 this.rpcProviderRegistry = rpcRegistry;
45 public RpcProviderRegistry getRpcProviderRegistry() {
46 return rpcProviderRegistry;
49 public void setRpcProviderRegistry(RpcProviderRegistry rpcProviderRegistry) {
50 this.rpcProviderRegistry = rpcProviderRegistry;
53 public void setMdsalManager(IMdsalApiManager mdsalManager) {
54 this.mdsalManager = mdsalManager;
57 public void setLockManager(LockManagerService lockManager) {
58 this.lockManager = lockManager;
62 public void onSessionInitiated(ProviderContext session) {
64 final DataBroker dbx = session.getSALService(DataBroker.class);
65 nvManager = new NeutronvpnManager(dbx, mdsalManager);
66 final BindingAwareBroker.RpcRegistration<NeutronvpnService> rpcRegistration =
67 getRpcProviderRegistry().addRpcImplementation(NeutronvpnService.class, nvManager);
68 bgpvpnListener = new NeutronBgpvpnChangeListener(dbx, nvManager);
69 networkListener = new NeutronNetworkChangeListener(dbx, nvManager);
70 subnetListener = new NeutronSubnetChangeListener(dbx, nvManager);
71 routerListener = new NeutronRouterChangeListener(dbx, nvManager);
72 portListener = new NeutronPortChangeListener(dbx, nvManager);
73 nvManager.setLockManager(lockManager);
75 LOG.info("NeutronvpnProvider Session Initiated");
76 } catch (Exception e) {
77 LOG.error("Error initializing services", e);
82 public void close() throws Exception {
84 subnetListener.close();
85 routerListener.close();
86 networkListener.close();
87 bgpvpnListener.close();
89 LOG.info("NeutronvpnProvider Closed");
93 public List<String> showNeutronPortsCLI() {
94 return nvManager.showNeutronPortsCLI();
98 public List<String> showVpnConfigCLI(Uuid vuuid) {
99 return nvManager.showVpnConfigCLI(vuuid);
103 public void addSubnetToVpn(Uuid vpnId, Uuid subnet) {
104 nvManager.addSubnetToVpn(vpnId, subnet);
108 public List<Uuid> getSubnetsforVpn(Uuid vpnid) {
109 return nvManager.getSubnetsforVpn(vpnid);
113 public void removeSubnetFromVpn(Uuid vpnId, Uuid subnet) {
114 nvManager.removeSubnetFromVpn(vpnId, subnet);
118 public Port getNeutronPort(String name) {
119 return nvManager.getNeutronPort(name);
123 public Subnet getNeutronSubnet(Uuid subnetId) {
124 return nvManager.getNeutronSubnet(subnetId);
128 public String uuidToTapPortName(Uuid id) {
129 return NeutronvpnUtils.uuidToTapPortName(id);
133 public Port getNeutronPort(Uuid portId) {
134 return nvManager.getNeutronPort(portId);
138 public IpAddress getNeutronSubnetGateway(Uuid subnetId) {
139 return nvManager.getNeutronSubnetGateway(subnetId);