[augeas-devel] lens and query to append to a key:value pair in an INI file

Mol, Xavier (SCC) xavier.mol at kit.edu
Mon Mar 7 08:04:58 UTC 2016


Hello Nathan,

 

have you seen/read the wiki on Augeas' GitHub page already?

 

Read about how XPATH in used in Augeas:

https://github.com/hercules-team/augeas/wiki/Path-expressions

 

How you can insert new nodes to a Augeas tree:

https://github.com/hercules-team/augeas/wiki/Adding-nodes-to-the-tree

 

There is just one very useful short-cut, which is not mentioned on the wiki: Augeas will create any node you are about to use automatically, in case it doesn't exist.

 

> 1) creating 'tags' if not present

set $datadog/tags

… will create a 'tags' node (in last position) on root level if it doesn't exist yet, otherwise nothing will happen. ($datadog contains the path to your datadog.ini file)

 

> 2) checking the tag string for the presence of my key:value pair

Use 'print' or 'match' with a suitable xpath expression.

 

> 3) appending my key:value pair tag if not present

set $datadog/tags/<key> <value>

(Replace key and value with your strings) This will create a node with your key or update the existing node and assign it the value. This works as long as the key-string is unique.

 

Ciao,

Xavier.

 

 

From: augeas-devel-bounces at redhat.com [mailto:augeas-devel-bounces at redhat.com] On Behalf Of Nathan Valentine
Sent: Friday, March 04, 2016 7:58 PM
To: augeas-devel at redhat.com
Subject: [augeas-devel] lens and query to append to a key:value pair in an INI file

 

Hey, folks.

 

Not sure if I'm stuck on a problem with my custom lens, my understanding of XPATH queries, or both (likely).

 

I'm trying to write a lens for the Datadog monitoring agent config file which is an INI file using ':' as the separator. I took the Puppet.lens and modified it ever so lightly. Here's a link for reference:

 

https://github.com/nrvale0/puppet-datadog-agent/blob/add_tag_define/lib/augeas/lenses/datadogagent.aug

 

And here's a snippet of a typical datadog.conf file:

 

https://gist.github.com/nrvale0/6fe12c3bcf7777340455

 

The motivation for writing the lens is I would like to be able to append new tags to /files/etc/dd-agent/datadog.conf/Main/tags but I'm unsure as to the best/correct way of:

 

1) creating 'tags' if not present

2) checking the tag string for the presence of my key:value pair

3) appending my key:value pair tag if not present

 

I'm also a little concerned that there will be a parse conflict with the INI file format of using colon as a delimeter and the values of the 'tags' entry having embedded colons but first things first..

 

Any advice would be greatly appreciated.

 

-- 

--- V

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/augeas-devel/attachments/20160307/14e7c27f/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6401 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/augeas-devel/attachments/20160307/14e7c27f/attachment.p7s>


More information about the augeas-devel mailing list