From: Ian Jackson Date: Thu, 12 Mar 2015 18:53:25 +0000 (+0000) Subject: convert-cabinet-layout: ARM mostly works X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=75609766ade3f8000f51eff05aff782b47818248;p=people%2Fiwj%2Fcolo-for-testing.git convert-cabinet-layout: ARM mostly works --- diff --git a/convert-cabinet-layout b/convert-cabinet-layout index c526664..0d1572d 100755 --- a/convert-cabinet-layout +++ b/convert-cabinet-layout @@ -6,7 +6,7 @@ # * Likewise for "selections.ods" # # * Run -# ./convert-cabinet-layout "COLO Cabinet Layout.csv" "selections.csv"; +# ./convert-cabinet-layout "COLO Cabinet Layout.csv" "selections.csv" "ARM-pdu-layout.csv" # # * Paste the output in appropriate places # @@ -55,7 +55,7 @@ while (@ARGV && $ARGV[0] =~ m/^-/) { } } -die unless @ARGV==2; +die unless @ARGV==3; our ($csv,$csv_fh); @@ -112,6 +112,15 @@ while (my $row = csv_row()) { next unless $row->{'CPU mfr'} =~ m/^(?:AMD|Intel)$/; $kindhvm{$kind} = lc $&; } +csv_end(); + +our %armpdu; +csv_start($ARGV[2]); +while (my $row = csv_row()) { + die unless $row->{'Relay Port'} =~ m/^\d+\b/; + $armpdu{lc "$row->{Class}-$row->{Name}"} = $&; +} +csv_end(); csv_start($ARGV[0]); @@ -123,16 +132,17 @@ while (my $row = csv_row()) { $machine = $row->{'Server / Appliance'}; my @hflags; + my $kind; if ($machine =~ m/^([a-z]+) ([0-1])$/) { - my $kind = $1; + $kind = $1; $machine = $1.$2; my $kindhvm = $kindhvm{$kind} or die "$kind ?"; push @hflags, qw(arch-amd64 arch-i386 arch-xen-amd64 arch-xen-i386); push @hflags, qw(hvm); push @hflags, "equiv-$kind", "hvm-$kindhvm"; } elsif ($machine =~ m/^ARM-(\w+)-(\w+)$/) { - my $kind = lc $1; + $kind = lc $1; $machine = lc "$1-$2"; push @hflags, qw(arch-armhf arch-xen-armhf); push @hflags, qw(need-kernel-deb-armmp no-di-kernel need-uboot-bootscr); @@ -166,25 +176,36 @@ while (my $row = csv_row()) { reportno 'Ether'; eval { - my $pdu1 = $row->{'PDU-1'}; - my $pdu2 = $row->{'PDU-2'}; - !!$pdu1 != !!$pdu2 or die "wrong # pdus\n"; - my ($pdu,$port); - if ($pdu1) { $pdu='pdu1'; $port=$pdu1; } - if ($pdu2) { $pdu='pdu2'; $port=$pdu2; } - setprop 'PowerMethod', "msw --apc6 $pdu $port"; + my $armpdu = $armpdu{$machine}; + if (defined $armpdu) { + setprop 'PowerMethod', "eth008 pduarm admin password $armpdu"; + } else { + my $pdu1 = $row->{'PDU-1'}; + my $pdu2 = $row->{'PDU-2'}; + !!$pdu1 != !!$pdu2 or die "wrong # pdus\n"; + my ($pdu,$port); + if ($pdu1) { $pdu='pdu1'; $port=$pdu1; } + if ($pdu2) { $pdu='pdu2'; $port=$pdu2; } + setprop 'PowerMethod', "msw --apc6 $pdu $port"; + } }; reportno 'PowerMethod'; eval { - my $serial = $row->{'Comtrol 1'}; - $serial =~ m#^(\d+)/ttyRP(\d+)$# or die "bad serial syntax\n"; - my ($physport, $ttyrp) = ($1,$2); - $physport eq $ttyrp+1 or die "serial numbering mismatch\n"; + my $dev; + if ($kind eq 'cubietruck') { + $dev = "/dev/serial/by-name/$machine"; + } else { + my $serial = $row->{'Comtrol 1'}; + $serial =~ m#^(\d+)/ttyRP(\d+)$# or die "bad serial syntax\n"; + my ($physport, $ttyrp) = ($1,$2); + $physport eq $ttyrp+1 or die "serial numbering mismatch\n"; + $dev = sprintf "/dev/ttyRP%d", $ttyrp; + } setprop 'Serial', "sympathy serial0"; outfor '/etc/serialmgr/config', - sprintf "serial0:/dev/ttyRP%d:115200:sympathy:root::%s:-B\n", - $ttyrp, $machine; + sprintf "serial0:%s:115200:sympathy:root::%s:-B\n", + $dev, $machine; }; reportno 'Serial';