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 。

相關問題