[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