[NETCONF-385] Unable to find augmentation/Cannot apply modification to its children Created: 27/Mar/17  Updated: 15/Mar/19  Resolved: 07/Jun/17

Status: Resolved
Project: netconf
Component/s: netconf
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: Jan Srnicek Assignee: Marek Gradzki
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Attachments: File full_debug_log.log.tar.gz     File models.tar.gz    
External issue ID: 8085

 Description   

While putting following trought netconf

<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<capabilities>
<capability>urn:ietf:params:netconf:base:1.0</capability>
</capabilities>
</hello>
]]>]]>

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-2">
<edit-config>
<target>
<candidate/>
</target>
<default-operation>none</default-operation>
<config>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>GigabitEthernet0/8/0</name>
<pbb-rewrite xmlns="urn:opendaylight:params:xml:ns:yang:vpp-pbb" xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" a:operation="replace">
<source-address>aa:aa:aa:aa:aa:ab</source-address>
<destination-address>bb:bb:bb:bb:bb:bc</destination-address>
<b-vlan-tag-vlan-id>2223</b-vlan-tag-vlan-id>
<interface-operation>translate-2-1</interface-operation>
<i-tag-isid>12</i-tag-isid>
<outer-tag>16</outer-tag>
</pbb-rewrite>
</interface>
</interfaces>
</config>
</edit-config>
</rpc>
]]>]]>

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-2">
<ok/>
</rpc-reply>
]]>]]><rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="m-6">
<commit/>
</rpc>
]]>]]>

Following error is showed

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<rpc-reply message-id="m-6" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<rpc-error>
<error-type>application</error-type>
<error-tag>operation-failed</error-tag>
<error-severity>error</error-severity>
<error-message>Transaction commit failed on Failed to validate DataTreeModification 1 Cause: Node /(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces/interface/interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

]/AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

does not exist. Cannot apply modification to its children.</error-message>
</rpc-error>
</rpc-reply>
]]>]]>

Data create for this transaction

/(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces/interface/interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

]
/AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

/(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite
ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite,
value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)b-vlan-tag-vlan-id, value=2223, attributes={}},
ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)outer-tag, value=16, attributes={}},
ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)i-tag-isid, value=12, attributes={}},
ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)destination-address, value=bb:bb:bb:bb:bb:bc, attributes={}},
ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)source-address, value=aa:aa:aa:aa:aa:ab, attributes={}},
ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)interface-operation, value=translate-2-1, attributes={}}], attributes={}}

After merging data, this is attempted to be commited as result

NodeModification [identifier=(urn:ietf:params:xml:ns:netconf:base:1.0)data, modificationType=TOUCH, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces, modificationType=TOUCH, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, modificationType=MERGE, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

]=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

], modificationType=TOUCH, childModification={AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

=NodeModification [identifier=AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]}]}]}]}]
MutableDataTree [modification=NodeModification [identifier=(urn:ietf:params:xml:ns:netconf:base:1.0)data, modificationType=TOUCH, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces, modificationType=TOUCH, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, modificationType=MERGE, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

]=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

], modificationType=TOUCH, childModification={AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

=NodeModification [identifier=AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]}]}]}]}]]

NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces, modificationType=TOUCH, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, modificationType=MERGE, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

]=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

], modificationType=TOUCH, childModification={AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

=NodeModification [identifier=AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]}]}]}]
key =

{YangInstanceIdentifier$NodeIdentifier@10072}

"(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface"
value =

{ModifiedNode@10222}

"NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, modificationType=MERGE, childModification={(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

]=NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

], modificationType=TOUCH, childModification={AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

=NodeModification [identifier=AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:ya"

key =

{YangInstanceIdentifier$NodeIdentifierWithPredicates@10237}

"(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

]"
value =

{ModifiedNode@10238}

"NodeModification [identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

], modificationType=TOUCH, childModification={AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

=NodeModification [identifier=AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]}]"

key =

{YangInstanceIdentifier$AugmentationIdentifier@10250}

"AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

"
value =

{ModifiedNode@10251}

"NodeModification [identifier=AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

, modificationType=TOUCH, childModification={(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite=NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]}]"

key =

{YangInstanceIdentifier$NodeIdentifier@10135} "(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite"
value = {ModifiedNode@10264} "NodeModification [identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}]"

identifier = {YangInstanceIdentifier$NodeIdentifier@10135}

"(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite"
value =

{ImmutableContainerNodeBuilder$ImmutableContainerNode@10129}

"ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)b-vlan-tag-vlan-id, value=2223, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)outer-tag, value=16, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)i-tag-isid, value=12, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)destination-address, value=bb:bb:bb:bb:bb:bc, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)source-address, value=aa:aa:aa:aa:aa:ab, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)interface-operation, value=translate-2-1, attri"

children =

{ImmutableOffsetMap$Unordered@10133}

size = 6
0 =

