[augeas-devel] [PATCH] Add ntp module and associated test

raphink at gmail.com raphink at gmail.com
Wed Jul 23 14:22:01 UTC 2008


# HG changeset patch
# User Raphael Pinson <raphink at gmail.com>
# Date 1216822897 -7200
# Node ID c1415b2594b9b5607b61dffac5aac23a0233074f
# Parent  af5cf155aa832b7e0e048926c6818b2b9499a0db
Add ntp module and associated test

diff -r af5cf155aa83 -r c1415b2594b9 lenses/ntp.aug
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lenses/ntp.aug	Wed Jul 23 16:21:37 2008 +0200
@@ -0,0 +1,73 @@
+(* NTP module for Augeas                      *)
+(* Author: Raphael Pinson <raphink at gmail.com> *)
+(*                                            *)
+(* Status: basic settings supported           *)
+
+module Ntp =
+  autoload xfm
+
+
+    (* Define useful shortcuts *)
+
+    let eol = Util.del_str "\n"
+    let sep_spc = Util.del_ws_spc
+    let word = /[^,# \n\t]+/
+    let num  = /[0-9]+/
+
+
+    (* define comments and empty lines *)
+    let comment = [ label "comment" . del /#[ \t]*/ "#" .  store /([^ \t\n][^\n]*)?/ . eol ]
+    let empty   = [ del /[ \t]*\n/ "" ]
+
+
+    (* Define generic record *)
+    let record (kw:string) (value:lens) = [ key kw . sep_spc . store word . value . eol ]
+
+    (* Define a server record *)
+    let version  = [ sep_spc . key "version" . sep_spc . store word ]
+    let server_record   = record "server" version
+
+    (* Define simple settings *)
+    let simple_setting (kw:string) = [ key kw . sep_spc . store word . eol ]
+
+    let simple_settings = simple_setting "driftfile"
+                        | simple_setting "logfile"
+			| simple_setting "statsdir"
+    
+    (* Define restrict *)
+    let action    = [ label "action" . sep_spc . store word ]
+    let restrict_record   = record "restrict" action?
+
+    (* Define statistics *)
+    let statistics_flag (kw:string) = [ sep_spc . key kw ]
+
+    let statistics_opts = statistics_flag "loopstats"
+                        | statistics_flag "peerstats"
+			| statistics_flag "clockstats"
+			| statistics_flag "rawstats"
+
+    let statistics_record = [ key "statistics" . statistics_opts* . eol ]
+
+
+    (* Define filegen *)
+    let filegen = del /filegen[ \t]+/ "filegen " . store word
+    let filegen_opt (kw:string) = [ sep_spc . key kw . sep_spc . store word ]
+    (* let filegen_flag (kw:string) = [ label kw . sep_spc . store word ] *)
+    let filegen_select (kw:string) (select:regexp) = [ label kw . sep_spc . store select ]
+
+    let filegen_opts = filegen_opt "file"
+                     | filegen_opt "type"
+		     | filegen_select "enable" /(en|dis)able/
+		     | filegen_select "link" /(no)?link/
+
+    let filegen_record = [ label "filegen" . filegen . filegen_opts* . eol ]
+
+
+    (* Define lens *)
+
+    let lns = ( comment | empty | server_record | restrict_record | simple_settings | statistics_record | filegen_record )*
+
+    let filter = (incl "/etc/ntp.conf")
+        . Util.stdexcl
+
+    let xfm = transform lns filter
diff -r af5cf155aa83 -r c1415b2594b9 lenses/tests/test_ntp.aug
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lenses/tests/test_ntp.aug	Wed Jul 23 16:21:37 2008 +0200
@@ -0,0 +1,71 @@
+module Test_ntp =
+
+   let conf = "#
+# Fichier genere par puppet
+# Environnement: development
+
+server dns01.echo-net.net version 3
+server dns02.echo-net.net version 4
+
+driftfile /var/lib/ntp/ntp.drift
+
+restrict default ignore
+
+#server dns01.echo-net.net
+restrict 192.168.0.150 nomodify
+
+# allow everything from localhost
+restrict 127.0.0.1
+
+logfile /var/log/ntpd
+statsdir /var/log/ntpstats/
+
+statistics loopstats peerstats clockstats
+filegen loopstats file loopstats type day enable link
+filegen peerstats file peerstats type day disable
+filegen clockstats file clockstats type day enable nolink
+"
+
+   test Ntp.lns get conf = 
+      { "comment" = "" }
+      { "comment" = "Fichier genere par puppet" }
+      { "comment" = "Environnement: development" }
+      {}
+      { "server" = "dns01.echo-net.net"
+         { "version"  = "3" } }
+      { "server" = "dns02.echo-net.net"
+         { "version"  = "4" } }
+      {}
+      { "driftfile" = "/var/lib/ntp/ntp.drift" }
+      {}
+      { "restrict"  = "default" 
+         { "action" = "ignore" } }
+      {}
+      { "comment" = "server dns01.echo-net.net" }
+      { "restrict"  = "192.168.0.150"
+         { "action" = "nomodify" } }
+      {}
+      { "comment" = "allow everything from localhost" }
+      { "restrict" = "127.0.0.1" }
+      {}
+      { "logfile"  = "/var/log/ntpd" }
+      { "statsdir" = "/var/log/ntpstats/" }
+      {}
+      { "statistics"
+         { "loopstats" }
+	 { "peerstats" }
+	 { "clockstats" } }
+      { "filegen" = "loopstats"
+         { "file" = "loopstats" }
+	 { "type" = "day" }
+	 { "enable" = "enable" }
+	 { "link" = "link" } }
+      { "filegen" = "peerstats"
+         { "file" = "peerstats" }
+	 { "type" = "day" }
+         { "enable" = "disable" } }
+      { "filegen" = "clockstats"
+         { "file" = "clockstats" }
+	 { "type" = "day" }
+         { "enable" = "enable" }
+	 { "link" = "nolink" } }




More information about the augeas-devel mailing list