2 * Copyright (c) 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
9 package org.opendaylight.netvirt.neutronvpn.l2gw;
11 import javax.annotation.PostConstruct;
12 import javax.inject.Inject;
13 import javax.inject.Singleton;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
16 import org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase;
17 import org.opendaylight.infrautils.jobcoordinator.JobCoordinator;
18 import org.opendaylight.netvirt.neutronvpn.api.l2gw.L2GatewayCache;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZones;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZone;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
23 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
28 * The listener class for ITM transport zone updates.
31 public class L2GwTransportZoneListener
32 extends AsyncDataTreeChangeListenerBase<TransportZone, L2GwTransportZoneListener> {
33 private static final Logger LOG = LoggerFactory.getLogger(L2GwTransportZoneListener.class);
34 private final DataBroker dataBroker;
35 private final ItmRpcService itmRpcService;
36 private final JobCoordinator jobCoordinator;
37 private final L2GatewayCache l2GatewayCache;
40 * Instantiates a new l2 gw transport zone listener.
42 * @param dataBroker the data broker
43 * @param itmRpcService the itm rpc service
46 public L2GwTransportZoneListener(final DataBroker dataBroker, final ItmRpcService itmRpcService,
47 final JobCoordinator jobCoordinator, final L2GatewayCache l2GatewayCache) {
48 super(TransportZone.class, L2GwTransportZoneListener.class);
49 this.dataBroker = dataBroker;
50 this.itmRpcService = itmRpcService;
51 this.jobCoordinator = jobCoordinator;
52 this.l2GatewayCache = l2GatewayCache;
58 LOG.info("{} init", getClass().getSimpleName());
59 registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker);
65 * @see org.opendaylight.vpnservice.datastoreutils.
66 * AsyncDataTreeChangeListenerBase#getWildCardPath()
69 protected InstanceIdentifier<TransportZone> getWildCardPath() {
70 return InstanceIdentifier.create(TransportZones.class).child(TransportZone.class);
76 * @see org.opendaylight.vpnservice.datastoreutils.
77 * AsyncDataTreeChangeListenerBase#remove(org.opendaylight.yangtools.yang.
78 * binding.InstanceIdentifier,
79 * org.opendaylight.yangtools.yang.binding.DataObject)
82 protected void remove(InstanceIdentifier<TransportZone> key, TransportZone dataObjectModification) {
89 * @see org.opendaylight.vpnservice.datastoreutils.
90 * AsyncDataTreeChangeListenerBase#update(org.opendaylight.yangtools.yang.
91 * binding.InstanceIdentifier,
92 * org.opendaylight.yangtools.yang.binding.DataObject,
93 * org.opendaylight.yangtools.yang.binding.DataObject)
96 protected void update(InstanceIdentifier<TransportZone> key, TransportZone dataObjectModificationBefore,
97 TransportZone dataObjectModificationAfter) {
104 * @see org.opendaylight.vpnservice.datastoreutils.
105 * AsyncDataTreeChangeListenerBase#add(org.opendaylight.yangtools.yang.
106 * binding.InstanceIdentifier,
107 * org.opendaylight.yangtools.yang.binding.DataObject)
110 protected void add(InstanceIdentifier<TransportZone> key, TransportZone tzNew) {
111 LOG.trace("Received Transport Zone Add Event: {}", tzNew);
112 if (TunnelTypeVxlan.class.equals(tzNew.getTunnelType())) {
113 AddL2GwDevicesToTransportZoneJob job =
114 new AddL2GwDevicesToTransportZoneJob(itmRpcService, tzNew, l2GatewayCache);
115 jobCoordinator.enqueueJob(job.getJobKey(), job);
122 * @see org.opendaylight.vpnservice.datastoreutils.
123 * AsyncDataTreeChangeListenerBase#getDataTreeChangeListener()
126 protected L2GwTransportZoneListener getDataTreeChangeListener() {