From 3855370a24530cd0541519b906045c7ccb66c28e Mon Sep 17 00:00:00 2001 From: Neil Williams Date: Wed, 4 Nov 2015 11:48:50 +0000 Subject: Add qemu-wrapper and an example lava-submit script. --- examples/auto-serial-console | 35 ----------------- examples/lava-submit.py | 92 ++++++++++++++++++++++++++++++++++++++++++++ examples/lava.sh | 7 ---- 3 files changed, 92 insertions(+), 42 deletions(-) delete mode 100755 examples/auto-serial-console create mode 100755 examples/lava-submit.py delete mode 100755 examples/lava.sh (limited to 'examples') 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 +# +# 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/ -- cgit v1.2.1