# * 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
#
}
}
-die unless @ARGV==2;
+die unless @ARGV==3;
our ($csv,$csv_fh);
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]);
$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);
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';