{AbstractMap$SimpleImmutableEntry@10279}

"(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)b-vlan-tag-vlan-id" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)b-vlan-tag-vlan-id, value=2223, attributes={}}"
1 =

{AbstractMap$SimpleImmutableEntry@10280}

"(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)outer-tag" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)outer-tag, value=16, attributes={}}"
2 =

{AbstractMap$SimpleImmutableEntry@10281}

"(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)i-tag-isid" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)i-tag-isid, value=12, attributes={}}"
3 =

{AbstractMap$SimpleImmutableEntry@10282}

"(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)destination-address" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)destination-address, value=bb:bb:bb:bb:bb:bc, attributes={}}"
4 =

{AbstractMap$SimpleImmutableEntry@10283}

"(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)source-address" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)source-address, value=aa:aa:aa:aa:aa:ab, attributes={}}"
5 =

{AbstractMap$SimpleImmutableEntry@10284}

"(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)interface-operation" -> "ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)interface-operation, value=translate-2-1, attributes={}}"

As can be seen, all data from augmentaions and augmentation itself is present ,so the error does not make sense



 Comments   
Comment by Jan Srnicek [ 27/Mar/17 ]

Attachment models.tar.gz has been added with description: interfaces model

Comment by Robert Varga [ 27/Mar/17 ]

We need logs from this one, especially the transaction timing on the data store, as the evidence points towards concurrent removal of the augmentation.

Comment by Jan Srnicek [ 28/Mar/17 ]

Full debug logs(everything under org.opendaylight.* and io.fd.*)

Btw ,not shure about that concurent modification, the only one client was connected (netconf ssh)

Comment by Jan Srnicek [ 28/Mar/17 ]

Attachment full_debug_log.log.tar.gz has been added with description: Debug logs

Comment by Robert Varga [ 28/Mar/17 ]

Based on the logs, restored state does not include the augmentation node, after which following two operations are executed:

2017-03-28 07:29:20.593 CEST [netconf-netty-1] DEBUG i.f.h.data.impl.WriteTransaction - WriteTransaction.merge() store=CONFIGURATION, path=/(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces/interface, data=ImmutableMapNode

{nodeIdentifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, value=[]}

2017-03-28 07:29:20.593 CEST [netconf-netty-1] DEBUG i.f.h.data.impl.WriteTransaction - WriteTransaction.put() store=CONFIGURATION, path=/(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces/interface/interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

]/AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

/(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, data=ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)b-vlan-tag-vlan-id, value=2223, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)outer-tag, value=16, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)i-tag-isid, value=12, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)destination-address, value=bb:bb:bb:bb:bb:bc, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)source-address, value=aa:aa:aa:aa:aa:ab, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)interface-operation, value=translate-2-1, attributes={}}], attributes={}}

This results in following modification layout:

identifier=(urn:ietf:params:xml:ns:netconf:base:1.0)data, modificationType=TOUCH, childModification={
identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interfaces, modificationType=TOUCH, childModification={
identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface, modificationType=MERGE, childModification={
identifier=(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)interface[

{(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2014-05-08)name=GigabitEthernet0/8/0}

], modificationType=TOUCH, childModification={
identifier=AugmentationIdentifier

{childNames=[(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite]}

, modificationType=TOUCH, childModification={
identifier=(urn:opendaylight:params:xml:ns:yang:vpp-pbb?revision=2016-12-14)pbb-rewrite, modificationType=WRITE, childModification={}

i.e. pbb-rewrite leaf is overwritten and the augmentation is assumed to exist – which is consistent with the operations executed and it is clear that DataTree is performing as expected: the modification fails because the augmentation does not exist (which is exactly what the exception reports).

This needs to be fixed in honeycomb, for example by issuing a merge on the augmentation before the put operation.

Comment by Jan Srnicek [ 18/Apr/17 ]

If i remember, RESTCONF is issuing these kinds of MERGE operations, is there a particular reason why NETCONF is not doing the same thing ? Honeycomb is doing nothing else than delegating operations on underlaying datatree, so i dont think it should be it's responsibility to invoke something that was not directly requested. Also i think it would would introduce quite a lot of overhead if we have to detect if this kind of MERGE is needed.

Comment by Marek Gradzki [ 06/Jun/17 ]

In my opinion the issue should be fixed in netconf
(missing ListSchemaNodes are already handled).

Here is example of failing test:

https://git.opendaylight.org/gerrit/#/c/58266/3/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/netconf/mdsal/connector/ops/NetconfMDSalMappingTest.java

And here is fix for boron:
https://git.opendaylight.org/gerrit/#/c/58266

Comment by Marek Gradzki [ 06/Jun/17 ]

master: https://git.opendaylight.org/gerrit/#/c/58313/
Carbon: https://git.opendaylight.org/gerrit/#/c/58312/

Generated at Wed Feb 07 20:14:53 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.