From 8cd29c1a058fff13f7da8ba8820642e7a44b57ca Mon Sep 17 00:00:00 2001 From: Dominic Cleal Date: Tue, 9 Sep 2014 09:12:28 +0100 Subject: [PATCH] Kdump: parse new options, permit EOL comments, refactor Fixes RHBZ#1139298 (cherry picked from commit a8d43f617a8238107b71c498136800cb561b6246) Conflicts: NEWS Test_Kdump: fix test of complete config file (cherry picked from commit 0951590aa50c37f0ea89f71e9509a7ccff587cd2) --- doc/naturaldocs/conf/lenses/Menu.txt | 1 + lenses/kdump.aug | 64 +++++++++++++---------- lenses/tests/test_kdump.aug | 99 ++++++++++++++++++++++++++++-------- 3 files changed, 116 insertions(+), 48 deletions(-) diff --git a/doc/naturaldocs/conf/lenses/Menu.txt b/doc/naturaldocs/conf/lenses/Menu.txt index 2a9af26..af0d421 100644 --- a/doc/naturaldocs/conf/lenses/Menu.txt +++ b/doc/naturaldocs/conf/lenses/Menu.txt @@ -208,6 +208,7 @@ Group: Tests and Examples { File: Test_JettyRealm (tests/test_jettyrealm.aug) File: Test_JMXAccess (tests/test_jmxaccess.aug) File: Test_JMXPassword (tests/test_jmxpassword.aug) + File: Test_Kdump (tests/test_kdump.aug) File: Test_Keepalived (tests/test_keepalived.aug) File: Test_Ldso (tests/test_ldso.aug) File: Test_Lightdm (tests/test_lightdm.aug) diff --git a/lenses/kdump.aug b/lenses/kdump.aug index b8f4055..ddf50ed 100644 --- a/lenses/kdump.aug +++ b/lenses/kdump.aug @@ -17,16 +17,36 @@ About: Configuration files module Kdump = autoload xfm +(************************************************************************ + * Group: USEFUL PRIMITIVES + *************************************************************************) + let empty = Util.empty let comment = Util.comment -let value_to_eol = store Rx.space_in +let value_to_eol = store /[^ \t\n#][^\n#]*[^ \t\n#]|[^ \t\n#]/ +let int_to_eol = store Rx.integer let delimiter = Util.del_ws_spc let eol = Util.eol -let value_to_spc = store Rx.no_spaces +let value_to_spc = store Rx.neg1 let key_to_space = key /[A-Za-z0-9_.\$-]+/ -let eq = Util.del_str "=" +let eq = Sep.equal + +(************************************************************************ + * Group: ENTRY TYPES + *************************************************************************) + +let list (kw:string) = counter kw + . Build.key_value_line_comment kw delimiter + (Build.opt_list [ seq kw . value_to_spc ] delimiter) + comment + +let mdl_key_value = [ delimiter . key_to_space . ( eq . value_to_spc)? ] +let mdl_options = [ key_to_space . mdl_key_value+ ] +let mod_options = [ key "options" . delimiter . mdl_options . (comment|eol) ] -let simple_entry (kw:string) = [ key kw . delimiter . value_to_eol . eol ] +(************************************************************************ + * Group: ENTRIES + *************************************************************************) (* Got from mount(8) *) let fs_types = "adfs" | "affs" | "autofs" | "cifs" | "coda" | "coherent" @@ -37,32 +57,20 @@ let fs_types = "adfs" | "affs" | "autofs" | "cifs" | "coda" | "coherent" | "smbfs" | "sysv" | "tmpfs" | "ubifs" | "udf" | "ufs" | "umsdos" | "usbfs" | "vfat" | "xenix" | "xfs" | "xiafs" -let fs = [ key fs_types . delimiter . value_to_eol . eol ] - -let bin = [ seq "bin" . delimiter . value_to_spc ] -let extra_bins = [ key "extra_bins" . (bin)+ . eol ] - -let mdl = [ seq "module" . delimiter . value_to_spc ] -let extra_modules = [ key "extra_modules" . (mdl)+ . eol ] +let simple_kws = "raw" | "net" | "path" | "core_collector" | "kdump_post" + | "kdump_pre" | "default" | "ssh" | "sshkey" | "dracut_args" + | "fence_kdump_args" +let int_kws = "force_rebuild" | "override_resettable" | "debug_mem_level" + | "link_delay" | "disk_timeout" -let mdl_key_value = [ delimiter . key_to_space . ( eq . value_to_spc)? ] -let mdl_options = [ key_to_space . mdl_key_value+ ] -let mod_options = [ key "options" . delimiter . mdl_options . eol ] - - -let option = simple_entry "raw" - | simple_entry "net" - | simple_entry "path" - | simple_entry "disk_timeout" - | simple_entry "core_collector" - | simple_entry "link_delay" - | simple_entry "kdump_post" - | simple_entry "kdump_pre" - | simple_entry "default" - | fs - | extra_bins - | extra_modules +let option = Build.key_value_line_comment ( simple_kws | fs_types ) + delimiter value_to_eol comment + | Build.key_value_line_comment int_kws delimiter int_to_eol comment + | list "extra_bins" + | list "extra_modules" + | list "blacklist" + | list "fence_kdump_nodes" | mod_options (* View: lns diff --git a/lenses/tests/test_kdump.aug b/lenses/tests/test_kdump.aug index 7057782..51c79a3 100644 --- a/lenses/tests/test_kdump.aug +++ b/lenses/tests/test_kdump.aug @@ -1,6 +1,9 @@ -(* Test for kdump lens *) +(* +Module: Test_Kdump + Provides unit tests and examples for the lens. +*) -module Test_kdump = +module Test_Kdump = let conf = "# this is a comment #another commented line @@ -8,36 +11,92 @@ module Test_kdump = #comment after empty line # #comment after empty comment -path /var/crash +path /var/crash #comment after entry core_collector makedumpfile -c default poweroff raw /dev/sda5 ext3 /dev/sda3 net my.server.com:/export/tmp +nfs my.server.com:/export/tmp net user@my.server.com +ssh user@my.server.com link_delay 60 +kdump_pre /var/crash/scripts/kdump-pre.sh kdump_post /var/crash/scripts/kdump-post.sh #extra_bins /usr/bin/lftp /a/b/c -extra_bins /usr/bin/lftp /a/b/c +extra_bins /usr/bin/lftp /a/b/c # comment disk_timeout 30 extra_modules gfs2 extra modules more options babla labl kbak df=dfg options babla labl kbak df=dfg -options babla labl kbak df=dfg -" - - let conf2 = "#comment -kdump_post /var/crash/scripts/kdump-post.sh -extra_modules gfs2 extra modules more +options babla labl kbak df=dfg # comment +sshkey /root/.ssh/kdump_id_rsa +force_rebuild 1 +override_resettable 1 +dracut_args --omit-drivers \"cfg80211 snd\" --add-drivers \"ext2 ext3\" +fence_kdump_args -p 7410 -f auto +fence_kdump_nodes 192.168.1.10 10.34.63.155 +debug_mem_level 3 +blacklist gfs2 " -(* test Kdump.lns get conf = ?*) - test Kdump.lns get conf2 = - { "#comment" = "comment" } - { "kdump_post" = "/var/crash/scripts/kdump-post.sh" } - { "extra_modules" - { "1" = "gfs2" } - { "2" = "extra" } - { "3" = "modules" } - { "4" = "more" } - } + (* Test: Kdump.lns + Check whole config file *) + test Kdump.lns get conf = + { "#comment" = "this is a comment" } + { "#comment" = "another commented line" } + { } + { "#comment" = "comment after empty line" } + { } + { "#comment" = "comment after empty comment" } + { "path" = "/var/crash" + { "#comment" = "comment after entry" } } + { "core_collector" = "makedumpfile -c" } + { "default" = "poweroff" } + { "raw" = "/dev/sda5" } + { "ext3" = "/dev/sda3" } + { "net" = "my.server.com:/export/tmp" } + { "nfs" = "my.server.com:/export/tmp" } + { "net" = "user@my.server.com" } + { "ssh" = "user@my.server.com" } + { "link_delay" = "60" } + { "kdump_pre" = "/var/crash/scripts/kdump-pre.sh" } + { "kdump_post" = "/var/crash/scripts/kdump-post.sh" } + { "#comment" = "extra_bins /usr/bin/lftp /a/b/c" } + { "extra_bins" + { "1" = "/usr/bin/lftp" } + { "2" = "/a/b/c" } + { "#comment" = "comment" } } + { "disk_timeout" = "30" } + { "extra_modules" + { "1" = "gfs2" } + { "2" = "extra" } + { "3" = "modules" } + { "4" = "more" } } + { "options" + { "babla" + { "labl" } + { "kbak" } + { "df" = "dfg" } } } + { "options" + { "babla" + { "labl" } + { "kbak" } + { "df" = "dfg" } } } + { "options" + { "babla" + { "labl" } + { "kbak" } + { "df" = "dfg" } } + { "#comment" = "comment" } } + { "sshkey" = "/root/.ssh/kdump_id_rsa" } + { "force_rebuild" = "1" } + { "override_resettable" = "1" } + { "dracut_args" = "--omit-drivers \"cfg80211 snd\" --add-drivers \"ext2 ext3\"" } + { "fence_kdump_args" = "-p 7410 -f auto" } + { "fence_kdump_nodes" + { "1" = "192.168.1.10" } + { "2" = "10.34.63.155" } } + { "debug_mem_level" = "3" } + { "blacklist" + { "1" = "gfs2" } }