2014-12-04 73 views
0

我想創建一個leafref從一個grouping到另一個,是否有可能?
我有以下文件:leafref內部分組到分組

a.yang

module a 
{ 
    namespace "http://something.com/a"; 
    prefix a; 

    import b 
    { 
     prefix b; 
    } 

    description "a configuration"; 

    container a 
    { 
     uses b:group1; 
     uses b:group2; 
    } 
} 

因此,模塊a有兩個實例,group1 & group2
我想要一個leafrefgroup2指向leafgroup1

b.yang

module b 
{ 
    namespace "http://something.com/b"; 
    prefix b; 

    description "b configurations"; 

    grouping group1 
    { 
     container group1 
     { 
      leaf parameter-x 
      { 
       type uint8; 
      } 
     } 
    } 

    grouping group2 
    { 
     container group2 
     { 
      leaf ref-parameter-x 
      { 
       type leafref 
       { 
        path "????/parameter-x of group1"; 
       } 
      } 
     } 
    } 
} 
+0

據我瞭解,楊通常不用於建模SNMP設備。相反,它是SMI。你能解釋「snmp」和「mib」標籤的存在嗎? – Jolta 2014-12-08 11:47:18

回答

0

解決了augment。 我不知道如果可能grouping

0

在YANG中這是不可能的,如果你仔細想一想,有充分的理由。創建grouping時,您將創建一個可重用的非名稱空間數據節點的層次結構,只有在使用grouping後纔開始有意義。你可以在任何地方使用它們,甚至可以被導入你模塊的其他人使用(假設分組是在模塊頂層定義的)。在任何地方,我的意思是在任何一個YANG模塊內。這意味着你不能用絕對的,也不相對路徑,從您的分組識別葉:

container top { 
    uses group1; 
    container foo { 
    uses group1; 
    } 
} 

已經有可能識別您的葉兩條路徑(再次假設頂層):

  • /top/group1/parameter-x
  • /top/foo/group1/parameter-x

所以這些絕對的表達式之一是正確的在你的第二個指定?如果答案是「其中之一」,則不能對此進行建模。然而,如果你心裏有一個特定的葉子,你可以這樣做(使用typedef,使之明顯,我們所談論的是比葉):

typedef my-special-leaf { 
    type leafref { 
    path "/top/foo/group1/parameter-x"; 
    } 
} 

grouping group-2 { 
    container group-2 { 
    leaf special { 
     type my-special-leaf; 
    } 
    } 
} 

Leafrefs用於leafs可能實例化和你知道這是一個事實(是架構樹的一部分)。如果您只在grouping中定義leaf,則它尚未成爲架構樹的一部分。直到使用(任何地方,但在另一個grouping)。

一個好的可重用的grouping定義不會假定它將被使用的位置。