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: WG List: WG Chair: Susan Hares WG Chair: Russ White Editor: Yan Zhuang Editor: Danian Shi "; 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 { 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 statements 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"; } } grouping fabric-options { description "options for a fabric"; leaf gateway-mode { type enumeration { enum centralized { description "centerilized gateway"; } enum distributed { description "distributed gateway"; } } default "distributed"; description "gateway mode"; } leaf traffic-behavior { type enumeration { enum normal { description "normal"; } enum policy-driven { 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 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 link-attributes { description "link attributes"; leaf link-ref { type fabrictype:link-ref; description "the link it includes"; } } 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 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"; } } leaf description { type string; description "description of the fabric"; } container options { description "options of the fabric"; uses fabric-options; } list device-nodes { key device-ref; description "include device nodes in the fabric"; uses device-attributes; } list device-links { key link-ref; description "include device links within the fabric"; uses link-attributes; } list device-ports { key port-ref; description "include device ports within the fabric"; uses port-attributes; } } // augment statements 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; } } 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; } } }