Re: [yang-doctors] Question about yang2dsdl error.

Ladislav Lhotka <lhotka@nic.cz> Tue, 12 November 2019 07:45 UTC

Return-Path: <lhotka@nic.cz>
X-Original-To: yang-doctors@ietfa.amsl.com
Delivered-To: yang-doctors@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id C7E121201B7 for <yang-doctors@ietfa.amsl.com>; Mon, 11 Nov 2019 23:45:05 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DQ0tbpBnfgEi for <yang-doctors@ietfa.amsl.com>; Mon, 11 Nov 2019 23:45:02 -0800 (PST)
Received: from trail.lhotka.name (trail.lhotka.name [77.48.224.143]) by ietfa.amsl.com (Postfix) with ESMTP id E3C1E1200A1 for <yang-doctors@ietf.org>; Mon, 11 Nov 2019 23:45:01 -0800 (PST)
Received: by trail.lhotka.name (Postfix, from userid 109) id 958401820071; Tue, 12 Nov 2019 08:44:30 +0100 (CET)
Received: from localhost (unknown [195.113.220.121]) by trail.lhotka.name (Postfix) with ESMTPSA id E90671820071; Tue, 12 Nov 2019 08:44:23 +0100 (CET)
From: Ladislav Lhotka <lhotka@nic.cz>
To: Christian Hopps <chopps@chopps.org>
Cc: Christian Hopps <chopps@chopps.org>, YANG Doctors <yang-doctors@ietf.org>
In-Reply-To: <26268464-9B83-45CD-BEC7-5A6A64630F7A@chopps.org>
References: <18331DE5-81EE-4A9A-A404-957A24225333@chopps.org> <e2bed3136ade45d6cf71de461a55914f77fb7435.camel@nic.cz> <26268464-9B83-45CD-BEC7-5A6A64630F7A@chopps.org>
Date: Tue, 12 Nov 2019 08:44:52 +0100
Message-ID: <87v9rpr11n.fsf@nic.cz>
MIME-Version: 1.0
Content-Type: text/plain
Archived-At: <https://mailarchive.ietf.org/arch/msg/yang-doctors/U5woA5MVHj0wE5-DK2d5duNiGls>
Subject: Re: [yang-doctors] Question about yang2dsdl error.
X-BeenThere: yang-doctors@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Email list of the yang-doctors directorate <yang-doctors.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/yang-doctors/>
List-Post: <mailto:yang-doctors@ietf.org>
List-Help: <mailto:yang-doctors-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/yang-doctors>, <mailto:yang-doctors-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 12 Nov 2019 07:45:06 -0000

Christian Hopps <chopps@chopps.org> writes:

>> On Nov 8, 2019, at 6:46 AM, Ladislav Lhotka <lhotka@nic.cz> wrote:
>> 
>> Hi Chris,
>> 
>> On Fri, 2019-11-08 at 06:29 -0500, Christian Hopps wrote:
>>> Hi yang-doctors,
>>> 
>>> I've got an example which yang2dsdl complains about (in it's expected
>>> unhelpful way :)
>> 
>> The error messages are produced by xmllint, and their unhelpfulness is
>> notorious.  Apart from that, xmllint RELAX NG validator is known to have other
>> bugs and gaps.
>> 
>> Have you tried to use Jing [1] for RELAX NG validation (the '-j' option to
>> yang2dsdl)?
>
> That doesn't seem to pick up the augmentation..

There are actually two unrelated problems caused by fact that you use ietf-routing@2016-11-04.yang on the command line:

1. When performing the import from ietf-isis, pyang uses the latest revision of ietf-routing, i.e. 2018-03-13. This looks like a bug in pyang, a workaround is to remove the 2018-03-13 revision from the module path.

2. ietf-isis won't work with ietf-routing@2016-11-04 anyway: ietf-isis augments "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" (around line 3492) but this schema node doesn't exist in the 2016-11-04 revision - it is under "routing-state" there.

Do you have any reason for not using the latest revision of ietf-routing?

Lada

>
> (default) [07:33:43 dak:~/w/reverse-metric-yang]$ yang2dsdl -x -j -t config -d .validate -v test-xml-example2.xml ietf-routing@2016-11-04.yang ietf-isis@2019-10-15.yang
> == Generating RELAX NG schema '.validate/ietf-routing_ietf-isis-config.rng'
> Done.
>
> == Generating Schematron schema '.validate/ietf-routing_ietf-isis-config.sch'
> Done.
>
> == Generating DSRL schema '.validate/ietf-routing_ietf-isis-config.dsrl'
> Done.
>
> == Validating grammar and datatypes ...
> [warning] /usr/bin/jing: Unable to locate avalon-framework in /usr/share/java
> [warning] /usr/bin/jing: Unable to locate batik-all in /usr/share/java
> /home/chopps/net/w/reverse-metric-yang/test-xml-example2.xml:8:16: error: character content of element "type" invalid; must be a QName equal to "direct", "routing-protocol" or "static"
>
> Thanks,
> Chris.
>
>
>> Lada
>> 
>> [1] https://relaxng.org/jclark/jing.html
>> 
>>> In trying to figure out what was wrong, I gave yanglint a try, and it said the
>>> example was fine (no errors no output with --strict). Can anyone shed some
>>> light on what might be the issue. I'd really like yang2dsdl to pass here as
>>> well.
>>> 
>>> Example:
>>> 
>>> (default) [06:23:07 dak:~/w/reverse-metric-yang]$ cat test-xml-example2.xml
>>> <config xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
>>>  <routing
>>>      xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
>>>    <control-plane-protocols>
>>>      <control-plane-protocol>
>>>        <type xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis">
>>>          isis:isis
>>>        </type>
>>>        <name>i0</name>
>>>        <isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis">
>>>          <area-address>00</area-address>
>>>        </isis>
>>>      </control-plane-protocol>
>>>    </control-plane-protocols>
>>>  </routing>
>>> </config>
>>> 
>>> yang2dsdl Error:
>>> 
>>> (default) [06:23:05 dak:~/w/reverse-metric-yang]$ yang2dsdl -x -t config -d
>>> .validate -v test-xml-example2.xml ietf-routing@2016-11-04.yang 
>>> ietf-isis@2019-10-15.yang
>>> == Generating RELAX NG schema '.validate/ietf-routing_ietf-isis-config.rng'
>>> Done.
>>> 
>>> == Generating Schematron schema '.validate/ietf-routing_ietf-isis-config.sch'
>>> Done.
>>> 
>>> == Generating DSRL schema '.validate/ietf-routing_ietf-isis-config.dsrl'
>>> Done.
>>> 
>>> == Validating grammar and datatypes ...
>>> Relax-NG validity error : Extra element control-plane-protocols in interleave
>>> test-xml-example2.xml:4: element control-plane-protocols: Relax-NG validity
>>> error : Element routing failed to validate content
>>> test-xml-example2.xml fails to validate
>>> 
>>> Thanks,
>>> Chris.
>>> _______________________________________________
>>> yang-doctors mailing list
>>> yang-doctors@ietf.org
>>> https://www.ietf.org/mailman/listinfo/yang-doctors
>> -- 
>> Ladislav Lhotka
>> Head, CZ.NIC Labs
>> PGP Key ID: 0xB8F92B08A9F76C67
>

-- 
Ladislav Lhotka 
Head, CZ.NIC Labs
PGP Key ID: 0xB8F92B08A9F76C67