You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为CLI命令eid-record-provider编写YANG Must验证语句

验证eid-record-provider instance-id的YANG Must语句实现

嘿,结合你给出的CLI配置场景,我来帮你写出满足需求的YANG Must语句——核心就是确保eid-record-provider指定的instance-id,已经在某个site节点下的eid-prefix里配置过。

首先先把你的CLI配置对应到合理的YANG结构(基于CLI命令推断):

container router {
  container config {
    // 对应site site123、site345这类配置节点
    list site {
      key "name";
      leaf name { type string; }
      // 每个site下的eid-prefix列表
      list eid-prefix {
        leaf instance-id { type uint32; }
        leaf prefix { type inet:ip-prefix; }
        leaf accept-more-specifics { type empty; }
      }
    }
    // 对应extranet ext1这类配置节点
    list extranet {
      key "name";
      leaf name { type string; }
      // 我们要验证的eid-record-provider节点
      leaf eid-record-provider {
        type uint32;
        // 这里就是要加must语句的地方
      }
    }
  }
}

接下来就是关键的Must语句实现,直接加在eid-record-provider节点里:

leaf eid-record-provider {
  type uint32;
  must "boolean(../site/eid-prefix[instance-id = current()])" {
    error-message "指定的instance-id必须已在某个site的eid-prefix中配置!";
    error-app-tag "invalid-unconfigured-instance-id";
  }
}

简单解释下这个语句的逻辑:

  • ../site/eid-prefix[instance-id = current()]:从当前的extranet节点往上跳一层到config,然后遍历所有site下的eid-prefix条目,找和当前eid-record-provider值相同的instance-id。
  • boolean(...):把XPath的查询结果转成布尔值——只要有匹配的条目就返回true,验证通过;如果完全找不到匹配的,就返回false,触发错误。
  • 错误信息和标签可以根据你的需求自定义,这样用户在CLI里输入非法instance-id时,能得到清晰的提示。

举个例子:你给出的CLI里,extranet ext1用了instance-id 103,这个id确实在site site123的eid-prefix里存在,所以配置能通过验证;但如果你写成instance-id 105(这个id没在任何site的eid-prefix里配置),就会直接抛出我们定义的错误提示。

内容的提问来源于stack exchange,提问作者user1060517

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:32:01