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
