On Tue, Apr 19, 2016 at 2:21 AM, Ladislav Lhotka <[email protected]> wrote:

>
> > On 19 Apr 2016, at 10:50, 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;
> >      }
> >    }
>
> Makes sense. However, Balazs asked previously about multiple deviations
> with the same target node:
> '
>



The replace and delete variants all need to work the same.
They apply to all the default-stmts.

   leaf-list foo {
      type int32;
      default 10;
      default 20;
   }




> https://www.ietf.org/mail-archive/web/netmod/current/msg14532.html
>
> It seems there has been no resolution. In this case, if default values are
> replaced multiple times, which version will take effect?
>
>

This will be implementation-specific.



module  dev1:

   deviation /foo {
      deviate replace {
          default 30;
       }
   }



module  dev2:

   deviation /foo {
      deviate replace {
          default 40;
       }
   }

If first one wins or last one wins, then it depends on the order that
the deviations are loaded and processed by the parser.

Which version of /foo is really in use?

  leaf-list foo {
      type int32;
      default 30;
   }

  leaf-list foo {
      type int32;
      default 40;
   }


This follows the requirement that the statement be valid at the end,
but it is really broken wrt/ which deviation wins.  This applies to
many deviations, not just default.

There needs to be a rule that a deviation duplicates are not allowed.


Lada
>
>
Andy


> >
> >
> > 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
>
> --
> Ladislav Lhotka, CZ.NIC Labs
> PGP Key ID: E74E8C0C
>
>
>
>
>
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to