我想从leafref
创建grouping
到另一个module a
{
namespace "http://something.com/a";
prefix a;
import b
{
prefix b;
}
description "a configuration";
container a
{
uses b:group1;
uses b:group2;
}
}
,是否可能?
我有以下文件:
a.yang :
a
因此,模块group1
有两个实例group2
& leafref
。
我希望group2
中的leaf
指向来自group1
的{{1}}。
b.yang :
module b
{
namespace "http://something.com/b";
prefix b;
description "b configurations";
grouping group1
{
container group1
{
leaf parameter-x
{
type uint8;
}
}
}
grouping group2
{
container group2
{
leaf ref-parameter-x
{
type leafref
{
path "????/parameter-x of group1";
}
}
}
}
}
答案 0 :(得分:0)
解决augment
。
我不知道grouping
是否可能。
答案 1 :(得分:0)
这在杨是不可能的,如果你想的话,有充分的理由。创建grouping
时,可以创建可重用的非命名空间数据节点的层次结构,只有在使用grouping
后才开始有意义。您可以在任何地方使用它们,甚至可能被导入模块的其他人使用(前提是分组在模块顶层定义)。在任何地方,我的意思是在YANG模块中的任何级别。这意味着您无法使用绝对路径或相对路径来识别分组中的叶子:
container top {
uses group1;
container foo {
uses group1;
}
}
已经有两条路径可以识别您的叶子(再次假定顶级):
/top/group1/parameter-x
/top/foo/group1/parameter-x
那么这些绝对表达式中的哪一个是在第二个grouping
中指定的正确表达式?如果答案是"任何一个",你就无法对此进行建模。如果你有一个特定的叶子,你可以这样做(使用typedef使我们明白我们正在谈论一个特定的叶子):
typedef my-special-leaf {
type leafref {
path "/top/foo/group1/parameter-x";
}
}
grouping group-2 {
container group-2 {
leaf special {
type my-special-leaf;
}
}
}
Leafrefs
用于可能实例化的leafs
,您知道这是事实(是模式树的一部分)。如果您只在leaf
内定义grouping
,则它尚未成为架构树的一部分。直到使用(任何地方,但在另一个grouping
内)。
一个好的可重用grouping
定义假定它的使用位置一无所知。