[MDSAL-518] leafref path outside of augmented scope can not be resolved Created: 28/Feb/20 Updated: 11/Dec/23 Resolved: 11/Dec/23 |
|
| Status: | Resolved |
| Project: | mdsal |
| Component/s: | Binding codegen |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Medium |
| Reporter: | Miroslav Kovac | Assignee: | Robert Varga |
| Resolution: | Won't Do | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||
| Description |
|
The following two models: module a {
yang-version 1.1;
namespace "a";
prefix a;
container a-cont {
leaf a-leaf-cont {
type string;
}
container a-cont2 {
leaf a-leaf-cont2 {
type string;
}
}
}
}
module b {
yang-version 1.1;
namespace "b";
prefix b;
import a {
prefix a;
}
augment "/a:a-cont/a:a-cont2" {
description
"An augmentation of a leafref typed leaf with path to outside
of the augmented scope and back to the module a";
container b-cont {
leaf b-aug-leaf {
type leafref {
path "../../../a-leaf-cont";
}
}
}
}
}
result in AbstractTypeProvider.provideTypeForLeafref() failing
[ERROR] yang-to-sources: Unable to generate sources with org.opendaylight.mdsal.binding.maven.api.gen.plugin.CodeGeneratorImpl generator
java.lang.IllegalArgumentException: Failed to find leafref target: ../../../a-leaf-cont in module a (QNameModule{ns=b})
at com.google.common.base.Preconditions.checkArgument (Preconditions.java:459)
at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.provideTypeForLeafref (AbstractTypeProvider.java:550)
at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForLeafrefOrIdentityRef (AbstractTypeProvider.java:299)
at org.opendaylight.mdsal.binding.yang.types.AbstractTypeProvider.javaTypeForSchemaDefinitionType (AbstractTypeProvider.java:193)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveLeafSchemaNodeAsMethod (AbstractTypeGenerator.java:1350)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToBuilderAsMethod (AbstractTypeGenerator.java:1051)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.resolveDataSchemaNodes (AbstractTypeGenerator.java:1004)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.containerToGenType (AbstractTypeGenerator.java:302)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addSchemaNodeToBuilderAsMethod (AbstractTypeGenerator.java:1055)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.augSchemaNodeToMethods (AbstractTypeGenerator.java:1032)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addRawAugmentGenTypeDefinition (AbstractTypeGenerator.java:936)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.addRawAugmentGenTypeDefinition (AbstractTypeGenerator.java:950)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.augmentationToGenTypes (AbstractTypeGenerator.java:801)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.allAugmentsToGenTypes (AbstractTypeGenerator.java:375)
at java.util.ArrayList.forEach (ArrayList.java:1257)
at org.opendaylight.mdsal.binding.generator.impl.AbstractTypeGenerator.<init> (AbstractTypeGenerator.java:203)
at org.opendaylight.mdsal.binding.generator.impl.CodegenTypeGenerator.<init> (CodegenTypeGenerator.java:32)
at org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl.generateTypes (BindingGeneratorImpl.java:64)
at org.opendaylight.mdsal.binding.maven.api.gen.plugin.CodeGeneratorImpl.generateSources (CodeGeneratorImpl.java:70)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSourcesWithOneGenerator (YangToSourcesProcessor.java:383)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.generateSources (YangToSourcesProcessor.java:332)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesProcessor.conditionalExecute (YangToSourcesProcessor.java:159)
at org.opendaylight.yangtools.yang2sources.plugin.YangToSourcesMojo.execute (YangToSourcesMojo.java:127)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
|
| Comments |
| Comment by Robert Varga [ 28/Feb/20 ] |
|
Hmm, is that actually a correct YANG model?
leaf b-aug-leaf {
type leafref {
path "../../../a-leaf-cont";
}
}
should really be: leaf b-aug-leaf {
type leafref {
path "../../../a:a-leaf-cont";
}
}
i.e. the way it is written it points to b:a-leaf-cont, which obviously does not exist |
| Comment by Robert Varga [ 11/Dec/23 ] |
|
This is actually a bug in the model. It really points to '../../../b:a-leaf-cont', which does not exist. |