On Tue, 2010-02-16 at 07:09 -0700, Steven Dake wrote:
> The patch looks great but I prefer a feature addition as well:
> 
> configure --enable-augeas option which has the effect of enabling the
> installation of the augeas files.
> 

Hi

Attached is a patch with the --enable-augeas config option.

-Angus


> On systems where there is no augeas, I'd wonder what would happen with
> this patch.
> 
> Regards
> -steve
> 
> On Tue, 2010-02-16 at 13:09 +1100, Angus Salkeld wrote:
> > Hi
> > 
> > This adds an augeas lens to corosync (so you can configure corosync.conf
> > via augtool and python-augeas).
> > 
> > Here is my post to the augeas ML.
> > https://www.redhat.com/archives/augeas-devel/2010-February/msg00041.html
> > 
> > I have included rules to install the lens as the augeas maintainer suggests
> > (Steve I am not sure if that is what you want).
> > Note on my system I have the following
> > ls /usr/share/augeas/lenses/
> > corosync.aug  dist  libvirtd.aug  libvirtd_qemu.aug  tests
> > 
> > 
> > The test suite I will post soon needs this to configure corosync.
> > 
> > -Angus
>From 0462f3533cc20968fc9e96e1da4cd8e0de7795a6 Mon Sep 17 00:00:00 2001
From: Angus Salkeld <[email protected]>
Date: Wed, 17 Feb 2010 07:23:58 +1100
Subject: [PATCH] Add augeas lense for corosync.conf

Signed-off-by: Angus Salkeld <[email protected]>
---
 Makefile.am                         |    8 +++
 conf/lenses/corosync.aug            |  120 +++++++++++++++++++++++++++++++++++
 conf/lenses/tests/test_corosync.aug |   87 +++++++++++++++++++++++++
 configure.ac                        |   10 +++
 4 files changed, 225 insertions(+), 0 deletions(-)
 create mode 100644 conf/lenses/corosync.aug
 create mode 100644 conf/lenses/tests/test_corosync.aug

diff --git a/Makefile.am b/Makefile.am
index 5cb90b8..976ca11 100644
--- a/Makefile.am
+++ b/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
 
diff --git a/conf/lenses/corosync.aug b/conf/lenses/corosync.aug
new file mode 100644
index 0000000..a7ff421
--- /dev/null
+++ b/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")
diff --git a/conf/lenses/tests/test_corosync.aug b/conf/lenses/tests/test_corosync.aug
new file mode 100644
index 0000000..0bf3277
--- /dev/null
+++ b/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" } }
diff --git a/configure.ac b/configure.ac
index 45a59d9..9f44aac 100644
--- a/configure.ac
+++ b/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=""
 
-- 
1.6.6

_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to