[augeas-devel] Saving changed tree to file does not work but no error message

Raphaël Pinson raphael.pinson at camptocamp.com
Mon Jan 11 08:38:42 UTC 2016


Hello Christoph,



On Sun, Jan 10, 2016 at 6:09 PM, Christoph Molitor <
christoph.molitor at googlemail.com> wrote:

> Hello Raphaël,
>
> thanks for your reply and your suggestions.
> I added some code to read the error messages.
> When I execute the code there are no error messages but still the changes
> made to the value of one node are not saved back to the configuration file.
> The latest source code can be found here:
> https://github.com/cmolitor/AugeasDemoC/blob/simple/src/main.cpp
>


You need to really look into how to use XPath in Augeas. You can remove
pretty much all of
https://github.com/cmolitor/AugeasDemoC/blob/simple/src/main.cpp#L93-L111
(and probably more) by using proper XPath expressions instead of manually
parsing the tree node by node.


Also, Augeas 1.0.0 introduced aug_transform, which is easier/better than
manually manipulating nodes in /augeas/load.



>
> I also went through all the steps using augtool and added the commands as
> comments to the source code.
> If I execute the commands in augtool the changes are saved to the
> configuration file.
>
> In general, I can load the configuration file, change the value, check
> that the value has been really changed by reading it again. Calling
> aug_save() does not give an error message but still the changes are not
> saved to the file.
>
>
And what is the output of your code then?



> I tried this with augeas version 1.2 and 1.4.
>
> It would be great if I could get further advice how to proceed or a hint
> what I am doing wrong.
>
> I will also have a look at netcf but could not find a detailed
> documentation yet.
>
>
netcf has been used for a few years in libvirt. See
https://github.com/saaros/libvirt/blob/master/src/interface/interface_backend_netcf.c
for example.



Cheers,

Raphaël




> Am 04.01.2016 um 09:44 schrieb Raphaël Pinson <
> raphael.pinson at camptocamp.com>:
>
> Hello Christoph and happy new year to you too!
>
>
> Your code doesn't check for errors (either parsing or saving errors). You
> could add checks (looking for `/augeas//error` nodes) just after your call
> to aug_load (for parsing errors) and to aug_save (for saving errors).
>
> One way to debug your code would also be to try it with augtool, which
> would be easier to debug.
>
> Also, are you aware of the netcf project, which provides a higher API on
> top of Augeas to access and modify /etc/network/interfaces?
>
>
>
> Cheers,
>
> Raphaël
>
>
>
>
>
> On Fri, Jan 1, 2016 at 5:05 PM, Christoph Molitor <
> christoph.molitor at googlemail.com> wrote:
>
>> Dear all,
>>
>> first of all a happy new year to everyone.
>>
>> I am trying to use the augeas C API to apply changes to the
>> "/etc/network/interfaces" file.
>> So far I was able to apply changes to the tree. However, I am not able to
>> save the changes back to the file.
>> First, I thought it is a problem with the permissions. However, I copied
>> the interfaces file to a different folder and it still does not work.
>> Using the command line tool augtool, I am able to make the changes and
>> save them to the file.
>>
>> I uploaded an (almost) minimal version of my program to:
>> https://github.com/cmolitor/AugeasDemoC
>>
>> The repository includes an example „interfaces“.
>> I am working on a Raspberry Pi with Raspbian Jessie.
>> It would be great if someone could give me a hint what I am doing work
>> and where the problem might come from.
>>
>> Thanks for your support!
>>
>> Christoph
>>
>> _______________________________________________
>> augeas-devel mailing list
>> augeas-devel at redhat.com
>> https://www.redhat.com/mailman/listinfo/augeas-devel
>>
>
>
>
> --
> Raphaël Pinson
> Infrastructure Developer & Training Leader
> +33 458 482 013
>
> Camptocamp France
> Savoie Technolac
> BP 352
> 48, avenue du Lac du Bourget
> 73372 Le Bourget du Lac, Cedex
> www.camptocamp.com
>
>
>


-- 
Raphaël Pinson
Infrastructure Developer & Training Leader
+33 458 482 013

Camptocamp France
Savoie Technolac
BP 352
48, avenue du Lac du Bourget
73372 Le Bourget du Lac, Cedex
www.camptocamp.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/augeas-devel/attachments/20160111/8d14792a/attachment.htm>


More information about the augeas-devel mailing list