Re: [KVM-AUTOTEST PATCH] KVM test: refactor kvm_config.py

Eduardo Habkost
2011-02-09T16:21:07Z

On Wed, Feb 09, 2011 at 10:06:03AM -0600, Ryan Harper wrote:
> >
> > Instead of regular expressions in the filters, the following syntax is used:
> >
> > , means OR
> > .. means AND
> > . means IMMEDIATELY-FOLLOWED-BY
>
> Is there any reason we can't use | for or, and & for AND? I know this
> is just nit picking, but, it certainly reads easier and doesn't need a
> translation. AFAICT, in the implementation, we're just using .split(),
> so, I think the delimiters aren't critical.

I think the main reason is that " " also means "OR" today (as we use
.split() and I guess we don't want to diverge too much from the previous
format), and having C-like operators that don't allow spaces would lead
to confusion. e.g. I am sure somebody would try to write
"foo & bar | baz" eventually--how would we interpret that?

>
> >
> > Example:
> >
> > only qcow2..Fedora.14, RHEL.6..raw..boot, smp2..qcow2..migrate..ide
> >
> > means select all dicts whose names have:
> >
> > (qcow2 AND (Fedora IMMEDIATELY-FOLLOWED-BY 14)) OR
> > ((RHEL IMMEDIATELY-FOLLOWED-BY 6) AND raw AND boot) OR
> > (smp2 AND qcow2 AND migrate AND ide)
>
> >>> config = "qcow2&Fedora.14|RHEL.6&raw&boot|smp2&qcow2&migrate&ide"
> >>> config
> 'qcow2&Fedora.14|RHEL.6&raw&boot|smp2&qcow2&migrate&ide'
> >>> config.split("|")
> ['qcow2&Fedora.14', 'RHEL.6&raw&boot', 'smp2&qcow2&migrate&ide']

What bothers me about the examples above is the absense of spaces, that
makes it not very readable to my eyes.

--
Eduardo