
Daniel Veillard <veillard@redhat.com> wrote on 04/06/2010 09:10:11 AM:
Please respond to veillard
On Mon, Apr 05, 2010 at 12:53:19PM -0400, Stefan Berger wrote:
This patch adds a relaxng nwfilter schema along with a test that verifies all the test output XML against the schema. The input XMLs contain a lot of intentional out-of-range values that make them fail
the
schema verification, so I am not verifying against those.
Signed-off-by: Stefan Berger <stefanb@us.ibm.com> Signed-off-by: Gerhard Stenzel <gerhard.stenzel@de.ibm.com>
--- docs/schemas/Makefile.am | 3 docs/schemas/domain.rng | 31 + docs/schemas/nwfilter.rng | 783 ++++++++++++++++++++++++++++++++++++++++++++++ libvirt.spec.in | 1 tests/Makefile.am | 4 tests/nwfilterschematest | 11 6 files changed, 831 insertions(+), 2 deletions(-)
[...]
+ <define name="addrMAC"> + <choice> + <!-- variable --> + <data type="string"> + <param name="pattern">[\\$]{1}[a-zA-Z0-9_]+</param> + </data> + + <data type="string"> + <param name="pattern">([a-fA-F0-9]{1,2}:){5}[a-fA-F0-9]{1,2}</param> + </data> + </choice> + </define>
Hum, can you explain why you get apparently 2 completely different format values ranges here (and in a number of other types), I'm a bit lost.
Every item in the network filter xml can be a variable like $MAC or $IP. So for the schema to validate a srcmacaddr="$MAC" I needed to add the above 'variable' pattern. I had a lot of problems finding a way to require a $ as first letter and I ended up having to use the [\\$]{1} construct. Also I could not find a switch for non-case-sensitive string comparison like other regexes have (?i) or \i for example... I suppose there is none.
[...]
Index: libvirt-acl/docs/schemas/domain.rng =================================================================== --- libvirt-acl.orig/docs/schemas/domain.rng +++ libvirt-acl/docs/schemas/domain.rng @@ -894,6 +894,11 @@ <optional> <ref name="address"/> </optional> + <optional> + <element name="filterref"> + <ref name="filterref-node-attributes"/> + </element> + </optional> </interleave> </define> <!-- @@ -1577,6 +1582,22 @@ </element> </define>
+ <define name="filterref-node-attributes"> + <attribute name="filter"> + <data type="NCName"/> + </attribute> + <optional> + <element name="parameter"> + <attribute name="name"> + <ref name="parameter-name"/> + </attribute> + <attribute name="value"> + <ref name="parameter-value"/> + </attribute> + </element> + </optional> + </define> + <!-- Type library
@@ -1737,4 +1758,14 @@ <param name="pattern">[a-zA-Z0-9_\.\+\-/]+</param> </data> </define> + <define name="parameter-name"> + <data type="string"> + <param name="pattern">[a-zA-Z0-9_]+</param> + </data> + </define> + <define name="parameter-value"> + <data type="string"> + <param name="pattern">[a-zA-Z0-9_\.:]+</param> + </data> + </define> </grammar>
I just find parameter-name/parameter-value a bit too generic names, if you could make them more specific to the task, like filter-param-name / filter-param-value
but it's minor, and it's good to have updated schema and augmented testing
Ok, so I will rename those two to the names you suggest. Should I post again before pushing it to the repository? Stefan
ACK
Daniel
-- Daniel Veillard | libxml Gnome XML XSLT toolkit
daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/