Martin Bjorklund <[email protected]> writes:
....
> Ok. So in this case I suppose I can do:
>
> container top {
> leaf foo {
> type int32;
> default 0;
> must '. != 42 or ../bar' {
> description
> "If foo is 42, then bar must be be set";
> }
> }
> leaf bar {
> when '../foo = 42';
> type int32;
> }
> }
Or just
container top {
must 'foo != 42 and not(bar) or foo = 42 and bar';
...
}
It also depends on whether you want to let automatically nuke bar if foo
is changed from 42 to something else. I prefer to keep it and report a
semantic error during validation.
>
> It accomplishes the same thing, but it is less clear.
Well, the interaction between mandatory and when has already caused a
lot of confusion. Some people even thought it was clear but their
interpretation was wrong. :-)
Lada
>
>
> /martin
>
>
>> > IMO it doesn't violate the spirit of the rule. So the question is; is
>> > this allowed?
>>
>> My answer is that the mandatory property is a syntactic/schema constraint
>> whereas "when" should be treated as a semantic rule because its expression
>> has
>> to be evaluated on a particular instance. As such, it should not interfere
>> with
>> schema constraints including mandatory.
>>
>> If the when expression is more complicated (e.g. involves data from
>> other modules), it may not be possible to determine just by looking
>> at a single module whether an empty datastore is valid or not.
>>
>> Even in your trivial example, what if an implementation adds a deviation
>> module
>> changing the default for /top/foo to 42?
>>
>> Lada
>>
>> >
>> >
>> > /martin
>> >
>> > P.S. the real data model is a potential solution to a problem with
>> > ietf-alarms from draft-ietf-ccamp-alarm-module:
>> >
>> > leaf notify-status-changes {
>> > type enumeration {
>> > enum all-state-changes {
>> > ...
>> > }
>> > enum raise-and-clear {
>> > ...
>> > }
>> > enum severity-level {
>> > ...
>> > }
>> > }
>> > default "all-state-changes";
>> > description
>> > ...
>> > }
>> > leaf notify-severity-level {
>> > when '../notify-status-changes = "severity-level"';
>> > type severity;
>> > mandatory true;
>> > ...
>> > }
>> >
>> >
>> > pyang complains that this violates the cited rule.
>> >
>> > D.S.
>> >
>> > _______________________________________________
>> > netmod mailing list
>> > [email protected]
>> > https://www.ietf.org/mailman/listinfo/netmod
>> --
>> Ladislav Lhotka
>> Head, CZ.NIC Labs
>> PGP Key ID: 0xB8F92B08A9F76C67
>>
>> _______________________________________________
>> netmod mailing list
>> [email protected]
>> https://www.ietf.org/mailman/listinfo/netmod
>>
--
Ladislav Lhotka
Head, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67
_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod