summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorRiku Voipio <riku.voipio@linaro.org>2017-05-11 13:47:23 +0300
committerMilosz Wasilewski <milosz.wasilewski@linaro.org>2017-05-12 15:47:09 +0000
commit2b26706ffe60224ea87b7c9c5fa9561350e32dcb (patch)
tree4d84c74a52c38422e9999d9f0b1e296deda5cb9c /common
parentdaec34dad7e701c5f92c7fb19b73f07ae68c7028 (diff)
kvm-cloud: de-race shutdown
- move to automated dir - start qemu with pidfile - call shutdown with 1m timeout in guest for clean poweroff - wait for qemu process recorded in pidfile to exit to avoid primary lava connection to poweroff the machine before guest has finished Change-Id: I105ec3bbe3246a05552b3d13123ef4a3c7ea4c82 Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
Diffstat (limited to 'common')
-rw-r--r--common/scripts/kvm-cloud/cloudinit.txt16
-rwxr-xr-xcommon/scripts/kvm-cloud/start-kvm.sh165
-rwxr-xr-xcommon/scripts/kvm-cloud/wait-ip.py24
3 files changed, 0 insertions, 205 deletions
diff --git a/common/scripts/kvm-cloud/cloudinit.txt b/common/scripts/kvm-cloud/cloudinit.txt
deleted file mode 100644
index d9363f1..0000000
--- a/common/scripts/kvm-cloud/cloudinit.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-#cloud-config
-
-users:
- - name: linaro
- ssh-authorized-keys:
- - LAVA_KEY
- sudo: ['ALL=(ALL) NOPASSWD:ALL']
- groups: sudo
- shell: /bin/bash
-
-runcmd:
- - cp /home/linaro/.ssh/authorized_keys /root/.ssh/authorized_keys
- - chown root:root /root/.ssh/authorized_keys
-
-phone_home:
- url: http://LOCALIP:8080/
diff --git a/common/scripts/kvm-cloud/start-kvm.sh b/common/scripts/kvm-cloud/start-kvm.sh
deleted file mode 100755
index d166771..0000000
--- a/common/scripts/kvm-cloud/start-kvm.sh
+++ /dev/null
@@ -1,165 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2010 - 2016, Linaro Limited.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# Maintainer: Riku Voipio <riku.voipio@linaro.org>
-
-# Create cloud-config image to set up credentials for image
-configure_guest()
-{
- IP=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/'`
- SSH_KEY=`head -1 /root/.ssh/authorized_keys||head -1 $HOME/.ssh/authorized_keys`
- sed -e "s,LAVA_KEY,$SSH_KEY,g" -e "s,LOCALIP,$IP,g" common/scripts/kvm-cloud/cloudinit.txt > cloudinit.tmp
- cat cloudinit.tmp
- cloud-localds cloud.img cloudinit.tmp
-}
-
-# Download url and puts the filename of downloaded file in first argument
-download_file()
-{
- local _outvar=$1
- local url=$2
- local filename=`basename $url`
- if [ ! -e $filename ]
- then
- if [ -z $url -o $url = none ]
- then
- >&2 echo "Error, url for $_outvar not set!"
- exit 2
- fi
- if ! curl --retry 3 -SsOL $url
- then
- >&2 echo "Error downloading $url for $_outvar"
- exit 3
- fi
- fi
- eval $_outvar=\$filename
-}
-
-start_qemu_x86_64_aarch64()
-{
- image=$1
- download_file efi $GUEST_FIRMWARE
-
- set -x
- qemu-system-aarch64 -smp $GUEST_CORES -m ${GUEST_RAM} -cpu cortex-a57 -M virt \
- -bios $efi \
- -device virtio-blk-device,drive=image \
- -drive if=none,id=image,file=$image \
- -device virtio-blk-device,drive=cloud \
- -drive if=none,id=cloud,file=cloud.img \
- -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=no,downscript=no,ifname=tap0 \
- -daemonize -display vnc=none \
- -serial file:qemu_aarch64.txt
-}
-
-start_qemu_aarch64_aarch64()
-{
- image=$1
- download_file efi $GUEST_FIRMWARE
-
- set -x
- qemu-system-aarch64 -smp $GUEST_CORES -m ${GUEST_RAM} -cpu host -M virt \
- -bios $efi \
- -device virtio-blk-device,drive=image \
- -drive if=none,id=image,file=$image \
- -device virtio-blk-device,drive=cloud \
- -drive if=none,id=cloud,file=cloud.img \
- -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=no,downscript=no,ifname=tap0 \
- -daemonize -enable-kvm -display vnc=none \
- -serial file:kvm-aarch64_aarch64.txt
-}
-
-start_qemu_x86_64_armv7l()
-{
- image=$1
- download_file kernel $GUEST_KERNEL
-
- set -x
- qemu-system-arm -smp $GUEST_CORES -m ${GUEST_RAM} -cpu cortex-a15 -M virt \
- -kernel $kernel \
- -append "root=/dev/vdb1 rw rootwait mem=${GUEST_RAM}M console=ttyAMA0,38400n8" \
- -device virtio-blk-device,drive=image \
- -drive if=none,id=image,file=$image \
- -device virtio-blk-device,drive=cloud \
- -drive if=none,id=cloud,file=cloud.img \
- -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=no,downscript=no,ifname=tap0 \
- -daemonize -display vnc=none \
- -serial file:qemu_armv7l.txt
-}
-
-start_qemu_aarch64_armv7l()
-{
- image=$1
- download_file kernel $GUEST_KERNEL
-
- set -x
- qemu-system-aarch64 -smp $GUEST_CORES -m ${GUEST_RAM} -cpu host,aarch64=off -M virt \
- -kernel $kernel \
- -append "root=/dev/vdb1 rw rootwait mem=${GUEST_RAM}M console=ttyAMA0,38400n8" \
- -device virtio-blk-device,drive=image \
- -drive if=none,id=image,file=$image \
- -device virtio-blk-device,drive=cloud \
- -drive if=none,id=cloud,file=cloud.img \
- -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=no,downscript=no,ifname=tap0 \
- -daemonize -enable-kvm -display vnc=none \
- -serial file:kvm-aarch64_armv7l.txt
-}
-
-start_qemu_armv7l_armv7l()
-{
- image=$1
- download_file kernel $GUEST_KERNEL
-
- set -x
- qemu-system-arm -smp $GUEST_CORES -m ${GUEST_RAM} -cpu cortex-a15 -M vexpress-a15 \
- -kernel $kernel \
- -append "root=/dev/vdb1 rw rootwait mem=${GUEST_RAM}M console=ttyAMA0,38400n8" \
- -device virtio-blk-device,drive=image \
- -drive if=none,id=image,file=$image \
- -device virtio-blk-device,drive=cloud \
- -drive if=none,id=cloud,file=cloud.img \
- -device virtio-net-device,netdev=tap0 -netdev tap,id=tap0,script=no,downscript=no,ifname=tap0 \
- -daemonize -enable-kvm -display vnc=none \
- -serial file:kvm-armv7l_armv7l.txt
-}
-
-# This testcase expects a predefined br0 to connect to
-tunctl -u root
-ifconfig tap0 0.0.0.0 up
-brctl addif br0 tap0
-
-ARCH=`uname -m`
-GUEST_ARCH=$1
-GUEST_IMAGE=$2
-GUEST_FIRMWARE=$3
-GUEST_KERNEL=$4
-GUEST_CORES=${5:-2}
-GUEST_RAM=${6:-1024}
-
-download_file IMAGE $GUEST_IMAGE
-configure_guest
-
-if grep -q Juno /proc/device-tree/model
-then
- echo "Juno detected, forcing a53 cluster"
- hwloc-bind socket:0 --pid $$
-fi
-
-start_qemu_${ARCH}_${GUEST_ARCH} ${IMAGE}
-sleep 10
-tail *.txt
diff --git a/common/scripts/kvm-cloud/wait-ip.py b/common/scripts/kvm-cloud/wait-ip.py
deleted file mode 100755
index 392fc8c..0000000
--- a/common/scripts/kvm-cloud/wait-ip.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/python
-# Wait for a HTTP post and echo the IP of the first visitor
-
-from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
-
-class MyHandler(BaseHTTPRequestHandler):
- def returnIP(self):
- self.send_response(200)
- self.end_headers()
- print self.client_address[0]
- return
-
- def log_message(self, format, *args):
- return
-
- def do_POST(self):
- self.returnIP()
-
- def do_GET(self):
- self.returnIP()
-
-server = HTTPServer(('', 8080), MyHandler)
-server.handle_request()
-