Andy Bierman <[email protected]> wrote:
> On Thu, Apr 21, 2016 at 1:45 AM, Martin Bjorklund <[email protected]> wrote:
> 
> > Hi Andy,
> >
> > Are you ok with the proposed OLD/NEW changes?
> >
> >
> Yes, except the issue of multiple deviations (that could be in 1 module on
> N modules).
> The actual result depends on the order the deviations are applied.
> This "last one wins" is implementation-dependent. Some text should be added
> either to fix it or warn people.  (Note that the <hello> and YANG library
> are not ordered so they cannot be used to inform the client which of
> the N is actually applied.)  This also affects the order of "deviate add
> default"
> for leaf-list.

I prefer some warning text.  In reality, I don't think is an issue.


/martin





> 
> 
> 
> >
> > /martin
> 
> 
> 
> Andy
> 
> 
> >
> 
> 
> >
> > Martin Bjorklund <[email protected]> wrote:
> > > Andy Bierman <[email protected]> wrote:
> > > > Hi,
> > > >
> > > > The ABNF for "default" is wrong in the deviate-*-stmt (add, replace,
> > delete)
> > > > Is says [default-stmt] but it should be *default-stmt
> > >
> > > Thanks, fixed.
> > >
> > > But for deviate-replace, it is not clear what the correct answer is.
> > >
> > > This is pretty clear:
> > >
> > >   leaf foo {
> > >     type int32;
> > >     default 42;
> > >   }
> > >
> > >   deviation /foo {
> > >     deviate replace {
> > >       default 10;
> > >     }
> > >   }
> > >
> > > But what about this:
> > >
> > >   leaf-list bar {
> > >     type int32;
> > >     default 42;
> > >     default 43;
> > >   }
> > >
> > >   deviation /bar {
> > >     deviate replace {
> > >       default 10;
> > >       default 11;
> > >     }
> > >   }
> > >
> > > Are all defaults changed?
> > >
> > > Compare with must and unique - they can not be replaced currently.
> > >
> > > In order to resolve this we probably need more text as well :(
> > >
> > >
> > > OLD:
> > >
> > >   The argument "replace" replaces properties of the target node.  The
> > >   properties to replace are identified by substatements to the
> > >   "deviate" statement.  The properties to replace MUST exist in the
> > >   target node.
> > >
> > >
> > > NEW:
> > >
> > >   The argument "replace" replaces properties of the target node.  The
> > >   properties to replace are identified by substatements to the
> > >   "deviate" statement.  The properties to replace MUST exist in the
> > >   target node.  If multiple properties exist in the target node, all
> > >   of them are replaced with the new properties defined in the
> > >   substatements to the deviate statement.
> > >
> > > + add an example to the section "Usage examples":
> > >
> > > NEW:
> > >
> > >   In this example, the original definition of a leaf list has two
> > >   default values "42" and "43:
> > >
> > >     leaf-list bar {
> > >       type int32;
> > >       default 42;
> > >       default 43;
> > >     }
> > >
> > >   A server can change this to the values "10" and "11" instead:
> > >
> > >     deviation /base:bar {
> > >       deviate replace {
> > >         default 10;
> > >         default 11;
> > >       }
> > >     }
> > >
> > >
> > > Also, change the grammar:
> > >
> > > OLD:
> > >
> > > deviate-replace-stmt = deviate-keyword sep replace-keyword-str optsep
> > >                       (";" /
> > >                        "{" stmtsep
> > >                            ;; these stmts can appear in any order
> > >                            [type-stmt]
> > >                            [units-stmt]
> > >                            [default-stmt]
> > >                            [config-stmt]
> > >                            [mandatory-stmt]
> > >                            [min-elements-stmt]
> > >                            [max-elements-stmt]
> > >                        "}") stmtsep
> > >
> > > NEW:
> > >
> > > deviate-replace-stmt = deviate-keyword sep replace-keyword-str optsep
> > >                       (";" /
> > >                        "{" stmtsep
> > >                            ;; these stmts can appear in any order
> > >                            [type-stmt]
> > >                            [units-stmt]
> > >                            *must-stmt
> > >                            *unique-stmt
> > >                            *default-stmt
> > >                            [config-stmt]
> > >                            [mandatory-stmt]
> > >                            [min-elements-stmt]
> > >                            [max-elements-stmt]
> > >                        "}") stmtsep
> > >
> > >
> > >
> > >
> > >
> > > > Is it intentional that the ABNF for deviate-delete-stmt leaves out
> > > > config, mandatory, max-elements, and min-elements?
> > > > I understand why "type" cannot be removed.
> > >
> > > I don't really remember, but I can see that if you want to "delete"
> > > min-elements you can replace it and set it to 0.
> > >
> > > > IMO the rest of the statements should be removable.
> > >
> > > > Sec. 7.20.3.2 does not mention the restrictions indicated in the ABNF.
> > > > This section should make it clear a leaf has only 1 default
> > > > and the 0..n refers to leaf-list only.
> > >
> > > In general, the result after applying deviations must be valid - e.g.,
> > > you cannot deviate "foo" as the default for an int32 leaf.
> > >
> > > > It should also be clear that the "deviate add default" for a leaf-list
> > > > is YANG statement order-dependent.
> > > >
> > > > Not as obvious -- a config=false leaf-list can have duplicate default
> > > > values.
> > > > The deviate-stmt has no way to specify which 1 to delete or replace
> > > > if there are duplicates.
> > >
> > > Unless replace will replace *all*, as suggested above.
> > >
> > >
> > > /martin
> > >
> > > _______________________________________________
> > > netmod mailing list
> > > [email protected]
> > > https://www.ietf.org/mailman/listinfo/netmod
> > >
> >

_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to