Martin Bjorklund <m...@tail-f.com> writes: > Hi Benoit, > > Benoit Claise <bcla...@cisco.com> wrote: >> Dear all, >> >> Here is part 1 of my AD review. >> >> I found this useful: >> http://tools.ietf.org/rfcdiff/rfcdiff.pyht?url1=http://www.ietf.org/rfc/rfc6020.txt&url2=http://www.ietf.org/id/draft-ietf-netmod-rfc6020bis-11.txt >> >> - Do we want to mention RESTCONF in the abstract? From the new charter: >> >> The NETMOD working group has defined the data modeling language >> YANG, which can be used to specify network management data models >> that are transported over such protocols as NETCONF and RESTCONF. >> >> OLD: >> >> YANG is a data modeling language used to model configuration data, >> state data, remote procedure calls, and notifications for network >> management protocols like the Network Configuration Protocol >> (NETCONF). >> >> NEW: >> >> YANG is a data modeling language used to model configuration data, >> state data, remote procedure calls, and notifications for network >> management protocols transported over such protocols as Network >> Configuration Protocol (NETCONF) and RESTCONF. This document specifies >> the YANG mappings to NETCONF. > > The first paragraph in the introduction mentions other protocols; > RESCTONF and CoMI. My personal opinion is that this is sufficient, > but I'd like to hear what others think. > >> - Section 1.1 >> Can we want to stress the backwards incompatible changes from YANG >> version 1 in a specific paragraph? > > Ok, this is a good idea. I'll move them to a separate list. > > >> I see >> o Changed the rules for the interpretation of escaped characters in >> double quoted strings. This is an backwards incompatible change >> from YANG version 1. A module that uses a character sequence that >> is now illegal must change the string to match the new rules. See >> Section 6.1.3 >> >> <https://tools.ietf.org/html/draft-ietf-netmod-rfc6020bis-11#section-6.1.3> >> for details. >> >> o An unquoted string cannot contain any single or double quote >> characters. This is an backwards incompatible change from YANG >> version 1. >> >> >> There is section 12, but this is not exactly that. >> >> Have we made an analysis of the 38 RFC-produced YANG modules? Any >> facing issues with 1.1 compilation? > > I have tested to put "yang-version 1.1;" into all RFC-published > modules, and then ran pyang on them w/o any issues. > >> - Section 1.1 >> Since this document introduces the NETCONF mapping, the protocol >> change must be included in section 1.1 >> Example: no NETCONF capability exchange in YANG 1.1, we use >> exclusively the YANG library >> Any other ones? >> - Section 3 >> o anydata: A data node that can contain an unknown set of nodes that >> can be modelled by YANG. >> >> NEW >> >> o anydata: A data node that can contain an unknown set of nodes that >> can be modelled by YANG, except anyxml, but for which the data >> model is not known at module design time. > > Ok, but I'd say: > > NEW: > > o anydata: A data node that can contain an unknown set of nodes that > can be modelled by YANG, except anyxml. > > This is just a summary; the details are to be found in later sections. > > >> - Terminology: >> The following terms are defined in [RFC6241 >> <https://tools.ietf.org/html/rfc6241>]: >> >> ... >> >> o configuration datastore: a configuration datastore is an >> instantiated data tree with configuration data >> >> o datastore: an instantiated data tree >> >> RFC6241 has different definition for "configuration datastore" and >> "datastore". >> I would just provide the pointer to the RFC 6241 definitions. >> If you intend to provide an adapted definition for the YANG mappings, >> then you should say so. > > How about: > > OLD: > > o configuration datastore: a configuration datastore is an > instantiated data tree with configuration data > > o datastore: an instantiated data tree > > NEW: > > o configuration datastore: When modelled with YANG, a configuration > datastore is an instantiated data tree with configuration data > > o datastore: When modelled with YANG, an instantiated data tree > > > > >> - Section 4.1 >> >> YANG models can describe constraints to be enforced on the data, >> restricting the appearance or value of nodes based on the presence or >> value of other nodes in the hierarchy. >> >> I was looking for an example of appearance. >> NEW? >> YANG models can describe constraints to be enforced on the data, >> restricting the appearance (for example, with the "when" statement) >> or value of nodes based on the presence or value of other nodes in >> the hierarchy. > > This is very early in the document, and the text tries to give a very > high level function overview. I am not sure that mentioning "when" at > this time actually helps a first time reader. I would prefer to > leave it as it is. > > >> - section 4.2.2.3, Container Nodes >> >> A container is used to group related nodes in a subtree. A container >> has only child nodes and no value. A container may contain any >> number of child nodes of any type (leafs, lists, containers, leaf- >> lists, and actions). >> And notification, right? This should be added > > Ok. > >> container-stmt = container-keyword sep identifier-arg-str optsep >> (";" / >> "{" stmtsep >> ;; these stmts can appear in any order >> [when-stmt] >> *if-feature-stmt >> *must-stmt >> [presence-stmt >> >> <https://tools.ietf.org/html/draft-ietf-netmod-rfc6020bis-11#ref-presence-stmt>] >> [config-stmt] >> [status-stmt] >> [description-stmt] >> [reference-stmt] >> *(typedef-stmt / grouping-stmt) >> *data-def-stmt >> *action-stmt >> *notification-stmt >> "}") stmtsep >> >> - Examples >> I guess that no examples are supposed to compile, right? >> Please add a sentence saying so. > > > I honestly does not think that this is an issue, but how about this: > > NEW: > > 3.1. A Note on Examples > > Throughout this document there are many examples of YANG statements. > These examples are supposed to illustrate certain features, and are > not supposed to be complete, valid YANG modules. > > > >> When Andy's proposal will be ready (TAG: EXAMPLE-BEGINS => the YANG >> example compiles, NO TAG: => no supposed to compile), this document >> will already be compliant. >> >> - Section 4.2.4 >> >> +---------------------+-------------------------------------+ >> | Name | Description | >> +---------------------+-------------------------------------+ >> | binary | Any binary data | >> | bits | A set of bits or flags | >> | boolean | "true" or "false" | >> | decimal64 | 64-bit signed decimal number | >> | empty | A leaf that does not have any value | >> | enumeration | Enumerated strings | >> | identityref | A reference to an abstract identity | >> | instance-identifier | References a data tree node | >> >> Editorial: What the difference between: A reference or references? Be >> consistent > > No difference. I'll change to A reference. > >> - Section4.2.7 >> - >> <https://tools.ietf.org/html/draft-ietf-netmod-rfc6020bis-11#section-4.2.7>. >> - Choices >> >> To be consistent with >> >> When a node from one case is created in the data tree, all nodes from >> all other cases are implicitly deleted. >> >> >> This text in section 7.9 should be updated. >> OLD: >> Since only one of the choice's cases can be valid at any time, the >> creation of a node from one case implicitly deletes all nodes from >> all other cases. If a request creates a node from a case, the server >> will delete any existing nodes that are defined in other cases inside >> the choice. >> >> NEW: >> Since only one of the choice's cases can be valid at any time_in the >> data tree_, the >> creation of a node from one case implicitly deletes all nodes from >> all other cases. If a request creates a node from a case, the server >> will delete any existing nodes that are defined in other cases inside >> the choice. > > Ok. > >> - Section 4.2.9 >> <rpc message-id="101" >> xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> >> <activate-software-image xmlns="http://example.com/system"> >> <image-name>example-fw-2.3</image-name> >> </activate-software-image> >> </rpc> >> >> Editorial: Alignment > > Fixed. > >> - Editorial: is there a logic in the numbering? >> <rpc message-id="101" >> <rpc message-id="102" > > When there are two rpcs in the same example, I use 101, 102. > > I double checked, and fixed two occurences where 101 was used instead > of 102. > >> - section 4.2.9 >> >> Operations can also be tied to a >> data node. Such operations are defined with the "action" statement. >> >> From the definition: >> o data node: A node in the schema tree that can be instantiated in a >> data tree. One of container, leaf, leaf-list, list, anydata, and >> anyxml. >> >> And I see in section 7.15: >> The "action" statement is used to define an operation connected to a >> specific container or list data node. >> >> >> I believe it should be clarified in 4.2.9 >> NEW: >> Operations can also be tied to a >> container or list data node. Such operations are defined with the >> "action" statement. > > Ok. > >> - Section 5.1 >> Editorial >> OLD: >> o A module or submodule belonging to that module can reference >> definitions in the module and all submodules included by the >> module. >> >> NEW? >> o A module, or submodule belonging to that module, can reference >> definitions in the module and all submodules included by that >> module. > > Yes, fixed. > >> - The following examples (as far as my quick check goes) are the only >> - one that misses "yang-version 1.1" >> >> module example-augment { >> namespace "urn:example:augment"; >> prefix mymod; >> import ietf-interfaces { >> prefix if; >> } >> >> module example-a { >> namespace urn:example:a; >> prefix a; > > Fixed. > >> - Section 5.6.4 >> If a server implements a module A that imports a module B, and A uses >> any node from B in an "augment" or "path" statement that the server >> supports, then the server MUST implement a revision of module B that >> has these nodes defined. This is regardless of if module B is >> imported by revision or not. >> >> "imported by revision or not" I'm, confused because I read the >> document in sequence. >> From 5.1 and 5.1.1, it doesn't look like we have two options (import >> by revision or not) >> And the example shows the two possibilities: >> import b { >> revision-date 2015-01-01; >> } >> import c; >> >> I found my answer in section 7.1.5: >> When the optional "revision-date" substatement is present, any >> typedef, grouping, extension, feature, and identity referenced by >> definitions in the local module are taken from the specified revision >> of the imported module. It is an error if the specified revision of >> the imported module does not exist. If no "revision-date" >> substatement is present, it is undefined from which revision of the >> module they are taken. >> >> You should write a sentence or two (imported by revision or not) about >> in section 5.1 or 5.1.1 > > OLD: > > Published modules evolve independently over time. In order to allow > for this evolution, modules need to be imported using specific > revisions. When a module is written, it uses the current revisions > of other modules, based on what is available at the time. > > NEW: > > Published modules evolve independently over time. In order to allow > for this evolution, modules can be imported using specific revisions. > When a module is written, it can import the current revisions of > other modules, based on what is available at the time.
IMO, "published" should be removed unless its meaning is explained. Lada > > And then a new paragraph last in the same section (5.1.1): > > NEW: > > If a module is not imported with a specific revision, it is undefined > which excat revision is used. > > >> - section 5.6.4 >> A server MUST NOT implement more than one revision of a module. >> >> You should add that the server may contain more than one version for >> import reasons. >> This would be in line with >> https://tools.ietf.org/html/draft-ietf-netconf-yang-library-05 >> >> This mandatory list contains one entry for each YANG data model >> module supported by the server. There MUST be an entry in this list >> for each revision of each YANG module that is used by the server. It >> is possible for multiple revisions of the same module to be imported, >> in addition to an entry for the revision that is implemented by the >> server. > > I started to write some text to address this issue, but it felt out of > place. This section is about modules that are implemented. Other > modules can be listed according to yang-library; but that is a > yang-library issue, not YANG 1.1. So I prefer to leave this section > as it is. > > >> - section 5.6.4 >> ietf-yang-library comes out of the blue in section 5.6.4 >> >> If a server implements a module A that imports a module C without >> specifying the revision date of module C, and the server does not >> implement C (e.g., if C only defines some typedefs), the server MUST >> list module C in the "/modules-state/module" list from >> "ietf-yang-library" [I-D.ietf-netconf-yang-library >> >> <https://tools.ietf.org/html/draft-ietf-netmod-rfc6020bis-11#ref-I-D.ietf-netconf-yang-library>], >> and it MUST set >> the leaf "conformance-type" to "import" for this module. >> >> You should say a few words about it in section 4. >> Alternatively, the content in 5.6.5 should come before 5.6.4 > > Agreed. I switched the order of 5.6.4 and 5.6.5, and added a forward > reference: > > A NETCONF server announces the modules it implements (Section 5.6.5) > > >> - Some statements in the ABNF section contains links. Intended? Talking >> - with Martin, he submitted only the .txt version. >> So it seems that the issues resides in the ietf submission tool >> chain. To be solved during AUTH48, I guess. >> >> Example: >> >> container-stmt = container-keyword sep identifier-arg-str optsep >> (";" / >> "{" stmtsep >> ;; these stmts can appear in any order >> [when-stmt] >> *if-feature-stmt >> *must-stmt >> [presence-stmt >> >> <https://tools.ietf.org/html/draft-ietf-netmod-rfc6020bis-11#ref-presence-stmt>] >> ... >> >> >> refine-stmt = refine-keyword sep refine-arg-str optsep >> "{" stmtsep >> ;; these stmts can appear in any order >> *if-feature-stmt >> *must-stmt >> [presence-stmt] >> [default-stmt] >> [config-stmt] >> [mandatory-stmt] >> [min-elements-stmt] >> [max-elements-stmt >> >> <https://tools.ietf.org/html/draft-ietf-netmod-rfc6020bis-11#ref-max-elements-stmt>] >> [description-stmt] >> [reference-stmt] >> "}" stmtsep > > Ok. > > > /martin > > _______________________________________________ > netmod mailing list > netmod@ietf.org > https://www.ietf.org/mailman/listinfo/netmod -- Ladislav Lhotka, CZ.NIC Labs PGP Key ID: E74E8C0C _______________________________________________ netmod mailing list netmod@ietf.org https://www.ietf.org/mailman/listinfo/netmod