[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