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.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |