2016-09-18 58 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對象,因爲它在驗證過程中已經在實例文檔和模型(模式)之間進行了「映射」相。