2016-09-18 56 views
0

考虑以下阳模块阳路径表达式来指代数据节点和模式的节点等

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

哪个路径表达式在到达叶升是正确的?

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

如果我在我的应用程序相同的模块活跃的两个版本,客户端如何表达,他是修订节点感兴趣?

并且,是否有可用于引用叶l的'描述'的路径表达式?

+0

您没有指定您希望参考'l'的上下文。一个leafref路径? XPath表达式(必须,何时)? NETCONF get/get-config中的XPath表达式? RESTCONF查询? – predi

+0

'我在应用程序中激活了相同模块的2个修订版。服务器不能实现一个模块的多个版本,请检查[RFC](https://tools.ietf.org/html/rfc7950#section-5.6.5)。请注意,在RFC6020中,您不会明确提到这一点,但意图是相同的。 – predi

+0

没有办法直接引用任何节点的描述,因为不需要这样的事情。你能更详细地解释你的用例吗? – predi

回答

1

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

在RESTCONF GET的情况下,使用draft-ietf-netconf-restconf-16, Section 3.5.3, Encoding Data Resource Identifiers in the Request URI中描述的方案。从左至右, 开始于顶级数据节点,根据“API-路径”章节3.5.3.1 规则

甲RESTCONF数据资源标识符进行编码。 目标资源节点的每个祖先的节点名称按照顺序进行编码,以目标资源的节点名称 结束。如果路径中的节点在其父节点的另一个 模块中定义,或者其父节点是数据存储区,则模块名称后跟一个冒号(“:”)必须前缀为 节点名称在资源中标识符。关于 的详细信息,请参见第3.5.3.1节。

因此正确的URI是这样的:

/restconf/data/mod:foo/l 

如果我在我的应用程序相同的模块活跃的两个版本,客户端如何才能表达其修订节点他有兴趣在?

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

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

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

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

作为一个侧面说明。实现模块并从服务器接收有效响应的客户端固有地知道哪些描述映射到哪个XML元素/ JSON对象,因为它在验证过程中已经在实例文档和模型(模式)之间进行了“映射”相。