Hello,

thanks for all the ideas, I'll think about all of this !

>Since Augeas 0.3.6, you can change the backup type dynamically by
> setting /augeas/save to one of 'newfile', 'backup' or 'overwrite'.

Sure, but in func each new method call of the augeas module (get, set,
rm...) instantiate a new Augeas() object.
So I can't keep it from one action to the other.
So I must reset /augeas/save each time
So one solution is to pass the value for /augeas/save as a parameter of the
method, with a default value.
But this is tiresome for the end-user if he wants to override the default.

This would be resolved if I used your execute(self, commands) strategy.

Louis



2009/2/24 David Lutterkort <[email protected]>

> On Tue, 2009-02-24 at 21:17 +0100, Louis Coilliot wrote:
> > > Maybe the test scripts could just install some example config
> > > files to /tmp and not have to set the an AUGEAS_ROOT at all?
> > Well, it does install config files in /tmp.
> > For AUGEAS_ROOT, there is a solution:
> > I call the class Augeas() in augeas.py, and it is possible to set the
> > root there:
> > def __init__(self, root=None, loadpath=None, flags=NONE):
> >   ...
>
> Yeah, passing the root into aug_init is the preferred way to set the
> root.
>
> > The problem is that there are more and more options to pass to the
> > methods in the func augeas module:
> > set(self,entryPath,param='',pvalue='',hierarchy='/files')
>
> Have you thought about exposing a small language for the Func module
> rather than mapping Augeas calls 1-1 in the Func module ? (That's what
> the Augeas type for puppet does)
>
> Since many config changes require multiple changes to the tree, saving
> after each individual change is not always possible (e.g., to add a line
> to /etc/hosts, you need to set at least the IP address and the canonical
> host name before Augeas will let you save the file, to keep invalid
> config files from hitting the disk)
>
> This could be as simple as having a 'execute' or so method on the func
> module that takes a list of commands - I don't know what datatypes are
> allowed as arguments to func modules, but you could make each command a
> list of strings or do something fancier where you have separate classes
> to represent each command. I.e., you'd have a method
>
>        execute(self, commands)
>
> on your Func module, and would call it like
>
>        augeas_func.execute([ ["rm", "/files/etc/hosts/*/alias[. = '
> myhost.example.com']"]
>                              ["set", "/files/etc/hosts/10000/ipaddr',
> '192.168.10.1']",
>                              ["set", "/files/etc/hosts/10000/canonical", "
> myhost.example.com"]])
>
> where execute will call aug_save after making the changes. This could be
> made a little more friendly if you provide convenience methods that wrap
> writing down the individual arrays.
>
> > I could also add options like augeasroot and backuptype
> (newfile/backup/overwrite),
> > but then when you want to set only the last option in the list, you need
> to set
> > also all the options before (it's ordered, not labeled)
>
> Since Augeas 0.3.6, you can change the backup type dynamically by
> setting /augeas/save to one of 'newfile', 'backup' or 'overwrite'.
>
> > Raphael Pinson who showed augeas at the fosdem a few days ago told me
> > that augeas was a tool for programmers, not for operators.
>
> I would phrase that a little differently: it's a tool to make scripting
> config changes easy - so for whoever is writing scripts/programs that do
> that.
>
> David
>
>
>
>
_______________________________________________
Func-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/func-list

Reply via email to