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.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.TransportZones;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rev160406.transport.zones.TransportZone;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
22 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory;
27 * The listener class for ITM transport zone updates.
30 public class L2GwTransportZoneListener
31 extends AsyncDataTreeChangeListenerBase<TransportZone, L2GwTransportZoneListener> {
32 private static final Logger LOG = LoggerFactory.getLogger(L2GwTransportZoneListener.class);
33 private final DataBroker dataBroker;
34 private final ItmRpcService itmRpcService;
35 private final JobCoordinator jobCoordinator;
38 * Instantiates a new l2 gw transport zone listener.
40 * @param dataBroker the data broker
41 * @param itmRpcService the itm rpc service
44 public L2GwTransportZoneListener(final DataBroker dataBroker, final ItmRpcService itmRpcService,
45 final JobCoordinator jobCoordinator) {
46 super(TransportZone.class, L2GwTransportZoneListener.class);
47 this.dataBroker = dataBroker;
48 this.itmRpcService = itmRpcService;
49 this.jobCoordinator = jobCoordinator;
55 LOG.info("{} init", getClass().getSimpleName());
56 registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker);
62 * @see org.opendaylight.vpnservice.datastoreutils.
63 * AsyncDataTreeChangeListenerBase#getWildCardPath()
66 protected InstanceIdentifier<TransportZone> getWildCardPath() {
67 return InstanceIdentifier.create(TransportZones.class).child(TransportZone.class);
73 * @see org.opendaylight.vpnservice.datastoreutils.
74 * AsyncDataTreeChangeListenerBase#remove(org.opendaylight.yangtools.yang.
75 * binding.InstanceIdentifier,
76 * org.opendaylight.yangtools.yang.binding.DataObject)
79 protected void remove(InstanceIdentifier<TransportZone> key, TransportZone dataObjectModification) {
86 * @see org.opendaylight.vpnservice.datastoreutils.
87 * AsyncDataTreeChangeListenerBase#update(org.opendaylight.yangtools.yang.
88 * binding.InstanceIdentifier,
89 * org.opendaylight.yangtools.yang.binding.DataObject,
90 * org.opendaylight.yangtools.yang.binding.DataObject)
93 protected void update(InstanceIdentifier<TransportZone> key, TransportZone dataObjectModificationBefore,
94 TransportZone dataObjectModificationAfter) {
101 * @see org.opendaylight.vpnservice.datastoreutils.
102 * AsyncDataTreeChangeListenerBase#add(org.opendaylight.yangtools.yang.
103 * binding.InstanceIdentifier,
104 * org.opendaylight.yangtools.yang.binding.DataObject)
107 protected void add(InstanceIdentifier<TransportZone> key, TransportZone tzNew) {
108 LOG.trace("Received Transport Zone Add Event: {}", tzNew);
109 if (tzNew.getTunnelType().equals(TunnelTypeVxlan.class)) {
110 AddL2GwDevicesToTransportZoneJob job =
111 new AddL2GwDevicesToTransportZoneJob(itmRpcService, tzNew);
112 jobCoordinator.enqueueJob(job.getJobKey(), job);
119 * @see org.opendaylight.vpnservice.datastoreutils.
120 * AsyncDataTreeChangeListenerBase#getDataTreeChangeListener()
123 protected L2GwTransportZoneListener getDataTreeChangeListener() {