Adding L2GW related HA code changes.
[netvirt.git] / elanmanager / impl / src / main / java / org / opendaylight / netvirt / elan / l2gw / ha / listeners / HAListeners.java
diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/listeners/HAListeners.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/listeners/HAListeners.java
deleted file mode 100644 (file)
index ee16a55..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 2017 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.netvirt.elan.l2gw.ha.listeners;
-
-import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
-import static org.opendaylight.genius.infra.Datastore.OPERATIONAL;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.annotation.PreDestroy;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.genius.infra.Datastore;
-import org.opendaylight.genius.utils.hwvtep.HwvtepNodeHACache;
-import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundConstants;
-import org.opendaylight.netvirt.elan.l2gw.ha.commands.LocalMcastCmd;
-import org.opendaylight.netvirt.elan.l2gw.ha.commands.LocalUcastCmd;
-import org.opendaylight.netvirt.elan.l2gw.ha.commands.LogicalSwitchesCmd;
-import org.opendaylight.netvirt.elan.l2gw.ha.commands.MergeCommand;
-import org.opendaylight.netvirt.elan.l2gw.ha.commands.PhysicalLocatorCmd;
-import org.opendaylight.netvirt.elan.l2gw.ha.commands.RemoteMcastCmd;
-import org.opendaylight.netvirt.elan.l2gw.ha.commands.RemoteUcastCmd;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAttributes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalMcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteUcastMacs;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
-import org.opendaylight.yangtools.yang.binding.ChildOf;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-@Singleton
-public class HAListeners implements AutoCloseable {
-    private static final InstanceIdentifier<TerminationPoint> PHYSICAL_PORT_IID =
-        InstanceIdentifier.create(NetworkTopology.class)
-            .child(Topology.class, new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID))
-            .child(Node.class).child(TerminationPoint.class);
-
-    private final DataBroker broker;
-    private final List<HwvtepNodeDataListener<?, ?>> listeners = new ArrayList<>();
-
-    @Inject
-    public HAListeners(DataBroker broker, HwvtepNodeHACache hwvtepNodeHACache) {
-        this.broker = broker;
-        registerListener(LocalMcastMacs.class, new LocalMcastCmd(), hwvtepNodeHACache);
-        registerListener(RemoteMcastMacs.class, new RemoteMcastCmd(), hwvtepNodeHACache);
-        registerListener(LocalUcastMacs.class, new LocalUcastCmd(), hwvtepNodeHACache);
-        registerListener(RemoteUcastMacs.class, new RemoteUcastCmd(), hwvtepNodeHACache);
-        registerListener(LogicalSwitches.class, new LogicalSwitchesCmd(), hwvtepNodeHACache);
-
-        PhysicalLocatorCmd physicalLocatorCmd = new PhysicalLocatorCmd();
-        listeners.add(new PhysicalLocatorListener(broker, hwvtepNodeHACache, physicalLocatorCmd, CONFIGURATION));
-        listeners.add(new PhysicalLocatorListener(broker, hwvtepNodeHACache, physicalLocatorCmd, OPERATIONAL));
-    }
-
-    @Override
-    @PreDestroy
-    public void close() {
-        for (HwvtepNodeDataListener listener : listeners) {
-            listener.close();
-        }
-    }
-
-    private <T extends ChildOf<HwvtepGlobalAttributes>> void registerListener(Class<T> clazz,
-            MergeCommand<T, ?, ?> mergeCommand, HwvtepNodeHACache hwvtepNodeHACache) {
-        listeners.add(new GlobalAugmentationListener(broker, hwvtepNodeHACache, clazz, HwvtepNodeDataListener.class,
-                mergeCommand, CONFIGURATION));
-        listeners.add(new GlobalAugmentationListener(broker, hwvtepNodeHACache, clazz, HwvtepNodeDataListener.class,
-                mergeCommand, OPERATIONAL));
-    }
-
-    private static class GlobalAugmentationListener<D extends Datastore, T extends DataObject
-            & ChildOf<HwvtepGlobalAttributes>> extends HwvtepNodeDataListener<D, T> {
-
-        GlobalAugmentationListener(DataBroker broker, HwvtepNodeHACache hwvtepNodeHACache,
-                                   Class<T> clazz, Class<HwvtepNodeDataListener<D, T>> eventClazz,
-                                   MergeCommand<T, ?, ?> mergeCommand,
-                                   Class<D> datastoreType) {
-            super(broker, hwvtepNodeHACache, clazz, eventClazz, mergeCommand, datastoreType);
-        }
-
-        @Override
-        protected InstanceIdentifier<T> getWildCardPath() {
-            return InstanceIdentifier.create(NetworkTopology.class)
-                    .child(Topology.class, new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID))
-                    .child(Node.class).augmentation(HwvtepGlobalAugmentation.class).child(clazz);
-        }
-    }
-
-    private static class PhysicalLocatorListener<D extends Datastore>
-            extends HwvtepNodeDataListener<D, TerminationPoint> {
-
-        PhysicalLocatorListener(DataBroker broker, HwvtepNodeHACache hwvtepNodeHACache,
-                MergeCommand<TerminationPoint, ?, ?> mergeCommand, Class<D> datastoreType) {
-            super(broker, hwvtepNodeHACache, TerminationPoint.class, (Class)PhysicalLocatorListener.class,
-                    mergeCommand, datastoreType);
-        }
-
-        @Override
-        protected InstanceIdentifier<TerminationPoint> getWildCardPath() {
-            return PHYSICAL_PORT_IID;
-        }
-
-        @Override
-        protected void remove(InstanceIdentifier<TerminationPoint> identifier, TerminationPoint dataRemoved) {
-            if (!isGlobalNode(identifier)) {
-                return;
-            }
-            super.remove(identifier, dataRemoved);
-        }
-
-        @Override
-        protected void update(InstanceIdentifier<TerminationPoint> identifier, TerminationPoint before,
-                              TerminationPoint after) {
-            if (!isGlobalNode(identifier)) {
-                return;
-            }
-            super.update(identifier, before, after);
-        }
-
-        @Override
-        protected void add(InstanceIdentifier<TerminationPoint> identifier, TerminationPoint added) {
-            if (!isGlobalNode(identifier)) {
-                return;
-            }
-            super.add(identifier, added);
-        }
-
-        boolean isGlobalNode(InstanceIdentifier<TerminationPoint> identifier) {
-            return !identifier.firstKeyOf(Node.class).getNodeId().getValue()
-                    .contains(HwvtepSouthboundConstants.PSWITCH_URI_PREFIX);
-        }
-    }
-}