【问题标题】:How to refine a leaf's range in YANG model?如何在 YANG 模型中细化叶子的范围?
【发布时间】:2019-08-12 10:00:46
【问题描述】:

我有一个像 -

这样的分组
  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 语句来实现? 或者有没有更好的方法来解决这个问题?

【问题讨论】:

    标签: ietf-netmod-yang ietf-netconf


    【解决方案1】:

    RFC 7950 的第 7.13.2 节明确指定了所有可能的改进,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";
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2020-08-28
      • 2019-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多