From ad53ca98bb7e2e0ede2abc1c008a16ff57d1a107 Mon Sep 17 00:00:00 2001 From: Evan Broder Date: Wed, 2 Apr 2008 04:36:45 -0400 Subject: [PATCH] Create and destroy conserver consoles through a Python script, instead of a shell script. Also run this script every 5 minutes or so svn path=/trunk/packages/sipb-xen-console-server/; revision=397 --- debian/changelog | 9 +++++++ debian/sipb-xen-console-server.cron.d | 8 ++++++ files/etc/conserver/conserver.cf.sipb-xen | 2 +- .../{includes.cf => sipb-xen-consoles.cf} | 0 files/usr/sbin/sipb-xen-update-conserver | 26 +++++++++++++++++--- 5 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 debian/sipb-xen-console-server.cron.d rename files/etc/conserver/{includes.cf => sipb-xen-consoles.cf} (100%) diff --git a/debian/changelog b/debian/changelog index 961e457..2b0b531 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +sipb-xen-console-server (2) unstable; urgency=low + + * Use a python based update-conserver script that gets the list of + consoles from xm list + * Run the update-conserver script every 5 minutes to catch VMs that + are not started or stopped through the remctl interface + + -- Evan Broder Wed, 2 Apr 2008 04:32:58 -0400 + sipb-xen-console-server (1.0.2) unstable; urgency=low * Also...make this package actually do something diff --git a/debian/sipb-xen-console-server.cron.d b/debian/sipb-xen-console-server.cron.d new file mode 100644 index 0000000..1af2beb --- /dev/null +++ b/debian/sipb-xen-console-server.cron.d @@ -0,0 +1,8 @@ +# +# cron-jobs for sipb-xen-console-server +# Refresh the list of active VM consoles +# + +MAILTO=root + +*/5 * * * * root python /usr/sbin/sipb-xen-update-conserver diff --git a/files/etc/conserver/conserver.cf.sipb-xen b/files/etc/conserver/conserver.cf.sipb-xen index 094685a..b867b6d 100644 --- a/files/etc/conserver/conserver.cf.sipb-xen +++ b/files/etc/conserver/conserver.cf.sipb-xen @@ -23,7 +23,7 @@ console s_sipb-xen-dev { exec xm console s_sipb-xen-dev; } -#include /etc/conserver/includes.cf +#include /etc/conserver/sipb-xen-consoles.cf ## ## list of clients we allow diff --git a/files/etc/conserver/includes.cf b/files/etc/conserver/sipb-xen-consoles.cf similarity index 100% rename from files/etc/conserver/includes.cf rename to files/etc/conserver/sipb-xen-consoles.cf diff --git a/files/usr/sbin/sipb-xen-update-conserver b/files/usr/sbin/sipb-xen-update-conserver index 297fefe..18d0ad8 100755 --- a/files/usr/sbin/sipb-xen-update-conserver +++ b/files/usr/sbin/sipb-xen-update-conserver @@ -1,4 +1,24 @@ -#!/bin/bash +#!/usr/bin/python -ls /etc/conserver/conf.d/ | sed -e 's|^|#include /etc/conserver/conf.d/|' >/etc/conserver/includes.cf -/etc/init.d/conserver-server reload \ No newline at end of file +import sipb_xen_database +import subprocess +import os + +sipb_xen_database.connect('postgres://sipb-xen@sipb-xen-dev.mit.edu/sipb_xen') + +def live_vms(): + p = subprocess.Popen(['xm', 'list'], stdout=subprocess.PIPE) + p.wait() + output = p.stdout.read() + vms = [x.split()[0][2:] for x in output.splitlines() if x.startswith('d_')] + return vms + +def reload_conserver(): + p = subprocess.Popen(['/etc/init.d/conserver-server', 'restart'], stdout=subprocess.PIPE) + p.wait() + +if __name__ == '__main__': + f = open('/etc/conserver/sipb-xen-consoles.cf', 'w') + f.write('\n'.join('console %s {}' % vm for vm in live_vms())) + f.close() + reload_conserver() -- 1.7.9.5