summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorNeil Williams <codehelp@debian.org>2015-11-04 11:48:50 +0000
committerNeil Williams <codehelp@debian.org>2015-11-04 11:48:50 +0000
commit3855370a24530cd0541519b906045c7ccb66c28e (patch)
tree382fc115e1c4e67a168fef2493dabf0e6e0bd1d1 /examples
parent5dea8d05069f0518ddf974eef79dc576c0b4bc1e (diff)
downloadvmdebootstrap-3855370a24530cd0541519b906045c7ccb66c28e.tar.gz
Add qemu-wrapper and an example lava-submit script.
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/auto-serial-console35
-rwxr-xr-xexamples/lava-submit.py92
-rwxr-xr-xexamples/lava.sh7
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/