draft-ietf-netmod-yang-instance-file-format-11.txt | draft-ietf-netmod-yang-instance-file-format-12.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: October 10, 2020 Cisco Systems, Inc. | Expires: October 16, 2020 Cisco Systems, Inc. | |||
April 8, 2020 | April 14, 2020 | |||
YANG Instance Data File Format | YANG Instance Data File Format | |||
draft-ietf-netmod-yang-instance-file-format-11 | draft-ietf-netmod-yang-instance-file-format-12 | |||
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 unavailable. Data is often needed at design or | server is unavailable. Data is often needed at design or | |||
implementation time or needed when a live running server is | implementation time or needed when a live running server is | |||
unavailable. This document specifies a standard file format for YANG | unavailable. This document specifies a standard file format for YANG | |||
instance data, which follows the syntax and semantics of existing | instance data, which follows the syntax and semantics of existing | |||
YANG models, and annotates it with metadata. | 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 October 10, 2020. | This Internet-Draft will expire on October 16, 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 20 ¶ | skipping to change at page 2, line 20 ¶ | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Principles . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2. Principles . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
1.3. Delivery of Instance Data . . . . . . . . . . . . . . . . 4 | 1.3. Delivery of Instance Data . . . . . . . . . . . . . . . . 4 | |||
1.4. Data Life cycle . . . . . . . . . . . . . . . . . . . . . 5 | 1.4. Data Life cycle . . . . . . . . . . . . . . . . . . . . . 5 | |||
2. Instance Data File Format . . . . . . . . . . . . . . . . . . 5 | 2. Instance Data File Format . . . . . . . . . . . . . . . . . . 5 | |||
2.1. Specifying the Content Schema . . . . . . . . . . . . . . 7 | 2.1. Specifying the Content Schema . . . . . . . . . . . . . . 7 | |||
2.1.1. Inline Method . . . . . . . . . . . . . . . . . . . . 7 | 2.1.1. Inline Method . . . . . . . . . . . . . . . . . . . . 7 | |||
2.1.2. Simplified-Inline Method . . . . . . . . . . . . . . 8 | 2.1.2. Simplified-Inline Method . . . . . . . . . . . . . . 8 | |||
2.1.3. URI Method . . . . . . . . . . . . . . . . . . . . . 8 | 2.1.3. URI Method . . . . . . . . . . . . . . . . . . . . . 8 | |||
2.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 8 | 2.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
2.2.1. UC1, Documenting Server Capabilities . . . . . . . . 8 | 2.2.1. Documentation of server capabilities . . . . . . . . 8 | |||
2.2.2. UC2, Preloading Default Configuration . . . . . . . . 10 | 2.2.2. Preloading default configuration data . . . . . . . . 10 | |||
2.2.3. UC5, Storing diagnostics data . . . . . . . . . . . . 11 | 2.2.3. Storing diagnostics data . . . . . . . . . . . . . . 11 | |||
3. YANG Instance Data Model . . . . . . . . . . . . . . . . . . 12 | 3. YANG Instance Data Model . . . . . . . . . . . . . . . . . . 12 | |||
3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 12 | 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 12 | |||
3.2. YANG Model . . . . . . . . . . . . . . . . . . . . . . . 13 | 3.2. YANG Model . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 19 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | |||
5.1. URI Registration . . . . . . . . . . . . . . . . . . . . 20 | 5.1. URI Registration . . . . . . . . . . . . . . . . . . . . 20 | |||
5.2. YANG Module Name Registration . . . . . . . . . . . . . . 20 | 5.2. YANG Module Name Registration . . . . . . . . . . . . . . 20 | |||
6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 | 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 20 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 21 | 7.2. Informative References . . . . . . . . . . . . . . . . . 22 | |||
Appendix A. Changes between revisions . . . . . . . . . . . . . 22 | Appendix A. Changes between revisions . . . . . . . . . . . . . 22 | |||
Appendix B. Backwards Compatibility . . . . . . . . . . . . . . 25 | Appendix B. Backwards Compatibility . . . . . . . . . . . . . . 25 | |||
Appendix C. Detailed Use Cases . . . . . . . . . . . . . . . . . 25 | Appendix C. Detailed Use Cases . . . . . . . . . . . . . . . . . 25 | |||
C.1. Use Case 1: Early Documentation of Server Capabilities . 25 | C.1. Use Case 1: Early Documentation of Server Capabilities . 25 | |||
C.2. Use Case 2: Preloading Data . . . . . . . . . . . . . . . 26 | C.2. Use Case 2: Preloading Data . . . . . . . . . . . . . . . 26 | |||
C.3. Use Case 3: Documenting Factory Default Settings . . . . 27 | C.3. Use Case 3: Documenting Factory Default Settings . . . . 27 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
1. Introduction | 1. Introduction | |||
skipping to change at page 6, line 12 ¶ | skipping to change at page 6, line 12 ¶ | |||
if needed it MAY carry the complete configuration and state data for | if needed it MAY carry the complete configuration and state data for | |||
a server. Default values SHOULD NOT be included. | a server. Default values SHOULD NOT be included. | |||
Configuration ("config true") and operational state data ("config | Configuration ("config true") and operational state data ("config | |||
false") MAY be mixed in the instance data file. | false") MAY be mixed in the instance data 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 | "mandatory", "min-elements", "require-instance true", "must" and | |||
"when" constrains MAY be violated. | "when" constrains MAY be violated. | |||
The name of the instance data file SHOULD take one of the following | The name of the instance data file SHOULD be of the form: | |||
two forms: | ||||
If "revision" information is present inside the data set: | ||||
instance-data-set-name ['@' revision-date] '.filetype' | instance-data-set-name ['@' ( revision-date / timestamp ) ] | |||
( '.xml' / '.json' ) | ||||
E.g., acme-router-modules@2018-01-25.xml | E.g., acme-router-modules@2018-01-25.xml | |||
If the leaf "name" is present in the instance data header, its | ||||
value SHOULD be used for the "instance-data-set-name". If the | ||||
"revision-date" is present in both the filename and in the | ||||
instance data header, the revision date in the file name MUST be | ||||
set to the latest revision date inside the instance data set. | ||||
If timestamp information inside the data set is present | ||||
instance-data-set-name ['@' timestamp] '.filetype' | ||||
E.g., acme-router-modules@2018-01-25T15_06_34_3+01_00.json | E.g., acme-router-modules@2018-01-25T15_06_34_3+01_00.json | |||
If the leaf "name" is present in the instance data header, its | If the leaf "name" is present in the instance data header, its value | |||
value SHOULD be used for the "instance-data-set-name". If the | SHOULD be used for the "instance-data-set-name". If the "revision- | |||
"timestamp" is present both in the filename and in the instance | date" is present in both the filename and in the instance data | |||
data header, the timestamp in the file name SHOULD be set to the | header, the revision date in the file name MUST be set to the latest | |||
timestamp inside the instance data set; the semicolons and the | revision date inside the instance data set. If the "timestamp" is | |||
decimal point, if present, shall be replaced by underscores. | present both in the filename and in the instance data header, the | |||
timestamp in the file name SHOULD be set to the timestamp inside the | ||||
The revision date or timestamp is optional. ".filetype" SHOULD be | instance data set; the colons and the decimal point, if present, | |||
".json" or ".xml" according to the format used. | shall be replaced by underscores. | |||
Metadata, information about the data set itself SHOULD be included in | Metadata, information about the data set itself SHOULD be included in | |||
the instance data set. Some metadata items are defined in the YANG | the instance data set. Some metadata items are defined in the YANG | |||
module "ietf-yang-instance-data", but other items MAY be used. | module "ietf-yang-instance-data", but other items MAY be used. | |||
Metadata MUST include: | Metadata MUST include: | |||
o Version of the YANG Instance Data format | * Version of the YANG Instance Data format | |||
Metadata SHOULD include: | Metadata SHOULD include: | |||
o Name of the data set | * Name of the data set | |||
o Content schema specification (i.e., the "content-schema" node) | * Content schema specification (i.e., the "content-schema" node) | |||
o Description of the instance data set. The description SHOULD | * Description of the instance data set. The description SHOULD | |||
contain information whether and how the data can change during the | contain information whether and how the data can change during | |||
lifetime of the server. | the lifetime of the server. | |||
2.1. Specifying the Content Schema | 2.1. Specifying the Content Schema | |||
To properly understand and use an instance data set, the user needs | To properly understand and use an instance data set, the user needs | |||
to know the content-schema. One of the following methods SHOULD be | to know the content-schema. One of the following methods SHOULD be | |||
used: | used: | |||
Inline method: Include the needed information as part of the | Inline method: Include the needed information as part of the | |||
instance data set. | instance data set. | |||
skipping to change at page 7, line 39 ¶ | skipping to change at page 7, line 31 ¶ | |||
External Method: Do not include the "content-schema" node; the | External Method: Do not include the "content-schema" node; the | |||
user needs to obtain the information through external documents. | user needs to obtain the information through external documents. | |||
Additional methods e.g., a YANG-package based solution may be added | Additional methods e.g., a YANG-package based solution may be added | |||
later. | later. | |||
Note, the specified content-schema only indicates the set of modules | Note, the specified content-schema only indicates the set of modules | |||
that were used to define this YANG instance data set. Sometimes | that were used to define this YANG instance data set. Sometimes | |||
instance data may be used for a server supporting a different YANG | instance data may be used for a server supporting a different YANG | |||
module set. (e.g., for "UC2 Preloading Data" the instance data set | module set (e.g., for the "Preloading default configuration data" | |||
may not be updated every time the YANG modules on the server are | use-case, UC2 in Section 1, the instance data set may not be updated | |||
updated) Whether an instance data set originally defined using a | every time the YANG modules on the server are updated). Whether an | |||
specific content-schema is usable with a different other schema | instance data set originally defined using a specific content-schema | |||
depends on many factors including the amount of differences and the | is usable with a different other schema depends on many factors | |||
compatibility between the original and the other schema, considering | including the amount of differences and the compatibility between the | |||
modules, revisions, features, deviations, the scope of the instance | original and the other schema, considering modules, revisions, | |||
data, etc. | features, deviations, the scope of the instance data, etc. | |||
2.1.1. Inline Method | 2.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 which can be used as | relevant additional data (e.g., revision labels, described by | |||
alternative to the revision | [I-D.ietf-netmod-yang-module-versioning]) as alternative to the | |||
date[I-D.verdt-netmod-yang-module-versioning]). See Section 2.2. | revision date). An example of the "inline" method is provided in | |||
Figure 2. | ||||
2.1.2. Simplified-Inline Method | 2.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. An example of the "simplified-inline" method is | |||
provided in Figure 3. | ||||
2.1.3. URI Method | 2.1.3. URI Method | |||
The "same-schema-as-file" leaf SHALL contain a URI that references | The "same-schema-as-file" leaf SHALL contain a URI that references | |||
another YANG instance data file. The current instance data file will | another YANG instance data file. The current instance data file will | |||
use the same content schema as the referenced file. | use the same content schema as the referenced file. | |||
The referenced instance data file MAY have no content-data if it is | The referenced instance data file MAY have no content-data if it is | |||
used solely for specifying the content-schema. | used solely for specifying the content-schema. | |||
If a referenced instance data file is unavailable, content-schema is | If a referenced instance data file is unavailable, content-schema is | |||
unknown. | unknown. | |||
The URI method is advantageous when the user wants to avoid the | The URI method is advantageous when the user wants to avoid the | |||
overhead of specifying the content-schema in each instance data file: | overhead of specifying the content-schema in each instance data file: | |||
E.g., In UC6, when the system creates a diagnostic file every minute | E.g., In UC6, when the system creates a diagnostic file every minute | |||
to document the state of the server. | to document the state of the server. | |||
An example of the "URI" method is provided in Figure 4. | ||||
2.2. Examples | 2.2. Examples | |||
2.2.1. UC1, Documenting Server Capabilities | 2.2.1. Documentation of server capabilities | |||
The example illustrates UC1 Section 1. It provides a list of | The example reflects UC1 in Section 1. It provides a list of | |||
supported YANG modules and NETCONF capabilities for a server. It | supported YANG modules and NETCONF capabilities for a server. It | |||
uses the "inline" method to specify the content-schema. | uses the "inline" method to specify the content-schema. | |||
The example uses artwork folding[I-D.ietf-netmod-artwork-folding]. | The example uses artwork folding [I-D.ietf-netmod-artwork-folding]. | |||
========== NOTE: '\' line wrapping per BCP XXX (RFC XXXX) =========== | ========== NOTE: '\' line wrapping per BCP XXX (RFC XXXX) =========== | |||
<?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> | |||
<content-schema> | <content-schema> | |||
<inline-module>ietf-yang-library@2016-06-21</inline-module> | <inline-module>ietf-yang-library@2016-06-21</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> | |||
</module> | </module> | |||
skipping to change at page 10, line 37 ¶ | skipping to change at page 10, line 34 ¶ | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring"> | |||
<capabilities> | <capabilities> | |||
<capability>\ | <capability>\ | |||
urn:ietf:params:netconf:capability:validate:1.1\ | urn:ietf:params:netconf:capability:validate:1.1\ | |||
</capability> | </capability> | |||
</capabilities> | </capabilities> | |||
</netconf-state> | </netconf-state> | |||
</content-data> | </content-data> | |||
</instance-data-set> | </instance-data-set> | |||
Figure 1: Documenting server capabilities | Figure 2 | |||
2.2.2. UC2, Preloading Default Configuration | 2.2.2. Preloading default configuration data | |||
The example illustrates UC2 Section 1. It provides a default rule | The example reflects UC2 in Section 1. It provides a default rule | |||
set for a read-only operator role. It uses the "simplified-inline" | set for a read-only operator role. It uses the "simplified-inline" | |||
method for specifying the content-schema. | method for specifying the content-schema. | |||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<instance-data-set | <instance-data-set | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"> | |||
<name>read-only-acm-rules</name> | <name>read-only-acm-rules</name> | |||
<content-schema> | <content-schema> | |||
<module>ietf-netconf-acm@2018-02-14</module> | <module>ietf-netconf-acm@2018-02-14</module> | |||
</content-schema> | </content-schema> | |||
skipping to change at page 11, line 36 ¶ | skipping to change at page 11, line 36 ¶ | |||
<name>read-all</name> | <name>read-all</name> | |||
<module-name>*</module-name> | <module-name>*</module-name> | |||
<access-operation>read</access-operation> | <access-operation>read</access-operation> | |||
<action>permit</action> | <action>permit</action> | |||
</rule> | </rule> | |||
</rule-list> | </rule-list> | |||
</nacm> | </nacm> | |||
</content-data> | </content-data> | |||
</instance-data-set> | </instance-data-set> | |||
Figure 2: Preloading access control data | Figure 3 | |||
2.2.3. UC5, Storing diagnostics data | 2.2.3. Storing diagnostics data | |||
The example illustrates UC5 Section 1. An instance data set is | The example reflects UC5 in Section 1. An instance data set is | |||
produced by the server every 15 minutes that contains statistics | produced by the server every 15 minutes that contains statistics | |||
about the NETCONF server. As a new set is produced periodically many | about the NETCONF server. As a new set is produced periodically many | |||
times a day a revision-date would be useless; instead a timestamp is | times a day a revision-date would be useless; instead a timestamp is | |||
included. | 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", | |||
"content-schema": { | "content-schema": { | |||
"same-schema-as-file": "file:///acme-diagnostics-schema.json" | "same-schema-as-file": "file:///acme-diagnostics-schema.json" | |||
skipping to change at page 12, line 30 ¶ | skipping to change at page 12, line 30 ¶ | |||
"in-rpcs ": "8711", | "in-rpcs ": "8711", | |||
"in-bad-rpcs ": "408", | "in-bad-rpcs ": "408", | |||
"out-rpc-errors ": "408", | "out-rpc-errors ": "408", | |||
"out-notifications": "39007" | "out-notifications": "39007" | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
Figure 3: Storing diagnostics data | Figure 4 | |||
3. YANG Instance Data Model | 3. YANG Instance Data Model | |||
3.1. Tree Diagram | 3.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: | |||
skipping to change at page 13, line 32 ¶ | skipping to change at page 13, line 32 ¶ | |||
+-- revision* [date] | +-- revision* [date] | |||
| +-- date string | | +-- date string | |||
| +-- description? string | | +-- description? string | |||
+-- timestamp? yang:date-and-time | +-- timestamp? yang:date-and-time | |||
+-- content-data? <anydata> | +-- content-data? <anydata> | |||
3.2. YANG Model | 3.2. YANG Model | |||
This YANG module imports typedefs from [RFC6991], identities from | This YANG module imports typedefs from [RFC6991], identities from | |||
[RFC8342] and the "structure" extension from | [RFC8342] and the "structure" extension from | |||
[I-D.ietf-netmod-yang-data-ext]. | [I-D.ietf-netmod-yang-data-ext]. It also references [RFC8525]. | |||
<CODE BEGINS> file "ietf-yang-instance-data@2020-04-02.yang" | <CODE BEGINS> file "ietf-yang-instance-data@2020-04-02.yang" | |||
module ietf-yang-instance-data { | module ietf-yang-instance-data { | |||
yang-version 1.1; | yang-version 1.1; | |||
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; | |||
import ietf-yang-structure-ext { | import ietf-yang-structure-ext { | |||
prefix sx; | prefix sx; | |||
reference | reference | |||
skipping to change at page 15, line 7 ¶ | skipping to change at page 15, line 7 ¶ | |||
revision 2020-04-02 { | revision 2020-04-02 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: YANG Instance Data Format"; | "RFC XXXX: YANG Instance Data Format"; | |||
} | } | |||
feature inline-content-schema { | feature inline-content-schema { | |||
description | description | |||
"This feature indicates that inline content-schema | "This feature indicates that inline content-schema | |||
option is supported."; | option is supported. Support for this feature might | |||
be documented only via out-of-band documentation."; | ||||
} | } | |||
typedef module-with-revision-date { | typedef module-with-revision-date { | |||
type string { | type string { | |||
pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*' + | pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*' + | |||
'(@\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1]))?'; | '(@\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1]))?'; | |||
pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; | pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; | |||
} | } | |||
description | description | |||
"A type definining a module name and an optional revision | "A type definining a module name and an optional revision | |||
date, e.g. ietf-yang-library@2016-06-21"; | date, e.g. ietf-yang-library@2016-06-21"; | |||
} | } | |||
sx:structure "instance-data-set" { | sx:structure "instance-data-set" { | |||
description | description | |||
"A data structure to define a format for | "A data structure to define a format for YANG instance | |||
YANG instance data sets. Consists of meta-data about | data. The majority of the YANG nodes provide meta-data | |||
the instance data set and the real content-data."; | about the instance data; the instance data itself is | |||
is contained only in the 'content-data' node."; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"An arbitrary name for the YANG instance data set. This | "An arbitrary name for the YANG instance data set. This | |||
value is primarily used for descriptive purposes. However, | value is primarily used for descriptive purposes. However, | |||
when the instance data set is saved to a file, then the | when the instance data set is saved to a file, then the | |||
filename MUST encode the name's value, per Section 3 | filename MUST encode the name's value, per Section 3 | |||
of RFC XXXX."; | of RFC XXXX."; | |||
} | } | |||
leaf format-version { | leaf format-version { | |||
skipping to change at page 16, line 4 ¶ | skipping to change at page 16, line 6 ¶ | |||
used to encode this 'instance-data-set'."; | used to encode this 'instance-data-set'."; | |||
} | } | |||
container content-schema { | container content-schema { | |||
description | description | |||
"The content schema used to create the instance data set. | "The content schema used to create the instance data set. | |||
If not present the user needs to obtain the information | If not present the user needs to obtain the information | |||
through external documents."; | through external documents."; | |||
choice content-schema-spec { | choice content-schema-spec { | |||
description | description | |||
"Specification of the content-schema."; | "Specification of the content-schema."; | |||
case simplified-inline { | case simplified-inline { | |||
leaf-list module { | leaf-list module { | |||
min-elements 1; | ||||
type module-with-revision-date; | type module-with-revision-date; | |||
description | description | |||
"The list of content defining YANG modules. | "The list of content defining YANG modules. | |||
The value SHALL start with the module name. | The value SHALL start with the module name. | |||
If the module contains a revision statement the | If the module contains a revision statement the | |||
revision date SHALL be included in the leaf-list | revision date SHALL be included in the leaf-list | |||
entry. If other methods (e.g., revision-label) are | entry. If other methods (e.g., revision-label) are | |||
defined to identify individual module revisions | defined to identify individual module revisions | |||
those MAY be used instead of using a revision date. | those MAY be used instead of using a revision date. | |||
skipping to change at page 17, line 14 ¶ | skipping to change at page 17, line 17 ¶ | |||
different module-sets for different datastores. In | different module-sets for different datastores. In | |||
this case the instance data set MUST contain the | this case the instance data set MUST contain the | |||
'datastore' leaf and instance data for the | 'datastore' leaf and instance data for the | |||
ietf-yang-library MUST also contain information | ietf-yang-library MUST also contain information | |||
specifying the module-set for the relevant datastore. | specifying the module-set for the relevant datastore. | |||
Subsequent items MAY specify YANG modules augmenting | Subsequent items MAY specify YANG modules augmenting | |||
the first module with useful data | the first module with useful data | |||
(e.g., revision label)."; | (e.g., revision label)."; | |||
reference | reference | |||
"RFC 8525"; | "RFC 8525: YANG Library"; | |||
} | } | |||
anydata inline-schema { | anydata inline-schema { | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Instance data corresponding to the YANG modules | "Instance data corresponding to the YANG modules | |||
specified in the inline-module nodes defining the set | specified in the inline-module nodes defining the set | |||
of content defining YANG modules for this | of content defining YANG modules for this | |||
instance-data-set."; | instance-data-set."; | |||
} | } | |||
} | } | |||
skipping to change at page 18, line 17 ¶ | skipping to change at page 18, line 20 ¶ | |||
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 unspecified."; | |||
} | } | |||
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. | |||
skipping to change at page 19, line 24 ¶ | skipping to change at page 19, line 27 ¶ | |||
implementation specific manner."; | implementation specific manner."; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
4. Security Considerations | 4. Security Considerations | |||
The YANG module defined in this document only defines a wrapper | The YANG module defined in this document only defines a wrapper | |||
structure specifying a format and a metadata header for YANG instance | structure specifying a format and a metadata header for YANG instance | |||
data defined by the content-schema, so it does not follow the | data defined by the content-schema. Because of this the the security | |||
security considerations template for YANG models. The instance data | considerations template for YANG models in section 3.7.1 in [RFC8407] | |||
is designed to be accessed as a stored file or over any file access | is not followed. The instance data is designed to be accessed as a | |||
method or protocol. | 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. | |||
The header part is not security sensitive. | The header part is not security sensitive. | |||
The security sensitivity of the instance data in the content part is | The security sensitivity of the instance data in the content part is | |||
completely dependent on the content schema. Depending on the nature | completely dependent on the content schema. Depending on the nature | |||
skipping to change at page 22, line 16 ¶ | skipping to change at page 22, line 18 ¶ | |||
Watsen, K., Auerswald, E., Farrel, A., and Q. WU, | Watsen, K., Auerswald, E., Farrel, A., and Q. WU, | |||
"Handling Long Lines in Inclusions in Internet-Drafts and | "Handling Long Lines in Inclusions in Internet-Drafts and | |||
RFCs", draft-ietf-netmod-artwork-folding-12 (work in | RFCs", draft-ietf-netmod-artwork-folding-12 (work in | |||
progress), January 2020. | progress), January 2020. | |||
[I-D.ietf-netmod-factory-default] | [I-D.ietf-netmod-factory-default] | |||
WU, Q., Lengyel, B., and Y. Niu, "A YANG Data Model for | WU, Q., Lengyel, B., and Y. Niu, "A YANG Data Model for | |||
Factory Default Settings", draft-ietf-netmod-factory- | Factory Default Settings", draft-ietf-netmod-factory- | |||
default-14 (work in progress), February 2020. | default-14 (work in progress), February 2020. | |||
[I-D.verdt-netmod-yang-module-versioning] | [I-D.ietf-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-ietf-netmod-yang-module- | |||
versioning-01 (work in progress), October 2019. | versioning-00 (work in progress), March 2020. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | |||
the Network Configuration Protocol (NETCONF)", RFC 6020, | the Network Configuration Protocol (NETCONF)", RFC 6020, | |||
DOI 10.17487/RFC6020, October 2010, | DOI 10.17487/RFC6020, October 2010, | |||
<https://www.rfc-editor.org/info/rfc6020>. | <https://www.rfc-editor.org/info/rfc6020>. | |||
[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>. | |||
[RFC8407] Bierman, A., "Guidelines for Authors and Reviewers of | ||||
Documents Containing YANG Data Models", BCP 216, RFC 8407, | ||||
DOI 10.17487/RFC8407, October 2018, | ||||
<https://www.rfc-editor.org/info/rfc8407>. | ||||
[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. Changes between revisions | Appendix A. Changes between revisions | |||
Note to RFC Editor (To be removed by RFC Editor) | Note to RFC Editor (To be removed by RFC Editor) | |||
v09 - v12 | ||||
v09 - v10 | ||||
o Editorial updates | o Editorial updates | |||
v08 - v09 | v08 - v09 | |||
o Removed reference to similar to get reply | o Removed reference to similar to get reply | |||
o Introduced artwork folding in the examples | o Introduced artwork folding in the examples | |||
v07 - v08 | v07 - v08 | |||
o Moved compatibility into appendix | o Moved compatibility into appendix | |||
o Renamed yid-version to format-version. Changed format to date of | o Renamed yid-version to format-version. Changed format to date of | |||
the YANG module | the YANG module | |||
skipping to change at page 25, line 11 ¶ | skipping to change at page 25, line 18 ¶ | |||
o Updated examples | o Updated examples | |||
o Moved detailed use case descriptions to appendix | o Moved detailed use case descriptions to appendix | |||
Appendix B. Backwards Compatibility | Appendix B. Backwards Compatibility | |||
The concept of backwards compatibility and what changes are backwards | The concept of backwards compatibility and what changes are backwards | |||
compatible are not defined for instance data sets as it is highly | compatible are not defined for instance data sets as it is highly | |||
dependent on the specific use case and the content-schema. | dependent on the specific use case and the content-schema. | |||
For instance data that is the result of a design or specification | For "instance data sets" that are the result of design or | |||
activity, some changes that may be good to avoid are listed below. | specification activity, some changes that may be good to avoid are | |||
listed below. | ||||
YANG uses the concept of managed entities identified by key values; | YANG uses the concept of managed entities identified by key values; | |||
if the connection between the represented entity and the key value is | if the connection between the represented entity and the key value is | |||
not preserved during an update, this may lead to the following | not preserved during an update, this may lead to the following | |||
problems. | problems. | |||
o If the key value of a list entry that represents the same managed | 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 | entity as before is changed, the user may mistakenly identify the | |||
list entry as new. | list entry as new. | |||
End of changes. 43 change blocks. | ||||
82 lines changed or deleted | 80 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/ |