【问题标题】:yang path expressions to refer to data nodes and schema nodes etcyang 路径表达式来引用数据节点和模式节点等
【发布时间】:2017-01-26 09:33:23
【问题描述】:

考虑以下 yang 模块

module mod {
    yang-version 1;
    namespace "http://example.com/mod";
    prefix m;
    revision "2016-09-09" {
       description "Initial revision.";
    }
    container foo {
        description 'container foo';
        leaf l {
            type string;
        }
    }
}

到达叶子 l 时哪个路径表达式是正确的?

/mod:foo/l
/m:foo/l
/foo/l

如果我的应用程序中有同一个模块的 2 个版本处于活动状态,客户如何表达他对哪个版本节点感兴趣?

还有,是否有路径表达式可用于引用叶 l 的“描述”?

【问题讨论】:

  • 您没有指定要引用 l 的上下文。叶引用路径? XPath 表达式(必须,何时)? NETCONF get/get-config 中的 XPath 表达式? RESTCONF 查询?
  • I have 2 revisions of the same module active in my application。服务器不能实现一个模块的多个版本,检查RFC。请注意,在 RFC6020 中,您不会发现明确提及这一点,但意图是相同的。
  • 没有办法直接引用任何节点的描述,因为不需要这样的东西。你能更详细地解释一下你的用例吗?
  • 1.我正在寻找的路径表达式是 GET 中的目标 url,例如。这三个表达式哪个是正确的?
  • 我的“描述”用例是这样的。客户端向服务器提交一个 yang 模块。客户希望确保服务器正确地看到结构。客户说,“给我看那个叶子的描述”,或者,“叶子的默认值是什么”等等。我想,它应该只是一个常规的 xpath 表达式 w.r.t yin 文件。服务器只需要以它需要的任何方式处理表达式。

标签: ietf-netmod-yang ietf-restconf


【解决方案1】:

到达叶子 l 时哪个路径表达式是正确的?

在 RESTCONF GET 的上下文中,使用draft-ietf-netconf-restconf-16, Section 3.5.3, Encoding Data Resource Identifiers in the Request URI 中描述的方案。

一个 RESTCONF 数据资源标识符是从左到右编码的, 从顶层数据节点开始,根据“api-path” 第 3.5.3.1 节中的规则。每个祖先的节点名称 目标资源节点按顺序编码,以节点名结尾 为目标资源。如果路径中的节点定义在另一个 模块而不是它的父节点,或者它的父节点是数据存储,那么 模块名称后跟冒号(“:”)必须添加到 资源标识符中的节点名称。请参阅第 3.5.3.1 节了解 详情。

因此正确的 URI 应该是这样的:

/restconf/data/mod:foo/l

如果我的应用程序中有同一个模块的 2 个版本处于活动状态,客户如何表达他对哪个版本节点感兴趣?

您不能表达这样的要求。这就是为什么只允许服务器实现 YANG 模块的单个修订的原因之一。在 YANG 1.1 中这是 explicitly 禁止的,而在 YANG 1.0 中,这只是暗示。请注意,各个已实现的 YANG 模块可能引用(导入)同一模块的多个修订版,但其中只有一个可能被宣传为已实现(可能是最新的)。由于模块更新规则非常严格,定义不会在模块的较新版本中丢失,因此客户端是安全的。

是否有路径表达式可用于引用叶 l 的“描述”?我的“描述”用例是这样的。客户端向服务器提交一个 yang 模块。客户希望确保服务器正确地看到结构。客户说,“给我看那片叶子的描述”,或者,“叶子的默认值是什么”等等。

您似乎误解了 YANG 模型的角色。客户端不管理服务器的模型,它可能只管理该模型中描述的数据!这样的事情在服务器及其维护者的域中。

查询 YANG 模型(我知道)而不是由它建模的数据的唯一标准方法是从服务器(get-schema)获取 YANG/YIN 文件,然后自己解析它。

作为旁注。实现您的模块并从服务器接收有效响应的客户端本质上知道哪个描述映射到哪个 XML 元素/JSON 对象,因为它已经在验证期间完成了实例文档和模型(模式)之间的“映射”阶段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2019-04-10
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多