[augeas-devel] question about inserting entry to end, specifically with fstab lens

Greg_Swift at aotx.uscourts.gov Greg_Swift at aotx.uscourts.gov
Tue Feb 22 14:05:45 UTC 2011


David Lutterkort <lutter at redhat.com> wrote on 02/21/2011 03:29:21 PM:

> On Thu, 2011-02-17 at 14:52 -0600, Greg_Swift at aotx.uscourts.gov wrote:
> > The other suggests a hack of using a zero-padded number to append
entries
> > to the list,
>
> This is not a hack - that is the recommended way to generate a label
> that is guaranteed to be different from all the others in a numbered
> sequence (even though I said number there, Augeas only knows strings)

I was just repeating his wording.. i did note that the augeas documentation
recommend this method.

> >  I don't see how the ins method would work unless you know the number
of
> > the last entry.
>
> Path expressions to the rescue:
>
>         ins 01 after /files/etc/fstab/*[last()]
>
> meaning 'insert the node 01 as the last child of /files/etc/fstab'

ahh i was missing the *[] bit in my playing.

> >   And to be quite honest, I can't figure out how to use
> > insert to add a sequential entry anyway.  When I tried 'ins 7
> > after /files/etc/fstab/6' I just got a 7 that was an entry not a node.
> > Using 'set /files/etc/fstab/7/file /path' I get what I'm expecting.
>
> You actually don't even need to bother with 'ins'. When you set the
> value of a node that does not exist yet, it is automatically created.
> The new node is always the last of its siblings, so that the following
> will append the node '01' to the existing ones under /files/etc/fstab:
>
>         defvar fstab /files/etc/fstab
>         set $fstab/01/spec /dev/voo/doo
>         set $fstab/01/file /voo/doo
>         set $fstab/01/vfstype voodoo
>         set $fstab/01/opt defaults
>         set $fstab/01/dump 0
>         set $fstab/01/passno 0
>         save
>
> Of course, when Augeas reads this back in, the '01' will be changed to
> something else, maybe '8' - to make the above idempotent you have to
> check, for example, if a node matching this path expression exists:
>
>         /files/etc/fstab/*[spec = '/dev/voo/doo']
>
> > The blog commenter's change from seq to label seems to work, and seems
to
> > be the more intuitive and effective method, but it requires a change to
the
> > lens and API  for that file that would likely cause regression issues.
>
> Read Francis' high praise of seq from the other day ;) I don't think
> changing the fstab lens is really desirable.


thank you very much for the reply.

-greg




More information about the augeas-devel mailing list