Просмотр исходного кода

Add augeas lense for corosync.conf

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2658 fd59a12c-fef9-0310-b244-a6a79926bd2f
Angus Salkeld 16 лет назад
Родитель
Сommit
07f506f0ac
4 измененных файлов с 225 добавлено и 0 удалено
  1. 8 0
      Makefile.am
  2. 120 0
      conf/lenses/corosync.aug
  3. 87 0
      conf/lenses/tests/test_corosync.aug
  4. 10 0
      configure.ac

+ 8 - 0
Makefile.am

@@ -48,6 +48,14 @@ corosysconfdir		= ${COROSYSCONFDIR}
 
 corosysconf_DATA	= conf/corosync.conf.example
 
+if INSTALL_AUGEAS
+corolensdir		= ${datadir}/augeas/lenses
+corolens_DATA		= conf/lenses/corosync.aug
+
+corolenstestdir		= ${corolensdir}/tests
+corolenstest_DATA	= conf/lenses/tests/test_corosync.aug
+endif
+
 SUBDIRS			= include lcr lib exec services tools test pkgconfig \
 			  man init
 

+ 120 - 0
conf/lenses/corosync.aug

@@ -0,0 +1,120 @@
+(* Process /etc/corosync/corosync.conf                             *)
+(* The lens is based on the corosync.conf(5) man page     *)
+module Corosync =
+
+autoload xfm
+
+let comment = Util.comment
+let empty = Util.empty
+let dels = Util.del_str
+let eol = Util.eol
+
+let ws = del /[ \t]+/ " "
+let wsc = del /:[ \t]+/ ": "
+let indent = del /[ \t]*/ ""
+(* We require that braces are always followed by a newline *)
+let obr = del /\{([ \t]*)\n/ "{\n"
+let cbr = del /[ \t]*}[ \t]*\n/ "}\n"
+
+let ikey (k:regexp) = indent . key k
+
+let section (n:regexp) (b:lens) =
+  [ ikey n . ws . obr . (b|empty|comment)* . cbr ]
+
+let kv (k:regexp) (v:regexp) =
+  [ ikey k .  wsc . store v . eol ]
+
+(* FIXME: it would be much more concise to write                       *)
+(* [ key k . ws . (bare | quoted) ]                                    *)
+(* but the typechecker trips over that                                 *)
+let qstr (k:regexp) =
+  let delq = del /['"]/ "\"" in
+  let bare = del /["']?/ "" . store /[^"' \t\n]+/ . del /["']?/ "" in
+  let quoted = delq . store /.*[ \t].*/ . delq in
+  [ ikey k . wsc . bare . eol ]
+ |[ ikey k . wsc . quoted . eol ]
+
+(* The compatibility option *)
+let compatibility = kv "compatibility" /whitetank|none/
+
+
+(* A integer subsection *)
+let interface =
+  let setting =
+    kv "ringnumber" Rx.integer
+    |kv "mcastport" Rx.integer
+    |qstr /bindnetaddr|mcastaddr/ in
+  section "interface" setting
+
+(* The totem section *)
+let totem =
+  let setting =
+    kv "clear_node_high_bit" /yes|no/
+    |kv "rrp_mode" /none|active|passive/
+    |kv "vsftype" /none|ykd/
+    |kv "secauth" /on|off/
+    |kv "transport" /udp|iba/
+    |kv "version" Rx.integer
+    |kv "nodeid" Rx.integer
+    |kv "threads" Rx.integer
+    |kv "netmtu" Rx.integer
+    |kv "token" Rx.integer
+    |kv "token_retransmit" Rx.integer
+    |kv "hold" Rx.integer
+    |kv "token_retransmits_before_loss_const" Rx.integer
+    |kv "join" Rx.integer
+    |kv "send_join" Rx.integer
+    |kv "consensus" Rx.integer
+    |kv "merge" Rx.integer
+    |kv "downcheck" Rx.integer
+    |kv "fail_to_recv_const" Rx.integer
+    |kv "seqno_unchanged_const" Rx.integer
+    |kv "heartbeat_failures_allowed" Rx.integer
+    |kv "max_network_delay" Rx.integer
+    |kv "max_messages" Rx.integer
+    |kv "window_size" Rx.integer
+    |kv "rrp_problem_count_timeout" Rx.integer
+    |kv "rrp_problem_count_threshold" Rx.integer
+    |kv "rrp_token_expired_timeout" Rx.integer
+    |interface in
+  section "totem" setting
+
+let common_logging =
+   kv "to_syslog" /yes|no|on|off/
+   |kv "to_stderr" /yes|no|on|off/
+   |kv "to_logfile" /yes|no|on|off/
+   |kv "debug" /yes|no|on|off/
+   |kv "logfile_priority" /alert|crit|debug|emerg|err|info|notice|warning/
+   |kv "syslog_priority" /alert|crit|debug|emerg|err|info|notice|warning/
+   |kv "syslog_facility" /daemon|local0|local1|local2|local3|local4|local5|local6|local7/
+   |qstr /logfile|tags/
+
+(* A logger_subsys subsection *)
+let logger_subsys =
+  let setting =
+    qstr /subsys/
+   |common_logging in
+  section "logger_subsys" setting
+
+
+(* The logging section *)
+let logging =
+  let setting =
+   kv "fileline" /yes|no|on|off/
+   |kv "function_name" /yes|no|on|off/
+   |kv "timestamp" /yes|no|on|off/
+   |common_logging
+   |logger_subsys in
+  section "logging" setting
+
+
+(* The amf section *)
+let amf =
+  let setting =
+   kv "mode" /enabled|disabled/ in
+  section "amf" setting
+
+
+let lns = (comment|empty|compatibility|totem|logging|amf)*
+
+let xfm = transform lns (incl "/etc/corosync/corosync.conf")

+ 87 - 0
conf/lenses/tests/test_corosync.aug

@@ -0,0 +1,87 @@
+module Test_corosync =
+
+  let conf = "# Please read the corosync.conf.5 manual page
+compatibility: whitetank
+
+totem {
+	version: 2
+	secauth: off
+	threads: 0
+    clear_node_high_bit: no
+    rrp_mode: none
+    transport: udp
+    token: 1000
+	interface {
+		ringnumber: 0
+		bindnetaddr: 192.168.122.1
+		mcastaddr: 226.94.1.1
+		mcastport: 5405
+	}
+}
+
+logging {
+	fileline: off
+    function_name: on
+	to_stderr: yes
+	to_logfile: yes
+	to_syslog: yes
+	logfile: /tmp/corosync.log
+	debug: off
+	timestamp: on
+	logger_subsys {
+	    to_syslog: no
+		subsys: CPG
+		debug: on
+	}
+	logger_subsys {
+	    to_stderr: no
+	    logfile: /tmp/corosync-msg.log
+		subsys: MSG
+		debug: on
+	}
+}
+
+amf {
+	mode: disabled
+}\n"
+
+test Corosync.lns get conf =
+
+  { "#comment" = "Please read the corosync.conf.5 manual page" }
+  { "compatibility" = "whitetank" }
+  { }
+  { "totem"
+	{ "version" = "2" }
+	{ "secauth" = "off" }
+	{ "threads" = "0" }
+    { "clear_node_high_bit" = "no" }
+    { "rrp_mode" = "none" }
+    { "transport" = "udp" }
+    { "token" = "1000" }
+	{ "interface"
+		{ "ringnumber" = "0" }
+		{ "bindnetaddr" = "192.168.122.1" }
+		{ "mcastaddr" = "226.94.1.1" }
+		{ "mcastport" = "5405" } } }
+  { }
+  { "logging"
+	{ "fileline" = "off" }
+	{ "function_name" = "on" }
+	{ "to_stderr" = "yes" }
+	{ "to_logfile" = "yes" }
+	{ "to_syslog" = "yes" }
+	{ "logfile" = "/tmp/corosync.log" }
+	{ "debug" = "off" }
+	{ "timestamp" = "on" }
+	{ "logger_subsys"
+	    { "to_syslog" = "no" }
+		{ "subsys" = "CPG" }
+		{ "debug" = "on" } }
+	{ "logger_subsys"
+	    { "to_stderr" = "no" }
+	    { "logfile" = "/tmp/corosync-msg.log" }
+		{ "subsys" = "MSG" }
+		{ "debug" = "on" } } }
+  { }
+  { "amf"
+	{ "mode" = "disabled" } }

+ 10 - 0
configure.ac

@@ -204,6 +204,12 @@ AC_ARG_ENABLE([rdma],
 	[ enable_rdma="no" ])
 AM_CONDITIONAL(BUILD_RDMA, test x$enable_rdma = xyes)
 
+AC_ARG_ENABLE([augeas],
+	[  --enable-augeas           : Install the augeas lens for corosync.conf ],,
+	[ enable_augeas="no" ])
+AM_CONDITIONAL(INSTALL_AUGEAS, test x$enable_augeas = xyes)
+
+
 AC_ARG_WITH([initddir],
 	[  --with-initddir=DIR     : path to init script directory. ],
 	[ INITDDIR="$withval" ],
@@ -328,6 +334,10 @@ if test "x${enable_rdma}" = xyes; then
 	PACKAGE_FEATURES="$PACKAGE_FEATURES rdma"
 fi
 
+if test "x${enable_augeas}" = xyes; then
+	PACKAGE_FEATURES="$PACKAGE_FEATURES augeas"
+fi
+
 # extra warnings
 EXTRA_WARNINGS=""