summaryrefslogtreecommitdiffstats
path: root/vbd/impl
diff options
context:
space:
mode:
Diffstat (limited to 'vbd/impl')
-rw-r--r--vbd/impl/pom.xml34
-rw-r--r--vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/BridgeDomain.java21
-rw-r--r--vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/TopologyMonitor.java7
-rw-r--r--vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/VirtualBridgeDomainManager.java9
-rw-r--r--vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdModule.java32
-rw-r--r--vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdModuleFactory.java13
-rw-r--r--vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdProvider.java22
-rw-r--r--vbd/impl/src/main/resources/config/vbd.xml37
-rw-r--r--vbd/impl/src/main/yang/vbd-impl.yang35
9 files changed, 195 insertions, 15 deletions
diff --git a/vbd/impl/pom.xml b/vbd/impl/pom.xml
index 3d6d55aea..d4ac30d62 100644
--- a/vbd/impl/pom.xml
+++ b/vbd/impl/pom.xml
@@ -29,6 +29,10 @@
<version>1.0.0-SNAPSHOT</version>
<packaging>bundle</packaging>
+ <properties>
+ <config.file>src/main/config/vbd.xml</config.file>
+ </properties>
+
<dependencyManagement>
<dependencies>
<dependency>
@@ -60,4 +64,34 @@
<scope>test</scope>
</dependency>
</dependencies>
+
+
+ <!--TODO: remove direct calling of builder-helper-maven-plugin. should be supported via profile in parent-->
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-artifacts</id>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>${project.build.directory}/classes/config/vbd.xml</file>
+ <type>xml</type>
+ <classifier>config</classifier>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
diff --git a/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/BridgeDomain.java b/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/BridgeDomain.java
index aff03b2a6..9cea6589f 100644
--- a/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/BridgeDomain.java
+++ b/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/BridgeDomain.java
@@ -18,9 +18,10 @@ import org.opendaylight.controller.md.sal.binding.api.DataObjectModification.Mod
import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.binding.api.MountPointService;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
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.Topology1;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbridge.topology.rev160129.TopologyVbridgeAugment;
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;
@@ -41,19 +42,21 @@ final class BridgeDomain implements DataTreeChangeListener<Topology> {
@GuardedBy("this")
private final BindingTransactionChain chain;
private final ListenerRegistration<?> reg;
- private Topology1 config;
+ private final MountPointService mountService;
+ private TopologyVbridgeAugment config;
- private BridgeDomain(final DataBroker dataBroker, final KeyedInstanceIdentifier<Topology, TopologyKey> topology,
+ private BridgeDomain(final DataBroker dataBroker, final MountPointService mountService, final KeyedInstanceIdentifier<Topology, TopologyKey> topology,
final BindingTransactionChain chain) {
this.topology = Preconditions.checkNotNull(topology);
this.chain = Preconditions.checkNotNull(chain);
+ this.mountService = mountService;
reg = dataBroker.registerDataTreeChangeListener(
new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, topology), this);
}
static BridgeDomain create(final DataBroker dataBroker,
- final KeyedInstanceIdentifier<Topology, TopologyKey> topology, final BindingTransactionChain chain) {
+ MountPointService mountService, final KeyedInstanceIdentifier<Topology, TopologyKey> topology, final BindingTransactionChain chain) {
LOG.debug("Wiping operational state of {}", topology);
@@ -61,7 +64,7 @@ final class BridgeDomain implements DataTreeChangeListener<Topology> {
tx.delete(LogicalDatastoreType.OPERATIONAL, topology);
tx.submit();
- return new BridgeDomain(dataBroker, topology, chain);
+ return new BridgeDomain(dataBroker, mountService, topology, chain);
}
synchronized void forceStop() {
@@ -92,7 +95,7 @@ final class BridgeDomain implements DataTreeChangeListener<Topology> {
break;
case SUBTREE_MODIFIED:
// First check if the configuration has changed
- final DataObjectModification<Topology1> newConfig = mod.getModifiedAugmentation(Topology1.class);
+ final DataObjectModification<TopologyVbridgeAugment> newConfig = mod.getModifiedAugmentation(TopologyVbridgeAugment.class);
if (newConfig != null) {
if (newConfig.getModificationType() != ModificationType.DELETE) {
LOG.debug("Topology {} modified configuration {}", topology, newConfig);
@@ -116,7 +119,7 @@ final class BridgeDomain implements DataTreeChangeListener<Topology> {
final Topology data = mod.getDataAfter();
// Read configuration
- final Topology1 config = data.getAugmentation(Topology1.class);
+ final TopologyVbridgeAugment config = data.getAugmentation(TopologyVbridgeAugment.class);
if (config != null) {
setConfiguration(config);
} else {
@@ -153,14 +156,14 @@ final class BridgeDomain implements DataTreeChangeListener<Topology> {
}
}
- private void setConfiguration(final Topology1 config) {
+ private void setConfiguration(final TopologyVbridgeAugment config) {
LOG.debug("Topology {} configuration set to {}", topology, config);
this.config = config;
}
@GuardedBy("this")
- private void updateConfiguration(final DataObjectModification<Topology1> mod) {
+ private void updateConfiguration(final DataObjectModification<TopologyVbridgeAugment> mod) {
LOG.debug("Topology {} configuration changed", topology);
// FIXME: do something smarter
diff --git a/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/TopologyMonitor.java b/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/TopologyMonitor.java
index b2e52c37e..213ff6685 100644
--- a/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/TopologyMonitor.java
+++ b/vbd/impl/src/main/java/io/fd/honeycomb/vbd/impl/TopologyMonitor.java
@@ -19,6 +19,7 @@ import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.binding.api.MountPointService;
import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction;
import org.opendaylight.controller.md.sal.common.api.data.TransactionChain;
import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener;
@@ -39,9 +40,11 @@ final class TopologyMonitor implements DataTreeChangeListener<VbridgeTopology>,
@GuardedBy("this")
private final Map<TopologyKey, BridgeDomain> domains = new HashMap<>();
private final DataBroker dataBroker;
+ private final MountPointService mountService;
- TopologyMonitor(final DataBroker dataBroker) {
+ public TopologyMonitor(DataBroker dataBroker, MountPointService mountService) {
this.dataBroker = Preconditions.checkNotNull(dataBroker);
+ this.mountService = Preconditions.checkNotNull(mountService);
}
@Override
@@ -115,7 +118,7 @@ final class TopologyMonitor implements DataTreeChangeListener<VbridgeTopology>,
}
});
- final BridgeDomain domain = BridgeDomain.create(dataBroker, topology, chain);
+ final BridgeDomain domain = BridgeDomain.create(dataBroker, mountService, topology, chain);
domains.put(topology.getKey(), domain);
LOG.debug("Bridge domain {} for {} started", domain, topology);
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
index 37da73159..0c1d08faa 100644
--- 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
@@ -12,8 +12,9 @@ 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.binding.api.MountPointService;
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.TopologyTypesVbridgeAugment;
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;
@@ -32,7 +33,7 @@ public final class VirtualBridgeDomainManager implements AutoCloseable {
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());
+ .augmentation(TopologyTypesVbridgeAugment.class).child(VbridgeTopology.class).build());
private final ListenerRegistration<TopologyMonitor> reg;
private boolean closed;
@@ -41,9 +42,9 @@ public final class VirtualBridgeDomainManager implements AutoCloseable {
this.reg = Preconditions.checkNotNull(reg);
}
- public static VirtualBridgeDomainManager create(@Nonnull final DataBroker dataBroker) {
+ public static VirtualBridgeDomainManager create(@Nonnull final DataBroker dataBroker,@Nonnull MountPointService mountService) {
final ListenerRegistration<TopologyMonitor> reg =
- dataBroker.registerDataTreeChangeListener(LISTEN_TREE, new TopologyMonitor(dataBroker));
+ dataBroker.registerDataTreeChangeListener(LISTEN_TREE, new TopologyMonitor(dataBroker, mountService));
return new VirtualBridgeDomainManager(reg);
}
diff --git a/vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdModule.java b/vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdModule.java
new file mode 100644
index 000000000..6157320d6
--- /dev/null
+++ b/vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdModule.java
@@ -0,0 +1,32 @@
+package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbd.impl.rev160202;
+
+import io.fd.honeycomb.vbd.impl.VirtualBridgeDomainManager;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.MountPointService;
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+
+public class VbdModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbd.impl.rev160202.AbstractVbdModule {
+ public VbdModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
+ super(identifier, dependencyResolver);
+ }
+
+ public VbdModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbd.impl.rev160202.VbdModule oldModule, java.lang.AutoCloseable oldInstance) {
+ super(identifier, dependencyResolver, oldModule, oldInstance);
+ }
+
+ @Override
+ public void customValidation() {
+ // add custom validation form module attributes here.
+ }
+
+ @Override
+ public java.lang.AutoCloseable createInstance() {
+ final BindingAwareBroker brokerDependency = getBrokerDependency();
+ BindingAwareBroker.ProviderContext session = brokerDependency.registerProvider(new VbdProvider());
+
+ DataBroker dataBroker = session.getSALService(DataBroker.class);
+ MountPointService mountService = session.getSALService(MountPointService.class);
+ return VirtualBridgeDomainManager.create(dataBroker, mountService);
+ }
+
+}
diff --git a/vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdModuleFactory.java b/vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdModuleFactory.java
new file mode 100644
index 000000000..4f87fe6a1
--- /dev/null
+++ b/vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdModuleFactory.java
@@ -0,0 +1,13 @@
+/*
+* Generated file
+*
+* Generated from: yang module name: vbd-impl yang module local name: vbd
+* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
+* Generated at: Tue Feb 02 10:45:40 CET 2016
+*
+* Do not modify this file unless it is present under src/main directory
+*/
+package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbd.impl.rev160202;
+public class VbdModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbd.impl.rev160202.AbstractVbdModuleFactory {
+
+}
diff --git a/vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdProvider.java b/vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdProvider.java
new file mode 100644
index 000000000..a27aa1e5e
--- /dev/null
+++ b/vbd/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/vbd/impl/rev160202/VbdProvider.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ * <p>
+ * 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vbd.impl.rev160202;
+
+import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
+import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
+
+/**
+ * Created by joe on 2.2.2016.
+ */
+public class VbdProvider implements BindingAwareProvider {
+
+ @Override
+ public void onSessionInitiated(BindingAwareBroker.ProviderContext session) {
+ // Intentional NOOP
+ }
+}
diff --git a/vbd/impl/src/main/resources/config/vbd.xml b/vbd/impl/src/main/resources/config/vbd.xml
new file mode 100644
index 000000000..c3f4c665b
--- /dev/null
+++ b/vbd/impl/src/main/resources/config/vbd.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+ Copyright (c) 2015 Cisco and/or its affiliates.
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<snapshot>
+ <required-capabilities>
+ <capability>urn:opendaylight:params:xml:ns:yang:vbd:impl?module=vbd-impl&amp;revision=2016-02-02</capability>
+ <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&amp;revision=2013-10-28</capability>
+ </required-capabilities>
+ <configuration>
+
+ <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
+ <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
+ <module>
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:vbd:impl">prefix:vbd</type>
+ <name>vbd-name</name>
+ <broker>
+ <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
+ <name>binding-osgi-broker</name>
+ </broker>
+ </module>
+ </modules>
+ </data>
+ </configuration>
+</snapshot>
diff --git a/vbd/impl/src/main/yang/vbd-impl.yang b/vbd/impl/src/main/yang/vbd-impl.yang
new file mode 100644
index 000000000..d0c259500
--- /dev/null
+++ b/vbd/impl/src/main/yang/vbd-impl.yang
@@ -0,0 +1,35 @@
+module vbd-impl {
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:vbd:impl";
+ prefix "vbd-impl";
+
+ import config { prefix config; revision-date 2013-04-05; }
+ import opendaylight-md-sal-binding { prefix md-sal-binding; revision-date 2013-10-28;}
+
+ description
+ "Service definition for vbd project";
+
+ revision "2016-02-02" {
+ description
+ "Initial revision";
+ }
+
+ identity vbd {
+ base config:module-type;
+ config:java-name-prefix Vbd;
+ }
+
+ augment "/config:modules/config:module/config:configuration" {
+ case vbd {
+ when "/config:modules/config:module/config:type = 'vbd'";
+ container broker {
+ uses config:service-ref {
+ refine type {
+ mandatory true;
+ config:required-identity md-sal-binding:binding-broker-osgi-registry;
+ }
+ }
+ }
+ }
+ }
+}