diff options
author | Neil Williams <codehelp@debian.org> | 2015-11-04 11:48:50 +0000 |
---|---|---|
committer | Neil Williams <codehelp@debian.org> | 2015-11-04 11:48:50 +0000 |
commit | 3855370a24530cd0541519b906045c7ccb66c28e (patch) | |
tree | 382fc115e1c4e67a168fef2493dabf0e6e0bd1d1 /examples | |
parent | 5dea8d05069f0518ddf974eef79dc576c0b4bc1e (diff) | |
download | vmdebootstrap-3855370a24530cd0541519b906045c7ccb66c28e.tar.gz |
Add qemu-wrapper and an example lava-submit script.
Diffstat (limited to 'examples')
-rwxr-xr-x | examples/auto-serial-console | 35 | ||||
-rwxr-xr-x | examples/lava-submit.py | 92 | ||||
-rwxr-xr-x | examples/lava.sh | 7 |
3 files changed, 92 insertions, 42 deletions
diff --git a/examples/auto-serial-console b/examples/auto-serial-console deleted file mode 100755 index 9304e98..0000000 --- a/examples/auto-serial-console +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -e - -[ -f /etc/default/autogetty ] && . /etc/default/autogetty - -[ 1 -gt $ENABLED ] && exit - -for arg in $(cat /proc/cmdline) -do - case $arg in - console=*) - tty=${arg#console=} - tty=${tty#/dev/} - - case $tty in - tty[a-zA-Z]* ) - PORT=${tty%%,*} - - # check for service which do something on this port - if [ -f /etc/init/$PORT.conf ];then continue;fi - - tmp=${tty##$PORT,} - SPEED=${tmp%%n*} - BITS=${tmp##${SPEED}n} - - # 8bit serial is default - [ -z $BITS ] && BITS=8 - [ 8 -eq $BITS ] && GETTY_ARGS="$GETTY_ARGS -8 " - - [ -z $SPEED ] && SPEED='115200,57600,38400,19200,9600' - - GETTY_ARGS="$AUTOGETTY_ARGS $GETTY_ARGS $SPEED $PORT" - exec /sbin/getty $GETTY_ARGS - esac - esac -done diff --git a/examples/lava-submit.py b/examples/lava-submit.py new file mode 100755 index 0000000..ae89758 --- /dev/null +++ b/examples/lava-submit.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# lava-submit.py +# +# Copyright 2015 Neil Williams <codehelp@debian.org> +# +# 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. +# +# + +""" +Example script - needs configuration (or use lava-tool). +Expects to submit a pipeline job to a QEMU device, so +ensure that the host supports these jobs. +**This script is not to be expanded with argparse or CLI options for +the username, token, hostname or image**. +It is meant to be copied into something like jenkins to do the +submission using hardcoded values, themselves hidden behind a UI. +Other details like architecture, prompt and login information may +need to come from a config file or command line. +LAVA needs a serial console to tell whether the VM booted or not. +Larger images will need the LAVA device to have more memory available. +""" + +import os +import yaml +import xmlrpclib + +# Constants for each particular script configuration. +USERNAME = "" +TOKEN = "" +HOSTNAME = "" +IMAGE = "" +ARCH = "" + + +def job(image): + """ Bare bones YAML job definition """ + job_def = { + 'actions': [{ + 'deploy': {'images': {'rootfs': { + 'image_arg': "-drive format=raw,file={rootfs}", + "url": "file://%s" % image + }}, + 'os': 'debian', + 'timeout': {'minutes': 5}, + 'to': 'tmpfs'} + }, { + 'boot': { + 'media': 'tmpfs', + 'prompts': ["root@debian:"], + 'auto_login': { + "login_prompt": "login:", + "username": "root" + }, + 'method': 'qemu'} + }], + 'device_type': 'qemu', + 'job_name': 'vmdebootstrap-test', + 'priority': 'medium', + "context": { "arch": ARCH }, + 'timeouts': {'action': {'minutes': 1}, 'job': {'minutes': 5}}, + 'visibility': 'public'} + return job_def + + +def main(): + """ submit using XMLRPC """ + image = os.path.realpath(IMAGE) + url = "http://%s:%s@%s//RPC2" % (USERNAME, TOKEN, HOSTNAME) + server = xmlrpclib.ServerProxy(url) + job_id = server.scheduler.submit_job(yaml.dump(job(image))) + print job_id + return 0 + +if __name__ == '__main__': + import sys + sys.exit(main()) diff --git a/examples/lava.sh b/examples/lava.sh deleted file mode 100755 index 06da069..0000000 --- a/examples/lava.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -set -e - -rootdir=$1 - -cp auto-serial-console $rootdir/bin/ |