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