[MDSAL-528] Failed to find leafref target using specific combination of leafref and grouping Created: 28/Feb/20  Updated: 06/Mar/20  Resolved: 06/Mar/20

Status: Resolved
Project: mdsal
Component/s: None
Affects Version/s: None
Fix Version/s: 6.0.0, 5.0.10, 4.0.12

Type: Bug Priority: Medium
Reporter: Samuel Kontris Assignee: Robert Varga
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates
relates to MDSAL-426 Specialize relative leafref types dur... Resolved
relates to MDSAL-518 leafref path outside of augmented sco... Resolved

 Description   

Failed to find leafref target using specific combination of leafref and grouping, where grouping contains two leafrefs. One is pointing to the second and the second is pointing outside of grouping using relative paths.

For better understanding look at this gerrit change containing model and test for it - https://git.opendaylight.org/gerrit/c/mdsal/+/88124

If leafref-2 does not use relative path (but absolute) OR leafref-1 does not exists OR we grouping is not used, then everything seems working.

This is simplified case of this openconfig ACL model - https://github.com/openconfig/public/blob/master/release/models/acl/openconfig-acl.yang

Thrown error:

java.lang.IllegalArgumentException: Failed to find leafref target: ../../leaf-1 in module specific-grouping-leafref (QNameModule{ns=odl:test:leafref:grouping:nested, rev=2020-02-28})
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:459)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.provideTypeForLeafref(AbstractTypeProvider.java:553)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForLeafrefOrIdentityRef(AbstractTypeProvider.java:301)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:198)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:161)
	at org.opendaylight.mdsal.binding.generator.spi.TypeProvider.javaTypeForSchemaDefinitionType(TypeProvider.java:41)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.resolveTypeFromDataSchemaNode(AbstractTypeProvider.java:726)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.provideTypeForLeafref(AbstractTypeProvider.java:564)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForLeafrefOrIdentityRef(AbstractTypeProvider.java:301)
	at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType(AbstractTypeProvider.java:198)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveLeafSchemaNodeAsMethod(AbstractTypeGenerator.java:1441)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToBuilderAsMethod(AbstractTypeGenerator.java:1139)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveDataSchemaNodes(AbstractTypeGenerator.java:1092)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.containerToGenType(AbstractTypeGenerator.java:308)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToBuilderAsMethod(AbstractTypeGenerator.java:1143)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveDataSchemaNodes(AbstractTypeGenerator.java:1092)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.groupingsToGenTypes(AbstractTypeGenerator.java:762)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.moduleToGenTypes(AbstractTypeGenerator.java:240)
	at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.<init>(AbstractTypeGenerator.java:205)
	at org.opendaylight.mdsal.binding.generator.impl.CodegenTypeGenerator.<init>(CodegenTypeGenerator.java:33)
	at org.opendaylight.mdsal.binding.generator.impl.DefaultBindingGenerator.generateFor(DefaultBindingGenerator.java:76)
	at org.opendaylight.mdsal.binding.generator.impl.DefaultBindingGenerator.generateFor(DefaultBindingGenerator.java:43)


 Comments   
Comment by Robert Varga [ 06/Mar/20 ]

Okay, this actually looks like an MD-SAL issue, where we do not retain knowledge that we are in the grouping.

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