Hi,

I am working on a lens for Xymon (a monitoring solution evolved from
BigBrother) and I have almost everything working but when I try to put
values into a new subtree for a page I am running into a failed to match
exception.

Basically the page is exactly the same as the page definition found in
the bbhosts.aug lens that ships with Augeas already. It is:
page page-name title that extends to end of line

On a get function my lens picks up the page name and title fine but when
I create a new page subtree and try to add a title Augeas cannot seem to
figure out how to add it in. I think this is a problem with the way I am
storing the value for the title.

[ label "pagetitle" . Util.del_ws_spc . store /[^ \t][^\n]+/ .
Util.del_str "\n" ]

(If this gets mangled in transport it is the same way it is done in the
bbhost.aug file, and it too has the same put problem.

My question is, is there a better way to grab a value that may have
spaces to the end of line character that Augeas can understand when it
tries to put values back in?

Attached is a copy of my xymon.aug so far, it could use some comments
but I hope to submit it for addition into the distribution.

Thanks,

-- 
Jason Kincl
module Xymon =
  autoload xfm

let empty = Util.empty
let eol = Util.eol
let word = Rx.word
let space = Rx.space
let ip = Rx.ip
let del_ws_spc = Util.del_ws_spc
let value_to_eol = store /[^ \t][^\n]+/
let eol_no_spc = Util.del_str "\n"

let comment = Util.comment_generic /[ \t]*[;#][ \t]*/ "# "
let include = [ key /include|dispinclude|netinclude|directory/ . del_ws_spc . 
value_to_eol . eol_no_spc ]
let title = [ key "title" . del_ws_spc . value_to_eol . eol_no_spc ]

(* Define host *)
let tag = del_ws_spc . [ label "tag" . store /[^ \n\t]+/ ]
let host_ip = [ label "ip" . store ip ]
let host_hostname =  [ label "fqdn" . store word ]
let host_colon = del /[ \t]*#/ " #"
let host = [ label "host" . host_ip . del space " " . host_hostname . 
host_colon . tag* . eol ]

(* Define group-compress and group-only *)
let group_extra = del_ws_spc . value_to_eol . eol_no_spc . (comment | empty | 
host | title)*
let group = [ key "group" . group_extra ]
let group_compress = [ key "group-compress" . group_extra ]

let group_only_col = [ label "col" . store Rx.word ]
let group_only_cols = del_ws_spc . group_only_col . ( Util.del_str "|" . 
group_only_col )*
let group_only = [ key "group-only" . group_only_cols . group_extra ]

(* Have to use namespacing because page's title overlaps plain title tag *)
let page_name = store word
let page_title = [ label "pagetitle" . del_ws_spc . value_to_eol . eol_no_spc ]
let page_extra = del_ws_spc . page_name . (page_title | eol_no_spc) . (comment 
| empty | title | include | host)*
                                                                     . (group | 
group_compress | group_only)*
let page = [ key /page|subpage/ . page_extra ]

let subparent_parent = [ label "parent" . store word ]
let subparent = [ key "subparent" . del_ws_spc . subparent_parent . page_extra ]

let ospage = [ key "ospage" . del_ws_spc . store word . del_ws_spc . [ label 
"ospagetitle" . value_to_eol . eol_no_spc ] ]

let lns = (empty | comment | include | host | title | ospage )* . (group | 
group_compress | group_only)* . (page | subparent)*

let filter = incl "/etc/xymon/hosts.cfg" . incl "/etc/xymon/hosts1.cfg" . incl 
"/etc/xymon/pages.d/pages.cfg"
           . Util.stdexcl

let xfm = transform lns filter

_______________________________________________
augeas-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/augeas-devel

Reply via email to