[augeas-devel] help with nrpe.cfg lens

Marc Fournier marc.fournier at camptocamp.com
Thu Aug 5 14:57:43 UTC 2010


Hello,

I'm trying to build a lens to handle nrpe's config file. Apart from
some easy "key=value" options, this file can have N "command" options,
which typically look like:

command[check_load]=/usr/lib/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$

I was thinking of creating this lens in a way which would allow to
access these "command" options by doing:
set /files/etc/nrpe.cfg/command/check_load "..."

I'm having some trouble understanding the way subtrees should be
declared in a lens, and I found no other lens doing exactly what
I'm trying to do.

My (stripped-down) code is currently unable to match more than
one sub-item:

test_test.aug:5.7-.31:exception: Get did not match entire input
    Lens: ./test.aug:8.16-.95:
    Error encountered at 2:0 (17 characters into string)
             <command[foo]=bar\n|=|command[bar]=baz\n>

    Tree generated so far:
    /command
/command/foo = "bar"

Where the test looks like:

module Test_test =

  let command = "command[foo]=bar\ncommand[bar]=baz\n"

  test Test.command get command =
    { "command"
      { "foo" = "bar" }
      { "bar" = "baz" }
    }


And the lens itself:

module Test =

  let nl = del /\n/ "\n"
  let eq = del /=/ "="
  let obrkt = del /\[/ "["
  let cbrkt = del /\]/ "]"

  let command = [ key "command" .
    [ obrkt . key /[a-z]+/ . cbrkt . eq . store /[^=]+/ . nl ]*
  ]

  let lns = ( command ) *


First, do you think it makes sense to access the "command"
options this way ?

Then, if anyone has a clue what's wrong with my current lens...

Many thanks !
Marc





More information about the augeas-devel mailing list