[augeas-devel] Robust lens parsing
Matthew Booth
mbooth at redhat.com
Mon Jun 27 15:43:09 UTC 2011
I just hit an issue where a grub.conf contained the following 2 lines:
serial -unit=0 -speed=115200
terminal -timeout=5 serial console
Those lines are incorrect. They should use '--' instead of '-' for
options. I just checked the grub source and grub will be silently
ignoring the options. Grub effectively reads them as:
serial
terminal serial console
However, the effect of the above on augeas is that grub.conf isn't
parsed at all. I think much better behaviour would be to localise errors
in the tree wherever possible according to syntax, and parse the rest as
normal.
For a worked example, take the following grub.conf fragment:
terminal -timeout=5 serial console
default=0
frobnicate --foobaz
hiddenmenu
The above could be parsed as:
* terminal
* #error = -timeout=5
* serial
* console
* default = 0
* #error = frobnicate --foobaz
* hiddenmenu
This is, of course, dependent on implementing this behaviour in each
lens. The advantage of this is that arbitrary errors which don't cause
failure can be ignored if desired, or highlighted otherwise.
Specifically for virt-v2v, a misconfigured grub serial console won't
prevent me from working out which kernel is supposed to be booted.
Firstly, do people agree this is the right thing to do?
Secondly, I only dip occasionally into lens development. I believe that
implementing the above will require the use of a fall-through or a
wildcard match. Wouldn't this cause a problem with common prefixes? I'm
not sure how I'd go about implementing this.
Thanks,
Matt
--
Matthew Booth, RHCA, RHCSS
Red Hat Engineering, Virtualisation Team
GPG ID: D33C3490
GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490
More information about the augeas-devel
mailing list