Add YANG modules used by SDN-R apps
[ccsdk/apps.git] / sdnr / model / yang / ietf-yang-library@2016-04-09.yang
diff --git a/sdnr/model/yang/ietf-yang-library@2016-04-09.yang b/sdnr/model/yang/ietf-yang-library@2016-04-09.yang
new file mode 100644 (file)
index 0000000..31fc9ee
--- /dev/null
@@ -0,0 +1,263 @@
+module ietf-yang-library {
+    namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
+    prefix "yanglib";
+
+    import ietf-yang-types {
+      prefix yang;
+    }
+    import ietf-inet-types {
+      prefix inet;
+    }
+
+    organization
+      "IETF NETCONF (Network Configuration) Working Group";
+
+    contact
+      "WG Web:   <http://tools.ietf.org/wg/netconf/>
+       WG List:  <mailto:netconf@ietf.org>
+
+       WG Chair: Mehmet Ersue
+                 <mailto:mehmet.ersue@nsn.com>
+
+       WG Chair: Mahesh Jethanandani
+                 <mailto:mjethanandani@gmail.com>
+
+       Editor:   Andy Bierman
+                 <mailto:andy@yumaworks.com>
+
+       Editor:   Martin Bjorklund
+                 <mailto:mbj@tail-f.com>
+
+       Editor:   Kent Watsen
+                 <mailto:kwatsen@juniper.net>";
+
+    description
+      "This module contains monitoring information about the YANG
+       modules and submodules that are used within a YANG-based
+       server.
+
+       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 RFC XXXX; see
+       the RFC itself for full legal notices.";
+
+    // RFC Ed.: replace XXXX with actual RFC number and remove this
+    // note.
+
+    // RFC Ed.: remove this note
+    // Note: extracted from draft-ietf-netconf-yang-library-06.txt
+
+    // RFC Ed.: update the date below with the date of RFC publication
+    // and remove this note.
+    revision 2016-04-09 {
+      description
+        "Initial revision.";
+      reference
+        "RFC XXXX: YANG Module Library.";
+    }
+
+    /*
+     * Typedefs
+     */
+
+    // FIXME inline this union after https://bugs.opendaylight.org/show_bug.cgi?id=5826 is fixed
+    typedef optional-revision {
+      type union {
+        type revision-identifier;
+        type string { length 0; }
+      }
+      description
+        "The YANG module or submodule revision date.
+         A zero-length string is used if no revision statement
+         is present in the YANG module or submodule.";
+    }
+
+    typedef revision-identifier {
+      type string {
+        pattern '\d{4}-\d{2}-\d{2}';
+      }
+      description
+        "Represents a specific date in YYYY-MM-DD format.";
+    }
+
+    /*
+     * Groupings
+     */
+
+    grouping module-list {
+      description
+        "The module data structure is represented as a grouping
+         so it can be reused in configuration or another monitoring
+         data structure.";
+
+      grouping common-leafs {
+        description
+          "Common parameters for YANG modules and submodules.";
+
+        leaf name {
+          type yang:yang-identifier;
+          description
+            "The YANG module or submodule name.";
+        }
+        leaf revision {
+          type optional-revision;
+        }
+      }
+
+      grouping schema-leaf {
+        description
+          "Common schema leaf parameter for modules and submodules.";
+
+        leaf schema {
+          type inet:uri;
+          description
+            "Contains a URL that represents the YANG schema
+             resource for this module or submodule.
+
+             This leaf will only be present if there is a URL
+             available for retrieval of the schema for this entry.";
+        }
+      }
+
+      list module {
+        key "name revision";
+        description
+          "Each entry represents one revision of one module
+           currently supported by the server.";
+
+        uses common-leafs;
+        uses schema-leaf;
+
+        leaf namespace {
+          type inet:uri;
+          mandatory true;
+          description
+            "The XML namespace identifier for this module.";
+        }
+        leaf-list feature {
+          type yang:yang-identifier;
+          description
+            "List of YANG feature names from this module that are
+             supported by the server, regardless whether they are
+             defined in the module or any included submodule.";
+        }
+        list deviation {
+          key "name revision";
+          description
+            "List of YANG deviation module names and revisions
+             used by this server to modify the conformance of
+             the module associated with this entry.  Note that
+             the same module can be used for deviations for
+             multiple modules, so the same entry MAY appear
+             within multiple 'module' entries.
+
+             The deviation module MUST be present in the 'module'
+             list, with the same name and revision values.
+             The 'conformance-type' value will be 'implement' for
+             the deviation module.";
+          uses common-leafs;
+        }
+        leaf conformance-type {
+          type enumeration {
+            enum implement {
+              description
+                "Indicates that the server implements one or more
+                 protocol-accessible objects defined in the YANG module
+                 identified in this entry.  This includes deviation
+                 statements defined in the module.
+
+                 For YANG version 1.1 modules, there is at most one
+                 module entry with conformance type 'implement' for a
+                 particular module name, since YANG 1.1 requires that
+                 at most one revision of a module is implemented.
+
+                 For YANG version 1 modules, there SHOULD NOT be more
+                 than one module entry for a particular module name.";
+            }
+            enum import {
+              description
+                "Indicates that the server imports reusable definitions
+                 from the specified revision of the module, but does
+                 not implement any protocol accessible objects from
+                 this revision.
+
+                 Multiple module entries for the same module name MAY
+                 exist. This can occur if multiple modules import the
+                 same module, but specify different revision-dates in
+                 the import statements.";
+            }
+          }
+          mandatory true;
+          description
+            "Indicates the type of conformance the server is claiming
+             for the YANG module identified by this entry.";
+        }
+        container submodules {
+          description
+            "Contains information about all the submodules used
+             by the parent module entry";
+
+          list submodule {
+            key "name revision";
+            description
+              "Each entry represents one submodule within the
+               parent module.";
+            uses common-leafs;
+            uses schema-leaf;
+          }
+        }
+      }
+    }
+
+    /*
+     * Operational state data nodes
+     */
+
+    container modules-state {
+      config false;
+      description
+        "Contains YANG module monitoring information.";
+
+      leaf module-set-id {
+        type string;
+        mandatory true;
+        description
+          "Contains a server-specific identifier representing
+           the current set of modules and submodules.  The
+           server MUST change the value of this leaf if the
+           information represented by the 'module' list instances
+           has changed.";
+      }
+
+      uses module-list;
+    }
+
+    /*
+     * Notifications
+     */
+
+    notification yang-library-change {
+      description
+       "Generated when the set of modules and submodules supported
+        by the server has changed.";
+      leaf module-set-id {
+        type leafref {
+          path "/yanglib:modules-state/yanglib:module-set-id";
+        }
+        mandatory true;
+        description
+          "Contains the module-set-id value representing the
+           set of modules and submodules supported at the server at
+           the time the notification is generated.";
+      }
+    }
+
+}
\ No newline at end of file