netconfcentral logo

ietf-fabric-topology@2017-11-29



  module ietf-fabric-topology {

    yang-version 1.1;

    namespace
      "urn:ietf:params:xml:ns:yang:ietf-fabric-topology";

    prefix fabric;

    import ietf-network {
      prefix nw;
    }
    import ietf-network-topology {
      prefix nt;
    }
    import ietf-fabric-types {
      prefix fabrictype;
    }

    organization
      "IETF I2RS (Interface to the Routing System) Working Group";

    contact
      "WG Web:    <http://tools.ietf.org/wg/i2rs/ >
 WG List:   <mailto:i2rs@ietf.org>

 WG Chair:  Susan Hares
            <mailto:shares@ndzh.com>

 WG Chair:  Russ White
            <mailto:russ@riw.us>

 Editor:    Yan Zhuang
            <mailto:zhuangyan.zhuang@huawei.com>

 Editor:    Danian Shi
            <mailto:shidanian@huawei.com>";

    description
      "This module contains a collection of YANG definitions for Fabric.

    Copyright (c) 2016 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject
    to the license terms contained in, the Simplified BSD License
    set forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents(http://trustee.ietf.org/license-info).

    This version of this YANG module is part of
    draft-zhuang-i2rs-yang-dc-fabric-network-topology;
    see the RFC itself for full legal notices.";

    revision "2017-11-29" {
      description "fix comments";
      reference
        "draft-ietf-i2rs-yang-dc-fabric-network-topology-02";

    }

    revision "2017-11-21" {
      description "fix warnings.";
      reference
        "draft-ietf-i2rs-yang-dc-fabric-network-topology-01";

    }

    revision "2017-06-29" {
      description
        "update to NMDA compliant format";
      reference
        "draft-zhuang-i2rs-yang-dc-fabric-network-topology-04";

    }

    revision "2017-03-10" {
      description
        "remove the rpcs and add extra attributes";
      reference
        "draft-zhuang-i2rs-yang-dc-fabric-network-topology-03";

    }

    revision "2016-09-29" {
      description
        "Initial revision of fabric topology.";
      reference
        "draft-zhuang-i2rs-yang-dc-fabric-network-topology-02";

    }


    identity fabric-context {
      base 
      description
        "identity of fabric context";
    }

    typedef fabric-id {
      type nw:node-id;
      description
        "An identifier for a fabric in a topology.
        The identifier is generated by compose-fabric RPC.";
    }

    grouping fabric-network-type {
      description
        "Identify the topology type to be fabric.";
      container fabric-network {
        presence "indicates fabric Network";
        description
          "The presence of the container node indicates
          fabric Topology";
      }  // container fabric-network
    }  // grouping fabric-network-type

    grouping fabric-options {
      description "options for a fabric";
      leaf gateway-mode {
        type enumeration {
          enum "centralized" {
            value 0;
            description
              "centerilized gateway";
          }
          enum "distributed" {
            value 1;
            description
              "distributed gateway";
          }
        }
        default "distributed";
        description "gateway mode";
      }

      leaf traffic-behavior {
        type enumeration {
          enum "normal" {
            value 0;
            description "normal";
          }
          enum "policy-driven" {
            value 1;
            description "policy driven";
          }
        }
        default "normal";
        description
          "traffic behavior of the fabric";
      }

      leaf-list capability-supported {
        type fabrictype:service-capabilities;
        description
          "supported services of the fabric";
      }
    }  // grouping fabric-options

    grouping device-attributes {
      description "device attributes";
      leaf device-ref {
        type fabrictype:node-ref;
        description
          "the device it includes to";
      }

      leaf role {
        type fabrictype:device-role;
        default "LEAF";
        description "role of the node";
      }
    }  // grouping device-attributes

    grouping link-attributes {
      description "link attributes";
      leaf link-ref {
        type fabrictype:link-ref;
        description "the link it includes";
      }
    }  // grouping link-attributes

    grouping port-attributes {
      description "port attributes";
      leaf port-ref {
        type fabrictype:tp-ref;
        description "port reference";
      }

      leaf port-type {
        type identityref {
          base fabrictype:port-type;
        }
        description
          "port type: ethernet or serial or others";
      }

      leaf bandwidth {
        type identityref {
          base fabrictype:bandwidth;
        }
        description "bandwidth on the port";
      }
    }  // grouping port-attributes

    grouping fabric-attributes {
      description "attributes of a fabric";
      leaf fabric-id {
        type fabric-id;
        description "fabric id";
      }

      leaf name {
        type string;
        description "name of the fabric";
      }

      leaf type {
        type fabrictype:underlay-network-type;
        description
          "The type of physical network that implements
          this fabric.Examples are vlan, and trill.";
      }

      container vni-capacity {
        description
          "number of vnis the fabric has";
        leaf min {
          type int32;
          description "vni min capacity";
        }

        leaf max {
          type int32;
          description "vni max capacity";
        }
      }  // container vni-capacity

      leaf description {
        type string;
        description
          "description of the fabric";
      }

      container options {
        description "options of the fabric";
        uses fabric-options;
      }  // container options

      list device-nodes {
        key "device-ref";
        description
          "include device nodes in the fabric";
        uses device-attributes;
      }  // list device-nodes

      list device-links {
        key "link-ref";
        description
          "include device links within the fabric";
        uses link-attributes;
      }  // list device-links

      list device-ports {
        key "port-ref";
        description
          "include device ports within the fabric";
        uses port-attributes;
      }  // list device-ports
    }  // grouping fabric-attributes

    augment /nw:networks/nw:network/nw:network-types {
      description
        "Introduce new network type for Fabric-based logical topology";
      uses fabric-network-type;
    }

    augment /nw:networks/nw:network/nw:node {
      when
        "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" {
        description
          "Augmentation parameters apply only for networks
          with fabric topology";
      }
      description
        "Augmentation for fabric nodes created by faas.";
      container fabric-attributes {
        description
          "attributes for a fabric network";
        uses fabric-attributes;
      }  // container fabric-attributes
    }

    augment /nw:networks/nw:network/nw:node/nt:termination-point {
      when
        "/nw:networks/nw:network/nw:network-types/fabric:fabric-network" {
        description
          "Augmentation parameters apply only for networks
          with fabric topology";
      }
      description
        "Augmentation for port on fabric.";
      container fport-attributes {
        config false;
        description
          "attributes for fabric ports";
        uses fabrictype:fabric-port;
      }  // container fport-attributes
    }
  }  // module ietf-fabric-topology