Hi Andy,

On 16/03/2017 16:17, Andy Bierman wrote:


On Thu, Mar 16, 2017 at 2:54 AM, Robert Wilton <[email protected] <mailto:[email protected]>> wrote:

    Hi Dale,


    On 15/03/2017 19:02, Dale R. Worley wrote:

        JOEY BOYD <[email protected] <mailto:[email protected]>>
        writes:

            module base-module {
               prefix bmod;

               feature do-things;

               container things {
                 if-feature do-things;
                 ...
               }
            }

            module augment-module {
               prefix amod;

               augment "/bmod:do-things" {
                 container other-things {
                 }
               }
            }

        First question:  I'm not expert in Yang, but as far as I can
        figure out,
        the augment statement is augmenting "container things",
        right?  So the
        augment statement should be 'augment "/bmod:things"' not 'augment
        "/bmod:do-things"'.

    Yes, the augment should be to "things".


        But on the important question, I don't see it as at all
        unreasonable
        that the augment needs to be qualified by the same
        if-feature.  The
        reason is that if you're reading the text of module
        augment-module, it's
        helpful to have documented, right there, that the augmentation
        depends
        on the presence of a particular feature in the augmented
        module.  And
        it's helpful to know that the designer did, at least for one
        moment,
        think about the fact that the augmentation is conditional.


    It isn't just any if-feature on the container that is being
    augmented that needs to be considered.  You would have to consider
    all if-feature statements by walking up the augmented node's
    ancestors to the top of the tree and combine them, or have
    multiple if-feature statements.

    Further, the 7950 YANG update rules allow for the augmented module
    to be revised and some of those if-feature statements to be
    subsequently removed.  If the augmenting module had restated the
    if-feature conditions then this would probably leave the
    augmenting module unintentionally out of sync with the module that
    it is augmenting.

    In short, I think that if-feature statements work better if they
    act on the given node and all descendant nodes, regardless of
    which module those descendants are defined in.


"work better"

Please explain which protocol you are using that allows you to manage descendant nodes of unimplemented nodes.

NETCONF and RESTCONF do not work at all wrt/ accessing such nodes.
I think that we may be crossing wires:

It was NETCONF/RESTCONF that I was thinking of, and I am not considering managing descendant nodes of unimplemented nodes.

I think that the question is only whether an augmentation of a node that has an if-feature statement also requires the same if-feature statement on the augment statement.

To quote Joey's example, I think that both of the following modules are valid (presuming that they are both implemented by a device) regardless of which features are enabled. Do you agree?

module base-module {
  prefix bmod;

  feature things;
  feature widgets;

  container things {
    if-feature things;
    ...
    container widgets {
      if-feature widgets;
      ...
    }
  }
}

module augment-module {
  prefix amod;

  augment "/bmod:things" {
    container other-things {
    }
  }

  augment "/bmod:things/bmod:widgets" {
    container other-widgets {
    }
  }
}

Thanks,
Rob


    Rob


Andy



        Dale

        _______________________________________________
        netmod mailing list
        [email protected] <mailto:[email protected]>
        https://www.ietf.org/mailman/listinfo/netmod
        <https://www.ietf.org/mailman/listinfo/netmod>
        .


    _______________________________________________
    netmod mailing list
    [email protected] <mailto:[email protected]>
    https://www.ietf.org/mailman/listinfo/netmod
    <https://www.ietf.org/mailman/listinfo/netmod>



_______________________________________________
netmod mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/netmod

Reply via email to