Robert Wilton <[email protected]> wrote: > > > On 15/03/2017 10:20, Martin Bjorklund wrote: > > Robert Wilton <[email protected]> wrote: > >> Hi, > >> > >> On 15/03/2017 07:28, Martin Bjorklund wrote: > >>> Phil Shafer <[email protected]> wrote: > >>>> Martin Bjorklund writes: > >>>>> Phil Shafer <[email protected]> wrote: > >>>>>> Martin Bjorklund writes: > >>>>>>>> What are your thoughts on this? Surely, an augment should not have to > >>>>>>>> contain if-feature statements of all parents of the augmented node. > >>>>>>> The spec says: > >>>>>>> > >>>>>>> When a server implements a module containing an "augment" > >>>>>>> statement, > >>>>>>> that implies that the server's implementation of the augmented > >>>>>>> module > >>>>>>> contains the additional nodes. > >>>>>>> > >>>>>>> Compare with a simple augment of a node w/o an if-feature. In this > >>>>>>> case, if the server implements the augmenting module, it MUST also > >>>>>>> implement the augmented module. > >>>>>> It implements the module, but it doesn't implement the nodes > >>>>>> since it doesn't express the feature. IMHO this is a tool > >>>>>> bug and/or an errata,since otherwise one has to carry features > >>>>>> forward, repeating the if-feature using the original modules > >>>>>> prefix:feature-name on every augment of feature-based nodes. > >>>>> Well, I agree that it would have been better to state that if a server > >>>>> doesn't implement the augment target, then it doesn't implement the > >>>>> augment either. But the text is pretty clear; this is not how it > >>>>> works. This is not appropriate to "fix" in an errata. > >>>> I'm missing the part of the text that's clear. The above quoted > >>>> section certainly doesn't say this. That text is saying "if you > >>>> implement a module that augments a set of nodes, then the server's > >>>> schema for that original set of nodes now includes the new set of > >>>> nodes". It's referring to schema nodes. > >>> It explicitly says that server's *implementation* of the augmented > >>> module contains the additional nodes. > >> Section "5.6.5. Implementing a Module", doesn't mention features at > >> all. > >> Section "5.6.2. Optional Features" doesn't mention implementation at > >> all. It only writes about portions of a model that are conditional, > >> supported, or valid. > >> Section "7.20.1. The "feature" Statement" also doesn't mention > >> implementation, it only writes about portions of the model being > >> conditional. > >> > >> So, I find the text that you are quoting as ambiguous in respect to > >> its applicability to features.
I have to agree. Reading the quoted text again, it is actually not clear what it tries to say. I did some digging, and it turns out that the text was added very late, as a part of the Gen-ART review (see https://mailarchive.ietf.org/arch/msg/netmod/rmt_T-lMcFm6MPoo8DwrVuZNUxA). So what it perhaps should have said was: When a server implements a module containing an "augment" statement, that implies that if the server implements the augmented node, its implementation of the augmented node contains the additional nodes. Also, it turns out that this text is in section 4.2.8 which is marked as non-normative (whole section 4). So now I am going to argue that the spec allows the case in the original question :) There is no normative text that says that an augment of a target node with an if-feature statement is illegal. If it is legal it must mean something. And the only reasonable interpretation is that if the server doesn't implement the feature, then it also doesn't implement the augmented nodes. (I still think it is unfortunate that the "doesn't implement a feature" case is handled differently than the "doesn't implement the module" case) /martin _______________________________________________ netmod mailing list [email protected] https://www.ietf.org/mailman/listinfo/netmod
