Как уточнить диапазон листьев в модели YANG?

У меня есть группировка вроде -

  grouping threshold-value-grouping {
    container threshold-value {
      description "Threshold value";
      leaf upper-limit-val {
        description
          "Upper limit";
        type uint32 {
          range "1..60000";
        }
      }
      leaf lower-limit-val {
        description
          "Lower limit";
        type uint32 {
          range "1..60000";
        }
      }
    }
  }

И я хочу повторно использовать эту группировку в нескольких местах. Но при использовании в разных местах диапазон листьев различается.

Итак, мне интересно, как я могу использовать оператор refine для достижения? Или есть лучший способ решить эту проблему?


person Darshan L    schedule 21.03.2019    source источник


Ответы (1)


В разделе 7.13.2 RFC 7950 явно указаны все возможные уточнения, и range не входит в их число. Как и type, что также можно увидеть в грамматике ABNF (раздел 14):

refine-stmt         = refine-keyword sep refine-arg-str optsep
                       "{" stmtsep
                           ;; these stmts can appear in any order
                           *if-feature-stmt
                           *must-stmt
                           [presence-stmt]
                           *default-stmt
                           [config-stmt]
                           [mandatory-stmt]
                           [min-elements-stmt]
                           [max-elements-stmt]
                           [description-stmt]
                           [reference-stmt]
                         "}" stmtsep

Но что вы можете сделать, так это добавить здесь ограничение must, что-то вроде

uses threshold-value-grouping {
    refine threshold-value/upper-limit-val {
        must '(. >= 10 and . <= 100)' {
            error-message "Here you can only use values between 10 and 100";
        }
    }
}
person Roman Khimov    schedule 03.04.2019