# HG changeset patch # User Raphael Pinson <[EMAIL PROTECTED]> # Date 1216824419 -7200 # Node ID 255c6af88be56271f3a07347320fa8d31cdfc97c # Parent c1415b2594b9b5607b61dffac5aac23a0233074f Add bbhosts module and associated test
diff -r c1415b2594b9 -r 255c6af88be5 lenses/bbhosts.aug --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lenses/bbhosts.aug Wed Jul 23 16:46:59 2008 +0200 @@ -0,0 +1,89 @@ +(* BB-hosts module for Augeas *) +(* Author: Raphael Pinson <[EMAIL PROTECTED]> *) +(* *) +(* Supported : *) +(* *) +(* Todo : *) +(* *) + +module BBhosts = + autoload xfm + + (* Define useful shortcuts *) + + let eol = del /[ \t]*\n/ "\n" + let eol_no_spc = Util.del_str "\n" + let sep_spc = Util.del_ws_spc + let word = store /[^|;# \n\t]+/ + let value_to_eol = store /[^ \t][^\n]+/ + let ip = store /[0-9\.]+/ + let url = store /https?:[^;,# \n\t]+/ + + (* Define comments and empty lines *) + let comment = [ label "comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . eol_no_spc ] + let empty = [ del /[ \t]*\n/ "" ] + + + (* Define host *) + let host_ip = [ label "ip" . ip ] + let host_fqdn = [ label "fqdn" . sep_spc . word ] + + let host_test_url = [ label "url" . sep_spc . url ] + let host_test_cont (kw:string) = [ sep_spc . store /!?/ . key kw . + (Util.del_str ";" . + [ label "url" . word ] . + (Util.del_str ";" . [ label "keyword" . word ])? + )? + ] + + + let host_test_flag (kw:string) = [ sep_spc . store /!?/ . key kw ] + + let host_test = host_test_cont "cont" + | host_test_cont "contInsecure" + | host_test_cont "dns" + | host_test_flag "noping" + | host_test_flag "noconn" + | host_test_flag "ssh" + | host_test_flag "smtp" + | host_test_flag "pop3" + | host_test_flag "imap2" + | host_test_flag "telnet" + | host_test_flag "BBDISPLAY" + | host_test_flag "BBNET" + | host_test_flag "BBPAGER" + | host_test_url + + + let host_opts = [ label "probes" . sep_spc . Util.del_str "#" . host_test* ] + + let host = [ label "host" . host_ip . host_fqdn . host_opts . eol ] + + (* Define group-compress and group-only *) + let group_compress = [ key "group-compress" . sep_spc . value_to_eol . eol_no_spc . + ( comment | empty | host)* + ] + + let group_only_col = [ label "col" . word ] + let group_only_cols = sep_spc . group_only_col . ( Util.del_str "|" . group_only_col )* + let group_only = [ key "group-only" . group_only_cols . sep_spc . value_to_eol . eol_no_spc . + ( comment | empty | host)* + ] + + + (* Define page *) + let page_title = [ label "title" . sep_spc . value_to_eol . eol_no_spc ] + let page = [ key "page" . sep_spc . word . page_title . + ( comment | empty | host )* . ( group_compress | group_only )* + ] + + + (* Define lens *) + + let lns = (comment | empty)* . page* + + let filter = incl "/etc/bb/bb-hosts" + . Util.stdexcl + + let xfm = transform lns filter + diff -r c1415b2594b9 -r 255c6af88be5 lenses/tests/test_bbhosts.aug --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lenses/tests/test_bbhosts.aug Wed Jul 23 16:46:59 2008 +0200 @@ -0,0 +1,94 @@ +module Test_bbhosts = + + let conf = " +# A comment + +page firstpage My first page + +group-compress A group +1.2.3.4 amachine # http://url.to/monitor https://another.url/to/monitor cont;http://a.cont.url/to/monitor;wordtofind +1.2.3.5 amachine2 # http://url.to/monitor https://another.url/to/monitor !cont;http://a.cont.url/to/monitor;wordtofind + +group-only dns VIP DNS +10.50.25.48 mydnsmachine.network # +10.50.25.49 myotherdnsmachine.network # noping noconn !ssh dns;mydnstocheck +# a comment in a group + + +page anotherpage A new page + +# a comment in a page + +group-compress My test +192.168.0.2 myhost # https://myurl.com:1256 noconn pop3 imap2 ssh +192.168.0.3 myhost2 # !imap2 telnet dns +" + + test BBhosts.lns get conf = + {} + { "comment" = "A comment" } + {} + { "page" = "firstpage" + { "title" = "My first page" } + {} + { "group-compress" = "A group" + { "host" + { "ip" = "1.2.3.4" } + { "fqdn" = "amachine" } + { "probes" + { "url" = "http://url.to/monitor" } + { "url" = "https://another.url/to/monitor" } + { "cont" = "" + { "url" = "http://a.cont.url/to/monitor" } + { "keyword" = "wordtofind" } } } } + { "host" + { "ip" = "1.2.3.5" } + { "fqdn" = "amachine2" } + { "probes" + { "url" = "http://url.to/monitor" } + { "url" = "https://another.url/to/monitor" } + { "cont" = "!" + { "url" = "http://a.cont.url/to/monitor" } + { "keyword" = "wordtofind" } } } } + {} } + { "group-only" = "VIP DNS" + { "col" = "dns" } + { "host" + { "ip" = "10.50.25.48" } + { "fqdn" = "mydnsmachine.network" } + { "probes" } } + { "host" + { "ip" = "10.50.25.49" } + { "fqdn" = "myotherdnsmachine.network" } + { "probes" + { "noping" = "" } + { "noconn" = "" } + { "ssh" = "!" } + { "dns" = "" + { "url" = "mydnstocheck" } } } } + { "comment" = "a comment in a group" } + {} + {} } } + { "page" = "anotherpage" + { "title" = "A new page" } + {} + { "comment" = "a comment in a page" } + {} + { "group-compress" = "My test" + { "host" + { "ip" = "192.168.0.2" } + { "fqdn" = "myhost" } + { "probes" + { "url" = "https://myurl.com:1256" } + { "noconn" = "" } + { "pop3" = "" } + { "imap2" = "" } + { "ssh" = "" } } } + { "host" + { "ip" = "192.168.0.3" } + { "fqdn" = "myhost2" } + { "probes" + { "imap2" = "!" } + { "telnet" = "" } + { "dns" = "" } } } } } + _______________________________________________ augeas-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/augeas-devel
