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 "I-D.ietf-revised-datastores: | |
Network Management Datastore Architecture."; | |
} | |
organization | |
"IETF NETCONF (Network Configuration) Working Group"; | |
contact | |
"WG Web: <http://tools.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:kwatsen@juniper.net> | |
Author: Rob Wilton | |
<rwilton@cisco.com>"; | |
description | |
"This module contains information about the YANG server instance, | |
including the modules and datastores the server supports, and | |
which modules are present in which datastores. | |
Copyright (c) 2018 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.: update the date below with the date of RFC publication | |
// and remove this note. | |
// RFC Ed.: replace XXXX with actual RFC number and remove this | |
// note. | |
revision 2018-01-17 { | |
description | |
"Added support for multiple datastores."; | |
reference | |
"RFC XXXX: 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 location leaf list parameter for 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 implementation-parameters { | |
description | |
"Parameters for describing the implementation of a module."; | |
list feature { | |
key "name"; | |
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."; | |
leaf name { | |
type yang:yang-identifier; | |
description | |
"A feature supported by the server."; | |
} | |
} | |
list deviation { | |
key "module"; | |
description | |
"List of 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."; | |
leaf module { | |
type leafref { | |
path "../../../module/name"; | |
} | |
description | |
"A module that deviates the module associated with this | |
entry."; | |
} | |
} | |
} | |
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."; | |
} | |
leaf checksum { | |
type string; | |
config false; | |
mandatory true; | |
description | |
"A server-generated checksum of the contents of the module | |
set. The server MUST change the value of this leaf if the | |
information represented by the module set, except | |
'checksum', has changed."; | |
} | |
list module { | |
key "name"; | |
description | |
"An entry in this list represents a module implemented by the | |
server with a particular set of supported features and | |
deviations. | |
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."; | |
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 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 or 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."; | |
uses module-set-parameters; | |
} | |
list schema { | |
key "name"; | |
description | |
"A datastore schema that may be used by one or more | |
datastores."; | |
leaf name { | |
type string; | |
description | |
"An arbitrary name of the schema."; | |
} | |
leaf checksum { | |
type string; | |
config false; | |
mandatory true; | |
description | |
"A server-generated checksum of the contents of the schema. | |
The server MUST change the value of this leaf if the | |
information represented by the schema, except 'checksum', | |
has changed."; | |
} | |
leaf-list module-set { | |
type leafref { | |
path "../../module-set/name"; | |
} | |
description | |
"A set of module-sets that are included in this schema."; | |
} | |
} | |
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 datstore entry with the same datastore schema SHOULD | |
reference the same schema."; | |
leaf name { | |
type identityref { | |
base ds:datastore; | |
} | |
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."; | |
} | |
} | |
} | |
/* | |
* Top-level container | |
*/ | |
container yang-library { | |
config false; | |
description | |
"Container providing all the YANG meta information the | |
server possesses."; | |
uses yang-library-parameters; | |
leaf checksum { | |
type string; | |
mandatory true; | |
description | |
"A server-generated checksum 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/checksum', has | |
changed."; | |
} | |
} | |
/* | |
* Notifications | |
*/ | |
notification yang-library-update { | |
description | |
"Generated when any YANG library information on the | |
server has changed."; | |
} | |
/* | |
* 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; | |
status deprecated; | |
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 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."; | |
} | |
} | |
} |