]> git.proxmox.com Git - pve-ha-manager.git/commitdiff
fence config parser: output all errors at once
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Sun, 13 Jan 2019 11:44:56 +0000 (12:44 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Sun, 13 Jan 2019 11:45:45 +0000 (12:45 +0100)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
src/PVE/HA/FenceConfig.pm
src/test/fence_cfgs/connect-before-device-1.cfg.expect
src/test/fence_cfgs/double-device-1.cfg.expect

index d39d80b43249c649d10aee77dbc5c714465e7fee..f8b5f19417976ec05a6ba159d1b94e8a779df866 100644 (file)
@@ -14,6 +14,7 @@ sub parse_config {
 
     my $lineno = 0;
     my $priority = 0;
+    my $parse_errors = '';
 
     my $parse_line = sub {
        my ($line) = @_;
@@ -68,18 +69,17 @@ sub parse_config {
        }
     };
 
-    eval  {
-       while ($raw =~ /^\h*(.*?)\h*$/gm) {
-           my $line = $1;
-           $lineno++;
-           next if !$line || $line =~ /^#/;
+    while ($raw =~ /^\h*(.*?)\h*$/gm) {
+       my $line = $1;
+       $lineno++;
+       next if !$line || $line =~ /^#/;
 
-           $parse_line->($line);
+       eval { $parse_line->($line) };
+       if (my $err = $@) {
+           $parse_errors .= "line $lineno: $err";
        }
-    };
-    if (my $err = $@) {
-       die "error in '$fn' at $lineno: $err";
     }
+    die "Encountered error(s) on parsing '$fn':\n$parse_errors" if $parse_errors;
 
     return $config;
 }
index aaf4ecd0ede7a2eb5cb919bf4de7a783718bb1b9..2234867f392966f42ee20269aa5d72edc9e49be0 100644 (file)
@@ -1 +1,3 @@
-[FenceConfig] error in 'fence_cfgs/connect-before-device-1.cfg' at 3: device 'first_dev' must be declared before you can connect to it
+[FenceConfig] Encountered error(s) on parsing 'fence_cfgs/connect-before-device-1.cfg':
+line 3: device 'first_dev' must be declared before you can connect to it
+line 4: device 'first_dev' must be declared before you can connect to it
index 28810e6abe465ed0c29cd2a73aaa3105e7e23336..db2ab341a89ccfc523e842f59b3d5e4b1440968a 100644 (file)
@@ -1 +1,3 @@
-[FenceConfig] error in 'fence_cfgs/double-device-1.cfg' at 7: device 'unique_dev:1' already declared
+[FenceConfig] Encountered error(s) on parsing 'fence_cfgs/double-device-1.cfg':
+line 7: device 'unique_dev:1' already declared
+line 8: node 'node1' already connected to device 'unique_dev:1'