| < draft-ietf-netmod-yang-instance-file-format-07.txt | draft-ietf-netmod-yang-instance-file-format-08.txt > | |||
|---|---|---|---|---|
| Netmod B. Lengyel | Netmod B. Lengyel | |||
| Internet-Draft Ericsson | Internet-Draft Ericsson | |||
| Intended status: Standards Track B. Claise | Intended status: Standards Track B. Claise | |||
| Expires: August 16, 2020 Cisco Systems, Inc. | Expires: September 10, 2020 Cisco Systems, Inc. | |||
| February 13, 2020 | March 9, 2020 | |||
| YANG Instance Data File Format | YANG Instance Data File Format | |||
| draft-ietf-netmod-yang-instance-file-format-07 | draft-ietf-netmod-yang-instance-file-format-08 | |||
| Abstract | Abstract | |||
| There is a need to document data defined in YANG models when a live | There is a need to document data defined in YANG models when a live | |||
| server is not available. Data is often needed already at design or | server is not available. Data is often needed already at design or | |||
| implementation time or needed by groups that do not have a live | implementation time or needed by groups that do not have a live | |||
| running server available. This document specifies a standard file | running server available. This document specifies a standard file | |||
| format for YANG instance data, which follows the syntax and semantics | format for YANG instance data, which follows the syntax and semantics | |||
| of existing YANG models, and annotates it with metadata. | of existing YANG models, and annotates it with metadata. | |||
| skipping to change at page 1, line 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on August 16, 2020. | This Internet-Draft will expire on September 10, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 16 ¶ | skipping to change at page 2, line 16 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. Principles . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. Principles . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Delivery of Instance Data . . . . . . . . . . . . . . . . 4 | 2.2. Delivery of Instance Data . . . . . . . . . . . . . . . . 4 | |||
| 2.3. Data Life cycle . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. Data Life cycle . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Instance Data File Format . . . . . . . . . . . . . . . . . . 5 | 3. Instance Data File Format . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Specifying the Content Schema . . . . . . . . . . . . . . 7 | 3.1. Specifying the Content Schema . . . . . . . . . . . . . . 7 | |||
| 3.1.1. Inline Method . . . . . . . . . . . . . . . . . . . . 8 | 3.1.1. Inline Method . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.1.2. Simplified-Inline Method . . . . . . . . . . . . . . 8 | 3.1.2. Simplified-Inline Method . . . . . . . . . . . . . . 8 | |||
| 3.1.3. URI Method . . . . . . . . . . . . . . . . . . . . . 8 | 3.1.3. URI Method . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4. Backwards Compatibility . . . . . . . . . . . . . . . . . . . 12 | 4. YANG Instance Data Model . . . . . . . . . . . . . . . . . . 12 | |||
| 5. YANG Instance Data Model . . . . . . . . . . . . . . . . . . 13 | 4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 13 | 4.2. YANG Model . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.2. YANG Model . . . . . . . . . . . . . . . . . . . . . . . 13 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | 6.1. URI Registration . . . . . . . . . . . . . . . . . . . . 19 | |||
| 7.1. URI Registration . . . . . . . . . . . . . . . . . . . . 19 | 6.2. YANG Module Name Registration . . . . . . . . . . . . . . 19 | |||
| 7.2. YANG Module Name Registration . . . . . . . . . . . . . . 19 | 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 20 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 8.2. Informative References . . . . . . . . . . . . . . . . . 21 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 21 | ||||
| Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 22 | Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 22 | |||
| Appendix B. Changes between revisions . . . . . . . . . . . . . 22 | Appendix B. Changes between revisions . . . . . . . . . . . . . 22 | |||
| Appendix C. Detailed Use Cases - Non-Normative . . . . . . . . . 24 | Appendix C. Backwards Compatibility . . . . . . . . . . . . . . 24 | |||
| C.1. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 24 | Appendix D. Detailed Use Cases - Non-Normative . . . . . . . . . 24 | |||
| C.1.1. Use Case 1: Early Documentation of Server | D.1. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| D.1.1. Use Case 1: Early Documentation of Server | ||||
| Capabilities . . . . . . . . . . . . . . . . . . . . 24 | Capabilities . . . . . . . . . . . . . . . . . . . . 24 | |||
| C.1.2. Use Case 2: Preloading Data . . . . . . . . . . . . . 25 | D.1.2. Use Case 2: Preloading Data . . . . . . . . . . . . . 26 | |||
| C.1.3. Use Case 3: Documenting Factory Default Settings . . 25 | D.1.3. Use Case 3: Documenting Factory Default Settings . . 26 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 1. Terminology | 1. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 RFC 2119 [RFC2119] RFC 8174 [RFC8174] when, and only when, they | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| appear in all capitals, as shown here. | capitals, as shown here. | |||
| Instance Data: A collection of instantiated data nodes. | Instance Data: A collection of instantiated data nodes. | |||
| Instance Data Set: A named set of data items annotated with metadata | Instance Data Set: A named set of data items annotated with metadata | |||
| that can be used as instance data in a YANG data tree. | that can be used as instance data in a YANG data tree. | |||
| Instance Data File: A file containing an instance data set formatted | Instance Data File: A file containing an instance data set formatted | |||
| according to the rules described in this document. | according to the rules described in this document. | |||
| Content-schema: A set of YANG modules with their revision, supported | Content-schema: A set of YANG modules with their revision, supported | |||
| skipping to change at page 3, line 50 ¶ | skipping to change at page 3, line 50 ¶ | |||
| UC5 Storing diagnostics data | UC5 Storing diagnostics data | |||
| UC6 Allowing YANG instance data to potentially be carried within | UC6 Allowing YANG instance data to potentially be carried within | |||
| other IPC message formats | other IPC message formats | |||
| UC7 Default instance data used as part of a templating solution | UC7 Default instance data used as part of a templating solution | |||
| UC8 Providing data examples in RFCs or internet drafts | UC8 Providing data examples in RFCs or internet drafts | |||
| In Appendix C we describe the first three use cases in detail. | In Appendix D we describe the first three use cases in detail. | |||
| There are many and varied use cases where YANG instance data could be | There are many and varied use cases where YANG instance data could be | |||
| used. We do not want to limit future uses of instance data sets, so | used. We do not want to limit future uses of instance data sets, so | |||
| specifying how and when to use YANG instance data is out of scope for | specifying how and when to use YANG instance data is out of scope for | |||
| this document. It is anticipated that other documents will define | this document. It is anticipated that other documents will define | |||
| specific use cases. Use cases are listed here only to indicate the | specific use cases. Use cases are listed here only to indicate the | |||
| need for this work. | need for this work. | |||
| 2.1. Principles | 2.1. Principles | |||
| skipping to change at page 4, line 41 ¶ | skipping to change at page 4, line 41 ¶ | |||
| P5 Instance data shall be allowed to contain configuration data, | P5 Instance data shall be allowed to contain configuration data, | |||
| state data, or a mix of the two. | state data, or a mix of the two. | |||
| P6 Partial data sets shall be allowed. | P6 Partial data sets shall be allowed. | |||
| P7 The YANG instance data format shall be usable for any data for | P7 The YANG instance data format shall be usable for any data for | |||
| which YANG module(s) are defined and available to the reader, | which YANG module(s) are defined and available to the reader, | |||
| independent of whether the module is actually implemented by a | independent of whether the module is actually implemented by a | |||
| server. | server. | |||
| P8 It shall be possible to report the identity of the datastore with | ||||
| which the instance data set is associated. | ||||
| 2.2. Delivery of Instance Data | 2.2. Delivery of Instance Data | |||
| Instance data sets that are produced as a result of some sort of | Instance data sets that are produced as a result of some sort of | |||
| specification or design effort may be available without the need for | specification or design effort may be available without the need for | |||
| a live server e.g., via download from the vendor's website, or in any | a live server e.g., via download from the vendor's website, or in any | |||
| other way that product documentation is distributed. | other way that product documentation is distributed. | |||
| Other instance data sets may be read from or produced by the YANG | Other instance data sets may be read from or produced by the YANG | |||
| server itself e.g., UC5 documenting diagnostic data. | server itself e.g., UC5 documenting diagnostic data. | |||
| 2.3. Data Life cycle | 2.3. Data Life cycle | |||
| YANG instance data is always a snapshot of information at a specific | A YANG instance data set is created at a specific point of time. If | |||
| point of time. If the data changes afterwards, this is not | the data changes afterwards, this is not represented in the instance | |||
| represented in the instance data set anymore. The current values may | data set anymore. The current values may be retrieved at run-time | |||
| be retrieved at run-time via NETCONF/RESTCONF or received e.g., in | via NETCONF/RESTCONF or received e.g., in YANG-Push notifications. | |||
| YANG-Push notifications. | ||||
| Whether the instance data changes and if so, when and how, should be | Whether the instance data changes and if so, when and how, should be | |||
| described either in the instance data set's description statement or | described either in the instance data set's description statement or | |||
| in some other implementation specific manner. | in some other implementation specific manner. | |||
| 3. Instance Data File Format | 3. Instance Data File Format | |||
| A YANG instance data file MUST contain a single instance data set and | A YANG instance data file MUST contain a single instance data set and | |||
| no additional data. | no additional data. | |||
| skipping to change at page 5, line 50 ¶ | skipping to change at page 5, line 49 ¶ | |||
| a default attribute as defined in [RFC6243] section 6. and in | a default attribute as defined in [RFC6243] section 6. and in | |||
| [RFC8040] section 4.8.9. | [RFC8040] section 4.8.9. | |||
| origin metadata as specified in [RFC8526] and [RFC8527] | origin metadata as specified in [RFC8526] and [RFC8527] | |||
| implementation specific metadata relevant to individual data | implementation specific metadata relevant to individual data | |||
| nodes. Unknown metadata MUST be ignored by users of instance | nodes. Unknown metadata MUST be ignored by users of instance | |||
| data, allowing it to be used later for other purposes. | data, allowing it to be used later for other purposes. | |||
| in the XML format implementation specific XML attributes, unknown | ||||
| attributes MUST be ignored by users of instance data, allowing | ||||
| them to be used later for other purposes. | ||||
| An instance data set MAY contain data for any number of YANG modules; | An instance data set MAY contain data for any number of YANG modules; | |||
| if needed it MAY carry the complete configuration and state data set | if needed it MAY carry the complete configuration and state data set | |||
| for a server. Default values SHOULD NOT be included. | for a server. Default values SHOULD NOT be included. | |||
| Config=true and config=false data MAY be mixed in the instance data | Config=true and config=false data MAY be mixed in the instance data | |||
| file. | file. | |||
| Instance data files MAY contain partial data sets. This means | Instance data files MAY contain partial data sets. This means | |||
| mandatory, min-elements, require-instance=true, must and when | mandatory, min-elements, require-instance=true, must and when | |||
| constrains MAY be violated. | constrains MAY be violated. | |||
| skipping to change at page 8, line 15 ¶ | skipping to change at page 8, line 8 ¶ | |||
| 3.1.1. Inline Method | 3.1.1. Inline Method | |||
| One or more inline-module elements define YANG module(s) used to | One or more inline-module elements define YANG module(s) used to | |||
| specify the content defining YANG modules. | specify the content defining YANG modules. | |||
| E.g., ietf-yang-library@2016-06-21 | E.g., ietf-yang-library@2016-06-21 | |||
| The anydata inline-schema carries instance data (conforming to the | The anydata inline-schema carries instance data (conforming to the | |||
| inline-modules) that actually specifies the content defining YANG | inline-modules) that actually specifies the content defining YANG | |||
| modules including revision, supported features, deviations and any | modules including revision, supported features, deviations and any | |||
| relevant additional data (e.g., revision labels). See Section 3.2. | relevant additional data (e.g., revision labels | |||
| [I-D.verdt-netmod-yang-module-versioning]). See Section 3.2. | ||||
| 3.1.2. Simplified-Inline Method | 3.1.2. Simplified-Inline Method | |||
| The instance data set contains a list of content defining YANG | The instance data set contains a list of content defining YANG | |||
| modules including the revision date for each. Usage of this method | modules including the revision date for each. Usage of this method | |||
| implies that the modules are used without any deviations and with all | implies that the modules are used without any deviations and with all | |||
| features supported. | features supported. | |||
| 3.1.3. URI Method | 3.1.3. URI Method | |||
| skipping to change at page 8, line 52 ¶ | skipping to change at page 8, line 46 ¶ | |||
| The following example is based on "UC1, Documenting Server | The following example is based on "UC1, Documenting Server | |||
| Capabilities". It provides (a shortened) list of supported YANG | Capabilities". It provides (a shortened) list of supported YANG | |||
| modules and NETCONF capabilities for a server. It uses the inline | modules and NETCONF capabilities for a server. It uses the inline | |||
| method to specify the content-schema. | method to specify the content-schema. | |||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <instance-data-set xmlns= | <instance-data-set xmlns= | |||
| "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | |||
| <name>acme-router-modules</name> | <name>acme-router-modules</name> | |||
| <yid-version>1</yid-version> | <format-version>2020-03-06</format-version> | |||
| <content-schema> | <content-schema> | |||
| <inline-module> | <inline-module> | |||
| ietf-yang-library@2016-06-21 | ietf-yang-library@2016-06-21 | |||
| </inline-module> | </inline-module> | |||
| <inline-schema> | <inline-schema> | |||
| <modules-state | <modules-state | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | |||
| <module> | <module> | |||
| <name>ietf-yang-library</name> | <name>ietf-yang-library</name> | |||
| <revision>2016-06-21</revision> | <revision>2016-06-21</revision> | |||
| skipping to change at page 11, line 9 ¶ | skipping to change at page 11, line 9 ¶ | |||
| The following example is based on "UC2, Preloading Default | The following example is based on "UC2, Preloading Default | |||
| Configuration". It provides a (shortened) default rule set for a | Configuration". It provides a (shortened) default rule set for a | |||
| read-only operator role. It uses the inline method for specifying | read-only operator role. It uses the inline method for specifying | |||
| the content-schema. | the content-schema. | |||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <instance-data-set xmlns= | <instance-data-set xmlns= | |||
| "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | |||
| <name>read-only-acm-rules</name> | <name>read-only-acm-rules</name> | |||
| <yid-version>1</yid-version> | <format-version>2020-03-06</format-version> | |||
| <content-schema> | <content-schema> | |||
| <inline-module>ietf-yang-library@2019-01-04</inline-module> | <inline-module>ietf-yang-library@2019-01-04</inline-module> | |||
| <inline-schema> | <inline-schema> | |||
| <yang-library | <yang-library | |||
| xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | |||
| <module-set> | <module-set> | |||
| <name>all</name> | <name>all</name> | |||
| <module> | <module> | |||
| <name>ietf-netconf-acm</name> | <name>ietf-netconf-acm</name> | |||
| <revision>2012-02-22</revision> | <revision>2012-02-22</revision> | |||
| skipping to change at page 12, line 14 ¶ | skipping to change at page 12, line 14 ¶ | |||
| The following example is based on UC5 Storing diagnostics data. An | The following example is based on UC5 Storing diagnostics data. An | |||
| instance data set is produced by the server every 15 minutes that | instance data set is produced by the server every 15 minutes that | |||
| contains statistics about NETCONF. As a new set is produced | contains statistics about NETCONF. As a new set is produced | |||
| periodically many times a day a revision-date would be useless; | periodically many times a day a revision-date would be useless; | |||
| instead a timestamp is included. | instead a timestamp is included. | |||
| { | { | |||
| "ietf-yang-instance-data:instance-data-set": { | "ietf-yang-instance-data:instance-data-set": { | |||
| "name": "acme-router-netconf-diagnostics", | "name": "acme-router-netconf-diagnostics", | |||
| "yid-version": "1", | "format-version": "2020-03-06", | |||
| "content-schema": { | "content-schema": { | |||
| "same-schema-as-file": "file:///acme-diagnostics-schema.json", | "same-schema-as-file": "file:///acme-diagnostics-schema.json", | |||
| }, | }, | |||
| "timestamp": "2018-01-25T17:00:38Z", | "timestamp": "2018-01-25T17:00:38Z", | |||
| "description": | "description": | |||
| "NETCONF statistics", | "NETCONF statistics", | |||
| "content-data": { | "content-data": { | |||
| "ietf-netconf-monitoring:netconf-state": { | "ietf-netconf-monitoring:netconf-state": { | |||
| "statistics": { | "statistics": { | |||
| "netconf-start-time ": "2018-12-05T17:45:00Z", | "netconf-start-time ": "2018-12-05T17:45:00Z", | |||
| skipping to change at page 12, line 41 ¶ | skipping to change at page 12, line 41 ¶ | |||
| "out-notifications": "39007" | "out-notifications": "39007" | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| Figure 3: JSON Instance Data File example - UC5 Storing diagnostics | Figure 3: JSON Instance Data File example - UC5 Storing diagnostics | |||
| data | data | |||
| 4. Backwards Compatibility | 4. YANG Instance Data Model | |||
| The concept of backwards compatibility and what changes are backwards | ||||
| compatible are not defined for instance data sets as it is highly | ||||
| dependent on the specific use case and the content-schema. | ||||
| For instance data that is the result of a design or specification | ||||
| activity, some changes that may be good to avoid are listed. YANG | ||||
| uses the concept of managed entities identified by key values; if the | ||||
| connection between the represented entity and the key value is not | ||||
| preserved during an update, this may lead to problems. | ||||
| o If the key value of a list entry that represents the same managed | ||||
| entity as before is changed, the user may mistakenly identify the | ||||
| list entry as new. | ||||
| o If the meaning of a list entry is changed, but the key values are | ||||
| not (e.g., redefining an alarm-type but not changing its alarm- | ||||
| type-id) the change may not be noticed. | ||||
| o If the key value of a previously removed list entry is reused for | ||||
| a different entity, the change may be misinterpreted as | ||||
| reintroducing the previous entity. | ||||
| 5. YANG Instance Data Model | ||||
| 5.1. Tree Diagram | 4.1. Tree Diagram | |||
| The following tree diagram [RFC8340] provides an overview of the data | The following tree diagram [RFC8340] provides an overview of the data | |||
| model. | model. | |||
| module: ietf-yang-instance-data | module: ietf-yang-instance-data | |||
| structure instance-data-set: | structure instance-data-set: | |||
| +--rw name? string | +--rw name? string | |||
| +--rw yid-version uint8 | +--rw format-version string | |||
| +--rw content-schema | +--rw content-schema | |||
| | +--rw (content-schema-spec)? | | +--rw (content-schema-spec)? | |||
| | +--:(simplified-inline) | | +--:(simplified-inline) | |||
| | | +--rw module* string | | | +--rw module* string | |||
| | +--:(inline) {inline-content-schema}? | | +--:(inline) {inline-content-schema}? | |||
| | | +--rw inline-module* string | | | +--rw inline-module* string | |||
| | | +--rw inline-schema <anydata> | | | +--rw inline-schema <anydata> | |||
| | +--:(uri) | | +--:(uri) | |||
| | +--rw same-schema-as-file? inet:uri | | +--rw same-schema-as-file? inet:uri | |||
| +--rw description? string | +--rw description* string | |||
| +--rw contact? string | +--rw contact? string | |||
| +--rw organization? string | +--rw organization? string | |||
| +--rw datastore? ds:datastore-ref | +--rw datastore? ds:datastore-ref | |||
| +--rw revision* [date] | +--rw revision* [date] | |||
| | +--rw date string | | +--rw date string | |||
| | +--rw description? string | | +--rw description? string | |||
| +--rw timestamp? yang:date-and-time | +--rw timestamp? yang:date-and-time | |||
| +--rw content-data? <anydata> | +--rw content-data? <anydata> | |||
| 5.2. YANG Model | 4.2. YANG Model | |||
| <CODE BEGINS> file "ietf-yang-instance-data@2019-11-17.yang" | This YANG module imports typedefs from [RFC6991], identities from | |||
| module ietf-yang-instance-data { | [RFC8342] and the "structure" extension from | |||
| yang-version 1.1; | [I-D.ietf-netmod-yang-data-ext]. | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"; | ||||
| prefix yid; | ||||
| import ietf-yang-structure-ext { | The YANG data model in this document conforms to the Network | |||
| prefix sx; | Management Datastore Architecture (NMDA) defined in [RFC8342] | |||
| } | ||||
| import ietf-datastores { | ||||
| prefix ds; | ||||
| } | ||||
| import ietf-inet-types { | ||||
| prefix inet; | ||||
| } | ||||
| import ietf-yang-types { | ||||
| prefix yang; | ||||
| } | ||||
| organization | <CODE BEGINS> file "ietf-yang-instance-data@2020-03-06.yang" | |||
| "IETF NETMOD Working Group"; | module ietf-yang-instance-data { | |||
| contact | yang-version 1.1; | |||
| "WG Web: <https://datatracker.ietf.org/wg/netmodf/> | namespace "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"; | |||
| WG List: <mailto:netmod@ietf.org> | prefix yid; | |||
| Author: Balazs Lengyel | import ietf-yang-structure-ext { | |||
| <mailto:balazs.lengyel@ericsson.com>"; | prefix sx; | |||
| description | } | |||
| "The module defines the structure and content of YANG | import ietf-datastores { | |||
| instance data sets. | prefix ds; | |||
| } | ||||
| import ietf-inet-types { | ||||
| prefix inet; | ||||
| } | ||||
| import ietf-yang-types { | ||||
| prefix yang; | ||||
| } | ||||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | organization | |||
| 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | "IETF NETMOD Working Group"; | |||
| 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document | contact | |||
| are to be interpreted as described in BCP 14 (RFC 2119) | "WG Web: <https://datatracker.ietf.org/wg/netmodf/> | |||
| (RFC 8174) when, and only when, they appear in all | WG List: <mailto:netmod@ietf.org> | |||
| capitals, as shown here. | ||||
| Copyright (c) 2019 IETF Trust and the persons identified as | Author: Balazs Lengyel | |||
| authors of the code. All rights reserved. | <mailto:balazs.lengyel@ericsson.com>"; | |||
| description | ||||
| "The module defines the structure and content of YANG | ||||
| instance data sets. | ||||
| Redistribution and use in source and binary forms, with or | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', | |||
| without modification, is permitted pursuant to, and subject | 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', | |||
| to the license terms contained in, the Simplified BSD License | 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | are to be interpreted as described in BCP 14 (RFC 2119) | |||
| Relating to IETF Documents | (RFC 8174) when, and only when, they appear in all | |||
| (http://trustee.ietf.org/license-info). | capitals, as shown here. | |||
| This version of this YANG module is part of RFC XXXX; see | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| the RFC itself for full legal notices."; | authors of the code. All rights reserved. | |||
| revision 2019-11-17 { | Redistribution and use in source and binary forms, with or | |||
| description | without modification, is permitted pursuant to, and subject | |||
| "Initial revision."; | to the license terms contained in, the Simplified BSD License | |||
| reference | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| "RFC XXXX: YANG Instance Data Format"; | Relating to IETF Documents | |||
| } | (http://trustee.ietf.org/license-info). | |||
| feature inline-content-schema { | This version of this YANG module is part of RFC XXXX; see | |||
| description | the RFC itself for full legal notices."; | |||
| "This feature indicates that inline content-schema | ||||
| option is supported."; | ||||
| } | ||||
| sx:structure "instance-data-set" { | revision 2020-03-06 { | |||
| description | ||||
| "A data structure to define a format for | ||||
| YANG instance data sets. Consists of meta-data about | ||||
| the instance data set and the real content-data."; | ||||
| leaf name { | ||||
| type string; | ||||
| description | description | |||
| "Name of the YANG instance data set."; | "Initial revision."; | |||
| reference | ||||
| "RFC XXXX: YANG Instance Data Format"; | ||||
| } | } | |||
| leaf yid-version { | ||||
| type uint8; | feature inline-content-schema { | |||
| mandatory true; | ||||
| description | description | |||
| "Version number of the 'YANG Instance Data format'. | "This feature indicates that inline content-schema | |||
| It MUST contain the value '1' for instance data | option is supported."; | |||
| based on this specification."; | ||||
| } | } | |||
| container content-schema { | sx:structure "instance-data-set" { | |||
| description | description | |||
| "The content schema used to create the instance data set"; | "A data structure to define a format for | |||
| choice content-schema-spec { | YANG instance data sets. Consists of meta-data about | |||
| the instance data set and the real content-data."; | ||||
| leaf name { | ||||
| type string; | ||||
| description | description | |||
| "Specification of the content-schema"; | "Name of the YANG instance data set."; | |||
| case simplified-inline { | } | |||
| leaf-list module { | leaf format-version { | |||
| type string ; | type string; | |||
| description | default "2020-03-06"; | |||
| "The list of content defining YANG modules. | description | |||
| The value SHALL start with the module name. | "Version of the 'YANG Instance Data format'. | |||
| If the module contains a revision statement the | ||||
| revision date SHALL be included in the leaf-list | ||||
| entry. | ||||
| If other methods (e.g., revision-label) are | ||||
| defined to identify individual module revisions | ||||
| those MAY be used instead of using a revision date. | ||||
| E.g., ietf-yang-library@2016-06-21 | It SHALL contain the revision date of the | |||
| ietf-yang-instance-data module used when creating the | ||||
| instance data set in a YYYY-MM-DD format"; | ||||
| } | ||||
| container content-schema { | ||||
| description | ||||
| "The content schema used to create the instance data set"; | ||||
| choice content-schema-spec { | ||||
| description | ||||
| "Specification of the content-schema"; | ||||
| case simplified-inline { | ||||
| leaf-list module { | ||||
| type string; | ||||
| description | ||||
| "The list of content defining YANG modules. | ||||
| Usage of this leaf-list implies the modules are | The value SHALL start with the module name. | |||
| used without any deviations and with all features | If the module contains a revision statement the | |||
| supported. Multiple revisions of the same module | revision date SHALL be included in the leaf-list | |||
| MUST NOT be specified."; | entry. If other methods (e.g., revision-label) are | |||
| defined to identify individual module revisions | ||||
| those MAY be used instead of using a revision date. | ||||
| E.g., ietf-yang-library@2016-06-21 | ||||
| Usage of this leaf-list implies the modules are | ||||
| used without any deviations and with all features | ||||
| supported. Multiple revisions of the same module | ||||
| MUST NOT be specified."; | ||||
| } | ||||
| } | } | |||
| } | case inline { | |||
| case inline { | if-feature "inline-content-schema"; | |||
| if-feature inline-content-schema; | leaf-list inline-module { | |||
| leaf-list inline-module { | type string; | |||
| type string ; | min-elements 1; | |||
| min-elements 1; | ordered-by user; | |||
| ordered-by user; | description | |||
| description | "Indicates that content defining YANG modules | |||
| "Indicates that content defining YANG modules | are specified inline. | |||
| are specified inline. | ||||
| The value SHALL start with the module name. | ||||
| If the module contains a revision statement the | ||||
| revision date SHALL be included in the leaf-list | ||||
| entry. | ||||
| If other methods (e.g., revision-label) are | ||||
| defined to identify individual module revisions | ||||
| those MAY be used instead of using a revision date. | ||||
| E.g., ietf-yang-library@2016-06-21 | The value SHALL start with the module name. | |||
| If the module contains a revision statement the | ||||
| revision date SHALL be included in the leaf-list | ||||
| entry. If other methods (e.g., revision-label) are | ||||
| defined to identify individual module revisions | ||||
| those MAY be used instead of using a revision date. | ||||
| The first item is either ietf-yang-library or some other | E.g., ietf-yang-library@2016-06-21 | |||
| YANG module that contains a list of YANG modules with | ||||
| their name, revision-date, supported-features, and | ||||
| deviations. | ||||
| As some versions of ietf-yang-library MAY contain | ||||
| different module-sets for different datastores, if | ||||
| multiple module-sets are included, the instance data | ||||
| set's meta-data MUST contain the datastore information | ||||
| and instance data for the ietf-yang-library MUST also | ||||
| contain information specifying the module-set for the | ||||
| relevant datastore. | ||||
| Subsequent items MAY specify YANG modules augmenting the | The first item is either ietf-yang-library or some | |||
| first module with useful data (e.g., revision label)."; | other YANG module that contains a list of YANG modules | |||
| } | with their name, revision-date, supported-features, | |||
| anydata inline-schema { | and deviations. The usage of | |||
| mandatory true; | ietf-yang-library@2019-01-04 MUST be supported. | |||
| description | Using other modules, module versions MAY also be | |||
| "Instance data corresponding to the YANG modules | supported. | |||
| specified in the inline-module nodes defining the set | ||||
| of content defining YANG modules for this | As some versions of ietf-yang-library MAY contain | |||
| instance-data-set."; | different module-sets for different datastores, if | |||
| multiple module-sets are included, the instance data | ||||
| set's meta-data MUST contain the datastore information | ||||
| and instance data for the ietf-yang-library MUST also | ||||
| contain information specifying the module-set for the | ||||
| relevant datastore. | ||||
| Subsequent items MAY specify YANG modules augmenting | ||||
| the first module with useful data | ||||
| (e.g., revision label)."; | ||||
| } | ||||
| anydata inline-schema { | ||||
| mandatory true; | ||||
| description | ||||
| "Instance data corresponding to the YANG modules | ||||
| specified in the inline-module nodes defining the set | ||||
| of content defining YANG modules for this | ||||
| instance-data-set."; | ||||
| } | ||||
| } | } | |||
| } | case uri { | |||
| case uri { | leaf same-schema-as-file { | |||
| leaf same-schema-as-file { | type inet:uri; | |||
| type inet:uri; | description | |||
| description | "A reference to another YANG instance data file. | |||
| "A reference to another YANG instance data file. | This instance data file uses the same | |||
| This instance data file uses the same | content schema as the referenced file."; | |||
| content schema as the referenced file."; | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | leaf-list description { | |||
| leaf-list description { | type string; | |||
| type string; | description | |||
| description | "Description of the instance data set."; | |||
| "Description of the instance data set."; | } | |||
| } | leaf contact { | |||
| leaf contact { | type string; | |||
| type string; | description | |||
| description | "Contact information for the person or | |||
| "Contact information for the person or | organization to whom queries concerning this | |||
| organization to whom queries concerning this | instance data set should be sent."; | |||
| instance data set should be sent."; | } | |||
| } | leaf organization { | |||
| leaf organization { | type string; | |||
| type string; | description | |||
| description | "Organization responsible for the instance | |||
| "Organization responsible for the instance | data set."; | |||
| data set."; | } | |||
| } | leaf datastore { | |||
| leaf datastore { | type ds:datastore-ref; | |||
| type ds:datastore-ref; | description | |||
| description | "The identity of the datastore with which the | |||
| "The identity of the datastore with which the | instance data set is associated, e.g., the datastore from | |||
| instance data set is associated, e.g., the datastore from | where the data was read or the datastore into which the data | |||
| where the data was read or the datastore into which the data | may be loaded or the datastore which is being documented. | |||
| may be loaded or the datastore which is being documented. | If a single specific datastore cannot be specified, the | |||
| If a single specific datastore cannot be specified, the | leaf MUST be absent. | |||
| leaf MUST be absent. | ||||
| If this leaf is absent, then the datastore to which the | If this leaf is absent, then the datastore to which the | |||
| instance data belongs is undefined."; | instance data belongs is undefined."; | |||
| } | } | |||
| list revision { | list revision { | |||
| key "date"; | key "date"; | |||
| description | description | |||
| "Instance data sets that are produced as | "Instance data sets that are produced as | |||
| a result of some sort of specification or design effort | a result of some sort of specification or design effort | |||
| SHOULD have at least one revision entry. For every | SHOULD have at least one revision entry. For every | |||
| published editorial change, a new one SHOULD be added | published editorial change, a new one SHOULD be added | |||
| in front of the revisions sequence so that all | in front of the revisions sequence so that all | |||
| revisions are in reverse chronological order. | revisions are in reverse chronological order. | |||
| For instance data sets that are read from | For instance data sets that are read from | |||
| or produced by a server or otherwise | or produced by a server or otherwise | |||
| subject to frequent updates or changes, revision | subject to frequent updates or changes, revision | |||
| SHOULD NOT be present"; | SHOULD NOT be present"; | |||
| leaf date { | leaf date { | |||
| type string { | type string { | |||
| pattern '\d{4}-\d{2}-\d{2}'; | pattern '\d{4}-\d{2}-\d{2}'; | |||
| } | ||||
| description | ||||
| "Specifies the date the instance data set | ||||
| was last modified. Formatted as YYYY-MM-DD"; | ||||
| } | } | |||
| leaf description { | ||||
| type string; | ||||
| description | ||||
| "Description of this revision of the instance data set."; | ||||
| } | ||||
| } | ||||
| leaf timestamp { | ||||
| type yang:date-and-time; | ||||
| description | description | |||
| "Specifies the date the instance data set | "The date and time when the instance data set | |||
| was last modified. Formatted as YYYY-MM-DD"; | was last modified. | |||
| For instance data sets that are read from or produced | ||||
| by a server or otherwise subject to frequent | ||||
| updates or changes, timestamp SHOULD be present"; | ||||
| } | } | |||
| leaf description { | anydata content-data { | |||
| type string; | ||||
| description | description | |||
| "Description of this revision of the instance data set."; | "Contains the real instance data. | |||
| The data MUST conform to the relevant YANG Modules specified | ||||
| either in the content-schema-spec or in some other | ||||
| implementation specific manner."; | ||||
| } | } | |||
| } | } | |||
| leaf timestamp { | ||||
| type yang:date-and-time; | ||||
| description | ||||
| "The date and time when the instance data set | ||||
| was last modified. | ||||
| For instance data sets that are read from or produced | ||||
| by a server or otherwise subject to frequent | ||||
| updates or changes, timestamp SHOULD be present"; | ||||
| } | ||||
| anydata content-data { | ||||
| description | ||||
| "Contains the real instance data. | ||||
| The data MUST conform to the relevant YANG Modules specified | ||||
| either in the content-schema-spec or in some other | ||||
| implementation specific manner."; | ||||
| } | ||||
| } | } | |||
| } | <CODE ENDS> | |||
| <CODE ENDS> | ||||
| 6. Security Considerations | 5. Security Considerations | |||
| The YANG module defined in this document is designed as a wrapper | The YANG module defined in this document is designed as a wrapper | |||
| specifying a format and a metadata header for YANG instance data | specifying a format and a metadata header for YANG instance data | |||
| defined by the content-schema. The data is designed to be accessed | defined by the content-schema. The data is designed to be accessed | |||
| as a stored file or over any file access method or protocol. | as a stored file or over any file access method or protocol. | |||
| The document does not specify any method to influence the behavior of | The document does not specify any method to influence the behavior of | |||
| a server. | a server. | |||
| Instance data files may contain sensitive data. | Instance data files may contain sensitive data. | |||
| skipping to change at page 19, line 31 ¶ | skipping to change at page 19, line 24 ¶ | |||
| of the instance data, instance data files MAY need to be handled in a | of the instance data, instance data files MAY need to be handled in a | |||
| secure way. The same kind of handling should be applied, that would | secure way. The same kind of handling should be applied, that would | |||
| be needed for the result of a read operation returning the same data. | be needed for the result of a read operation returning the same data. | |||
| Instance data files should be protected against modification or | Instance data files should be protected against modification or | |||
| unauthorized access using normal file handling mechanisms. Care | unauthorized access using normal file handling mechanisms. Care | |||
| should be taken, when copying the original files or providing file | should be taken, when copying the original files or providing file | |||
| access for additional users, not to reveal information | access for additional users, not to reveal information | |||
| unintentionally. | unintentionally. | |||
| 7. IANA Considerations | 6. IANA Considerations | |||
| This document registers one URI and one YANG module. | This document registers one URI and one YANG module. | |||
| 7.1. URI Registration | 6.1. URI Registration | |||
| This document registers one URI in the IETF XML registry [RFC3688]. | This document registers one URI in the IETF XML registry [RFC3688]. | |||
| Following the format in RFC 3688, the following registration is | Following the format in RFC 3688, the following registration is | |||
| requested to be made: | requested to be made: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data | URI: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
| 7.2. YANG Module Name Registration | 6.2. YANG Module Name Registration | |||
| This document registers one YANG module in the YANG Module Names | This document registers one YANG module in the YANG Module Names | |||
| registry [RFC6020]. | registry [RFC6020]. | |||
| name: ietf-yang-instance-data | name: ietf-yang-instance-data | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data | namespace: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data | |||
| prefix: yid | prefix: yid | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 8. Acknowledgments | 7. Acknowledgments | |||
| For their valuable comments, discussions, and feedback, we wish to | For their valuable comments, discussions, and feedback, we wish to | |||
| acknowledge Andy Bierman, Juergen Schoenwaelder, Rob Wilton, Joe | acknowledge Andy Bierman, Juergen Schoenwaelder, Rob Wilton, Joe | |||
| Clarke, Kent Watsen Martin Bjorklund, Ladislav Lhotka, Qin Wu and | Clarke, Kent Watsen Martin Bjorklund, Ladislav Lhotka, Qin Wu and | |||
| other members of the Netmod WG. | other members of the Netmod WG. | |||
| 9. References | 8. References | |||
| 9.1. Normative References | 8.1. Normative References | |||
| [I-D.ietf-netmod-yang-data-ext] | [I-D.ietf-netmod-yang-data-ext] | |||
| Bierman, A., Bjorklund, M., and K. Watsen, "YANG Data | Bierman, A., Bjorklund, M., and K. Watsen, "YANG Data | |||
| Structure Extensions", draft-ietf-netmod-yang-data-ext-05 | Structure Extensions", draft-ietf-netmod-yang-data-ext-05 | |||
| (work in progress), December 2019. | (work in progress), December 2019. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| DOI 10.17487/RFC3688, January 2004, | Requirement Levels", BCP 14, RFC 2119, | |||
| <https://www.rfc-editor.org/info/rfc3688>. | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | ||||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | ||||
| DOI 10.17487/RFC6020, October 2010, | ||||
| <https://www.rfc-editor.org/info/rfc6020>. | ||||
| [RFC6243] Bierman, A. and B. Lengyel, "With-defaults Capability for | [RFC6243] Bierman, A. and B. Lengyel, "With-defaults Capability for | |||
| NETCONF", RFC 6243, DOI 10.17487/RFC6243, June 2011, | NETCONF", RFC 6243, DOI 10.17487/RFC6243, June 2011, | |||
| <https://www.rfc-editor.org/info/rfc6243>. | <https://www.rfc-editor.org/info/rfc6243>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | ||||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6991>. | ||||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | |||
| RFC 7951, DOI 10.17487/RFC7951, August 2016, | RFC 7951, DOI 10.17487/RFC7951, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7951>. | <https://www.rfc-editor.org/info/rfc7951>. | |||
| [RFC7952] Lhotka, L., "Defining and Using Metadata with YANG", | [RFC7952] Lhotka, L., "Defining and Using Metadata with YANG", | |||
| RFC 7952, DOI 10.17487/RFC7952, August 2016, | RFC 7952, DOI 10.17487/RFC7952, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7952>. | <https://www.rfc-editor.org/info/rfc7952>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
| [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "Network Management Datastore Architecture | and R. Wilton, "Network Management Datastore Architecture | |||
| (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8342>. | <https://www.rfc-editor.org/info/rfc8342>. | |||
| [RFC8525] Bierman, A., Bjorklund, M., Schoenwaelder, J., Watsen, K., | ||||
| and R. Wilton, "YANG Library", RFC 8525, | ||||
| DOI 10.17487/RFC8525, March 2019, | ||||
| <https://www.rfc-editor.org/info/rfc8525>. | ||||
| [RFC8526] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8526] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "NETCONF Extensions to Support the Network | and R. Wilton, "NETCONF Extensions to Support the Network | |||
| Management Datastore Architecture", RFC 8526, | Management Datastore Architecture", RFC 8526, | |||
| DOI 10.17487/RFC8526, March 2019, | DOI 10.17487/RFC8526, March 2019, | |||
| <https://www.rfc-editor.org/info/rfc8526>. | <https://www.rfc-editor.org/info/rfc8526>. | |||
| [RFC8527] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8527] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "RESTCONF Extensions to Support the Network | and R. Wilton, "RESTCONF Extensions to Support the Network | |||
| Management Datastore Architecture", RFC 8527, | Management Datastore Architecture", RFC 8527, | |||
| DOI 10.17487/RFC8527, March 2019, | DOI 10.17487/RFC8527, March 2019, | |||
| <https://www.rfc-editor.org/info/rfc8527>. | <https://www.rfc-editor.org/info/rfc8527>. | |||
| 9.2. Informative References | 8.2. Informative References | |||
| [I-D.ietf-netmod-factory-default] | [I-D.ietf-netmod-factory-default] | |||
| WU, Q., Lengyel, B., and Y. Niu, "Factory Default | WU, Q., Lengyel, B., and Y. Niu, "A YANG Data Model for | |||
| Setting", draft-ietf-netmod-factory-default-10 (work in | Factory Default Settings", draft-ietf-netmod-factory- | |||
| progress), February 2020. | default-14 (work in progress), February 2020. | |||
| [I-D.verdt-netmod-yang-module-versioning] | [I-D.verdt-netmod-yang-module-versioning] | |||
| Claise, B., Clarke, J., Rahman, R., Wilton, R., Lengyel, | Claise, B., Clarke, J., Rahman, R., Wilton, R., Lengyel, | |||
| B., Sterne, J., and K. D'Souza, "Updated YANG Module | B., Sterne, J., and K. D'Souza, "Updated YANG Module | |||
| Revision Handling", draft-verdt-netmod-yang-module- | Revision Handling", draft-verdt-netmod-yang-module- | |||
| versioning-01 (work in progress), October 2019. | versioning-01 (work in progress), October 2019. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| Requirement Levels", BCP 14, RFC 2119, | DOI 10.17487/RFC3688, January 2004, | |||
| DOI 10.17487/RFC2119, March 1997, | <https://www.rfc-editor.org/info/rfc3688>. | |||
| <https://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [RFC8525] Bierman, A., Bjorklund, M., Schoenwaelder, J., Watsen, K., | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
| and R. Wilton, "YANG Library", RFC 8525, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| DOI 10.17487/RFC8525, March 2019, | DOI 10.17487/RFC6020, October 2010, | |||
| <https://www.rfc-editor.org/info/rfc8525>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC8632] Vallin, S. and M. Bjorklund, "A YANG Data Model for Alarm | [RFC8632] Vallin, S. and M. Bjorklund, "A YANG Data Model for Alarm | |||
| Management", RFC 8632, DOI 10.17487/RFC8632, September | Management", RFC 8632, DOI 10.17487/RFC8632, September | |||
| 2019, <https://www.rfc-editor.org/info/rfc8632>. | 2019, <https://www.rfc-editor.org/info/rfc8632>. | |||
| [RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications | [RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications | |||
| for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, | for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, | |||
| September 2019, <https://www.rfc-editor.org/info/rfc8641>. | September 2019, <https://www.rfc-editor.org/info/rfc8641>. | |||
| Appendix A. Open Issues | Appendix A. Open Issues | |||
| o - | o - | |||
| Appendix B. Changes between revisions | Appendix B. Changes between revisions | |||
| v07 - v08 | ||||
| o Moved compatibility into appendix | ||||
| o Renamed yid-version to format-version as "yid" can be regarded as | ||||
| a racial slur. Changed format to date of the YANG module | ||||
| o Made support of ietf-yang-library mandatory if inline-content- | ||||
| schema is supported | ||||
| o Many small changes based on WGLC | ||||
| v06 - v07 | v06 - v07 | |||
| o Updated terminology, use-cases | o Updated terminology, use-cases | |||
| o Many small changes based on WGLC | o Many small changes based on WGLC | |||
| v05 - v06 | v05 - v06 | |||
| o Modified module name format, removed .yin or .yang extension | o Modified module name format, removed .yin or .yang extension | |||
| skipping to change at page 23, line 44 ¶ | skipping to change at page 24, line 4 ¶ | |||
| o Moved list of target modules into a separate <target-modules> | o Moved list of target modules into a separate <target-modules> | |||
| element. | element. | |||
| o Added backwards compatibility considerations | o Added backwards compatibility considerations | |||
| v00 - v01 | v00 - v01 | |||
| o Added the target-ptr metadata with 3 methods | o Added the target-ptr metadata with 3 methods | |||
| o Added timestamp metadata | o Added timestamp metadata | |||
| o Removed usage of dedicated .yid file extension | o Removed usage of dedicated .yid file extension | |||
| o Added list of use cases | o Added list of use cases | |||
| o Added list of principles | o Added list of principles | |||
| o Updated examples | o Updated examples | |||
| o Moved detailed use case descriptions to appendix | o Moved detailed use case descriptions to appendix | |||
| Appendix C. Detailed Use Cases - Non-Normative | Appendix C. Backwards Compatibility | |||
| C.1. Use Cases | The concept of backwards compatibility and what changes are backwards | |||
| compatible are not defined for instance data sets as it is highly | ||||
| dependent on the specific use case and the content-schema. | ||||
| For instance data that is the result of a design or specification | ||||
| activity, some changes that may be good to avoid are listed. YANG | ||||
| uses the concept of managed entities identified by key values; if the | ||||
| connection between the represented entity and the key value is not | ||||
| preserved during an update, this may lead to problems. | ||||
| o If the key value of a list entry that represents the same managed | ||||
| entity as before is changed, the user may mistakenly identify the | ||||
| list entry as new. | ||||
| o If the meaning of a list entry is changed, but the key values are | ||||
| not (e.g., redefining an alarm-type but not changing its alarm- | ||||
| type-id) the change may not be noticed. | ||||
| o If the key value of a previously removed list entry is reused for | ||||
| a different entity, the change may be misinterpreted as | ||||
| reintroducing the previous entity. | ||||
| Appendix D. Detailed Use Cases - Non-Normative | ||||
| D.1. Use Cases | ||||
| We present a number of use cases were YANG instance data is needed. | We present a number of use cases were YANG instance data is needed. | |||
| C.1.1. Use Case 1: Early Documentation of Server Capabilities | D.1.1. Use Case 1: Early Documentation of Server Capabilities | |||
| A server has a number of server-capabilities that are defined in YANG | A server has a number of server-capabilities that are defined in YANG | |||
| modules and can be retrieved from the server using protocols like | modules and can be retrieved from the server using protocols like | |||
| NETCONF or RESTCONF. Server capabilities include: | NETCONF or RESTCONF. Server capabilities include: | |||
| o data defined in ietf-yang-library: YANG modules, submodules, | o data defined in ietf-yang-library: YANG modules, submodules, | |||
| features, deviations, schema-mounts, and datastores supported | features, deviations, schema-mounts, and datastores supported | |||
| ([RFC8525]) | ([RFC8525]) | |||
| o alarms supported ([RFC8632]) | o alarms supported ([RFC8632]) | |||
| skipping to change at page 25, line 18 ¶ | skipping to change at page 26, line 5 ¶ | |||
| Most server-capabilities are relatively stable and change only during | Most server-capabilities are relatively stable and change only during | |||
| upgrade or due to licensing or the addition or removal of hardware. | upgrade or due to licensing or the addition or removal of hardware. | |||
| They are usually defined by a vendor at design time, before the | They are usually defined by a vendor at design time, before the | |||
| product is released. It is feasible and advantageous to define/ | product is released. It is feasible and advantageous to define/ | |||
| document them early e.g., in a YANG instance data File. | document them early e.g., in a YANG instance data File. | |||
| It is anticipated that a separate IETF document will define in detail | It is anticipated that a separate IETF document will define in detail | |||
| how and which set of server capabilities should be documented. | how and which set of server capabilities should be documented. | |||
| C.1.2. Use Case 2: Preloading Data | D.1.2. Use Case 2: Preloading Data | |||
| There are parts of the configuration that must be fully configurable | There are parts of the configuration that must be fully configurable | |||
| by the operator. However, often a simple default configuration will | by the operator. However, often a simple default configuration will | |||
| be sufficient. | be sufficient. | |||
| One example is access control groups/roles and related rules. While | One example is access control groups/roles and related rules. While | |||
| a sophisticated operator may define dozens of different groups, often | a sophisticated operator may define dozens of different groups, often | |||
| a basic (read-only operator, read-write system administrator, | a basic (read-only operator, read-write system administrator, | |||
| security-administrator) triplet will be enough. Vendors will often | security-administrator) triplet will be enough. Vendors will often | |||
| provide such default configuration data to make device configuration | provide such default configuration data to make device configuration | |||
| easier for an operator. | easier for an operator. | |||
| Defining access control data is a complex task. To help, the device | Defining access control data is a complex task. To help, the device | |||
| vendor predefines a set of default groups (/nacm:nacm/groups) and | vendor predefines a set of default groups (/nacm:nacm/groups) and | |||
| rules for these groups to access specific parts of common models | rules for these groups to access specific parts of common models | |||
| (/nacm:nacm/rule-list/rule). | (/nacm:nacm/rule-list/rule). | |||
| YANG instance data files are used to document and/or preload the | YANG instance data files are used to document and/or preload the | |||
| default configuration. | default configuration. | |||
| C.1.3. Use Case 3: Documenting Factory Default Settings | D.1.3. Use Case 3: Documenting Factory Default Settings | |||
| Nearly every server has a factory default configuration. If the | Nearly every server has a factory default configuration. If the | |||
| system is really badly misconfigured or if the current configuration | system is really badly misconfigured or if the current configuration | |||
| is to be abandoned, the system can be reset the default factory | is to be abandoned, the system can be reset the default factory | |||
| configuration. | configuration. | |||
| In NETCONF, the <delete-config> operation can already be used to | In NETCONF, the <delete-config> operation can already be used to | |||
| reset the startup datastore. There are ongoing efforts to introduce | reset the startup datastore. There are ongoing efforts to introduce | |||
| a new, more generic factory-reset operation for the same purpose | a new, more generic factory-reset operation for the same purpose | |||
| [I-D.ietf-netmod-factory-default] | [I-D.ietf-netmod-factory-default] | |||
| End of changes. 77 change blocks. | ||||
| 311 lines changed or deleted | 339 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||