2 * Copyright (c) 2016, 2017 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.netvirt.cloudservicechain.listeners;
10 import javax.annotation.PostConstruct;
11 import javax.inject.Inject;
12 import javax.inject.Singleton;
13 import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase;
14 import org.opendaylight.mdsal.binding.api.DataBroker;
15 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
16 import org.opendaylight.netvirt.cloudservicechain.utils.VpnPseudoPortCache;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.cloud.servicechain.state.rev160711.VpnToPseudoPortList;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.cloud.servicechain.state.rev160711.vpn.to.pseudo.port.list.VpnToPseudoPortData;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
20 import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory;
24 * Listens to changes in the Vpn to VpnPseudoPort relationship with the only
25 * purpose of updating the VpnPseudoPorts caches in all blades.
29 public class VpnPseudoPortListener
30 extends AsyncClusteredDataTreeChangeListenerBase<VpnToPseudoPortData, VpnPseudoPortListener> {
32 private static final Logger LOG = LoggerFactory.getLogger(VpnPseudoPortListener.class);
33 private final DataBroker dataBroker;
34 private final VpnPseudoPortCache vpnPseudoPortCache;
37 public VpnPseudoPortListener(final DataBroker dataBroker, final VpnPseudoPortCache vpnPseudoPortCache) {
38 this.dataBroker = dataBroker;
39 this.vpnPseudoPortCache = vpnPseudoPortCache;
44 registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker);
48 protected void remove(InstanceIdentifier<VpnToPseudoPortData> identifier, VpnToPseudoPortData del) {
49 LOG.trace("Reacting to VpnToPseudoPortData removal: iid={}", identifier);
50 vpnPseudoPortCache.remove(del.getVrfId());
54 protected void update(InstanceIdentifier<VpnToPseudoPortData> identifier, VpnToPseudoPortData original,
55 VpnToPseudoPortData update) {
56 vpnPseudoPortCache.add(update.getVrfId(), update.getVpnLportTag());
60 protected void add(InstanceIdentifier<VpnToPseudoPortData> identifier, VpnToPseudoPortData add) {
61 LOG.trace("Reacting to VpnToPseudoPortData creation: vrf={} vpnPseudoLportTag={} scfTag={} scfTable={}.",
62 add.getVrfId(), add.getVpnLportTag(), add.getScfTag(), add.getScfTableId());
63 vpnPseudoPortCache.add(add.getVrfId(), add.getVpnLportTag());
67 protected InstanceIdentifier<VpnToPseudoPortData> getWildCardPath() {
68 return InstanceIdentifier.builder(VpnToPseudoPortList.class).child(VpnToPseudoPortData.class).build();
72 protected VpnPseudoPortListener getDataTreeChangeListener() {