| 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."; |
| } |
| } |
| |
| } |