Package: fai-client Version: 3.3.3 There are actually two problems in this bug report. Both are essentially problems with regex matching of program output that has changed slightly with squeeze. I have supplied a patch for both.
1) squeeze's mdadm reports arrays using the path /dev/md/0 instead of /dev/md0 which results in the following error: "mdadm ARRAY line not yet seen" 2) squeeze's parted reports sizes using GiB instead of GB which results in the following error (for example): convert_unit 3.75GiB Attached is a very minor patch that should allow matching of updated programs' outputs as well as remain backwards compatible with the old style. Thanks, Brian
diff -Nur fai-client_3.3.3_all/usr/share/fai/setup-storage/Parser.pm
fai-client_3.3.3_all.patched/usr/share/fai/setup-storage/Parser.pm
--- fai-client_3.3.3_all/usr/share/fai/setup-storage/Parser.pm 2010-02-03
04:52:51.000000000 -0600
+++ fai-client_3.3.3_all.patched/usr/share/fai/setup-storage/Parser.pm
2010-02-07 13:05:13.000000000 -0600
@@ -298,7 +298,12 @@
sub convert_unit
{
my ($val) = @_;
- ($val =~ /^(\d+(\.\d+)?)([kMGTP%]?)(B)?\s*$/) or
+ # Making the match work for squeeze machines too.
+ # The display units in terms of GiB, where the 'i' is new.
+ # 2010-02-07
+ # bpkroth
+ #($val =~ /^(\d+(\.\d+)?)([kMGTP%]?)(B)?\s*$/) or
+ ($val =~ /^(\d+(\.\d+)?)([kMGTP%]?)[i]?(B)?\s*$/) or
&FAI::internal_error("convert_unit $val");
$val = $1 * (1 / 1024) * (1 / 1024) if ($3 eq "" && defined ($4) && $4 eq
"B");
$val = $1 * (1 / 1024) if ($3 eq "k");
diff -Nur fai-client_3.3.3_all/usr/share/fai/setup-storage/Volumes.pm
fai-client_3.3.3_all.patched/usr/share/fai/setup-storage/Volumes.pm
--- fai-client_3.3.3_all/usr/share/fai/setup-storage/Volumes.pm 2010-02-03
04:52:51.000000000 -0600
+++ fai-client_3.3.3_all.patched/usr/share/fai/setup-storage/Volumes.pm
2010-02-07 13:05:13.000000000 -0600
@@ -372,7 +372,12 @@
# parse the output line by line
foreach my $line (@mdadm_print) {
- if ($line =~ /^ARRAY \/dev\/md(\d+) level=(\S+) num-devices=\d+(\s+|$)/) {
+ # Making the match work for squeeze machines as well.
+ # They display arrays in terms of /dev/md/0 where the '/' is new.
+ # 2010-02-07
+ # bpkroth
+ #if ($line =~ /^ARRAY \/dev\/md(\d+) level=(\S+) num-devices=\d+(\s+|$)/) {
+ if ($line =~ /^ARRAY \/dev\/md[\/]?(\d+) level=(\S+)
num-devices=\d+(\s+|$)/) {
$id = $1;
$FAI::current_raid_config{$id}{mode} = $2;
&FAI::push_command( "true", "", "exist_/dev/md$id" );
pgpbmZg582caF.pgp
Description: PGP signature

