summaryrefslogtreecommitdiffstats
path: root/models/ietf-yang-library@2019-01-04.yang
diff options
context:
space:
mode:
Diffstat (limited to 'models/ietf-yang-library@2019-01-04.yang')
-rw-r--r--models/ietf-yang-library@2019-01-04.yang544
1 files changed, 544 insertions, 0 deletions
diff --git a/models/ietf-yang-library@2019-01-04.yang b/models/ietf-yang-library@2019-01-04.yang
new file mode 100644
index 0000000..debfae7
--- /dev/null
+++ b/models/ietf-yang-library@2019-01-04.yang
@@ -0,0 +1,544 @@
+ module ietf-yang-library {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
+ prefix yanglib;
+
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-inet-types {
+ prefix inet;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-datastores {
+ prefix ds;
+ reference
+ "RFC 8342: Network Management Datastore Architecture
+ (NMDA)";
+ }
+
+ organization
+ "IETF NETCONF (Network Configuration) Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/netconf/>
+ WG List: <mailto:netconf@ietf.org>
+
+ Author: Andy Bierman
+ <mailto:andy@yumaworks.com>
+
+ Author: Martin Bjorklund
+ <mailto:mbj@tail-f.com>
+
+ Author: Juergen Schoenwaelder
+ <mailto:j.schoenwaelder@jacobs-university.de>
+
+ Author: Kent Watsen
+ <mailto:kent+ietf@watsen.net>
+
+ Author: Robert Wilton
+ <mailto:rwilton@cisco.com>";
+ description
+ "This module provides information about the YANG modules,
+ datastores, and datastore schemas used by a network
+ management server.
+
+ The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+ NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+ 'MAY', and 'OPTIONAL' in this document are to be interpreted as
+ described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+ they appear in all capitals, as shown here.
+
+ Copyright (c) 2019 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8525; see
+ the RFC itself for full legal notices.";
+
+ revision 2019-01-04 {
+ description
+ "Added support for multiple datastores according to the
+ Network Management Datastore Architecture (NMDA).";
+ reference
+ "RFC 8525: YANG Library";
+ }
+ revision 2016-04-09 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 7895: YANG Module Library";
+ }
+
+ /*
+ * Typedefs
+ */
+
+ 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-identification-leafs {
+ description
+ "Parameters for identifying YANG modules and submodules.";
+ leaf name {
+ type yang:yang-identifier;
+ mandatory true;
+ description
+ "The YANG module or submodule name.";
+ }
+ leaf revision {
+ type revision-identifier;
+ description
+ "The YANG module or submodule revision date. If no revision
+ statement is present in the YANG module or submodule, this
+ leaf is not instantiated.";
+ }
+ }
+
+ grouping location-leaf-list {
+ description
+ "Common leaf-list parameter for the locations of modules and
+ submodules.";
+ leaf-list location {
+ 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.";
+ }
+ }
+
+ grouping module-implementation-parameters {
+ description
+ "Parameters for describing the implementation of a module.";
+ leaf-list feature {
+ type yang:yang-identifier;
+ description
+ "List of all YANG feature names from this module that are
+ supported by the server, regardless whether they are defined
+ in the module or any included submodule.";
+ }
+ leaf-list deviation {
+ type leafref {
+ path "../../module/name";
+ }
+ description
+ "List of all YANG deviation modules 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.
+
+ This reference MUST NOT (directly or indirectly)
+ refer to the module being deviated.
+
+ Robust clients may want to make sure that they handle a
+ situation where a module deviates itself (directly or
+ indirectly) gracefully.";
+ }
+ }
+
+ grouping module-set-parameters {
+ description
+ "A set of parameters that describe a module set.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name of the module set.";
+ }
+ list module {
+ key "name";
+ description
+ "An entry in this list represents a module implemented by the
+ server, as per Section 5.6.5 of RFC 7950, with a particular
+ set of supported features and deviations.";
+ reference
+ "RFC 7950: The YANG 1.1 Data Modeling Language";
+ uses module-identification-leafs;
+ leaf namespace {
+ type inet:uri;
+ mandatory true;
+ description
+ "The XML namespace identifier for this module.";
+ }
+ uses location-leaf-list;
+ list submodule {
+ key "name";
+ description
+ "Each entry represents one submodule within the
+ parent module.";
+ uses module-identification-leafs;
+ uses location-leaf-list;
+ }
+ uses module-implementation-parameters;
+ }
+ list import-only-module {
+ key "name revision";
+ description
+ "An entry in this list 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 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.";
+ leaf name {
+ type yang:yang-identifier;
+ description
+ "The YANG module name.";
+ }
+ leaf revision {
+ type union {
+ type revision-identifier;
+ type string {
+ length "0";
+ }
+ }
+ description
+ "The YANG module revision date.
+ A zero-length string is used if no revision statement
+ is present in the YANG module.";
+ }
+ leaf namespace {
+ type inet:uri;
+ mandatory true;
+ description
+ "The XML namespace identifier for this module.";
+ }
+ uses location-leaf-list;
+ list submodule {
+ key "name";
+ description
+ "Each entry represents one submodule within the
+ parent module.";
+ uses module-identification-leafs;
+ uses location-leaf-list;
+ }
+ }
+ }
+
+ grouping yang-library-parameters {
+ description
+ "The YANG library data structure is represented as a grouping
+ so it can be reused in configuration or another monitoring
+ data structure.";
+ list module-set {
+ key "name";
+ description
+ "A set of modules that may be used by one or more schemas.
+
+ A module set does not have to be referentially complete,
+ i.e., it may define modules that contain import statements
+ for other modules not included in the module set.";
+ uses module-set-parameters;
+ }
+ list schema {
+ key "name";
+ description
+ "A datastore schema that may be used by one or more
+ datastores.
+
+ The schema must be valid and referentially complete, i.e.,
+ it must contain modules to satisfy all used import
+ statements for all modules specified in the schema.";
+ leaf name {
+ type string;
+ description
+ "An arbitrary name of the schema.";
+ }
+ leaf-list module-set {
+ type leafref {
+ path "../../module-set/name";
+ }
+ description
+ "A set of module-sets that are included in this schema.
+ If a non-import-only module appears in multiple module
+ sets, then the module revision and the associated features
+ and deviations must be identical.";
+ }
+ }
+ list datastore {
+ key "name";
+ description
+ "A datastore supported by this server.
+
+ Each datastore indicates which schema it supports.
+
+ The server MUST instantiate one entry in this list per
+ specific datastore it supports.
+ Each datastore entry with the same datastore schema SHOULD
+ reference the same schema.";
+ leaf name {
+ type ds:datastore-ref;
+ description
+ "The identity of the datastore.";
+ }
+ leaf schema {
+ type leafref {
+ path "../../schema/name";
+ }
+ mandatory true;
+ description
+ "A reference to the schema supported by this datastore.
+ All non-import-only modules of the schema are implemented
+ with their associated features and deviations.";
+ }
+ }
+ }
+
+ /*
+ * Top-level container
+ */
+
+ container yang-library {
+ config false;
+ description
+ "Container holding the entire YANG library of this server.";
+ uses yang-library-parameters;
+ leaf content-id {
+ type string;
+ mandatory true;
+ description
+ "A server-generated identifier of the contents of the
+ '/yang-library' tree. The server MUST change the value of
+ this leaf if the information represented by the
+ '/yang-library' tree, except '/yang-library/content-id', has
+ changed.";
+ }
+ }
+
+ /*
+ * Notifications
+ */
+
+ notification yang-library-update {
+ description
+ "Generated when any YANG library information on the
+ server has changed.";
+ leaf content-id {
+ type leafref {
+ path "/yanglib:yang-library/yanglib:content-id";
+ }
+ mandatory true;
+ description
+ "Contains the YANG library content identifier for the updated
+ YANG library at the time the notification is generated.";
+ }
+ }
+
+ /*
+ * Legacy groupings
+ */
+
+ grouping module-list {
+ status deprecated;
+ 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 {
+ status deprecated;
+ description
+ "Common parameters for YANG modules and submodules.";
+ leaf name {
+ type yang:yang-identifier;
+ status deprecated;
+ description
+ "The YANG module or submodule name.";
+ }
+ leaf revision {
+ type union {
+ type revision-identifier;
+ type string {
+ length "0";
+ }
+ }
+ status deprecated;
+ 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.";
+ }
+ }
+
+ grouping schema-leaf {
+ status deprecated;
+ 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";
+ status deprecated;
+ description
+ "Each entry represents one revision of one module
+ currently supported by the server.";
+ uses common-leafs {
+ status deprecated;
+ }
+ uses schema-leaf {
+ status deprecated;
+ }
+ leaf namespace {
+ type inet:uri;
+ mandatory true;
+ status deprecated;
+ description
+ "The XML namespace identifier for this module.";
+ }
+ leaf-list feature {
+ type yang:yang-identifier;
+ status deprecated;
+ description
+ "List of YANG feature names from this module that are
+ supported by the server, regardless of whether they are
+ defined in the module or any included submodule.";
+ }
+ list deviation {
+ key "name revision";
+ status deprecated;
+ 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 {
+ status deprecated;
+ }
+ }
+ 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;
+ status deprecated;
+ description
+ "Indicates the type of conformance the server is claiming
+ for the YANG module identified by this entry.";
+ }
+ list submodule {
+ key "name revision";
+ status deprecated;
+ description
+ "Each entry represents one submodule within the
+ parent module.";
+ uses common-leafs {
+ status deprecated;
+ }
+ uses schema-leaf {
+ status deprecated;
+ }
+ }
+ }
+ }
+
+ /*
+ * Legacy operational state data nodes
+ */
+
+ container modules-state {
+ config false;
+ status deprecated;
+ description
+ "Contains YANG module monitoring information.";
+ leaf module-set-id {
+ type string;
+ mandatory true;
+ status deprecated;
+ 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 {
+ status deprecated;
+ }
+ }
+
+ /*
+ * Legacy notifications
+ */
+
+ notification yang-library-change {
+ status deprecated;
+ 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;
+ status deprecated;
+ 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.";
+ }
+ }
+ }