X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-config%2Fsrc%2Fmain%2Fyang%2Fopendaylight-binding-broker-impl.yang;fp=opendaylight%2Fmd-sal%2Fsal-binding-config%2Fsrc%2Fmain%2Fyang%2Fopendaylight-binding-broker-impl.yang;h=84cc5c7b99121e08e801b5af82777264712154eb;hp=0000000000000000000000000000000000000000;hb=2fb4d7e732175a31d32e67968c957f8bfd887196;hpb=8c3828c33459a75b18d463155295bd70c5e6fc04 diff --git a/opendaylight/md-sal/sal-binding-config/src/main/yang/opendaylight-binding-broker-impl.yang b/opendaylight/md-sal/sal-binding-config/src/main/yang/opendaylight-binding-broker-impl.yang new file mode 100644 index 0000000000..84cc5c7b99 --- /dev/null +++ b/opendaylight/md-sal/sal-binding-config/src/main/yang/opendaylight-binding-broker-impl.yang @@ -0,0 +1,271 @@ +module opendaylight-sal-binding-broker-impl { + yang-version 1; + namespace "urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl"; + prefix "binding-impl"; + + import config { prefix config; revision-date 2013-04-05; } + import opendaylight-md-sal-binding {prefix sal;} + import opendaylight-md-sal-dom {prefix dom;} + import opendaylight-md-sal-common {prefix common;} + + description + "Service definition for Binding Aware MD-SAL."; + + revision "2013-10-28" { + description + "Initial revision"; + } + + identity binding-dom-mapping-service { + base config:service-type; + config:java-class "org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec"; + } + + /* FIXME: move to opendaylight-md-sal-binding (cannot be there due to Class name confict with old implementation)*/ + identity binding-new-notification-service { + base config:service-type; + config:java-class "org.opendaylight.controller.md.sal.binding.api.NotificationService"; + } + + /* TODO: move to opendaylight-md-sal-binding (cannot be there due to Class name confict with old implementation)*/ + identity binding-new-notification-publish-service { + base config:service-type; + config:java-class "org.opendaylight.controller.md.sal.binding.api.NotificationPublishService"; + } + + identity binding-broker-impl { + base config:module-type; + config:provided-service sal:binding-broker-osgi-registry; + config:provided-service sal:binding-rpc-registry; + config:java-name-prefix BindingBrokerImpl; + } + + identity binding-data-compatible-broker { + base config:module-type; + config:provided-service sal:binding-data-broker; + config:provided-service sal:binding-data-consumer-broker; + config:java-name-prefix ForwardedCompatibleDataBrokerImpl; + } + + identity binding-forwarded-data-broker { + base config:module-type; + config:provided-service sal:binding-async-data-broker; + config:java-name-prefix BindingAsyncDataBrokerImpl; + } + + identity binding-rpc-broker { + base config:module-type; + config:provided-service sal:binding-rpc-registry; + config:java-name-prefix RpcBrokerImpl; + } + + identity binding-notification-broker { + base config:module-type; + config:provided-service sal:binding-notification-service; + config:provided-service sal:binding-notification-subscription-service; + config:java-name-prefix NotificationBrokerImpl; + } + + identity runtime-generated-mapping { + base config:module-type; + config:provided-service binding-dom-mapping-service; + config:provided-service sal:binding-codec-tree-factory; + config:provided-service sal:binding-normalized-node-serializer; + config:java-name-prefix RuntimeMapping; + } + + identity binding-notification-adapter { + base config:module-type; + config:provided-service binding-new-notification-service; + config:java-name-prefix BindingNotificationAdapter; + } + + identity binding-notification-publish-adapter { + base config:module-type; + config:provided-service binding-new-notification-publish-service; + config:java-name-prefix BindingNotificationPublishAdapter; + } + + grouping dom-forwarding-component { + container dom-async-broker { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity dom:dom-broker-osgi-registry; + } + } + } + + container binding-mapping-service { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity binding-dom-mapping-service; + } + } + } + } + + augment "/config:modules/config:module/config:configuration" { + case binding-broker-impl { + when "/config:modules/config:module/config:type = 'binding-broker-impl'"; + + /* + container rpc-registry { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity sal:binding-rpc-registry; + } + } + }*/ + container binding-broker-impl { + uses dom-forwarding-component; + + container data-broker { + uses config:service-ref { + refine type { + mandatory false; + config:required-identity sal:binding-data-broker; + } + } + } + + container notification-service { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity sal:binding-notification-service; + } + } + } + + container root-data-broker { + uses config:service-ref { + refine type { + mandatory false; + config:required-identity sal:binding-async-data-broker; + } + } + } + } + } + } + + augment "/config:modules/config:module/config:configuration" { + case binding-data-compatible-broker { + when "/config:modules/config:module/config:type = 'binding-data-compatible-broker'"; + + container binding-data-compatible-broker { + container data-broker { + uses config:service-ref { + refine type { + mandatory false; + config:required-identity sal:binding-async-data-broker; + } + } + } + } + } + } + + augment "/config:modules/config:module/config:configuration" { + case binding-forwarded-data-broker { + when "/config:modules/config:module/config:type = 'binding-forwarded-data-broker'"; + container binding-forwarded-data-broker { + container dom-async-broker { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity dom:dom-async-data-broker; + } + } + } + + container binding-mapping-service { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity binding-dom-mapping-service; + } + } + } + + container schema-service { + uses config:service-ref { + refine type { + mandatory true; + config:required-identity dom:schema-service; + } + } + } + } + } + } + + + augment "/config:modules/config:module/config:configuration" { + case runtime-generated-mapping { + when "/config:modules/config:module/config:type = 'runtime-generated-mapping'"; + leaf wait-for-schema { + default "false"; + type boolean; + } + } + } + + augment "/config:modules/config:module/config:state" { + case binding-rpc-broker { + when "/config:modules/config:module/config:type = 'binding-rpc-broker'"; + uses common:rpc-state; + } + } + + augment "/config:modules/config:module/config:configuration" { + case binding-notification-broker { + when "/config:modules/config:module/config:type = 'binding-notification-broker'"; + container notification-adapter { + uses config:service-ref { + refine type { + mandatory false; + config:required-identity binding-new-notification-service; + } + } + } + + container notification-publish-adapter { + uses config:service-ref { + refine type { + mandatory false; + config:required-identity binding-new-notification-publish-service; + } + } + } + } + } + + augment "/config:modules/config:module/config:state" { + case binding-notification-broker { + when "/config:modules/config:module/config:type = 'binding-notification-broker'"; + uses common:notification-state; + } + } + + augment "/config:modules/config:module/config:configuration" { + case binding-notification-adapter { + when "/config:modules/config:module/config:type = 'binding-notification-adapter'"; + container binding-notification-adapter { + uses dom-forwarding-component; + } + } + } + + augment "/config:modules/config:module/config:configuration" { + case binding-notification-publish-adapter { + when "/config:modules/config:module/config:type = 'binding-notification-publish-adapter'"; + container binding-notification-publish-adapter { + uses dom-forwarding-component; + } + } + } +}