Hello Martin,
Does this mean the mandatory does have an effect, resulting in an invalid model according to A2?
regards Balazs

On 2015-10-06 11:25, Martin Bjorklund wrote:
Jernej Tuljak <jern...@mg-soft.si> wrote:
Balazs Lengyel je 6.10.2015 ob 9:38 napisal:
Hello,
Thanks for the comments.
I WANT some clarification of this issue in te RFC.
Your mandatory constraints will never be enforced, due to 7.9.4.:

    The behavior of the constraint depends on the type of the choice's
    closest ancestor node in the schema tree which is not a non-presence
    container (seeSection 7.5.1
    <https://tools.ietf.org/html/rfc6020#section-7.5.1>):

    o  If this ancestor is a case node, the constraint is enforced if any
       other node from the case exists.

    o  Otherwise, it is enforced if the ancestor node exists.

First bullet. Clear enough, IMO. Augmentation could change that,
though.

BTW, do these bullets cover 1.1? The case node is no longer required
due to shorthand choice. Note how the text assumes a case node.
Note that a case *node* always exists, even if the shorthand syntax is
used.


/martin



Jernej

Preferably prohibiting scenarios instead of explaining all the
complexities :-(
The very least we should say in 6087: avoid embedded choices.
regards Balazs

On 2015-10-05 19:13, Ladislav Lhotka wrote:
On 05 Oct 2015, at 17:35, Balazs Lengyel <balazs.leng...@ericsson.com>
wrote:

Hello,
What do the mandatory statements mean in the following model ?

            choice scen8 { // Embedded choices with multiple mandatory
            cases; invalid scenario
                case A {
                    choice subChoiceA {
                        mandatory true;
                        case A {
                            leaf scen8-num1 { type uint8; }
                        }
                        case B {
                            leaf scen8-num2 { type uint8; }
                        }
                    }
                }
                case B {
                    choice subChoiceB {
                        mandatory true;
                        case A {
                            leaf scen8-num1 { type uint8; }
                        }
                        case B {
                            leaf scen8-num2 { type uint8; }
                        }
                    }
                }
            }

Answers:
A1) They mean nothing because the case around subChoiceA/B might not
exist, in which case its underlying statements are not valid.
A2) They mean that one case from both subChoiceA AND subchoiceB must
exist leading to two cases in choice scen8 which is not allowed, hence
this is an invalid model?
In the first place, it should be an error because of colliding names -
all the leaves defined in sub-cases have the same parent. However,
pyang doesn't flag it as an error.

Generally I find choices embedded in choices to be so complicated that
IMHO they SHOULD be immediately prohibited. If you think about all the
variants of embedded choices with mandatory and default placed on some
or a bunch of them, even understanding what they mean becomes a
headache. BAD !!!! In the beginning YANG was about
easy-understanding. However these combinations are unclear even after
repeatedly reading the RFC :-(
Yes, it is quite complicated. Normally, such embedded choices
shouldn't be needed but they can happen if, e.g. the internal choices
are defined in groupings.

As the very least we SHOULD prohibit mandatory/default on the inside
choice.
I think it would be better to ignore them (and tools may issue a
warning).

Lada

regards Balazs

--
Balazs Lengyel                       Ericsson Hungary Ltd.
Senior Specialist
ECN: 831 7320
Mobile: +36-70-330-7909 email: balazs.leng...@ericsson.com

_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod
--
Ladislav Lhotka, CZ.NIC Labs
PGP Key ID: E74E8C0C






--
Balazs Lengyel                       Ericsson Hungary Ltd.
Senior Specialist
ECN: 831 7320
Mobile: +36-70-330-7909              email: balazs.leng...@ericsson.com

_______________________________________________
netmod mailing list
netmod@ietf.org
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to