diff options
author | Robert Varga <nite@hq.sk> | 2016-01-30 15:25:19 +0100 |
---|---|---|
committer | Robert Varga <nite@hq.sk> | 2016-01-31 18:21:24 +0100 |
commit | 42887f769a3ac57963110925a1c2965c2b25bac6 (patch) | |
tree | 4d5f47c3ad19767c99964dc5a8c80391e9242c99 /vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/VirtualBridgeDomainManager.java | |
parent | cb22508bc344123078a1caea7d39da49583f0ab0 (diff) |
Add Virtual Bridge Domain implementation
Change-Id: I427b709ac0af1ade365bc60148ddf778f7be458a
Signed-off-by: Robert Varga <nite@hq.sk>
Diffstat (limited to 'vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/VirtualBridgeDomainManager.java')
-rw-r--r-- | vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/VirtualBridgeDomainManager.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/VirtualBridgeDomainManager.java b/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/VirtualBridgeDomainManager.java new file mode 100644 index 000000000..37da73159 --- /dev/null +++ b/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/VirtualBridgeDomainManager.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2016 Cisco Systems, Inc. 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 io.fd.honeycomb.vbd.impl; + +import com.google.common.base.Preconditions; +import javax.annotation.Nonnull; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.TopologyTypes1; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.network.topology.topology.topology.types.VbridgeTopology; +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.topology.TopologyTypes; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Tip for the Virtual Bridge Domain implementation. This class is instantiated when the application is started + * and {@link #close()}d when it is shut down. + */ +public final class VirtualBridgeDomainManager implements AutoCloseable { + private static final Logger LOG = LoggerFactory.getLogger(VirtualBridgeDomainManager.class); + private static final DataTreeIdentifier<VbridgeTopology> LISTEN_TREE = + new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + InstanceIdentifier.builder(NetworkTopology.class).child(Topology.class).child(TopologyTypes.class) + .augmentation(TopologyTypes1.class).child(VbridgeTopology.class).build()); + + private final ListenerRegistration<TopologyMonitor> reg; + private boolean closed; + + private VirtualBridgeDomainManager(final ListenerRegistration<TopologyMonitor> reg) { + this.reg = Preconditions.checkNotNull(reg); + } + + public static VirtualBridgeDomainManager create(@Nonnull final DataBroker dataBroker) { + final ListenerRegistration<TopologyMonitor> reg = + dataBroker.registerDataTreeChangeListener(LISTEN_TREE, new TopologyMonitor(dataBroker)); + + return new VirtualBridgeDomainManager(reg); + } + + @Override + public void close() { + if (!closed) { + LOG.debug("Virtual Bridge Domain manager shut down started"); + + final TopologyMonitor monitor = reg.getInstance(); + reg.close(); + LOG.debug("Topology monitor {} unregistered", monitor); + monitor.close(); + + closed = true; + LOG.debug("Virtual Bridge Domain manager shut down completed"); + } + } +} |