Re: [YANG] import statement

Ladislav Lhotka <lhotka@cesnet.cz> Sat, 03 May 2008 20:12 UTC

Return-Path: <yang-bounces@ietf.org>
X-Original-To: yang-archive@optimus.ietf.org
Delivered-To: ietfarch-yang-archive@core3.amsl.com
Received: from core3.amsl.com (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BC7213A6BEF; Sat, 3 May 2008 13:12:44 -0700 (PDT)
X-Original-To: yang@core3.amsl.com
Delivered-To: yang@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 2A0593A6ACC for <yang@core3.amsl.com>; Sat, 3 May 2008 13:12:43 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.815
X-Spam-Level:
X-Spam-Status: No, score=-0.815 tagged_above=-999 required=5 tests=[AWL=-0.165, BAYES_00=-2.599, HELO_EQ_CZ=0.445, HOST_EQ_CZ=0.904, J_CHICKENPOX_33=0.6]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jxQ3kYSsPFhA for <yang@core3.amsl.com>; Sat, 3 May 2008 13:12:42 -0700 (PDT)
Received: from office2.cesnet.cz (office2.cesnet.cz [195.113.144.244]) by core3.amsl.com (Postfix) with ESMTP id 040533A6BEF for <yang@ietf.org>; Sat, 3 May 2008 13:12:42 -0700 (PDT)
Received: from [172.29.2.201] (asus-gx.lhotka.cesnet.cz [195.113.161.161]) by office2.cesnet.cz (Postfix) with ESMTP id 46D7AD800CA for <yang@ietf.org>; Sat, 3 May 2008 22:12:43 +0200 (CEST)
From: Ladislav Lhotka <lhotka@cesnet.cz>
To: yang@ietf.org
In-Reply-To: <20080503.211049.33022544.mbj@tail-f.com>
References: <1209828663.14759.40.camel@missotis> <481C9D3E.1050602@andybierman.com> <1209840281.14759.57.camel@missotis> <20080503.211049.33022544.mbj@tail-f.com>
Organization: CESNET
Date: Sat, 03 May 2008 22:12:43 +0200
Message-Id: <1209845563.14759.70.camel@missotis>
Mime-Version: 1.0
X-Mailer: Evolution 2.12.1
Subject: Re: [YANG] import statement
X-BeenThere: yang@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: YANG modeling Language for NETCONF <yang.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/yang>, <mailto:yang-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/pipermail/yang>
List-Post: <mailto:yang@ietf.org>
List-Help: <mailto:yang-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/yang>, <mailto:yang-request@ietf.org?subject=subscribe>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Sender: yang-bounces@ietf.org
Errors-To: yang-bounces@ietf.org

Martin Bjorklund píše v So 03. 05. 2008 v 21:10 +0200:
> Ladislav Lhotka <lhotka@cesnet.cz> wrote:
> > 
> > Andy Bierman píše v So 03. 05. 2008 v 10:13 -0700:
> > > It's a bit tricky.
> > > Augment puts nodes from the augmenting namespace and
> > > puts it 'someplace else', which could be the same namespace.
> > > 
> > > The uses-stmt takes nodes from 'somewhere else' and puts them 'here',
> > > in the namespace for 'here'.
> > 
> > That's all right, but I still think one can imagine the augment
> > statement to be replaced by the content of its target node (augmented as
> > specified) and said content keeps its original namespace. If it is not
> > so, then I am seriously confused and don't really know why augment can
> > appear in different places in the schema tree (under module, container
> > and list).
> 
> "augment" just extends some other data model, identified by the target
> node.  This target node expression can be absolute or relative
> (descendant form).  When augment appears under container or list, the
> descendant form must be used.  It will extend the current data model
> in the same module.  The use case is this:

Then augment performs two fundamentally different things - it is not
very clear from sect. 7.15. With the descendant form, it would be IMO
better to pack the augment statement with the uses statement where the
augmented node appears, like this:

   module x { 
     container y {
       uses foo:bar {
       	 augment baz {
         ...
         }
       }
     }
   }

With the absolute form, can the target node be e.g., a container inside
a grouping?

Lada

> 
>  
>    module foo {
>      grouping bar {
>        container baz { ... }
>      }
>    }
> 
>    module x { 
>      container y {
>        uses foo:bar;      // adds nodes from the bar grouping into my module
>        augment baz {      // augment the new nodes with stuff
>          ...
>        }
>      }
>    }
> 
> 
> In this example the relative augment could be replaced by a slightly
> more verbose top-level augment, but in the following case it's not as
> easy:
> 
>    module z {
>      grouping zz {
>        uses foo:bar;
>        augment baz {
>          ...
>        }
>      }
>    }
> 
> 
> 
> /martin
> _______________________________________________
> YANG mailing list
> YANG@ietf.org
> https://www.ietf.org/mailman/listinfo/yang
-- 
Ladislav Lhotka, CESNET
PGP Key ID: E74E8C0C

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