# 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

Reply via email to