zoukankan      html  css  js  c++  java
  • yang文件语法格式

    前言

    NETCONF(Network Configuration Protocol),该协议的配置功能非常强大,同时兼顾监控和故障管理,安全验证和访问控制,得到业界的一致认可,被广泛用来配置网络

    NETCONF协议分为传输层、RPC层、操作层和内容层。其中,内容层是唯一没有标准化的层,于是一种新的建模语言YANG产生了,它的目标是对NETCONF数据模型、操作进行建模,覆盖NETCONF协议的操作层和内容层

    以下详细介绍yang文件的主要元素与语法格式

    一、Modules与Submodules

      一个module包含三种类型的声明  

    • module-header statement(模块头声明) —— 描述了该module,给出了module相关的信息。
    • revision statement(版本声明)—— 描述了该module的历史信息。
    • definition statement(定义声明) —— 定义了数据模型的内容部分。

    二、yang数据建模的节点类型

    2.1  leaf nodes 

      一个leaf nodes包含了像integer或string这样的简单数据,并且没有子节点,如:

      leaf host-name{

        type string;

        description "hostname";

      }

    2.2  leaf-list nodes

      一系列的leaf nodes,每个leaf都有特定类型的值

    2.3  container node

      将相关的节点归总到一个subtree就是container,只能包含节点,没有值。一个container可能会包含任何类型的任何数量的子节点(包括leafs,lists,leaf-lists以及containers)。  

      yang表示:

    container system {
         container login {
             leaf message {
                 type string;
                 description
                     "Message given at start of login session";
             }
         }
     }

    2.4  list nodes  

      定义了一系列的列表项,通过名为key的leaf值唯一确定,可以包含任意类型、任意数目的子节点(包括leafs,lists,containers)

    通过以上四种类型节点的组合,即可定义module

    三、  state node  

        节点带有"config false"标签时,他的子结构就打上了state data的标签,不可配置,能通过netconf操作获取

    四、  内嵌类型

       +---------------------+-------------------------------------+
       | Name                | Description                         |
       +---------------------+-------------------------------------+
       | binary              | Any binary data                     |
       | bits                | A set of bits or flags              |
       | boolean             | "true" or "false"                   |
       | decimal64           | 64-bit signed decimal number        |
       | empty               | A leaf that does not have any value |
       | enumeration         | Enumerated strings                  |
       | identityref         | A reference to an abstract identity |
       | instance-identifier | References a data tree node         |
       | int8                | 8-bit signed integer                |
       | int16               | 16-bit signed integer               |
       | int32               | 32-bit signed integer               |
       | int64               | 64-bit signed integer               |
       | leafref             | A reference to a leaf instance      |
       | string              | Human-readable string               |
       | uint8               | 8-bit unsigned integer              |
       | uint16              | 16-bit unsigned integer             |
       | uint32              | 32-bit unsigned integer             |
       | uint64              | 64-bit unsigned integer             |
       | union               | Choice of member types              |
       +---------------------+-------------------------------------+

    五、
      typedef     定义衍生类型

      grouping    可重用节点组

      refine     重定义  重写特定的声明覆盖原有grouping的定义

      choice case   申明分离不相容的节点,类似于java中的switch case

      augment     “augment”声明定义了在数据模型树形结构中,新的节点插入的位置。“when”声明了新节点生效的时间。  

      RPC(Remote Procedure Call)  yang文件可以定义声明RPC的输入输出参数

      notification   yang可以用来为netconf的notification做内容建模


    https://www.cnblogs.com/castielangel/p/10083277.html
  • 相关阅读:
    微服务划分的姿势
    微服务的时间和成本去哪儿了
    假如你是架构师,你要做些什么
    说透代码评审
    从哲学层面浅谈计算机学习方法论
    分布式事务:两阶段提交与三阶段提交
    敏捷史话(四):敏捷是人的天性 —— Arie van Bennekum
    敏捷史话(三):笃定前行的勇者——Ken Schwaber
    敏捷史话(二):Scrum社区的悲剧性损失——Mike Beedle
    敏捷史话(一):用一半的时间做两倍的事——Scrum之父Jeff Sutherland
  • 原文地址:https://www.cnblogs.com/castielangel/p/10096680.html
Copyright © 2011-2022 走看看