Blame SOURCES/0037-Kdump-parse-new-options-permit-EOL-comments-refactor.patch

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