The embedded choice is clearly a case of over-complicating YANG. It was a poor choice to allow such cases.
Sorry :-) couldn't resist.

But seriously, one reason we wanted to design a new modeling language instead of reusing e.g. XSD was because XSD is too complicated, and then we get embedded choice ?
Balazs

On 2015-10-06 09:56, Ladislav Lhotka wrote:
On 06 Oct 2015, at 09:38, Balazs Lengyel <balazs.leng...@ericsson.com> wrote:

Hello,
Thanks for the comments.
I WANT some clarification of this issue in te RFC. Preferably prohibiting 
scenarios instead of explaining all the complexities :-(
Interestingly, choice was not allowed as a short-hand case statement in YANG 
1.0 but it has been added in YANG 1.1 - see issue Y29:

https://svn.tools.ietf.org/svn/wg/netmod/yang-1.1/issues.html#sec-30

Lada

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
--
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