leafref内部分组到分组

时间:2014-12-04 19:54:00

标签: schema modeling ietf-netmod-yang

我想从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";
                }
            }
        }
    }
}

2 个答案:

答案 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定义假定它的使用位置一无所知。