0

我想创建一个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有两个实例,group1& group2
我想要一个leafreffromgroup2到一个leaffrom group1

b.阳

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";
                }
            }
        }
    }
}
4

2 回答 2

0

解决了augment。我不知道是否可以使用grouping.

于 2014-12-07T09:49:39.537 回答
0

这在 YANG 是不可能的,如果你仔细想想,这是有充分理由的。创建 时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内部 a grouping,它还没有成为模式树的一部分。直到使用(任何地方,但在另一个内部grouping)。

一个好的可重用grouping定义不假设它将被使用的位置。

于 2015-11-27T10:01:16.860 回答