Ladislav Lhotka <[email protected]> wrote: > > > On 25 Aug 2015, at 14:48, Martin Bjorklund <[email protected]> wrote: > > > > Ladislav Lhotka <[email protected]> wrote: > >> > >>> On 25 Aug 2015, at 14:01, Martin Bjorklund <[email protected]> wrote: > >>> > >>> Hi, > >>> > >>> I think this could work (thanks Robert; maybe this is what you > >>> meant!): > >>> > >>> container zones { > >>> list zone { > >>> ... > >>> list rrset { > >>> ... > >>> leaf type { > >>> type identityref { ... } > >>> } > >>> list rdata { > >>> key id; > >>> ... > >>> choice type-specific-params { > >>> mandatory true; > >>> // to be augmented with type-specific nodes > >>> } > >>> } > >>> } > >>> } > >>> } > >>> > >>> And then in another module: > >>> > >>> augment "/dnsz:zones/dnsz:zone/dnsz:rrset/dnsz:rdata" > >>> + "/type-specific-parameters" { > >>> when "derived-from-or-self(../dnsz:type,'iana-dns-parameters'," > >>> + "'TLSA')"; > >>> > >>> leaf certificate-usage { > >>> mandatory true; > >>> ... > >>> } > >>> } > >>> > >>> The empty mandatory choice formally tells the client that additional > >>> cases are expected. > >>> > >>> (If the empty choice looks fishy, it is probably often possible to > >>> define at least one case inline...) > >>> > >>> This pattern is nice to the client, since there is no way an > >>> additional augmenting module can break a working client. > >> > >> Yes, I just tried very similar test modules with pyang, and DSDL seems > >> to validate instance data as expected: at least one case has to be > >> present, so no valid instance exists for the “abstract” module alone. > >> > >> I think it is a better approach to subclassing than augment+when. > > > > It is augemnt-choice+when. > > when isn’t strictly necessary here because different cases cannot > appear together.
Well, the when statement is needed to make sure that you configure nodes from a case that matches the specified type. /martin _______________________________________________ netmod mailing list [email protected] https://www.ietf.org/mailman/listinfo/netmod
