From 07ed15bbbd7c0fc2c946620f15f1963882144633 Mon Sep 17 00:00:00 2001 Message-Id: <07ed15bbbd7c0fc2c946620f15f1963882144633.1377873638.git.jdenemar@redhat.com> From: "Daniel P. Berrange" Date: Tue, 13 Aug 2013 11:36:00 +0100 Subject: [PATCH] Add an example config file for virtlockd For https://bugzilla.redhat.com/show_bug.cgi?id=991494 The virtlockd daemon supports an /etc/libvirt/virtlockd.conf config file, but we never installed a default config, nor created any augeas scripts. This change addresses that omission. Signed-off-by: Daniel P. Berrange (cherry picked from commit 38550ae80978d590a0dccf79108ec96180771fe1) --- .gitignore | 1 + libvirt.spec.in | 3 ++ src/Makefile.am | 20 ++++++++++++- src/locking/test_virtlockd.aug.in | 12 ++++++++ src/locking/virtlockd.aug | 44 ++++++++++++++++++++++++++++ src/locking/virtlockd.conf | 60 +++++++++++++++++++++++++++++++++++++++ 6 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 src/locking/test_virtlockd.aug.in create mode 100644 src/locking/virtlockd.aug create mode 100644 src/locking/virtlockd.conf diff --git a/src/Makefile.am b/src/Makefile.am index 5a7e05a..12ca204 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1586,7 +1586,7 @@ check-local: check-augeas $(NULL) check-augeas: check-augeas-qemu check-augeas-lxc check-augeas-sanlock \ - check-augeas-lockd + check-augeas-lockd check-augeas-virtlockd AUG_GENTEST = $(PERL) $(top_srcdir)/build-aux/augeas-gentest.pl EXTRA_DIST += $(top_srcdir)/build-aux/augeas-gentest.pl @@ -1634,11 +1634,20 @@ test_libvirt_lockd.aug: locking/test_libvirt_lockd.aug.in \ locking/qemu-lockd.conf $(AUG_GENTEST) $(AM_V_GEN)$(AUG_GENTEST) locking/qemu-lockd.conf $< $@ +test_virtlockd.aug: locking/test_virtlockd.aug.in \ + locking/virtlockd.conf $(AUG_GENTEST) + $(AM_V_GEN)$(AUG_GENTEST) locking/virtlockd.conf $< $@ + check-augeas-lockd: test_libvirt_lockd.aug $(AM_V_GEN)if test -x '$(AUGPARSE)'; then \ '$(AUGPARSE)' -I $(srcdir)/locking test_libvirt_lockd.aug; \ fi +check-augeas-virtlockd: test_virtlockd.aug + $(AM_V_GEN)if test -x '$(AUGPARSE)'; then \ + '$(AUGPARSE)' -I $(srcdir)/locking test_virtlockd.aug; \ + fi + # # Build our version script. This is composed of three parts: # @@ -2013,6 +2022,12 @@ virtlockd.8: $(srcdir)/virtlockd.8.in man8_MANS = virtlockd.8 +conf_DATA += locking/virtlockd.conf + +augeas_DATA += locking/virtlockd.aug +augeastest_DATA += test_virtlockd.aug + +CLEANFILES += test_virtlockd.aug MAINTAINERCLEANFILES += $(srcdir)/virtlockd.8.in EXTRA_DIST += \ @@ -2020,6 +2035,9 @@ EXTRA_DIST += \ locking/virtlockd.socket.in \ locking/virtlockd.pod.in \ virtlockd.8.in \ + locking/virtlockd.aug \ + locking/virtlockd.conf \ + locking/test_virtlockd.aug.in \ $(NULL) diff --git a/src/locking/test_virtlockd.aug.in b/src/locking/test_virtlockd.aug.in new file mode 100644 index 0000000..dcd47c3 --- /dev/null +++ b/src/locking/test_virtlockd.aug.in @@ -0,0 +1,12 @@ +module Test_virtlockd = + let conf = "log_level = 3 +log_filters=\"3:remote 4:event\" +log_outputs=\"3:syslog:libvirtd\" +log_buffer_size = 64 +" + + test Libvirtd.lns get conf = + { "log_level" = "3" } + { "log_filters" = "3:remote 4:event" } + { "log_outputs" = "3:syslog:libvirtd" } + { "log_buffer_size" = "64" } diff --git a/src/locking/virtlockd.aug b/src/locking/virtlockd.aug new file mode 100644 index 0000000..9d20e72 --- /dev/null +++ b/src/locking/virtlockd.aug @@ -0,0 +1,44 @@ +(* /etc/libvirt/libvirtd.conf *) + +module Libvirtd = + autoload xfm + + let eol = del /[ \t]*\n/ "\n" + let value_sep = del /[ \t]*=[ \t]*/ " = " + let indent = del /[ \t]*/ "" + + let array_sep = del /,[ \t\n]*/ ", " + let array_start = del /\[[ \t\n]*/ "[ " + let array_end = del /\]/ "]" + + let str_val = del /\"/ "\"" . store /[^\"]*/ . del /\"/ "\"" + let bool_val = store /0|1/ + let int_val = store /[0-9]+/ + let str_array_element = [ seq "el" . str_val ] . del /[ \t\n]*/ "" + let str_array_val = counter "el" . array_start . ( str_array_element . ( array_sep . str_array_element ) * ) ? . array_end + + let str_entry (kw:string) = [ key kw . value_sep . str_val ] + let bool_entry (kw:string) = [ key kw . value_sep . bool_val ] + let int_entry (kw:string) = [ key kw . value_sep . int_val ] + let str_array_entry (kw:string) = [ key kw . value_sep . str_array_val ] + + + (* Config entry grouped by function - same order as example config *) + let logging_entry = int_entry "log_level" + | str_entry "log_filters" + | str_entry "log_outputs" + | int_entry "log_buffer_size" + + (* Each enty in the config is one of the following three ... *) + let entry = logging_entry + let comment = [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \t\n][^\n]*)?/ . del /\n/ "\n" ] + let empty = [ label "#empty" . eol ] + + let record = indent . entry . eol + + let lns = ( record | comment | empty ) * + + let filter = incl "/etc/libvirt/virtlockd.conf" + . Util.stdexcl + + let xfm = transform lns filter diff --git a/src/locking/virtlockd.conf b/src/locking/virtlockd.conf new file mode 100644 index 0000000..b6450b4 --- /dev/null +++ b/src/locking/virtlockd.conf @@ -0,0 +1,60 @@ +# Master virtlockd daemon configuration file +# + +################################################################# +# +# Logging controls +# + +# Logging level: 4 errors, 3 warnings, 2 information, 1 debug +# basically 1 will log everything possible +#log_level = 3 + +# Logging filters: +# A filter allows to select a different logging level for a given category +# of logs +# The format for a filter is one of: +# x:name +# x:+name +# where name is a string which is matched against source file name, +# e.g., "remote", "qemu", or "util/json", the optional "+" prefix +# tells libvirt to log stack trace for each message matching name, +# and x is the minimal level where matching messages should be logged: +# 1: DEBUG +# 2: INFO +# 3: WARNING +# 4: ERROR +# +# Multiple filter can be defined in a single @filters, they just need to be +# separated by spaces. +# +# e.g. to only get warning or errors from the remote layer and only errors +# from the event layer: +#log_filters="3:remote 4:event" + +# Logging outputs: +# An output is one of the places to save logging information +# The format for an output can be: +# x:stderr +# output goes to stderr +# x:syslog:name +# use syslog for the output and use the given name as the ident +# x:file:file_path +# output to a file, with the given filepath +# In all case the x prefix is the minimal level, acting as a filter +# 1: DEBUG +# 2: INFO +# 3: WARNING +# 4: ERROR +# +# Multiple output can be defined, they just need to be separated by spaces. +# e.g. to log all warnings and errors to syslog under the virtlockd ident: +#log_outputs="3:syslog:virtlockd" +# + +# Log debug buffer size: default 64 +# The daemon keeps an internal debug log buffer which will be dumped in case +# of crash or upon receiving a SIGUSR2 signal. This setting allows to override +# the default buffer size in kilobytes. +# If value is 0 or less the debug log buffer is deactivated +#log_buffer_size = 64 -- 1.8.3.2