From 4c4f1743dc29e87b0ab4b39087f79f7f01befa49 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Tue, 22 Mar 2016 17:57:16 +0100 Subject: Dedicated NETCONF north interface for v3po Change-Id: I3a001ef68f7ff43ec1b2a935dd474ec966cea878 Signed-off-by: Maros Marsalek --- v3po/features/pom.xml | 7 + v3po/features/src/main/features/features.xml | 1 + v3po/impl/pom.xml | 33 ++ v3po/impl/src/main/config/default-config.xml | 14 + v3po/impl/src/main/config/netconf-north-config.xml | 457 +++++++++++++++++++++ .../io/fd/honeycomb/v3po/impl/V3poProvider.java | 90 +++- .../data/VppDataBrokerInitializationProvider.java | 12 +- .../impl/rev141210/NetconfBindingBrokerModule.java | 117 ++++++ .../NetconfBindingBrokerModuleFactory.java | 13 + v3po/impl/src/main/yang/v3po-impl.yang | 23 ++ 10 files changed, 765 insertions(+), 2 deletions(-) create mode 100644 v3po/impl/src/main/config/netconf-north-config.xml create mode 100644 v3po/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/v3po/impl/rev141210/NetconfBindingBrokerModule.java create mode 100644 v3po/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/v3po/impl/rev141210/NetconfBindingBrokerModuleFactory.java diff --git a/v3po/features/pom.xml b/v3po/features/pom.xml index c08008614..77473cade 100644 --- a/v3po/features/pom.xml +++ b/v3po/features/pom.xml @@ -121,6 +121,13 @@ xml config + + ${project.groupId} + v3po-impl + ${project.version} + xml + netconf + ${project.groupId} v3po-api diff --git a/v3po/features/src/main/features/features.xml b/v3po/features/src/main/features/features.xml index 2055dd935..3d3ffdb3e 100644 --- a/v3po/features/src/main/features/features.xml +++ b/v3po/features/src/main/features/features.xml @@ -37,6 +37,7 @@ mvn:io.fd.honeycomb.v3po/v3po-impl/${project.version} wrap:mvn:io.fd.vpp/vppjapi/1.0.0-SNAPSHOT mvn:io.fd.honeycomb.v3po/v3po-impl/${project.version}/xml/config + mvn:io.fd.honeycomb.v3po/v3po-impl/${project.version}/xml/netconf diff --git a/v3po/impl/pom.xml b/v3po/impl/pom.xml index 1498d82f8..a47b6a133 100644 --- a/v3po/impl/pom.xml +++ b/v3po/impl/pom.xml @@ -78,4 +78,37 @@ test + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-artifacts + + attach-artifact + + package + + + + ${config.file} + xml + config + + + src/main/config/netconf-north-config.xml + xml + netconf + + + + + + + + diff --git a/v3po/impl/src/main/config/default-config.xml b/v3po/impl/src/main/config/default-config.xml index 7d0f19476..261cd3d6f 100644 --- a/v3po/impl/src/main/config/default-config.xml +++ b/v3po/impl/src/main/config/default-config.xml @@ -15,6 +15,7 @@ limitations under the License. --> + urn:opendaylight:params:xml:ns:yang:v3po:impl?module=v3po-impl&revision=2014-12-10 urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&revision=2013-10-28 @@ -36,6 +37,19 @@ + + + + + dom:dom-broker-osgi-registry + + + vpp-dom-broker + /modules/module[type='v3po'][name='v3po-default'] + + + + diff --git a/v3po/impl/src/main/config/netconf-north-config.xml b/v3po/impl/src/main/config/netconf-north-config.xml new file mode 100644 index 000000000..44b610b72 --- /dev/null +++ b/v3po/impl/src/main/config/netconf-north-config.xml @@ -0,0 +1,457 @@ + + + + + + + + + + + + + prefix:inmemory-config-datastore-provider + netconf-config-store-service + + + dom:schema-service + yang-schema-service + + + + + prefix:inmemory-operational-datastore-provider + netconf-operational-store-service + + + dom:schema-service + yang-schema-service + + + + + prefix:dom-inmemory-data-broker + netconf-inmemory-data-broker + + + dom:schema-service + yang-schema-service + + + + config-dom-store-spi:config-dom-datastore + netconf-config-store-service + + + + operational-dom-store-spi:operational-dom-datastore + netconf-operational-store-service + + + + prefix:binding-forwarded-data-broker + netconf-binding-data-broker + + + dom:dom-async-data-broker + netconf-inmemory-data-broker + + + dom:schema-service + yang-schema-service + + + binding:binding-dom-mapping-service + runtime-mapping-singleton + + + + + + prefix:binding-broker-netconf + binding-broker-netconf + + binding:binding-async-data-broker + netconf-binding-data-broker + + + + + + + prefix:netconf-mdsal-mapper + + netconf-vpp-mapper + + dom:schema-service + + yang-schema-service + + + + dom:yang-text-source-provider + + yang-text-source-provider + + + + dom:dom-broker-osgi-registry + + vpp-dom-broker + + + + prefix:netconf-mapper-registry + + vpp-mapper-aggregator-registry + + + + + + prefix:netconf-server-dispatcher-impl + + netconf-vpp-server-dispatcher + + + dom:netconf-northbound-mapper + + vpp-mapper-aggregator + + + + prefix:netconf-server-monitoring + + vpp-server-monitor + + + + prefix:netty-threadgroup + + global-boss-group + + + + prefix:netty-threadgroup + + global-worker-group + + + prefix:netty-timer + + global-timer + + + + + + prefix:netconf-mdsal-monitoring-mapper + + netconf-vpp-monitoring-mapper + + + prefix:netconf-server-monitoring + + vpp-server-monitor + + + + prefix:binding-broker-osgi-registry + + binding-broker-netconf + + + + prefix:netconf-mapper-registry + + vpp-mapper-aggregator-registry + + + + + + prefix:netconf-mapper-aggregator + + vpp-mapper-aggregator + + + + + prefix:netconf-server-monitoring-impl + + vpp-server-monitor + + + dom:netconf-northbound-mapper + + vpp-mapper-aggregator + + + + + + prefix:netconf-northbound-ssh + + netconf-vpp-ssh-server + + 7778 + + + prefix:netty-event-executor + + global-event-executor + + + + prefix:netty-threadgroup + + global-worker-group + + + + prefix:threadpool + + global-netconf-ssh-scheduled-executor + + + + prefix:netconf-server-dispatcher + + netconf-vpp-server-dispatcher + + + + prefix:netconf-auth-provider + + default-auth-provider + + + + + + prefix:netconf-notification-manager + + vpp-netconf-notification-manager + + + + + prefix:netconf-mdsal-notification-mapper + + netconf-vpp-notification-mapper + + + + binding:binding-async-data-broker + + netconf-binding-data-broker + + + + + prefix:binding-broker-osgi-registry + + binding-broker-netconf + + + + prefix:netconf-mapper-registry + + vpp-mapper-aggregator-registry + + + + prefix:netconf-notification-registry + + vpp-netconf-notification-manager + + + + prefix:netconf-notification-collector + + vpp-netconf-notification-manager + + + + + + + + prefix:netconf-northbound-tcp + + netconf-vpp-tcp-server + + + prefix:netconf-server-dispatcher + + netconf-vpp-server-dispatcher + + 7777 + + + + + + + + config-dom-store-spi:config-dom-datastore + + netconf-config-store-service + /modules/module[type='inmemory-config-datastore-provider'][name='netconf-config-store-service'] + + + + operational-dom-store-spi:operational-dom-datastore + + netconf-operational-store-service + /modules/module[type='inmemory-operational-datastore-provider'][name='netconf-operational-store-service'] + + + + dom:dom-async-data-broker + + netconf-inmemory-data-broker + /modules/module[type='dom-inmemory-data-broker'][name='netconf-inmemory-data-broker'] + + + + binding:binding-async-data-broker + + netconf-binding-data-broker + /modules/module[type='binding-forwarded-data-broker'][name='netconf-binding-data-broker'] + + + + binding:binding-broker-osgi-registry + + binding-broker-netconf + /modules/module[type='binding-broker-netconf'][name='binding-broker-netconf'] + + + + + + + prefix:netconf-server-monitoring + + + vpp-server-monitor + /modules/module[type='netconf-server-monitoring-impl'][name='vpp-server-monitor'] + + + + + + prefix:netconf-northbound-mapper + + + netconf-vpp-mapper + /modules/module[type='netconf-mdsal-mapper'][name='netconf-vpp-mapper'] + + + + + prefix:netconf-northbound-mapper + + + vpp-mapper-aggregator + /modules/module[type='netconf-mapper-aggregator'][name='vpp-mapper-aggregator'] + + + + + prefix:netconf-mapper-registry + + + vpp-mapper-aggregator-registry + /modules/module[type='netconf-mapper-aggregator'][name='vpp-mapper-aggregator'] + + + + + prefix:netconf-server-dispatcher + + + netconf-vpp-server-dispatcher + + /modules/module[type='netconf-server-dispatcher-impl'][name='netconf-vpp-server-dispatcher'] + + + + + + prefix:netconf-northbound-mapper + + + netconf-vpp-notification-mapper + + /modules/module[type='netconf-mdsal-notification-mapper'][name='netconf-vpp-notification-mapper'] + + + + + + prefix:netconf-notification-collector + + + vpp-netconf-notification-manager + + /modules/module[type='netconf-notification-manager'][name='vpp-netconf-notification-manager'] + + + + + + prefix:netconf-notification-registry + + + vpp-netconf-notification-manager + + /modules/module[type='netconf-notification-manager'][name='vpp-netconf-notification-manager'] + + + + + + + + + urn:opendaylight:params:xml:ns:yang:v3po:impl?module=v3po-impl&revision=2014-12-10 + urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&revision=2013-10-28 + urn:opendaylight:params:xml:ns:yang:controller:netconf:mdsal:mapper?module=netconf-mdsal-mapper&revision=2015-01-14 + + urn:opendaylight:params:xml:ns:yang:controller:netconf:mdsal:monitoring?module=netconf-mdsal-monitoring&revision=2015-02-18 + + urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:ssh?module=netconf-northbound-ssh&revision=2015-01-14 + urn:opendaylight:params:xml:ns:yang:controller:netconf:northbound:tcp?module=netconf-northbound-tcp&revision=2015-04-23 + + urn:opendaylight:params:xml:ns:yang:controller:config:netconf:northbound:impl?module=netconf-northbound-impl&revision=2015-01-12 + + + urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:scheduled?module=threadpool-impl-scheduled&revision=2013-12-01 + + + urn:opendaylight:params:xml:ns:yang:controller:netconf:mdsal:notification?module=netconf-mdsal-notification&revision=2015-08-03 + + + diff --git a/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/V3poProvider.java b/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/V3poProvider.java index 8a0dead0e..4afd86099 100644 --- a/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/V3poProvider.java +++ b/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/V3poProvider.java @@ -23,20 +23,26 @@ import com.google.common.util.concurrent.Futures; import io.fd.honeycomb.v3po.impl.data.VppDataBrokerInitializationProvider; import io.fd.honeycomb.v3po.impl.data.VppReaderRegistry; import java.io.IOException; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Timer; import java.util.TimerTask; import javax.annotation.Nonnull; +import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; +import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration; import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; import org.opendaylight.controller.sal.core.api.Broker; +import org.opendaylight.controller.sal.core.api.BrokerService; +import org.opendaylight.controller.sal.core.api.Consumer; +import org.opendaylight.controller.sal.core.api.Provider; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.EthernetCsmacd; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.SoftwareLoopback; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfaceType; @@ -54,10 +60,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.openvpp.vppjapi.vppApi; import org.openvpp.vppjapi.vppInterfaceDetails; +import org.osgi.framework.BundleContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class V3poProvider implements BindingAwareProvider, AutoCloseable { +public class V3poProvider implements BindingAwareProvider, AutoCloseable, Broker { private static final Logger LOG = LoggerFactory.getLogger(V3poProvider.class); private final Broker domBroker; @@ -209,4 +216,85 @@ public class V3poProvider implements BindingAwareProvider, AutoCloseable { vppDataBrokerInitializationProvider.close(); } } + + // DomBroker functionality below. Should go out of here. TODO do that when cleaning up this provider + + @Override + public ConsumerSession registerConsumer(final Consumer consumer) { + final SimpleConsumerSession session = new SimpleConsumerSession( + Collections., BrokerService>singletonMap(DOMDataBroker.class, + vppDataBrokerInitializationProvider.getBroker().get())); + consumer.onSessionInitiated(session); + return session; + } + + @Deprecated + @Override + public ConsumerSession registerConsumer(final Consumer consumer, final BundleContext bundleContext) { + throw new UnsupportedOperationException(); + } + + @Override + public ProviderSession registerProvider(final Provider provider) { + final SimpleProviderSession session = new SimpleProviderSession( + Collections., BrokerService>singletonMap(DOMDataBroker.class, + vppDataBrokerInitializationProvider.getBroker().get())); + provider.onSessionInitiated(session); + return session; + } + + @Override + public ProviderSession registerProvider(final Provider provider, final BundleContext bundleContext) { + throw new UnsupportedOperationException(); + } + + @NotThreadSafe + private static class SimpleConsumerSession implements ConsumerSession { + private boolean closed; + private final Map, BrokerService> services; + + private SimpleConsumerSession(final Map, BrokerService> services) { + this.services = services; + } + + @Override + public boolean isClosed() { + return closed; + } + + @Override + public T getService(final Class aClass) { + return (T)services.get(aClass); + } + + @Override + public void close() { + closed = true; + } + } + + @NotThreadSafe + private static class SimpleProviderSession implements ProviderSession { + private boolean closed; + private final Map, BrokerService> services; + + private SimpleProviderSession(final Map, BrokerService> services) { + this.services = services; + } + + @Override + public boolean isClosed() { + return closed; + } + + @Override + public T getService(final Class aClass) { + return (T)services.get(aClass); + } + + @Override + public void close() { + closed = true; + } + } } diff --git a/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppDataBrokerInitializationProvider.java b/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppDataBrokerInitializationProvider.java index b7a24ea90..129a1b84b 100644 --- a/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppDataBrokerInitializationProvider.java +++ b/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/data/VppDataBrokerInitializationProvider.java @@ -85,6 +85,7 @@ public final class VppDataBrokerInitializationProvider implements Provider, Auto private final ReaderRegistry readerRegistry; private final InstanceIdentifier mountPointPath; private ObjectRegistration mountPointRegistration; + private DOMDataBroker broker; public VppDataBrokerInitializationProvider(@Nonnull final DataBroker bindingBroker, final ReaderRegistry readerRegistry) { this.bindingBroker = Preconditions.checkNotNull(bindingBroker, "bindingBroker should not be null"); @@ -116,7 +117,7 @@ public final class VppDataBrokerInitializationProvider implements Provider, Auto final DOMMountPointService.DOMMountPointBuilder mountPointBuilder = mountPointService.createMountPoint(path); mountPointBuilder.addInitialSchemaContext(globalContext); - final DOMDataBroker broker = initVppDataBroker(globalContext, serializer); + broker = initVppDataBroker(globalContext, serializer); mountPointBuilder.addService(DOMDataBroker.class, broker); mountPointRegistration = mountPointBuilder.register(); @@ -245,11 +246,20 @@ public final class VppDataBrokerInitializationProvider implements Provider, Auto new LoggingFuturesCallBack("Initializing VPP config DataTree failed", LOG)); } + public Optional getBroker() { + return Optional.fromNullable(broker); + } + @Override public void close() throws Exception { if (mountPointRegistration != null) { mountPointRegistration.close(); } + + if (broker != null) { + broker = null; + } + // remove MD-SAL placeholder data for VPP mount point: final WriteTransaction rwTx = bindingBroker.newWriteOnlyTransaction(); // does not fail if data is not present: diff --git a/v3po/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/v3po/impl/rev141210/NetconfBindingBrokerModule.java b/v3po/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/v3po/impl/rev141210/NetconfBindingBrokerModule.java new file mode 100644 index 000000000..48d227d01 --- /dev/null +++ b/v3po/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/v3po/impl/rev141210/NetconfBindingBrokerModule.java @@ -0,0 +1,117 @@ +package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.impl.rev141210; + +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.common.api.routing.RouteChangeListener; +import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; +import org.opendaylight.controller.sal.binding.api.BindingAwareConsumer; +import org.opendaylight.controller.sal.binding.api.BindingAwareProvider; +import org.opendaylight.controller.sal.binding.api.BindingAwareService; +import org.opendaylight.controller.sal.binding.api.rpc.RpcContextIdentifier; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.binding.RpcService; +import org.osgi.framework.BundleContext; + +public class NetconfBindingBrokerModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.impl.rev141210.AbstractNetconfBindingBrokerModule { + public NetconfBindingBrokerModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { + super(identifier, dependencyResolver); + } + + public NetconfBindingBrokerModule(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.v3po.impl.rev141210.NetconfBindingBrokerModule 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() { + return new FakeBindingAwareBroker(getNetconfBindingBrokerDependency()); + } + + private static class FakeBindingAwareBroker implements BindingAwareBroker, AutoCloseable { + + private DataBroker netconfBindingBrokerDependency; + + public FakeBindingAwareBroker(final DataBroker netconfBindingBrokerDependency) { + + this.netconfBindingBrokerDependency = netconfBindingBrokerDependency; + } + + @Deprecated + @Override + public ConsumerContext registerConsumer(final BindingAwareConsumer bindingAwareConsumer, + final BundleContext bundleContext) { + throw new UnsupportedOperationException("Unsupported"); + } + + @Override + public ConsumerContext registerConsumer(final BindingAwareConsumer bindingAwareConsumer) { + final ConsumerContext consumerContext = new ConsumerContext() { + @Override + public T getSALService(final Class aClass) { + return aClass.equals(DataBroker.class) + ? (T) netconfBindingBrokerDependency + : null; + } + + @Override + public T getRpcService(final Class aClass) { + return null; + } + }; + bindingAwareConsumer.onSessionInitialized(consumerContext); + return consumerContext; + } + + @Override + public ProviderContext registerProvider(final BindingAwareProvider bindingAwareProvider, + final BundleContext bundleContext) { + throw new UnsupportedOperationException("Unsupported"); + } + + @Override + public ProviderContext registerProvider(final BindingAwareProvider bindingAwareProvider) { + final ProviderContext context = new ProviderContext() { + @Override + public >> ListenerRegistration registerRouteChangeListener( + final L l) { + throw new UnsupportedOperationException("Unsupported"); + } + + @Override + public T getRpcService(final Class aClass) { + throw new UnsupportedOperationException("Unsupported"); + } + + @Override + public RpcRegistration addRpcImplementation(final Class aClass, final T t) + throws IllegalStateException { + throw new UnsupportedOperationException("Unsupported"); + } + + @Override + public RoutedRpcRegistration addRoutedRpcImplementation( + final Class aClass, final T t) throws IllegalStateException { + throw new UnsupportedOperationException("Unsupported"); + } + + @Override + public T getSALService(final Class aClass) { + return aClass.equals(DataBroker.class) + ? (T) netconfBindingBrokerDependency + : null; } + }; + bindingAwareProvider.onSessionInitiated(context); + return context; + } + + @Override + public void close() throws Exception { + netconfBindingBrokerDependency = null; + } + } +} + diff --git a/v3po/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/v3po/impl/rev141210/NetconfBindingBrokerModuleFactory.java b/v3po/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/v3po/impl/rev141210/NetconfBindingBrokerModuleFactory.java new file mode 100644 index 000000000..b64b0b1e1 --- /dev/null +++ b/v3po/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/v3po/impl/rev141210/NetconfBindingBrokerModuleFactory.java @@ -0,0 +1,13 @@ +/* +* Generated file +* +* Generated from: yang module name: v3po-impl yang module local name: binding-broker-netconf +* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator +* Generated at: Wed Mar 23 10:45:48 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.v3po.impl.rev141210; +public class NetconfBindingBrokerModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.impl.rev141210.AbstractNetconfBindingBrokerModuleFactory { + +} diff --git a/v3po/impl/src/main/yang/v3po-impl.yang b/v3po/impl/src/main/yang/v3po-impl.yang index 2e113e566..12f9d6f13 100644 --- a/v3po/impl/src/main/yang/v3po-impl.yang +++ b/v3po/impl/src/main/yang/v3po-impl.yang @@ -17,6 +17,7 @@ module v3po-impl { identity v3po { base config:module-type; + config:provided-service dom:dom-broker-osgi-registry; config:java-name-prefix V3po; } @@ -42,4 +43,26 @@ module v3po-impl { } } } + + identity binding-broker-netconf { + base config:module-type; + config:provided-service md-sal-binding:binding-broker-osgi-registry; + config:java-name-prefix NetconfBindingBroker; + } + + augment "/config:modules/config:module/config:configuration" { + case binding-broker-netconf { + when "/config:modules/config:module/config:type = 'binding-broker-netconf'"; + + container netconf-binding-broker { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity md-sal-binding:binding-async-data-broker; + } + } + } + + } + } } -- cgit 1.2.3-korg