neutron-ovsdb:neutron-ovsdb-impl
</type>
<name>neutron-ovsdb-impl</name>
-
- <rpc-registry>
- <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-rpc-registry</type>
- <name>binding-rpc-broker</name>
- </rpc-registry>
-
- <data-broker>
- <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker</type>
- <name>binding-data-broker</name>
- </data-broker>
-
- <!-- Remove the following if integration bridge should not be automatically created on OVSDB node. -->
- <integration-bridge-setting>
- <name>br-int</name>
- <openflow-protocol>tcp</openflow-protocol>
- <openflow-port>6653</openflow-port>
- </integration-bridge-setting>
-
</module>
</modules>
</data>
--- /dev/null
+/*
+ * Copyright (c) 2015 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 org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.groupbasedpolicy.neutron.ovsdb.NeutronOvsdb;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.ovsdb.params.rev160812.IntegrationBridgeSetting;
+
+public class NeutronOvsdbInstance implements AutoCloseable{
+
+ private NeutronOvsdb neutronOvsdb;
+
+ public NeutronOvsdbInstance(DataBroker dataBroker, EndpointService epService,
+ IntegrationBridgeSetting settings) {
+ neutronOvsdb = new NeutronOvsdb(dataBroker, epService, settings);
+ }
+
+ @Override
+ public void close() throws Exception {
+ neutronOvsdb.close();
+ }
+
+}
package org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl;
-import org.opendaylight.groupbasedpolicy.neutron.ovsdb.NeutronOvsdb;
+import org.opendaylight.controller.sal.common.util.NoopAutoCloseable;
import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Override
public java.lang.AutoCloseable createInstance() {
- final NeutronOvsdb neutronOvsdb = new NeutronOvsdb(getDataBrokerDependency(), getRpcRegistryDependency(),
- getIntegrationBridgeSetting());
- LOG.info("Neutron ovsdb started.");
- return neutronOvsdb;
+ return NoopAutoCloseable.INSTANCE;
}
public void setBundleContext(BundleContext bundleContext) {
import static com.google.common.base.Preconditions.checkNotNull;
-import org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl.IntegrationBridgeSetting;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.ovsdb.params.rev160812.IntegrationBridgeSetting;
public class NeutronOvsdb implements AutoCloseable {
private final OvsdbNodeListener ovsdbNodeListener;
private final ProviderPhysicalNetworkListener provPhysNetListener;
- public NeutronOvsdb(DataBroker dataProvider, RpcProviderRegistry rpcProvider,
+ public NeutronOvsdb(DataBroker dataProvider, EndpointService epService,
IntegrationBridgeSetting integrationbridgeSettings) {
checkNotNull(dataProvider);
- checkNotNull(rpcProvider);
-
- EndpointService epService = rpcProvider.getRpcService(EndpointService.class);
tpListener = new TerminationPointDataChangeListener(dataProvider, epService);
ovsdbNodeListener = new OvsdbNodeListener(dataProvider, integrationbridgeSettings);
portByEndpointListener = new PortByEndpointListener(dataProvider);
import java.util.Objects;
import java.util.Set;
+
import com.google.common.base.Function;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
-import org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl.IntegrationBridgeSetting;
+
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.DataTreeIdentifier;
import org.opendaylight.groupbasedpolicy.util.DataTreeChangeHandler;
import org.opendaylight.ovsdb.southbound.SouthboundConstants;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.ovsdb.params.rev160812.IntegrationBridgeSetting;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeSystem;
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+ odl:use-default-for-reference-types="true">
+
+ <reference id="dataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"/>
+ <odl:rpc-service id="epService" interface="org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService"/>
+
+ <odl:clustered-app-config id="moduleConfig"
+ binding-class="org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.ovsdb.params.rev160812.IntegrationBridgeSetting">
+ <odl:default-config><![CDATA[
+ <integration-bridge-setting xmlns="urn:opendaylight:groupbasedpolicy:neutron:ovsdb:params">
+ <name>br-int</name>
+ <openflow-port>6653</openflow-port>
+ <openflow-protocol>tcp</openflow-protocol>
+ </integration-bridge-setting>
+ ]]>
+ </odl:default-config>
+ </odl:clustered-app-config>
+
+ <bean id="neutronOvsdb" class="org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl.NeutronOvsdbInstance"
+ destroy-method="close">
+ <argument ref="dataBroker"/>
+ <argument ref="epService"/>
+ <argument ref="moduleConfig"/>
+ </bean>
+</blueprint>
\ No newline at end of file
--- /dev/null
+module neutron-ovsdb-impl {
+
+ yang-version 1;
+ namespace "urn:opendaylight:groupbasedpolicy:neutron:ovsdb:params";
+ prefix "neutron-ovsdb-params";
+
+ import config { prefix config; revision-date 2013-04-05; }
+ import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28; }
+
+ description
+ "This module contains the base YANG definitions for
+ neutron-ovsdb mudule params.";
+
+ revision "2016-08-12" {
+ description
+ "Initial revision.";
+ }
+
+ container integration-bridge-setting {
+ leaf name {
+ mandatory true;
+ type string;
+ }
+ leaf openflow-port {
+ mandatory true;
+ type uint16;
+ }
+ leaf openflow-protocol {
+ mandatory true;
+ type string {
+ pattern "^tcp$|^udp$";
+ }
+ }
+ }
+}
\ No newline at end of file
augment "/config:modules/config:module/config:configuration" {
case neutron-ovsdb-impl {
when "/config:modules/config:module/config:type = 'neutron-ovsdb-impl'";
-
- container data-broker {
- uses config:service-ref {
- refine type {
- mandatory true;
- config:required-identity mdsal:binding-async-data-broker;
- }
- }
- }
-
- container rpc-registry {
- uses config:service-ref {
- refine type {
- mandatory true;
- config:required-identity mdsal:binding-rpc-registry;
- }
- }
- }
-
- container integration-bridge-setting {
- leaf name {
- mandatory true;
- type string;
- }
- leaf openflow-port {
- mandatory true;
- type uint16;
- }
- leaf openflow-protocol {
- mandatory true;
- type string {
- pattern "^tcp$|^udp$";
- }
- }
- }
}
}
}
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.google.common.util.concurrent.CheckedFuture;
import org.junit.Before;
import org.junit.Test;
-import org.opendaylight.controller.config.yang.config.neutron_ovsdb.impl.IntegrationBridgeSetting;
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.DataTreeIdentifier;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.ovsdb.params.rev160812.IntegrationBridgeSetting;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.ovsdb.params.rev160812.IntegrationBridgeSettingBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentationBuilder;
@Before
public void init() {
dataBroker = mock(DataBroker.class);
- integrationBridgeSetting = new IntegrationBridgeSetting();
- integrationBridgeSetting.setName("bridgeName");
- integrationBridgeSetting.setOpenflowProtocol("ooofff");
- integrationBridgeSetting.setOpenflowPort(1234);
+ integrationBridgeSetting = new IntegrationBridgeSettingBuilder()
+ .setName("bridgeName")
+ .setOpenflowProtocol("ooofff")
+ .setOpenflowPort(1234)
+ .build();
rootNode = mock(DataObjectModification.class);
rootIdentifier = NeutronOvsdbIidFactory.nodeIid(topologyId, nodeId);