Yang:强制用户从节点所指的列表中输入

Posted

技术标签:

【中文标题】Yang:强制用户从节点所指的列表中输入【英文标题】:Yang: Force user to input from the list to which the node is referring to 【发布时间】:2021-09-21 01:45:28 【问题描述】:

我是杨的新手。以下是我的 yang 配置。

 container ntp 
 tailf:info "NTP Configuration";
 tailf:cli-oper-info "Display NTP information";
 tailf:cli-incomplete-show-path;

 //ntp server config
 leaf-list server 
  tailf:info "NTP servers";
  ordered-by user;
  tailf:cli-flat-list-syntax 
    tailf:cli-replace-all;
  
  type gw-types:ipv4-host;
  max-elements 4;


 container auth 
   tailf:info "Configure NTP authentication keys";
   list server 
     tailf:info "Configured ip addresses";
     tailf:cli-suppress-mode;
     tailf:cli-sequence-commands;
     tailf:cli-incomplete-command;
     tailf:cli-compact-syntax;

     key "serverip";

     leaf serverip 
       tailf:info "ip address";
       type leafref 
       path "/gw-system:ntp/server";
       
     
     leaf key 
       tailf:info "Authentication key ID for this server";
       type uint32 
       range "1..65535";
       
     
     choice authtype 
      tailf:cli-incomplete-command;
      leaf sha256 
        tailf:info "Value of the sha256 key";
        type tailf:aes-cfb-128-encrypted-string 
        tailf:info "Cleartext or AES encrypted key";
     
    
   
  
 

我想达到以下两个要求。有人可以帮我吗

    我在节点serverip 中使用了类型leafref,以便用户可以输入leaf-list server 中存在的IP 地址。当我测试它时,我能够输入一些随机的 IP 地址,这在我的leaf serverip 所指的leaf-list server 中也不存在。当我提交时,它会给出错误Illegal reference,但我希望如果用户给出了列表中不存在的随机 IP,则不应允许该用户完成命令。当他输入命令而不是在提交时显示错误时,有什么方法可以在运行时限制他。

    leaf serverip指的是leaf-list server。我希望如果用户尝试删除目标节点,即server,那么应该首先自动删除它的所有依赖项。就像首先应该删除所有依赖项,然后删除主节点。 或者 它应该给用户一个错误,在删除目标节点之前先删除依赖节点。即在删除leaf-list server 用户之前,应先要求删除节点serverip。我怎样才能实现它们中的任何一个?

【问题讨论】:

【参考方案1】:

根据我对问题 1 的理解,您想限制 "leafref"。但根据 RFC 6020。

“不能限制叶子引用。” - 参考RFC Section 9.9.1

       leaf serverip 
          tailf:info "ip address";
             type leafref 
                 path "/gw-system:ntp/server";
             
       

在这一页中,所有服务器 IP 都将可用,并且通过选项卡我们可以获得相同的 IP。如果仍然想在这里应用一些逻辑,那么您可以尝试:

选择或 when 语句在这里应用一些逻辑。

对于第二个问题,您可以尝试将所有必需的叶子作为键。它应该可以工作。

【讨论】:

以上是关于Yang:强制用户从节点所指的列表中输入的主要内容,如果未能解决你的问题,请参考以下文章

强制java以用户输入作为消息进行编译错误

使用 js 或 jQuery 强制空格从 HTML 输入字段转换为 %20 [重复]

如何将用户输入从节点服务器传递到外部 api 调用?

R:优化错误:“列表”对象不能被强制输入“双”

从 SwiftUI 列表中的每个元素获取用户输入

是否可以强制网站输入为英文?