[Collab-qa-commits] r656 - in debcluster: misc/qemu scripts scripts/bin scripts/tasks
lucas at alioth.debian.org
lucas at alioth.debian.org
Fri Jan 18 13:28:32 UTC 2008
Author: lucas
Date: 2008-01-18 13:28:32 +0000 (Fri, 18 Jan 2008)
New Revision: 656
Added:
debcluster/misc/qemu/setupbridge.bash
Modified:
debcluster/scripts/bin/dc-startcluster
debcluster/scripts/masternode.rb
debcluster/scripts/tasks/preparenode.rb
Log:
should-be-working virt support
Added: debcluster/misc/qemu/setupbridge.bash
===================================================================
--- debcluster/misc/qemu/setupbridge.bash (rev 0)
+++ debcluster/misc/qemu/setupbridge.bash 2008-01-18 13:28:32 UTC (rev 656)
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+set -e
+set -x
+
+if ! grep -q br0 /etc/network/interfaces; then
+cat <<EOF >> /etc/network/interfaces
+
+iface br0 inet dhcp
+ bridge_ports eth0
+ bridge_maxwait 0
+ bridge_stp off
+ bridge_fd 1
+ bridge_hello 1
+EOF
+
+
+ifdown br0 || true
+ifconfig br0 down || true
+brctl delbr br0 || true
+cat <<EOF >> /etc/dhcp3/dhclient.conf
+select-timeout 2;
+initial-interval 1;
+EOF
+
+echo "###################"
+strace ifdown eth0
+echo "###################"
+strace sleep 1
+echo "###################"
+strace ifconfig eth0 0.0.0.0 promisc up
+echo "###################"
+strace sleep 1
+echo "###################"
+strace ifup br0
+echo "###################"
+strace sleep 1
Property changes on: debcluster/misc/qemu/setupbridge.bash
___________________________________________________________________
Name: svn:executable
+ *
Modified: debcluster/scripts/bin/dc-startcluster
===================================================================
--- debcluster/scripts/bin/dc-startcluster 2008-01-18 12:39:25 UTC (rev 655)
+++ debcluster/scripts/bin/dc-startcluster 2008-01-18 13:28:32 UTC (rev 656)
@@ -36,4 +36,4 @@
scp $SSHOPTS ~/bin/dc-mountnfs $LOGIN@$HNODE:/root/dc-mountnfs
ssh $SSHOPTS $LOGIN@$HNODE "/root/dc-mountnfs"
-exec ssh $LOGIN@$HNODE "cd /debcluster-scripts/scripts/ && ./masternode.rb $F1 $F2 $*"
+exec ssh $LOGIN@$HNODE "cd /debcluster-scripts/scripts/ && ./masternode.rb -n $F1 -t $F2 $*"
Modified: debcluster/scripts/masternode.rb
===================================================================
--- debcluster/scripts/masternode.rb 2008-01-18 12:39:25 UTC (rev 655)
+++ debcluster/scripts/masternode.rb 2008-01-18 13:28:32 UTC (rev 656)
@@ -13,11 +13,19 @@
$default_tasks_per_node = 1
$virt = false
$subnodes = false
+nodesfile = nil
+tasksfile = nil
opts = OptionParser::new do |opts|
opts.banner = "Usage: ./preparenode.rb [options]"
opts.separator ""
opts.separator "Options:"
+ opts.on("-t", "--tasksfile FILE", "") do |l|
+ tasksfile = l
+ end
+ opts.on("-n", "--nodesfile FILE", "") do |l|
+ nodesfile = l
+ end
opts.on("-s", "--subnodes NUMB", "Number of tasks per node") do |l|
$default_tasks_per_node = l.to_i
$subnodes = true
@@ -35,15 +43,18 @@
# https://www.grid5000.fr/mediawiki/index.php/Network_interlink#IP.27s_for_virtual_machines
NET_GW = {
'rennes' => '10.159.255.254',
- 'sophia' => '10.167.255.254'
+ 'sophia' => '10.167.255.254',
+ 'toulouse' => '10.163.255.254'
}
NET_NS = {
'rennes' => '131.254.202.5',
- 'sophia' => '138.96.20.225'
+ 'sophia' => '138.96.20.225',
+ 'toulouse' => '192.168.22.2'
}
NET_ADDR = {
'rennes' => '10.156.0.1',
- 'sophia' => '10.164.0.1'
+ 'sophia' => '10.164.0.1',
+ 'toulouse' => '10.160.0.1'
}
$first_addr = {}
@@ -101,7 +112,12 @@
end
system("scp #{SSHOPTS} /debcluster-scripts/scripts/bin/dc-mountnfs #{n}:/root/dc-mountnfs")
system("ssh #{SSHOPTS} #{n} \"/root/dc-mountnfs\" &> /root/mountnfs.log.#{n}")
- ret = system("ssh #{SSHOPTS} #{n} \"/debcluster-scripts/scripts/tasks/preparenode.rb --log /debcluster-data/logs/preparenode/#{n}.$(date --iso)\"")
+ if $virt
+ virt="-v -m #{vn.join(' -m ')} -n #{ns} -g #{gw}"
+ else
+ virt=""
+ end
+ ret = system("ssh #{SSHOPTS} #{n} \"/debcluster-scripts/scripts/tasks/preparenode.rb --log /debcluster-data/logs/preparenode/#{n}.$(date --iso) #{virt}\"")
if not ret
puts "E:preparenode.rb failed on #{n}."
return false
@@ -266,12 +282,11 @@
return
end
cluster = $1
- p cluster
- if $first_addr[cluster].nil?
- $first_addr[cluster] = IPAddr::new(NET_ADDR[cluster])
- end
vn = []
if $virt
+ if $first_addr[cluster].nil?
+ $first_addr[cluster] = IPAddr::new(NET_ADDR[cluster])
+ end
(1..nbsubnodes).each do |i|
vn << $first_addr[cluster]
@@ -338,8 +353,12 @@
Thread::new { tcpserver }
Thread::new { showtop }
+# setup SSH so we can connect to the other nodes
+system("mkdir ~/.ssh &>/dev/null")
+system("cp /debcluster-data/ssh/* ~/.ssh/")
+
# read and start nodes
-nodes = IO::read(ARGV[0]).split(/\n/).map { |l| l.chomp }
+nodes = IO::read(nodesfile).split(/\n/).map { |l| l.chomp }
$masternode = nodes[0]
nodes = (nodes.sort.uniq - [nodes[0]]).sort.uniq # removing head node.
nodes.each do |n|
@@ -347,7 +366,7 @@
end
# Tasks
-if File::exists?(ARGV[1])
+if File::exists?(tasksfile)
begin
tasks = Marshal::load(IO::read(ARGV[1]))
rescue
Modified: debcluster/scripts/tasks/preparenode.rb
===================================================================
--- debcluster/scripts/tasks/preparenode.rb 2008-01-18 12:39:25 UTC (rev 655)
+++ debcluster/scripts/tasks/preparenode.rb 2008-01-18 13:28:32 UTC (rev 656)
@@ -18,13 +18,13 @@
opts.on("-v", "--virtual", "Setup virtual nodes") do |l|
virt = true
end
- opts.on("-m", "--machine MACHINE", "Specify VM") do |l|
+ opts.on("-m", "--machine MACHINE", "Specify VMs") do |l|
vn << l
end
- opts.on("-n", "--ns MACHINE", "Specify NS") do |l|
+ opts.on("-n", "--ns MACHINE", "Specify NS (only used for virtualization)") do |l|
ns = l
end
- opts.on("-g", "--gw MACHINE", "Specify GW") do |l|
+ opts.on("-g", "--gw MACHINE", "Specify GW (only used for virtualization)") do |l|
gw = l
end
end
@@ -106,12 +106,11 @@
if virt
# VIRT-specific stuff
- system("apt-get -y build-dep qemu")
- system("apt-get -y install pkg-config bridge-utils screen")
- system("cat /debcluster-data/qemu/bridge.interfaces >> /etc/network/interfaces ; cp /debcluster-data/qemu/setupbridge.bash /root")
+ system("apt-get -y install pkg-config bridge-utils screen qemu")
+ system("cp /debcluster-scripts/misc/qemu/setupbridge.bash /root")
system("cd /root ; ./setupbridge.bash < /dev/null &>/root/iflog ; cat /root/iflog")
system("rsync -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' -avzP lnussbaum at idpot.grenoble.grid5000.fr:debcluster-data/qemu/hda-mips.qcow2 /debscratch/hda-mips.qcow2")
- system("cd /debcluster-data/qemu/qemu && make install")
+ system("tar -C / -xzf /debcluster-data/qemu/qemu-bin.tgz")
system("cp /debcluster-data/qemu/{initrd.gz,vmlinux-2.6.18-5-qemu} /debscratch")
vn.each do |v|
system("cd /debscratch && screen -d -m \"qemu-system-mips -kernel vmlinux-2.6.18-5-qemu -initrd initrd.gz -hda hda-mips.qcow2 -append \\\"root=/dev/hda1 console=ttyS0 ip=#{v} mask=255.252.0.0 ns=138.96.20.225 gw=10.167.255.254\\\" -nographic -net nic -net tap,script=/debcluster-scripts/configs/qemu-ifup -m 256 -snapshot\"")
More information about the Collab-qa-commits
mailing list