# dir on remote host to hold git repo
repodir = '/tmp/kvm'

# git url to clone
giturl  = 'git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm.git'

# web url to check remote version to determine whether or not to 'git pull'
weburl  = 'http://git.kernel.org/?p=linux/kernel/git/avi/kvm.git'

# CHANGEME - kernel config
kconfig = 'http://git.kernel.org/?p=virt/kvm/kvm-userspace.git;a=blob_plain;f=kernel/x86_64.config;hb=HEAD'

# CHANGEME
myhostname = 'myhost'

# init the git kernel
kernel = git_kernel.GitKernel(repodir, giturl, weburl)

# ssh to remote host
h = hosts.create_host(myhostname)

# acquire git repo, make sure it is up-to-date, clone repo into tmp dir
kernel.get(h)

# display local repo version
print kernel.get_local_head(h)

# configure, build, and install on remote host
kernel.configure(kconfig)
kernel.build(h)
kernel.install(h)

# add kernel to remote host bootloader, set up next boot entry
h.bootloader.boot_once('autotest')

# reboot and check that everything worked
h.reboot()
h.wait_up()
print h.run("uname -a").stdout
