]> xenbits.xensource.com Git - people/iwj/colo-for-testing.git/commitdiff
convert-cabinet-layout: ARM mostly works
authorIan Jackson <ian.jackson@eu.citrix.com>
Thu, 12 Mar 2015 18:53:25 +0000 (18:53 +0000)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Thu, 12 Mar 2015 18:53:25 +0000 (18:53 +0000)
convert-cabinet-layout

index c52666421f002a683960f08739f040ca6954c556..0d1572df008995fc801006600a96ed7f213481e4 100755 (executable)
@@ -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';