[augeas-devel] cobbersettings lense

Dominic Cleal dcleal at redhat.com
Fri Apr 6 12:10:00 UTC 2012


On 04/04/12 23:44, Greg Swift wrote:
> On Wed, Apr 4, 2012 at 15:32, Dominic Cleal <dcleal at redhat.com> wrote:
>> On 04/04/12 14:14, Greg Swift wrote:
>>> I'm also slightly confused by the fact that these two expressions
>>> seems to overlap, but augeas doesn't complain, and if I change the ws
>>> one to not use a *, it blows up.
>>>
>>>    let indent = del /^[ \t]+/ "    "
>>>    let ws = del /[ \t]*/ " "
>>
>> These two don't seem to be used in combination with each other - they're
>> just defined side by side.  The only error I can generate by changing
>> "ws" to require a space is where it's used for lists of entries to
>> permit whitespace next to square brackets.  I don't think you want to
>> change this, only "indent".
> 
> well my concern was that the two regex expressions should match
> similar data.  and was suprised it wasn't breaking.  When I changed
> the * in ws to a + i was unable to load /etc/cobbler/settings.
> 
> [root at infra1-rep network-scripts]# augtool
> augtool> ls /files/etc/cobbler/settings
> augtool> print /augeas/files/etc/cobbler/settings/error
> /augeas/files/etc/cobbler/settings/error = "parse_failed"
> /augeas/files/etc/cobbler/settings/error/pos = "2974"
> /augeas/files/etc/cobbler/settings/error/line = "69"

The "ws" lens is only used in this context:
    let lbr = del /\[/ "["
    let rbr = del /\]/ "]"
    let setting_list_suffix =  [label "sequence" . lbr . ws .
(value_list . ws)? . rbr ] . eol

It's used for lines such as this:
  Setting_List:[Value1, Value2, Value3]

If you change the regexp to /[ \t]+/ then the above line would be
invalid and you'd need to put spaces around the [ ] characters.  I'm not
sure why you're trying to change this.

There's no overlap between them because they're used in different
places.  It'd only matter if they were in a union etc together.

>> If you're working on a patch to tidy up and fix the indentation, that
>> would be great.  I hadn't realised we had this lens which implemented
>> plain YAML, it would be nice to complete and copy it to become a generic
>> YAML lens (to sit with other lenses such as XML, JSON etc).  I think
>> some parts such as the [] lists are Cobbler extensions.
> 
> Seems to me like this is a much more useful direction, although I
> don't know that myself or the cobbler guys are up to the task of
> implementing a YAML lens.

I think a general YAML lens is something for us to pick up and include
upstream.

>> As mentioned on IRC, it would be nice to have Cobbler adopt the lenses
>> as part of their source tree.  There are some projects (libvirt,
>> corosync) that ship their own lenses, so this one could equally
>> "graduate" into Cobbler itself if they'd like it - preventing lag in
>> changes and fixes.
> 
> That may be very doable.  although the 'getting there is an
> interesting concept to me, although I guess they can do a required
> augeas-libs >= version.

If it was included in Cobbler then their packages could install it to
/usr/share/augeas/lenses which would override any older/broken lens
shipped by Augeas in /usr/share/augeas/lenses/dist.

If it was only fixed in Augeas then yes, a dependency on the new version
could be done, but you won't get new versions of Augeas lenses in
existing distro releases (the oldest ship version 0.7.2).

Cheers,

-- 
Dominic Cleal
Red Hat Consulting
m: +44 (0)7817 878113




More information about the augeas-devel mailing list