2

我想找到一种更好的方式来生成XML RPC请求,并将其发送到具有NETCONF标记的设备。从YANG数据模型生成XML RPC NETCONF请求的标准方式是什么

我们知道请求应该是什么样子,所以我正在做的只是使用占位符对XML-RPC请求XML进行硬编码。那些占位符稍后可以用实际输入替换。

例如:

<rpc message-id=""> 
    <get-config> 
    <source> 
     <running/> 
    </source> 
    <filter type="subtree" base_path=""> 
     <wing-stats> 
     <device> 
      <lldp> 
      <dev_id/> 
      <local_port/> 
      <neighborId/> 
      <Neighbor_port_id/> 
      </lldp> 
      <mac>@device_mac</mac> 
     </device> 
     </wing-stats> 
    </filter> 
    </get-config> 
</rpc> 

在这里,在这个例子中,@device_mac将被替换,而发送请求。但有些我觉得我正在对请求XML进行硬编码。有没有更好的方法来生成请求XML?

Netconf数据将使用YANG/YIN文件建模。有没有办法可以使用这些文件来生成NETCONF请求部分?

回答

1

巴拉,

我说有两种方法可以做到这一点:你可以使用任何日期模型驱动工具包可用的,我知道,他们中的至少一个生成面向模型的API并隐藏详细的XML(DOM)操作。第二个方向是利用由pyang工具实现的RFC 6110中定义的YANG到DSDL映射。现在,后者要求您的工具可以使用DSDL,它基本上是Relax NGSchematron的组合。

希望这会有所帮助。

+0

我也会推荐使用pyang DSDL插件来创建Relax NG模式,然后以某种方式从它生成rpc消息。尽管这样的模式可用于验证现有的NETCONF内容,但从中产生内容可能需要一些努力才能实现。我知道我很难找到可以帮助我使用Java中的RNG工具的工具。该映射在RFC6110中定义。 – predi 2012-04-11 11:36:23

0

我想说这一切都取决于你的上下文。如果你的应用程序意味着支持这个特定的模型,并且只支持这个特定的模型,那么在这样一个小的用例中使用任何更复杂的,与模型无关的API可能是一个矫枉过正的举动。

另一方面,如果您的应用程序必须支持许多模型和rpcs,或者即使它需要支持在运行时添加的新模型,那么您肯定应该探索可应用于任何模型的解决方案,例如Carl 。

相关问题