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.


- Section 1.1
Can we want to stress the backwards incompatible changes from YANG version 1 in 
a specific paragraph?
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?

- 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.

- 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.


- 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.

- 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
   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.
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

- 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.


- 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


- Editorial: is there a logic in the numbering?
<rpc message-id="101"
<rpc message-id="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.


- 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.



- 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;


- 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

- 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.

- 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

- 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


Regards, Benoit

_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to