draft-ietf-netmod-yang-instance-file-format-01.txt | draft-ietf-netmod-yang-instance-file-format-02.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: June 9, 2019 Cisco Systems, Inc. | Expires: August 30, 2019 Cisco Systems, Inc. | |||
December 6, 2018 | February 26, 2019 | |||
YANG Instance Data File Format | YANG Instance Data File Format | |||
draft-ietf-netmod-yang-instance-file-format-01 | draft-ietf-netmod-yang-instance-file-format-02 | |||
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 | |||
YANG server is not available. Data is often needed already in design | YANG server is not available. Data is often needed already at design | |||
time or needed by groups that do not have a live running YANG server | or implementation time or needed by groups that do not have a live | |||
available. This document specifies a standard file format for YANG | running YANG server available. This document specifies a standard | |||
instance data, which follows the syntax and semantic from existing | file format for YANG instance data (which follows the syntax and | |||
YANG models, re-using existing formats from <get> operation/request | semantic from existing YANG models, re-using the same format as the | |||
and decorates them with metadata. | reply to a <get> operation/request) and decorates it with metadata. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 June 9, 2019. | This Internet-Draft will expire on August 30, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.1. High Level Principles . . . . . . . . . . . . . . . . . . 4 | 2.1. High Level Principles . . . . . . . . . . . . . . . . . . 4 | |||
3. Instance Data File Format . . . . . . . . . . . . . . . . . . 4 | 3. Instance Data File Format . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Specifying the Target YANG Modules: target-ptr . . . . . 6 | 3.1. Specifying the Target YANG Modules: target-ptr . . . . . 6 | |||
3.1.1. IN-LINE Method . . . . . . . . . . . . . . . . . . . 7 | 3.1.1. INLINE Method . . . . . . . . . . . . . . . . . . . . 7 | |||
3.1.2. URI Method . . . . . . . . . . . . . . . . . . . . . 7 | 3.1.2. URI Method . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.2. Examples . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4. Data Life cycle . . . . . . . . . . . . . . . . . . . . . . . 11 | 4. Data Life cycle . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
5. Delivery of Instance Data . . . . . . . . . . . . . . . . . . 12 | 5. Delivery of Instance Data . . . . . . . . . . . . . . . . . . 13 | |||
6. YANG Model . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 6. Backwards Compatibility . . . . . . . . . . . . . . . . . . . 13 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 7. YANG Model . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | |||
8.1. URI Registration . . . . . . . . . . . . . . . . . . . . 15 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | |||
8.2. YANG Module Name Registration . . . . . . . . . . . . . . 15 | 9.1. URI Registration . . . . . . . . . . . . . . . . . . . . 17 | |||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | 9.2. YANG Module Name Registration . . . . . . . . . . . . . . 17 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 16 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 16 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 18 | |||
Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 17 | 11.2. Informative References . . . . . . . . . . . . . . . . . 19 | |||
Appendix B. Changes between revisions . . . . . . . . . . . . . 17 | Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 19 | |||
Appendix C. Detailed Use Cases - Non-Normative . . . . . . . . . 19 | Appendix B. Changes between revisions . . . . . . . . . . . . . 19 | |||
C.1. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 19 | Appendix C. Detailed Use Cases - Non-Normative . . . . . . . . . 21 | |||
C.1. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
C.1.1. Use Case 1: Early Documentation of Server | C.1.1. Use Case 1: Early Documentation of Server | |||
Capabilities . . . . . . . . . . . . . . . . . . . . 19 | Capabilities . . . . . . . . . . . . . . . . . . . . 22 | |||
C.1.2. Use Case 2: Preloading Data . . . . . . . . . . . . . 20 | C.1.2. Use Case 2: Preloading Data . . . . . . . . . . . . . 23 | |||
C.1.3. Use Case 3: Documenting Factory Default Settings . . 20 | C.1.3. Use Case 3: Documenting Factory Default Settings . . 23 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
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 RFC 2119 [RFC2119] RFC 8174 [RFC8174] when, and only when, they | |||
appear in all capitals, as shown here. | appear in all capitals, as shown here. | |||
Design time: A time during which a YANG model and the implementation | Instance Data Set: A named set of data items decorated with metadata | |||
behind it is created. Sometimes in other documents this period is | that can be used as instance data in a YANG data tree. | |||
divided into design and implementation time. | ||||
Instance Data Set: A named set of data items 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. | |||
Target YANG Module: A YANG module for which the instance data set | Target YANG Module: A YANG module for which the instance data set | |||
contains instance data, like ietf-yang-library in the examples. | contains instance data, like ietf-yang-library in the examples. | |||
YANG Instance Data, or just instance data for short, is data that | YANG Instance Data, or just instance data for short, is data that | |||
could be stored in a datastore and whose syntax and semantics is | could be stored in a datastore and whose syntax and semantics is | |||
defined by YANG models. | defined by YANG models. | |||
2. Introduction | 2. Introduction | |||
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 | |||
YANG server is not available. Data is often needed already in design | YANG server is not available. Data is often needed already at design | |||
time or needed by groups that do not have a live running YANG server | or implementation time or needed by groups that do not have a live | |||
available. To facilitate this off-line delivery of data this | running YANG server available. To facilitate this off-line delivery | |||
document specifies a standard format for YANG instance data sets and | of data this document specifies a standard format for YANG instance | |||
YANG instance data files. | data sets and YANG instance data files. | |||
The following is a list of already implemented and potential use | The following is a list of already implemented and potential use | |||
cases. | cases. | |||
UC1 Documentation of server capabilities | UC1 Documentation of server capabilities | |||
UC2 Preloading default configuration data | UC2 Preloading default configuration data | |||
UC3 Documenting Factory Default Settings | UC3 Documenting Factory Default Settings | |||
skipping to change at page 4, line 19 ¶ | skipping to change at page 4, line 14 ¶ | |||
outside the instance data set itself will define specific use cases. | outside the instance data set itself will define specific use cases. | |||
Use cases are listed here only to indicate the need for this work. | Use cases are listed here only to indicate the need for this work. | |||
2.1. High Level Principles | 2.1. High Level Principles | |||
The following is a list of the basic principles of the instance data | The following is a list of the basic principles of the instance data | |||
format: | format: | |||
P1 Two standard formats are based on the XML and the JSON encoding | P1 Two standard formats are based on the XML and the JSON encoding | |||
P2 Re-use existing formats from the <get> operation/request | P2 Re-use existing formats similar to the <get> operation/request | |||
P3 Add metadata about the instance data set | P3 Add metadata about the instance data set | |||
P4 A YANG instance data file shall contain only a single YANG | P4 A YANG instance data file shall contain only a single YANG | |||
instance data set | instance data set | |||
P5 A YANG instance data set may contain data for many target YANG | P5 A YANG instance data set may contain data for many target YANG | |||
modules | modules | |||
P6 Instance data may include configuration data, state data or a mix | P6 Instance data may include configuration data, state data or a mix | |||
skipping to change at page 5, line 10 ¶ | skipping to change at page 5, line 5 ¶ | |||
instance-data YANG module. The content-data is all data inside the | instance-data YANG module. The content-data is all data inside the | |||
anydata datanode, this carries the "real data" that we want to | anydata datanode, this carries the "real data" that we want to | |||
document/provide. The syntax and semantics of content-data is | document/provide. The syntax and semantics of content-data is | |||
defined by the target YANG modules. | defined by the target YANG modules. | |||
Two formats are specified that can be used to represent YANG instance | Two formats are specified that can be used to represent YANG instance | |||
data based on the XML and JSON encoding. Later as other YANG | data based on the XML and JSON encoding. Later as other YANG | |||
encodings (e.g. CBOR) are defined further instance data formats may | encodings (e.g. CBOR) are defined further instance data formats may | |||
be specified. | be specified. | |||
The content-data part of the XML format SHALL follow the format | The content-data part of the XML format SHALL follow the encoding | |||
returned for a NETCONF GET operation. The <content-data> anydata | rules defined in [RFC7950] for XML and [RFC7951] for JSON and MUST | |||
node SHALL contain all elements that would be inside the <data> | use UTF-8 character encoding. | |||
wrapper element of a reply to the <get> operation. Some XML | ||||
attributes (e.g. metadata like origin) MAY be absent. SW handling | ||||
YANG instance data MUST ignore XML attributes unknown to it, allowing | ||||
them to be used later for other purposes. | ||||
The content-data part of the JSON format SHALL follow the format of | It MAY include metadata as defined by [RFC7952]. | |||
the payload of the reply returned for a RESTCONF GET request directed | ||||
at the datastore resource: {+restconf}/data or | ||||
{+restconf}/ds/<datastore>. | ||||
Instance data MUST conform to the corresponding target YANG Modules | It MAY include entity-tags and timestamps as defined in [RFC8040] | |||
and follow the XML/JSON encoding rules as defined in [RFC7950] and | ||||
[RFC7951] and MUST use UTF-8 character encoding. A single instance | It MAY include an explicit tag for default values as defined in | |||
data set MAY contain data for any number of target YANG modules; if | [RFC6243] and [RFC8040] | |||
needed it MAY carry the complete configuration and state data set for | ||||
a YANG server. Default values SHOULD NOT be included. | It MAY include the origin metadata as specified in | |||
[I-D.ietf-netconf-nmda-netconf] and | ||||
[I-D.ietf-netconf-nmda-restconf] | ||||
It MAY include implementation specific metadata. Unknown metadata | ||||
MUST be ignored by users of YANG instance data, allowing it to be | ||||
used later for other purposes. | ||||
It MAY include implementation specific XML attributes. Unknown | ||||
attributes MUST be ignored by users of YANG instance data, | ||||
allowing them to be used later for other purposes. | ||||
The content-data part will be very similar to the result returned for | ||||
a NETCONF <get-data> or for a RESTCONF get operation. | ||||
The content-data part MUST conform to the corresponding target YANG | ||||
Modules. A single instance data set MAY contain data for any number | ||||
of target YANG modules; if needed it MAY carry the complete | ||||
configuration and state data set for a YANG 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 or require-instance=true constrains MAY be | mandatory, min-elements or require-instance=true constrains MAY be | |||
violated. | violated. | |||
The name of the file SHALL be of the form: | The name of the file SHALL be of the form: | |||
skipping to change at page 6, line 4 ¶ | skipping to change at page 6, line 11 ¶ | |||
The revision date is optional. ".filetype" SHALL be ".json" or ".xml" | The revision date is optional. ".filetype" SHALL be ".json" or ".xml" | |||
according to the format used. | according to the format used. | |||
Metadata, information about the data set itself SHALL be included in | Metadata, information about the data set itself SHALL be included in | |||
the instance data set. This data will be children of the top level | the instance data set. This data will be children of the top level | |||
instance-data-set container as defined in the ietf-instance-data YANG | instance-data-set container as defined in the ietf-instance-data YANG | |||
module. Metadata MUST include: | module. Metadata MUST include: | |||
o name of the instance data set | o name of the instance data set | |||
Metadata SHOULD include: | Metadata SHOULD include: | |||
o target-ptr: A pointer to the list of target YANG modules their | o target-ptr: A pointer to the list of target YANG modules their | |||
revision, supported features and deviations. | revision, supported features and deviations. | |||
o Revision date of the instance data set. If both this date and and | o An inline definition of target-modules, when the INLINE method is | |||
the date in the instance data file name are present they MUST have | used for the target-ptr | |||
the same value. | ||||
o Description of the instance data set. The description SHOULD | o 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 the | |||
lifetime of the YANG server. | lifetime of the YANG server. | |||
Metadata MAY include: | Metadata MAY include: | |||
o Organization responsible for the instance data set | o Organization responsible for the instance data set | |||
o Contact information | o Contact information | |||
o Information about the datastore associated with the instance data | o Information about the datastore associated with the instance data | |||
set e.g. the datastore from where the data was read or the | set e.g. the datastore from where the data was read or the | |||
datastore where the data could be loaded or the datastore which is | datastore where the data could be loaded or the datastore which is | |||
being documented. This information is optional, as often a single | being documented. This information is optional, as often a single | |||
datastore can not be specified. | datastore can not be specified. | |||
o Revision date of the instance data set. If both this date and and | ||||
the date in the instance data file name are present they MUST have | ||||
the same value. | ||||
o Timestamp: The date and time when the instance data set was last | o Timestamp: The date and time when the instance data set was last | |||
modified. | modified. | |||
o It is anticipated that different organizations will have the need | o It is anticipated that different organizations will have the need | |||
to augment the metadata with various other data nodes. | to augment the metadata with various other data nodes. | |||
3.1. Specifying the Target YANG Modules: target-ptr | 3.1. Specifying the Target YANG Modules: target-ptr | |||
To properly understand and use an instance data set the user needs to | To properly understand and use an instance data set the user needs to | |||
know the list of target YANG modules their revision, supported | know the list of target YANG modules their revision, supported | |||
features and deviations. The metadata "target-ptr" is used to | features and deviations. The metadata "target-ptr" is used to | |||
specify the YANG target module list. One of the following 3 options | specify the YANG target module list. One of the following options | |||
SHALL be used: | SHOULD be used: | |||
IN-LINE method: Include the needed information as part of instance | INLINE method: Include the needed information as part of instance | |||
data as defined by ietf-yang-library | data set as defined by e.g. ietf-yang-library | |||
URI method: Include a URI that points to the target module set. | URI method: Include a URI that points to the target module set. | |||
(if you don't want to repeat the info again and again) | (if you don't want to repeat the info again and again) | |||
EXTERNAL Method: Do not include the target-ptr as the target YANG | EXTERNAL Method: Do not include the target-ptr as the target YANG | |||
module set is already known, or the information is available | module set is already known, or the information is available | |||
through external documents. | through external documents. | |||
Additional methods e.g. a YANG-package based solution may be added | ||||
later. | ||||
Note, the specified target YANG modules only indicate the set of | Note, the specified target YANG modules only indicate the set of | |||
modules that were used to define this YANG instance data set. | modules that were used to define this YANG instance data set. | |||
Sometimes instance data may be used for a YANG server supporting a | Sometimes instance data may be used for a YANG server supporting a | |||
different YANG module set e.g. for UC2 preloading data the instance | different YANG module set e.g. for "UC2 Preloading Data" the instance | |||
data set may not be updated every time the YANG modules on the YANG | data set may not be updated every time the YANG modules on the YANG | |||
server are updated, an unchanged instance data set may still be | server are updated, an unchanged instance data set may still be | |||
usable. Whether the instance data set is usable for a possibly | usable. Whether the instance data set is usable for a possibly | |||
different real-life target YANG module set depends on the | different real-life target YANG module set depends on many factors | |||
compatibility between the specified target and the real-life target | including the compatibility between the specified target and the | |||
YANG module set (considering modules, revisions, features, | real-life target YANG module set (considering modules, revisions, | |||
deviations). | features, deviations), the scope of the instance data, etc. | |||
3.1.1. IN-LINE Method | 3.1.1. INLINE Method | |||
Target-ptr MUST bet set to: | One or more inline-target-spec elements SHALL be specified. The | |||
first one specifies ietf-yang-library or a similar YANG module | ||||
listing target YANG modules with their name, revision-date, | ||||
supported-features and deviations. Deviations or unsupported | ||||
features MUST NOT remove any of the above data from the module. | ||||
Using ietf-yang-library MUST be supported. | ||||
'inline:ietf-yang-library@' revision-date '.yang' | E.g. ietf-yang-library@2016-06-21.yang | |||
E.g. inline:ietf-yang-library@2016-06-21.yang | As some versions of ietf-yang-library MAY contain different module- | |||
sets for different datastores, if multiple module-sets are defined, | ||||
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. | ||||
The revision date in the inline target-ptr is mandatory, it specifies | Subsequent inline-target-spec elements MAY specify YANG modules | |||
the revision of the ietf-yang-library used. The first group of data | augmenting the first module with useful data (e.g. a semantic | |||
inside the "anydata data" element MUST be instance data targeted at | version). | |||
the ietf-yang-library. This data SHALL specify the target YANG | ||||
modules, revisions, supported features and deviations for this and | When using the inline method a 'target-modules' element MUST be | |||
all the other target YANG modules. | present. This SHALL contain instance data corresponding to the YANG | |||
modules specified in the inline-target-spec elements specifying the | ||||
set of target YANG modules for this instance-data-set. | ||||
3.1.2. URI Method | 3.1.2. URI Method | |||
Target-ptr MUST bet set to a URI that references another YANG | A target-uri element SHALL contain a URI that references another YANG | |||
instance data file. The current instance data file will use the same | instance data file. The current instance data file will use the same | |||
set of target YANG modules, revisions, supported features and | set of target YANG modules, revisions, supported features and | |||
deviations as the other referenced YANG instance data file. | deviations as the referenced YANG instance data file. | |||
The referenced instance data file will usually contain data only for | The referenced instance data file will usually contain data only for | |||
ietf-yang-library to specify the target YANG modules for the original | ietf-yang-library to specify the target YANG modules for the original | |||
instance data file. | instance data file. | |||
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 target YANG modules in the instance data | overhead of specifying the target YANG modules in the instance data | |||
file: E.g. In Use Case 6, when the system creates a diagnostic file | file: E.g. In Use Case 6, when the system creates a diagnostic file | |||
every 10 minutes to document the state of the YANG server. | every 10 minutes to document the state of the YANG server. | |||
skipping to change at page 8, line 11 ¶ | skipping to change at page 8, line 37 ¶ | |||
or might use the URI method to reference further instance data | or might use the URI method to reference further instance data | |||
file(s). However at the end of this reference chain there MUST be an | file(s). However at the end of this reference chain there MUST be an | |||
instance data file using the in-line method. | instance data file using the in-line method. | |||
If a referenced instance data file is not available the revision | If a referenced instance data file is not available the revision | |||
data, supported features and deviations for the target YANG modules | data, supported features and deviations for the target YANG modules | |||
are unknown. | are unknown. | |||
3.2. Examples | 3.2. Examples | |||
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 for a YANG server. It uses the inline method for the target- | modules and Netconf capabilities for a YANG server. It uses the | |||
ptr. | inline method for the target-ptr. | |||
<?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> | |||
<target-ptr>inline:ietf-yang-library@2016-06-21.yang</target-ptr> | <inline-target-spec> | |||
ietf-yang-library@2016-06-21.yang | ||||
</inline-target-spec> | ||||
<target-modules> | ||||
<module-state xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | ||||
<module> | ||||
<name>ietf-yang-library</name> | ||||
<revision>2016-06-21</revision> | ||||
</module> | ||||
<module> | ||||
<name>ietf-netconf-monitoring</name> | ||||
<revision>2010-10-04</revision> | ||||
</module> | ||||
</module-state> | ||||
</target-modules> | ||||
<revision> | <revision> | |||
<date>2108-01-25</date> | <date>2108-01-25</date> | |||
<description>Initial version</description> | <description>Initial version</description> | |||
</revision> | </revision> | |||
<description>Defines the minimal set of modules that any acme-router | <description>Defines the minimal set of modules that any acme-router | |||
will contain.</description> | will contain.</description> | |||
<contact>info@acme.com</contact> | <contact>info@acme.com</contact> | |||
<content-data> | <content-data> | |||
<!-- The example lists only 4 modules, but it could list the | <!-- The example lists only 4 modules, but it could list the | |||
full set of supported modules for a YANG server, potentially many | full set of supported modules for a YANG server, potentially many | |||
dozens of modules --> | dozens of modules --> | |||
<module-state xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | <module-state 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> | |||
<namespace>urn:ietf:params:xml:ns:yang:ietf-yang-library</namespace> | <namespace> | |||
urn:ietf:params:xml:ns:yang:ietf-yang-library | ||||
</namespace> | ||||
<conformance-type>implement</conformance-type> | <conformance-type>implement</conformance-type> | |||
</module> | </module> | |||
<module> | <module> | |||
<name>ietf-system</name> | <name>ietf-system</name> | |||
<revision>2014-08-06</revision> | <revision>2014-08-06</revision> | |||
<namespace>urn:ietf:params:xml:ns:yang:ietf-system</namespace> | <namespace>urn:ietf:params:xml:ns:yang:ietf-system</namespace> | |||
<feature>sys:authentication</feature> | <feature>sys:authentication</feature> | |||
<feature>sys:local-users</feature> | <feature>sys:local-users</feature> | |||
<feature>sys:ntp</feature> | ||||
<deviation> | <deviation> | |||
<name>acme-system-ext</name> | <name>acme-system-ext</name> | |||
<revision>2018-08-06</revision> | <revision>2018-08-06</revision> | |||
</deviation> | </deviation> | |||
<conformance-type>implement</conformance-type> | <conformance-type>implement</conformance-type> | |||
</module> | </module> | |||
<module> | <module> | |||
<name>ietf-yang-types</name> | <name>ietf-yang-types</name> | |||
<revision>2013-07-15</revision> | <revision>2013-07-15</revision> | |||
<namespace>urn:ietf:params:xml:ns:yang:ietf-yang-types</namespace> | <namespace>urn:ietf:params:xml:ns:yang:ietf-yang-types | |||
</namespace> | ||||
<conformance-type>import</conformance-type> | <conformance-type>import</conformance-type> | |||
</module> | </module> | |||
<module> | <module> | |||
<name>acme-system-ext</name> | <name>acme-system-ext</name> | |||
<revision>2018-08-06</revision> | <revision>2018-08-06</revision> | |||
<namespace>urn:rdns:acme.com:oammodel:acme-system-ext</namespace> | <namespace>urn:rdns:acme.com:oammodel:acme-system-ext | |||
</namespace> | ||||
<conformance-type>implement</conformance-type> | <conformance-type>implement</conformance-type> | |||
</module> | </module> | |||
</module-state> | </module-state> | |||
<netconf-state> | ||||
<capabilities> | ||||
<capability> | ||||
urn:ietf:params:netconf:capability:validate:1.1 | ||||
</capability> | ||||
</capabilities> | ||||
</netconf-state> | ||||
</content-data> | </content-data> | |||
</instance-data-set> | </instance-data-set> | |||
Figure 1: XML Instance Data Set - Use case 1, Documenting server | Figure 1: XML Instance Data Set - Use case 1, Documenting server | |||
capabilities | capabilities | |||
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 the target- | read-only operator role. It uses the inline method for the target- | |||
ptr. | ptr. | |||
<?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> | |||
<target-ptr>inline:ietf-yang-library@2016-06-21.yang</target-ptr> | <inline-target-spec>ietf-yang-library@2016-06-21.yang | |||
</inline-target-spec> | ||||
<target-modules> | ||||
<module-state xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | ||||
<module> | ||||
<name>ietf-netconf-acm</name> | ||||
<revision>2012-02-22</revision> | ||||
</module> | ||||
</module-state> | ||||
</target-modules> | ||||
<revision> | <revision> | |||
<date>2018-01-25</date> | <date>2018-01-25</date> | |||
<description>Initial version</description> | <description>Initial version</description> | |||
</revision> | </revision> | |||
<description>Access control rules for a read-only role.</description> | <description>Access control rules for a read-only role.</description> | |||
<contact>info@acme.com</contact> | <contact>info@acme.com</contact> | |||
<content-data> | <content-data> | |||
<module-state xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"> | ||||
<module> | ||||
<name>ietf-yang-library</name> | ||||
<revision>2016-06-21</revision> | ||||
</module> | ||||
<module> | ||||
<name>ietf-netconf-acm</name> | ||||
<revision>2012-02-22</revision> | ||||
</module> | ||||
</module-state> | ||||
<nacm xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"> | <nacm xmlns="urn:ietf:params:xml:ns:yang:ietf-netconf-acm"> | |||
<enable-nacm>true</enable-nacm> | <enable-nacm>true</enable-nacm> | |||
<read-default>deny</read-default> | <read-default>deny</read-default> | |||
<exec-default>deny</exec-default> | <exec-default>deny</exec-default> | |||
<rule-list> | <rule-list> | |||
<name>read-only-role</name> | <name>read-only-role</name> | |||
<group>read-only-group</group> | <group>read-only-group</group> | |||
<rule> | <rule> | |||
<name>read-all</name> | <name>read-all</name> | |||
<module-name>*</module-name> | <module-name>*</module-name> | |||
skipping to change at page 10, line 50 ¶ | skipping to change at page 11, line 49 ¶ | |||
</rule-list> | </rule-list> | |||
</nacm> | </nacm> | |||
</content-data> | </content-data> | |||
</instance-data-set> | </instance-data-set> | |||
Figure 2: XML Instance Data Set - Use case 2, Preloading access | Figure 2: XML Instance Data Set - Use case 2, Preloading access | |||
control data | control data | |||
The following example is based on UC6 Storing diagnostics data. An | The following example is based on UC6 Storing diagnostics data. An | |||
instance data set is produced by the YANG server every 15 minutes | instance data set is produced by the YANG server every 15 minutes | |||
that contains statistics about netconf. As a new set is produced | that contains statistics about NETCONF. As a new set is produced | |||
automatically a revision-date would be useless; instead a timestamp | periodically multiple times a day a revision-date would be useless; | |||
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", | |||
"target-ptr": "file:///acme-netconf-diagnostics-yanglib.json", | "target-uri": "file:///acme-netconf-diagnostics-yanglib.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", | |||
"in-bad-hellos ": "32", | "in-bad-hellos ": "32", | |||
"in-sessions ": "397", | "in-sessions ": "397", | |||
"dropped-sessions ": "87", | "dropped-sessions ": "87", | |||
skipping to change at page 11, line 43 ¶ | skipping to change at page 12, line 43 ¶ | |||
Data defined or documented in YANG instance data sets may be used for | Data defined or documented in YANG instance data sets may be used for | |||
preloading a YANG server with this data, but the server may populate | preloading a YANG server with this data, but the server may populate | |||
the data without using the actual file in which case the instance | the data without using the actual file in which case the instance | |||
data file is only used as documentation. | data file is only used as documentation. | |||
While such data will usually not change, data documented by instance | While such data will usually not change, data documented by instance | |||
data sets MAY be changed by the YANG server itself or by management | data sets MAY be changed by the YANG server itself or by management | |||
operations. It is out of scope for this document to specify a method | operations. It is out of scope for this document to specify a method | |||
to prevent this. Whether such data changes and if so, when and how, | to prevent this. Whether such data changes and if so, when and how, | |||
SHOULD be described either in the instance data file description | SHOULD be described either in the instance data set's description | |||
statement or in some other implementation specific manner. | statement or in some other implementation specific manner. | |||
YANG instance data is a snap-shot of information at a specific point | YANG instance data is a snap-shot of information at a specific point | |||
of time. If the data changes afterwards this is not represented in | of time. If the data changes afterwards this is not represented in | |||
the instance data set anymore, the valid values can be retrieved in | the instance data set anymore, the valid values can be retrieved in | |||
run-time via Netconf/Restconf | run-time via NETCONF/RESTCONF. | |||
Notifications about the change of data documented by instance data | Notifications about the change of data documented by instance data | |||
sets may be supplied by e.g. the Yang-Push mechanism, but it is out | sets may be supplied by e.g. the Yang-Push mechanism, but it is out | |||
of scope for this document. | of scope for this document. | |||
5. Delivery of Instance Data | 5. 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 SHOULD be available without the need | specification or design effort SHOULD be available without the need | |||
for a live YANG server e.g. via download from the vendor's website, | for a live YANG server e.g. via download from the vendor's website, | |||
or in any other way product documentation is distributed. | or in any other way 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. UC6 documenting diagnostic data. | server itself e.g. UC6 documenting diagnostic data. | |||
6. YANG Model | 6. Backwards Compatibility | |||
<CODE BEGINS> file "ietf-yang-instance-data.yang" | 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 target YANG model. | ||||
However as instance data does use the concept of managed entities | ||||
identified by key values the following guidelines are provided: | ||||
module ietf-yang-instance-data { | o For list entries representing the same managed entity as | |||
yang-version 1.1; | previously key values SHOULD NOT be changed. | |||
namespace | ||||
"urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"; | ||||
prefix yid ; | ||||
import ietf-yang-data-ext { prefix yd; } | o The meaning of list entries, representing the same managed entity | |||
import ietf-datastores { prefix ds; } | as previously, SHOULD NOT be changed e.g. redefining an alarm-type | |||
import ietf-inet-types { prefix inet; } | but not changing its alarm-type-id should be avoided. | |||
import ietf-yang-types { prefix yang; } | ||||
organization "IETF NETMOD Working Group"; | o Keys for previously removed list entries SHOULD NOT be reused if | |||
contact | they represent a different meaning. | |||
"WG Web: <https://datatracker.ietf.org/wg/netmodf/> | ||||
WG List: <mailto:netmod@ietf.org> | ||||
Author: Balazs Lengyel | 7. YANG Model | |||
<mailto:balazs.lengyel@ericsson.com>"; | ||||
description "The module defines the structure and content of YANG | <CODE BEGINS> file "ietf-yang-instance-data.yang" | |||
instance data sets."; | module ietf-yang-instance-data { | |||
yang-version 1.1; | ||||
namespace | ||||
"urn:ietf:params:xml:ns:yang:ietf-yang-instance-data"; | ||||
prefix yid ; | ||||
revision 2018-11-30 { | import ietf-yang-data-ext { prefix yd; } | |||
description "Initial revision."; | import ietf-datastores { prefix ds; } | |||
reference "RFC XXXX: YANG Instance Data Format"; | import ietf-inet-types { prefix inet; } | |||
} | import ietf-yang-types { prefix yang; } | |||
yd:yang-data instance-data-format { | organization "IETF NETMOD Working Group"; | |||
container instance-data-set { | contact | |||
description "Auxiliary container to carry meta-data for | "WG Web: <https://datatracker.ietf.org/wg/netmodf/> | |||
the complete instance data set."; | WG List: <mailto:netmod@ietf.org> | |||
leaf name { | Author: Balazs Lengyel | |||
type string; | <mailto:balazs.lengyel@ericsson.com>"; | |||
mandatory true; | ||||
description "Name of the YANG instance data set."; | ||||
} | ||||
leaf target-ptr { | description "The module defines the structure and content of YANG | |||
type union { | instance data sets."; | |||
type string { | ||||
pattern 'inline:ietf-yang-library@\d{4}-\d{2}-\d{2}\.yang'; | ||||
} | ||||
type inet:uri; | ||||
} | ||||
description "A pointer to the list of target YANG modules | ||||
their revisions, supported features and deviations. | ||||
target-ptr SHALL use one of the following formats: | ||||
IN-LINE format: target-ptr should bet set to: | revision 2019-02-20 { | |||
'inline:ietf-yang-library@' revision-date '.yang' | description "Initial revision."; | |||
E.g. inline:ietf-yang-library@2016-06-21.yang | reference "RFC XXXX: YANG Instance Data Format"; | |||
The revision date is mandatory. When using the in-line | } | |||
format the first group of data inside the content-data | ||||
node MUST be instance data targeted at the | ||||
ietf-yang-library. This data SHALL specify the target YANG | ||||
modules, revisions, supported features and deviations for | ||||
this and all the other target YANG modules of the set. | ||||
URI format. target-ptr MUST be a URI that references | yd:yang-data instance-data-format { | |||
another YANG instance data file. | container instance-data-set { | |||
This instance data file will use the same set of target | description "Auxiliary container to carry meta-data for | |||
YANG modules, revisions, supported features and deviations | the complete instance data set."; | |||
as this other referenced YANG instance data file."; | ||||
} | ||||
leaf description { type string; } | leaf name { | |||
type string; | ||||
mandatory true; | ||||
description "Name of the YANG instance data set."; | ||||
} | ||||
leaf contact { | choice target-ptr { | |||
type string; | description "A pointer to the list of target YANG modules | |||
description "Contact information for the person or | their revisions, supported features and deviations."; | |||
organization to whom queries concerning this | ||||
instance data set should be sent."; | ||||
} | ||||
leaf organization { | case inline { | |||
type string; | leaf-list inline-target-spec { | |||
description "Organization responsible for the instance | type string { | |||
data set."; | pattern '.+@\d{4}-\d{2}-\d{2}\.yang'; | |||
} | } | |||
min-elements 1; | ||||
ordered-by user; | ||||
description | ||||
"Indicates that target modules are specified inline. | ||||
Each value MUST be a YANG Module name including the | ||||
revision-date as defined for YANG file names in RFC7950. | ||||
leaf datastore { | E.g. ietf-yang-library@2016-06-21.yang | |||
type ds:datastore-ref; | ||||
description "The identity of the datastore with which the | ||||
instance data set is associated. If a single specific | ||||
datastore can not be specified, the leaf MUST be absent. | ||||
If this leaf is absent, then the datastore to which the | The first item is either ietf-yang-library or some other | |||
instance data belongs is undefined."; | 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 defined, 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. | ||||
list revision { | Subsequent items MAY specify YANG modules augmenting the | |||
key date; | first module with useful data (e.g. a semantic version)."; | |||
description "Instance data sets that are produced as | } | |||
a result of some sort of specification or design effort | anydata target-modules { | |||
SHOULD have at least one revision entry. For every | mandatory true; | |||
published editorial change, a new one SHOULD be added | description "Instance data corresponding to the YANG modules | |||
in front of the revisions sequence so that all | specified in the inline-target-spec nodes defining the set | |||
revisions are in reverse chronological order. | of target YANG modules for this instance-data-set."; | |||
} | ||||
} | ||||
For instance data sets that are read from | case uri { | |||
or produced by the YANG server or otherwise | leaf target-uri { | |||
subject to frequent updates or changes, revision | type inet:uri; | |||
SHOULD NOT be present"; | description | |||
"A reference to another YANG instance data file. | ||||
This instance data file will use the same set of target | ||||
YANG modules, revisions, supported features and deviations | ||||
as the referenced YANG instance data file."; | ||||
} | ||||
} | ||||
} | ||||
leaf date { | leaf description { type string; } | |||
type string { | ||||
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; } | leaf contact { | |||
} | type string; | |||
description "Contact information for the person or | ||||
organization to whom queries concerning this | ||||
instance data set should be sent."; | ||||
} | ||||
leaf timestamp { | leaf organization { | |||
type yang:date-and-time; | type string; | |||
description "The date and time when the instance data set | description "Organization responsible for the instance | |||
was last modified. | data set."; | |||
} | ||||
For instance data sets that are read from or produced | leaf datastore { | |||
by the YANG server or otherwise subject to frequent | type ds:datastore-ref; | |||
updates or changes, timestamp SHOULD be present"; | description "The identity of the datastore with which the | |||
} | instance data set is associated. If a single specific | |||
anydata content-data { | datastore can not be specified, the leaf MUST be absent. | |||
mandatory true; | ||||
description "Contains the real instance data. | ||||
The data MUST conform to the relevant YANG Modules."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | If this leaf is absent, then the datastore to which the | |||
instance data belongs is undefined."; | ||||
} | ||||
7. Security Considerations | list revision { | |||
key date; | ||||
description "Instance data sets that are produced as | ||||
a result of some sort of specification or design effort | ||||
SHOULD have at least one revision entry. For every | ||||
published editorial change, a new one SHOULD be added | ||||
in front of the revisions sequence so that all | ||||
revisions are in reverse chronological order. | ||||
For instance data sets that are read from | ||||
or produced by the YANG server or otherwise | ||||
subject to frequent updates or changes, revision | ||||
SHOULD NOT be present"; | ||||
leaf date { | ||||
type string { | ||||
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; } | ||||
} | ||||
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 the YANG server or otherwise subject to frequent | ||||
updates or changes, timestamp SHOULD be present"; | ||||
} | ||||
anydata content-data { | ||||
mandatory true; | ||||
description "Contains the real instance data. | ||||
The data MUST conform to the relevant YANG Modules."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
8. Security Considerations | ||||
Depending on the nature of the instance data, instance data files MAY | Depending on the nature of the instance data, instance data files MAY | |||
need to be handled in a secure way. The same type of handling should | need to be handled in a secure way. The same type of handling should | |||
be applied, that would be needed for the result of a <get> operation | be applied, that would be needed for the result of a <get> operation | |||
returning the same data. | returning the same data. | |||
8. IANA Considerations | 9. IANA Considerations | |||
This document registers one URI and one YANG module. | This document registers one URI and one YANG module. | |||
8.1. URI Registration | 9.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. | |||
8.2. YANG Module Name Registration | 9.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 | |||
9. Acknowledgments | 10. 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 | |||
Clark, Martin Bjorklund, Ladislav Lhotka, Qin Wu and other members of | Clark, Martin Bjorklund, Ladislav Lhotka, Qin Wu and other members of | |||
the Netmod WG. | the Netmod WG. | |||
10. References | 11. References | |||
10.1. Normative References | 11.1. Normative References | |||
[I-D.ietf-netconf-nmda-netconf] | ||||
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | ||||
and R. Wilton, "NETCONF Extensions to Support the Network | ||||
Management Datastore Architecture", draft-ietf-netconf- | ||||
nmda-netconf-08 (work in progress), October 2018. | ||||
[I-D.ietf-netconf-nmda-restconf] | ||||
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | ||||
and R. Wilton, "RESTCONF Extensions to Support the Network | ||||
Management Datastore Architecture", draft-ietf-netconf- | ||||
nmda-restconf-05 (work in progress), October 2018. | ||||
[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 | |||
Extensions", draft-ietf-netmod-yang-data-ext-01 (work in | Extensions", draft-ietf-netmod-yang-data-ext-01 (work in | |||
progress), March 2018. | progress), March 2018. | |||
[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>. | |||
[RFC6243] Bierman, A. and B. Lengyel, "With-defaults Capability for | ||||
NETCONF", RFC 6243, DOI 10.17487/RFC6243, June 2011, | ||||
<https://www.rfc-editor.org/info/rfc6243>. | ||||
[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>. | |||
10.2. Informative References | [RFC7952] Lhotka, L., "Defining and Using Metadata with YANG", | |||
RFC 7952, DOI 10.17487/RFC7952, August 2016, | ||||
<https://www.rfc-editor.org/info/rfc7952>. | ||||
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
<https://www.rfc-editor.org/info/rfc8040>. | ||||
11.2. Informative References | ||||
[I-D.ietf-ccamp-alarm-module] | [I-D.ietf-ccamp-alarm-module] | |||
Vallin, S. and M. Bjorklund, "YANG Alarm Module", draft- | Vallin, S. and M. Bjorklund, "YANG Alarm Module", draft- | |||
ietf-ccamp-alarm-module-06 (work in progress), November | ietf-ccamp-alarm-module-07 (work in progress), January | |||
2018. | 2019. | |||
[I-D.ietf-netconf-rfc7895bis] | [I-D.ietf-netconf-rfc7895bis] | |||
Bierman, A., Bjorklund, M., Schoenwaelder, J., Watsen, K., | Bierman, A., Bjorklund, M., Schoenwaelder, J., Watsen, K., | |||
and R. Wilton, "YANG Library", draft-ietf-netconf- | and R. Wilton, "YANG Library", draft-ietf-netconf- | |||
rfc7895bis-07 (work in progress), October 2018. | rfc7895bis-07 (work in progress), October 2018. | |||
[I-D.ietf-netconf-yang-push] | [I-D.ietf-netconf-yang-push] | |||
Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- | Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- | |||
Nygaard, E., Bierman, A., and B. Lengyel, "Subscription to | Nygaard, E., Bierman, A., and B. Lengyel, "Subscription to | |||
YANG Datastores", draft-ietf-netconf-yang-push-20 (work in | YANG Datastores", draft-ietf-netconf-yang-push-22 (work in | |||
progress), October 2018. | progress), February 2019. | |||
[I-D.wu-netconf-restconf-factory-restore] | [I-D.wu-netconf-restconf-factory-restore] | |||
Wu, Q., Lengyel, B., and Y. Niu, "Factory default | Wu, Q., Lengyel, B., and Y. Niu, "Factory default | |||
Setting", draft-wu-netconf-restconf-factory-restore-03 | Setting", draft-wu-netconf-restconf-factory-restore-03 | |||
(work in progress), October 2018. | (work in progress), October 2018. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
skipping to change at page 17, line 33 ¶ | skipping to change at page 19, line 49 ¶ | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
Appendix A. Open Issues | Appendix A. Open Issues | |||
o Augmenting metadata must be possible. As of now it looks like | o Augmenting metadata must be possible. As of now it looks like | |||
yang-data-ext will solve that. If not, define instance data as | yang-data-ext will solve that. If not, define instance data as | |||
regular YANG instead of yd:yang-data. | regular YANG instead of yd:yang-data. | |||
Appendix B. Changes between revisions | Appendix B. Changes between revisions | |||
v01 - v02 | ||||
o Removed design time from terminology | ||||
o Defined the format of the content-data part by referencing various | ||||
RFCs and drafts instead of the result of the get-data and get | ||||
operations. | ||||
o Changed target-ptr to a choice | ||||
o Inline target-ptr may include augmenting modules and alternatives | ||||
to ietf-yang-library | ||||
o Moved list of target modules into a separate <target-modules> | ||||
element. | ||||
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 | |||
skipping to change at page 20, line 11 ¶ | skipping to change at page 22, line 49 ¶ | |||
this. Moreover the network operator's decision to buy a vendor's | this. Moreover the network operator's decision to buy a vendor's | |||
product may even be influenced by the network node's OAM feature set | product may even be influenced by the network node's OAM feature set | |||
documented as the Yang server's capabilities. | documented as the Yang server's capabilities. | |||
Beside NMS implementors, system integrators and many others also need | Beside NMS implementors, system integrators and many others also need | |||
the same information early. Examples could be model driven testing, | the same information early. Examples could be model driven testing, | |||
generating documentation, etc. | generating documentation, etc. | |||
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 addition or removal of HW. They are | upgrade or due to licensing or addition or removal of HW. They are | |||
usually defined by a vendor in design time, before the product is | usually defined by a vendor at design time, before the product is | |||
released. It feasible and advantageous to define/document them early | released. It feasible and advantageous to define/document them early | |||
e.g. in a YANG instance data File. | 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 | C.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 for which often a simple default | by the operator, however for which often a simple default | |||
End of changes. 81 change blocks. | ||||
241 lines changed or deleted | 377 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/ |