2017-03-24 8 views
1

다른리스트 내부의리스트를 가리키는 leafref가있는 양 모델이 있습니다. 이 같은 기본적으로 뭔가 :여분의 리프없이 yang 리프ref 키 식별자를 제한합니다.

list some-names 
{ 
    key "name"; 
    leaf name 
    { 
     type string; 
    } 

    list some-other-names 
    { 
     key "name"; 
     leaf name 
     { 
      type string; 
     } 
    } 
} 

나는 a를 some-other-names 목록 leafref하지만 상위 이름을 가진 사람 푸하는 equals와 외부에서 지적하고 싶어요. 불행히도 리프 레퍼런스에는 제한을 위해 current()이 있어야합니다. 그래서 현재 솔루션은 다음과 같지만 구성을 위해 이 모두 필요없는 리프가 추가로 필요합니다.

leaf foo 
{ 
    type string; 
    deafault "foo"; 
} 
leaf some-leaf-ref 
{ 
    type leafref 
    { 
     path "/some-names[name = current()/../foo]/some-other-names/name"; 
    } 
} 

이 특정 값으로 some-names의 이름을 제한하기위한 추가 잎 필요하지 않습니다이보다 간단한 방법이 있나요?

은 BTW이 이미 시도했지만이 아니 올바른 경로 인수 :

leaf some-leaf-ref 
{ 
    type leafref 
    { 
     path "/some-names[name = 'foo']/some-other-names"; 
    } 
} 

답변

0
의 라인을 따라

아마 뭔가 :

leaf some-leafref { 
    must "/some-names[name = 'foo']/some-other-names/name = ."; 
    type leafref { 
     path "/some-names/some-other-names/name"; 
    } 
    } 
그래서

path 발현에 어떠한 조건, 아직와 추가 must 제한 - 두 표현식은 본질적으로 함께 AND 처리됩니다. YANG 스펙은 경로 표현식이 두 개 이상의 노드를 포함하는 노드 세트로 평가 될 수 있으며, 술어가 키당 필수임을 나타내지는 않는다는 것을 언급합니다 (instance-identifiers과 달리). 적어도 나에게 해커처럼 보이거나 추악한 것 같습니다.

아마도 당신이 정말로 원하는 것은 경우에만 ../name = 'foo'이 유효 만들 수있는 when을 가지고 당신의 외부 list (some-names)에 leafref 잎 아이입니다.

list some-names { 
    key "name"; 
    leaf name { 
     type string; 
    } 

    list some-other-names { 
     key "name"; 
     leaf name { 
     type my-type; 
     } 
    } 

    leaf some-leafref { 
     when "../name = 'foo'"; 
     type leafref { 
     path "../some-other-names/name"; 
     } 
    } 
    }