Index: /package_tags/sipb-xen-database/10.36.1/client/etc/xen/sipb-database
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/client/etc/xen/sipb-database	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/client/etc/xen/sipb-database	(revision 1251)
@@ -0,0 +1,102 @@
+# -*- mode: python; -*-
+from invirt.database import models, connect
+from invirt.config import structs as config
+import re
+import tempfile
+from subprocess import call
+
+connect()
+prefix = "d_"
+
+# 'machine_name', and optionally 'cdrom_image', should get passed in
+# from the xm create call
+
+def check(b):
+    if not b:
+        import sys
+        sys.exit(1)
+
+machine = models.Machine.query().filter_by(name=machine_name).one()
+check(machine is not None)
+machine_type = machine.type
+cdrom = None
+if 'cdrom_image' in locals():
+    cdrom = models.CDROM.query().filter_by(cdrom_id=cdrom_image).one()
+    check(cdrom is not None)
+
+memory = machine.memory
+maxmem = memory
+check(re.match('^[A-Za-z0-9][A-Za-z0-9._-]*$', machine.name))
+name = prefix + machine.name
+check(re.match('^[0-9a-f-]+$', machine.uuid))
+uuid = machine.uuid
+
+vcpus = machine.cpus
+
+diskioemu = ""
+viftype = ""
+
+pae = machine_type.pae
+acpi = machine_type.acpi
+apic = machine_type.apic
+
+vif = []
+
+disk = []
+
+if machine_type.hvm:
+    codepath = 'hvm'
+else:
+    codepath = 'paravm'
+
+if 'installer_options' in locals(): #Installer
+    disk.append('phy:/dev/xenvg/s_install_hda,hdb,r')
+
+    kernel = '/boot/vmlinuz-2.6.24-19-xen' #From hardy
+    ramdisk = '/boot/initrd.img-2.6.24-19-xen'
+
+    if not machine.nics:
+        raise RuntimeError('You must have a nic to autoinstall')
+    n = machine.nics[0]
+    extra = 'ro noresume'
+    extra += (' ip=%s::%s:%s:%s:eth0:off'
+         % (n.ip, config.dhcp.gateway, config.dhcp.netmask, machine.name))
+    extra += ' %s' % installer_options
+    root = '/dev/hdb1'
+    codepath = None
+elif cdrom is not None:
+    disk.append('phy:/dev/xenvg/image_' + cdrom.cdrom_id + ',hdc:cdrom,r')
+    boot = 'd'
+    codepath = 'hvm'
+
+if codepath == 'hvm':
+    ioemu = "ioemu:"
+    viftype = "type=ioemu, "
+    kernel = '/usr/lib/xen/boot/hvmloader'
+    builder = 'hvm'
+    vnc = 1
+    vncpasswd = 'moocow'
+    device_model = '/usr/sbin/qemu-dm-sipb'
+    serial = "pty"
+elif codepath == 'paravm':
+    bootloader = '/usr/bin/pygrub'
+
+
+for n in machine.nics:
+    check(re.match('^[0-9a-fA-F:]+$', n.mac_addr) and re.match('^[0-9.]*$', n.ip))
+    d = '%smac=%s, ip=%s, script=vif-sipbroute' % (viftype, n.mac_addr, n.ip)
+    vif.append(d)
+
+for d in machine.disks:
+    check(re.match('^[A-Za-z0-9]+$', d.guest_device_name))
+    device = '/dev/xenvg/' + prefix + machine.name + '_' + d.guest_device_name
+    dspec = 'phy:%s,%s%s,w' % (device, diskioemu, d.guest_device_name)
+    disk.append(dspec)
+
+usbdevice = 'tablet'
+
+on_poweroff = 'destroy'
+on_reboot = 'restart'
+on_crash = 'destroy'
+if machine.autorestart:
+    on_crash = 'restart'
Index: /package_tags/sipb-xen-database/10.36.1/debian/changelog
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/changelog	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/changelog	(revision 1251)
@@ -0,0 +1,367 @@
+sipb-xen-database (10.36.1) unstable; urgency=low
+
+  * Typo in the new tables
+
+ -- Evan Broder <broder@mit.edu>  Sat, 25 Oct 2008 15:01:47 -0400
+
+sipb-xen-database (10.36) unstable; urgency=low
+
+  * Kill the remnants of the sipb_xen_database package
+  * Add the CDROM mirrors table
+
+ -- Evan Broder <broder@mit.edu>  Sat, 25 Oct 2008 14:48:32 -0400
+
+sipb-xen-database (10.35) unstable; urgency=low
+
+  * Shorten initscript with spiffy new library from sipb-xen-base
+
+ -- Greg Price <price@mit.edu>  Fri, 24 Oct 2008 07:25:56 -0400
+
+sipb-xen-database (10.34) unstable; urgency=low
+
+  * yet another new-sqlalchemy fix, this one post-0.4.2
+
+ -- Greg Price <price@mit.edu>  Thu, 23 Oct 2008 23:02:46 -0400
+
+sipb-xen-database (10.33) unstable; urgency=low
+
+  * Catch calls to restart Postgres and translate them into a sequential
+    stop, then start
+
+ -- Evan Broder <broder@mit.edu>  Mon, 20 Oct 2008 13:05:29 -0400
+
+sipb-xen-database (10.32) unstable; urgency=low
+
+  * invirt.database.clear_cache should actually do something
+
+ -- Evan Broder <broder@mit.edu>  Sun, 19 Oct 2008 02:02:37 -0400
+
+sipb-xen-database (10.31) unstable; urgency=low
+
+  * Database-managed VMs should never even think about bridging
+
+ -- Evan Broder <broder@mit.edu>  Sun, 19 Oct 2008 01:46:45 -0400
+
+sipb-xen-database (10.30.4) unstable; urgency=low
+
+  * Fix a typo in the CDROM image path
+
+ -- Evan Broder <broder@mit.edu>  Wed, 15 Oct 2008 13:21:10 -0400
+
+sipb-xen-database (10.30.3) unstable; urgency=low
+
+  * fix copy-paste errors in initscript: this is database, not console
+  * fix "typo" in initscript for package name printed in logs
+
+ -- Greg Price <price@mit.edu>  Sat, 11 Oct 2008 17:50:11 -0700
+
+sipb-xen-database (10.30.2) unstable; urgency=low
+
+  * Fix a typo in the CDROM lookup in sipb-database
+
+ -- Evan Broder <broder@mit.edu>  Sat, 11 Oct 2008 19:17:05 -0400
+
+sipb-xen-database (10.30.1) unstable; urgency=low
+
+  * Don't strip quotes that won't be there
+
+ -- Evan Broder <broder@mit.edu>  Fri, 10 Oct 2008 01:48:48 -0400
+
+sipb-xen-database (10.30) unstable; urgency=low
+
+  * Look for CD images in /dev/xenvg/image_* and validate image name from
+    the database
+  * Pass the installer arguments unaltered to the kernel, matching the
+    remctl interface
+
+ -- Evan Broder <broder@mit.edu>  Thu, 09 Oct 2008 02:09:42 -0400
+
+sipb-xen-database (10.29) unstable; urgency=low
+
+  * Some fixes in the sipb-database script
+
+ -- Evan Broder <broder@mit.edu>  Mon, 06 Oct 2008 18:55:24 -0400
+
+sipb-xen-database (10.28) unstable; urgency=low
+
+  * Re-establish the database connection if the server goes AWOL
+
+ -- Evan Broder <broder@mit.edu>  Sat, 04 Oct 2008 23:19:59 -0400
+
+sipb-xen-database (10.27) unstable; urgency=low
+
+  * Update sipb-database to work with newer SQLAlchemy and Xen
+
+ -- Evan Broder <broder@mit.edu>  Fri, 03 Oct 2008 20:08:16 -0400
+
+sipb-xen-database (10.26.1) unstable; urgency=low
+
+  * We want autoflush off, too
+
+ -- Evan Broder <broder@mit.edu>  Fri, 03 Oct 2008 19:22:12 -0400
+
+sipb-xen-database (10.26) unstable; urgency=low
+
+  * Disable transactions by default
+
+ -- Evan Broder <broder@mit.edu>  Thu, 02 Oct 2008 19:40:34 -0400
+
+sipb-xen-database (10.25) unstable; urgency=low
+
+  * add remote and console to pg_hba.conf template
+  * fix init script so it works
+  * port more code to sqlalchemy 0.4
+
+ -- Greg Price <price@mit.edu>  Wed, 01 Oct 2008 19:30:26 -0400
+
+sipb-xen-database (10.24) unstable; urgency=low
+
+  * Update postgresql.conf for Hardy
+
+ -- Evan Broder <broder@mit.edu>  Wed, 01 Oct 2008 03:12:36 -0400
+
+sipb-xen-database (10.23) unstable; urgency=low
+
+  * switch to postgresql 8.3, as 8.1 isn't in hardy
+
+ -- Greg Price <price@mit.edu>  Wed, 01 Oct 2008 02:09:43 -0400
+
+sipb-xen-database (10.22) unstable; urgency=low
+
+  * depend on postgresql without specifying old version 8.1
+
+ -- Greg Price <price@mit.edu>  Wed, 01 Oct 2008 01:55:49 -0400
+
+sipb-xen-database (10.21) unstable; urgency=low
+
+  * fix distribution
+
+ -- Greg Price <price@mit.edu>  Tue, 30 Sep 2008 23:50:25 -0400
+
+sipb-xen-database (10.20) hardy; urgency=low
+
+  * port to sqlalchemy-0.4, which cuts out some newly deprecated
+    interfaces and allowed some still-present interfaces to bitrot
+
+ -- Greg Price <price@mit.edu>  Mon, 29 Sep 2008 06:06:21 +0000
+
+sipb-xen-database (10.19) unstable; urgency=low
+
+  * Generate config files for pg_hba.conf
+  * replace postgresql.conf
+
+ --  Sam Hartman <hartmans@xvm.mit.edu>  Mon, 25 Aug 2008 00:38:21 +0000
+
+sipb-xen-database (10.18) unstable; urgency=low
+
+  * add 'adminable' column to machines; for selectively, temporarily,
+    enabling admin mode on a machine
+
+ -- Greg Price <price@mit.edu>  Wed,  6 Aug 2008 01:02:59 -0400
+
+sipb-xen-database (10.17) unstable; urgency=low
+
+  * pull IP gateway, network from config
+  * configurabilization complete!
+
+ -- Greg Price <price@mit.edu>  Sun,  3 Aug 2008 01:16:53 -0400
+
+sipb-xen-database (10.16) unstable; urgency=low
+
+  in sipb-xen-database-tables:
+  * use invirt.database, and take default db uri
+
+ -- Greg Price <price@mit.edu>  Sun,  3 Aug 2008 00:51:32 -0400
+
+sipb-xen-database (10.15) unstable; urgency=low
+
+  in /etc/xen/database:
+  * uncommitted changes on black-mesa
+  * sipb_xen_database -> invirt.database
+  * use default db uri
+
+  in invirt.database:
+  * get default db uri from invirt.config
+
+ -- Greg Price <price@mit.edu>  Sun,  3 Aug 2008 00:26:46 -0400
+
+sipb-xen-database (10.14) unstable; urgency=low
+
+  * Rename sipb_xen_database -> invirt.database,
+    keeping old name too for now, for compatibility.
+
+ -- Greg Price <price@mit.edu>  Sat,  2 Aug 2008 23:19:18 -0400
+
+sipb-xen-database (10.13) unstable; urgency=low
+
+  * Modify autoinstalls table to specify distribution/mirror.
+
+ -- Eric Price <ecprice@pseudomyrmex.mit.edu>  Sat, 21 Jun 2008 21:25:21 -0400
+
+sipb-xen-database (10.12) unstable; urgency=low
+
+  * Add a description field.
+
+ -- Anders Kaseorg <andersk@mit.edu>  Wed, 18 Jun 2008 03:52:49 -0400
+
+sipb-xen-database (10.11) unstable; urgency=low
+
+  * Specify ON DELETE CASCADE
+
+ -- Eric Price <ecprice@pseudomyrmex.mit.edu>  Fri, 06 Jun 2008 12:25:35 -0400
+
+sipb-xen-database (10.10) unstable; urgency=low
+
+  * Make machine.acl a private relation.
+
+ -- Eric Price <ecprice@pseudomyrmex.mit.edu>  Fri, 06 Jun 2008 12:03:09 -0400
+
+sipb-xen-database (10.9) unstable; urgency=low
+
+  * Eager loading of relations for better performance.
+
+ -- Eric Price <ecprice@pseudomyrmex.mit.edu>  Mon, 02 Jun 2008 01:39:11 -0400
+
+sipb-xen-database (10.8) unstable; urgency=low
+
+  * Configure serial console on boot
+
+ -- Quentin Smith <quentin@sipb-xen-dev.mit.edu>  Thu,  1 May 2008 20:21:25 -0400
+
+sipb-xen-database (10.7) unstable; urgency=low
+
+  * Depend on psql client in -client package.
+
+ -- Greg Price <price@mit.edu>  Sat, 26 Apr 2008 21:06:41 -0400
+
+sipb-xen-database (10.6) unstable; urgency=low
+
+  * Support autoinstalls table.
+
+ -- Eric Price <ecprice@pseudomyrmex.mit.edu>  Mon, 21 Apr 2008 22:34:46 -0400
+
+sipb-xen-database (10.5) unstable; urgency=low
+
+  * Enable USB tablet device in guests.
+
+ -- Anders Kaseorg <andersk@mit.edu>  Mon, 21 Apr 2008 17:39:59 -0400
+
+sipb-xen-database (10.4.1) unstable; urgency=low
+
+  * Actually export the cache clearing function.
+
+ -- Eric Price <ecprice@pseudomyrmex.mit.edu>  Fri, 28 Mar 2008 21:18:01 -0400
+
+sipb-xen-database (10.4) unstable; urgency=low
+
+  * Ubuntu's dch sucks.
+
+ -- Eric Price <ecprice@sipb-xen-dev.mit.edu>  Fri, 28 Mar 2008 20:43:42 -0400
+
+sipb-xen-database (10.3ubuntu1) gutsy; urgency=low
+
+  * Expose a function for clearing the cache.
+
+ -- Eric Price <ecprice@pseudomyrmex.mit.edu>  Fri, 28 Mar 2008 20:31:06 -0400
+
+sipb-xen-database (10.3) unstable; urgency=low
+
+  * Use 'acl', not 'users', for the reference to the machine_access table.
+
+ -- Eric Price <ecprice@sipb-xen-dev.mit.edu>  Thu, 24 Jan 2008 17:23:33 -0500
+
+sipb-xen-database (10.2) unstable; urgency=low
+
+  * Add MachineAccess to __all__ so it can be imported
+  * Remove unnecessary constructors for database objects
+
+ -- Quentin Smith <quentin@sipb-xen-dev.mit.edu>  Mon, 12 Nov 2007 04:53:47 -0500
+
+sipb-xen-database (10.1) unstable; urgency=low
+
+  * Make sipb-xen-database-tables safer (don't default to drop_all)
+
+ -- Quentin Smith <quentin@sipb-xen-dev.mit.edu>  Mon, 12 Nov 2007 04:39:59 -0500
+
+sipb-xen-database (10) unstable; urgency=low
+
+  * Added a machine_access table for cached ACLs
+
+ -- Quentin Smith <quentin@sipb-xen-dev.mit.edu>  Mon, 12 Nov 2007 04:24:35 -0500
+
+sipb-xen-database (9.0) unstable; urgency=low
+
+  * No changes.
+
+ -- Eric Price <ecprice@sipb-xen-dev.mit.edu>  Wed, 10 Oct 2007 00:17:20 -0400
+
+sipb-xen-database (9) unstable; urgency=low
+
+  * Add administrator column and backrefs to machine.
+
+ -- Eric Price <ecprice@sipb-xen-dev.mit.edu>  Wed, 10 Oct 2007 00:11:47 -0400
+
+sipb-xen-database (8) gutsy; urgency=low
+
+  * Prepend d_ to database VMs.
+
+ -- Eric Price <ecprice@sipb-xen-dev.mit.edu>  Tue,  9 Oct 2007 02:35:51 -0400
+
+sipb-xen-database (7.00002) gutsy; urgency=low
+
+  * Actually import re.
+
+ -- Anders Kaseorg <andersk@mit.edu>  Sun, 07 Oct 2007 04:34:07 -0400
+
+sipb-xen-database (7.00001) gutsy; urgency=low
+
+  * import re.
+
+ -- Anders Kaseorg <andersk@mit.edu>  Sun, 07 Oct 2007 03:40:25 -0400
+
+sipb-xen-database (7) unstable; urgency=low
+
+  * nics primary key should be mac address, not hostname.
+  * Make ip unique, and constructor for nics.
+  * Add a table for boot CDs.
+  * Add cdrom_image parameter.
+  * Regex sanity checking.
+
+ -- Anders Kaseorg <andersk@mit.edu>  Sun, 07 Oct 2007 03:18:30 -0400
+
+sipb-xen-database (6) unstable; urgency=low
+
+  * Adding a script to create lvm volumes
+
+ -- Nelson Elhage <nelhage@mit.edu>  Sat, 22 Sep 2007 13:59:36 -0400
+
+sipb-xen-database (5) unstable; urgency=low
+
+  * Change the host from sipb-vm-1 to sipb-xen-dev
+
+ -- Nelson Elhage <nelhage@mit.edu>  Sat,  8 Sep 2007 16:16:07 -0400
+
+sipb-xen-database (4) unstable; urgency=low
+
+  * Add script=vif-sipbroute to our vif lines
+
+ -- Nelson Elhage <nelhage@mit.edu>  Fri, 24 Aug 2007 22:07:18 -0400
+
+sipb-xen-database (3) unstable; urgency=low
+
+  * Add a connect() line to sipb-database
+  * Fix some other bugs in sipb-database
+
+ -- Nelson Elhage <nelhage@mit.edu>  Sun, 19 Aug 2007 19:40:08 -0400
+
+sipb-xen-database (2) unstable; urgency=low
+
+  * Fix the postinit and prerm scripts to create a sipb-xen user
+
+ -- Nelson Elhage <nelhage@mit.edu>  Thu, 16 Aug 2007 16:27:36 -0400
+
+sipb-xen-database (1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Nelson Elhage <nelhage@mit.edu>  Sun, 15 Jul 2007 16:01:16 -0400
Index: /package_tags/sipb-xen-database/10.36.1/debian/compat
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/compat	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/compat	(revision 1251)
@@ -0,0 +1,1 @@
+4
Index: /package_tags/sipb-xen-database/10.36.1/debian/control
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/control	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/control	(revision 1251)
@@ -0,0 +1,26 @@
+Source: sipb-xen-database
+Section: net
+Priority: extra
+Maintainer: SIPB Xen Project <sipb-xen@mit.edu>
+Build-Depends: cdbs (>= 0.4.23-1.1), debhelper (>= 4.2.0), python-support (>= 0.5.3), config-package-dev
+Standards-Version: 3.7.2
+
+Package: sipb-xen-database-common
+Architecture: all
+Depends: ${misc:Depends}, ${python:Depends}, python-sqlalchemy, python-psycopg2
+Provides: ${python:Provides}
+Description: Installs the SIPB Xen database schema files
+ This contains the python modules to access the SIPB Xen database
+
+Package: sipb-xen-database-server
+Architecture: all
+Depends: ${misc:Depends}, ${python:Depends}, postgresql-8.3, python-sqlalchemy, python-psycopg2, sipb-xen-database-common, adduser, sipb-xen-base
+Description: Installs the SIPB Xen database server
+ This tracks all the user VMs and is accessed from the VM host
+
+Package: sipb-xen-database-client
+Architecture: all
+Depends: ${misc:Depends}, postgresql-client-8.3, python-sqlalchemy, python-psycopg2, sipb-xen-database-common, python
+Description: Installs the SIPB Xen database configuration file
+ This is a python xen configuration script that talks to the database
+ to dynamically load xen domU configuration information
Index: /package_tags/sipb-xen-database/10.36.1/debian/copyright
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/copyright	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/copyright	(revision 1251)
@@ -0,0 +1,16 @@
+This software was written as part of the Invirt project <invirt@mit.edu>.
+
+Copyright :
+
+  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.
+
+On Debian systems, the complete text of the GNU General Public License
+can be found in the file /usr/share/common-licenses/GPL.
Index: /package_tags/sipb-xen-database/10.36.1/debian/pycompat
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/pycompat	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/pycompat	(revision 1251)
@@ -0,0 +1,1 @@
+2
Index: /package_tags/sipb-xen-database/10.36.1/debian/rules
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/rules	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/rules	(revision 1251)
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+
+DEB_DIVERT_EXTENSION = .invirt
+DEB_DIVERT_FILES_sipb-xen-database-server += \
+	/etc/postgresql/8.3/main/postgresql.conf.invirt \
+	/etc/init.d/postgresql-8.3.invirt
+
+include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/rules/config-package.mk
+
+binary-install/sipb-xen-database-common::
+	dh_pysupport -psipb-xen-database-common
Index: /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-client.install
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-client.install	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-client.install	(revision 1251)
@@ -0,0 +1,1 @@
+client/* .
Index: /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-common.install
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-common.install	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-common.install	(revision 1251)
@@ -0,0 +1,2 @@
+common/* .
+python/* usr/share/python-support/sipb-xen-database-common/invirt/
Index: /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.init
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.init	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.init	(revision 1251)
@@ -0,0 +1,19 @@
+#!/bin/bash
+### BEGIN INIT INFO
+# Provides:          sipb-xen-database-server
+# Required-Start:    $local_fs $remote_fs
+# Required-Stop:     $local_fs $remote_fs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: sipb-xen database server
+# Description:       
+### END INIT INFO
+
+PACKAGE=sipb-xen-database-server
+PARENTPACKAGE=postgresql-8.3
+GEN_FILES=/etc/postgresql/8.3/main/pg_hba.conf
+
+dpkg -s "$PACKAGE" >/dev/null 2>/dev/null || exit 0
+
+. /lib/init/config-init.sh
+config_init "$1"
Index: /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.install
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.install	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.install	(revision 1251)
@@ -0,0 +1,2 @@
+server/* .
+sipb-xen-database-tables usr/bin
Index: /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.postinst
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.postinst	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.postinst	(revision 1251)
@@ -0,0 +1,54 @@
+#!/bin/sh
+# postinst script for #PACKAGE#
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <postinst> `abort-remove'
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+# Note that by moving this above our generated code we could run into significant problems
+# if we happened to start a daemon, and use debconf
+# We move this up here because we need the diversion of postgresql.conf to happen before we create tables
+
+#DEBHELPER#
+
+
+case "$1" in
+    configure)
+        #Don't create users on upgrade
+        if [ -z "$2" ]; then
+            # Don't fail if the user/database already exists
+            su postgres -c 'createuser sipb-xen -S -d -R'    || true
+            su postgres -c 'createdb sipb_xen -O sipb-xen'   || true
+            adduser --system sipb-xen
+        fi
+	mako-render /etc/postgresql/8.3/main/pg_hba.conf.mako >/etc/postgresql/8.3/main/pg_hba.conf
+	/etc/init.d/postgresql-8.3 restart
+        su sipb-xen -s /bin/sh -c 'sipb-xen-database-tables create'
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+exit 0
+
+
Index: /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.prerm
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.prerm	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/debian/sipb-xen-database-server.prerm	(revision 1251)
@@ -0,0 +1,45 @@
+#!/bin/sh
+# prerm script for #PACKAGE#
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove|deconfigure)
+
+        # This will destroy data -- do we want to do this?
+        # su postgres -c 'dropdb sipb_xen'
+        # su postgres -c 'dropuser sipb-xen'
+        deluser sipb-xen
+    ;;
+
+    upgrade|failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
Index: /package_tags/sipb-xen-database/10.36.1/python/database/__init__.py
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/python/database/__init__.py	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/python/database/__init__.py	(revision 1251)
@@ -0,0 +1,9 @@
+from invirt.config import structs as config
+from models import *
+import sqlalchemy
+
+def connect(uri = config.db.uri):
+    """ Connect to a given database URI"""
+    engine = sqlalchemy.create_engine(uri, pool_timeout=5)
+    meta.bind = engine
+    session.configure(bind=engine)
Index: /package_tags/sipb-xen-database/10.36.1/python/database/models.py
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/python/database/models.py	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/python/database/models.py	(revision 1251)
@@ -0,0 +1,136 @@
+from sqlalchemy import *
+from sqlalchemy import orm
+from sqlalchemy.orm import create_session, relation
+
+from sqlalchemy.ext.sessioncontext import SessionContext
+from sqlalchemy.ext.assignmapper import assign_mapper
+
+__all__ = ['meta',
+           'session',
+           'clear_cache',
+           'machine_table',
+           'machine_access_table',
+           'nic_table',
+           'disk_table',
+           'types_table',
+           'cdroms_table',
+           'autoinstalls_table',
+           'Machine',
+           'MachineAccess',
+           'NIC',
+           'Disk',
+           'Type',
+           'CDROM',
+           'Autoinstall',
+           'or_',
+           ]
+
+meta = ThreadLocalMetaData()
+session = orm.scoped_session(orm.sessionmaker(transactional=False, autoflush=False))
+
+machine_table = Table('machines', meta,
+       Column('machine_id', Integer, primary_key=True, nullable=False),
+       Column('name', String, nullable=False),
+       Column('description', String, nullable=False),
+       Column('memory', Integer, nullable=False),
+       Column('owner', String, nullable=False),
+       Column('contact', String, nullable=False),
+       Column('uuid', String, nullable=False),
+       Column('administrator', String, nullable=False, default=False),
+       Column('type_id', String, ForeignKey('types.type_id'), nullable=False),
+       Column('autorestart', Boolean, nullable=False, default=False),
+       Column('cpus', Integer, nullable=False, default=1),
+       Column('adminable', Boolean, nullable=False, default=False))
+
+nic_table = Table('nics', meta,
+       Column('machine_id', Integer, ForeignKey('machines.machine_id'), nullable=True),
+       Column('mac_addr', String, nullable=False, primary_key=True),
+       Column('ip', String, nullable=False, unique=True),
+       Column('hostname', String, nullable=True))
+
+disk_table = Table('disks', meta,
+       Column('machine_id', Integer, ForeignKey('machines.machine_id'), nullable=False),
+       Column('guest_device_name', String, nullable=False),
+       Column('size', Integer, nullable=False),
+       PrimaryKeyConstraint('machine_id', 'guest_device_name'))
+
+types_table = Table('types', meta,
+       Column('type_id', String, primary_key=True, nullable=False),
+       Column('description', String, nullable=False),
+       Column('hvm', Boolean, nullable=False),
+       Column('apic', Boolean, nullable=False),
+       Column('acpi', Boolean, nullable=False),
+       Column('pae', Boolean, nullable=False))
+
+mirrors_table = Table('mirrors', meta,
+       Column('mirror_id', String, primary_key=True, nullable=False),
+       Column('uri_prefix', String, nullable=False))
+
+cdroms_table = Table('cdroms', meta,
+       Column('cdrom_id', String, primary_key=True, nullable=False),
+       Column('description', String, nullable=False),
+       Column('mirror_id', String, ForeignKey('mirrors.mirror_id')),
+       Column('uri_suffix', String))
+
+autoinstalls_table = Table('autoinstalls', meta,
+       Column('autoinstall_id', String, primary_key=True, nullable=False),
+       Column('description', String, nullable=False),
+       Column('type_id', String, ForeignKey('types.type_id'), nullable=False),
+       Column('distribution', String, nullable=False),
+       Column('mirror', String, nullable=False))
+
+machine_access_table = Table('machine_access', meta,
+       Column('machine_id', Integer, ForeignKey('machines.machine_id', ondelete='CASCADE'), nullable=False, index=True),
+       Column('user', String, nullable=False, index=True),
+       PrimaryKeyConstraint('machine_id', 'user'))
+
+class Machine(object):
+    def __repr__(self):
+        return "<Machine %s: name='%s' owner='%s'>" % (self.machine_id, self.name, self.owner)
+
+class MachineAccess(object):
+    def __repr__(self):
+        return "<MachineAccess machine='%s' user='%s'>" % (self.machine, self.user)
+
+class NIC(object):
+    def __repr__(self):
+        return "<NIC: mac='%s' machine='%s' ip='%s' hostname='%s'>" % (self.mac_addr, self.machine_id, self.ip, self.hostname)
+
+class Disk(object):
+    def __repr__(self):
+        return "<Disk: machine=%s device=%s size=%s>" % (self.machine_id, self.guest_device_name, self.size)
+
+class Type(object):
+    def __repr__(self):
+        return "<Type %s: %s>" % (self.type_id, self.description)
+
+class Mirror(object):
+    def __repr__(self):
+        return "<Mirror %s>" % (self.mirror_id)
+
+class CDROM(object):
+    def __repr__(self):
+        return "<CDROM %s: %s>" % (self.cdrom_id, self.description)
+
+class Autoinstall(object):
+    def __repr__(self):
+        return "<Autoinstall %s: %s (%s)>" % (self.autoinstall_id, self.description, self.type.type_id)
+
+session.mapper(Machine, machine_table,
+              properties={'nics': relation(NIC, backref="machine", lazy=False),
+                          'disks': relation(Disk, backref="machine", lazy=False),
+                          'type': relation(Type, lazy=False),
+                          'acl': relation(MachineAccess, backref="machine", lazy=False, passive_deletes=True, cascade="all, delete-orphan")});
+session.mapper(MachineAccess, machine_access_table)
+session.mapper(NIC, nic_table)
+session.mapper(Disk, disk_table)
+session.mapper(Type, types_table)
+session.mapper(Mirror, mirrors_table)
+session.mapper(CDROM, cdroms_table)
+session.mapper(Autoinstall, autoinstalls_table)
+
+def clear_cache():
+    """Clear sqlalchemy's cache
+    """
+
+    session.clear()
Index: /package_tags/sipb-xen-database/10.36.1/server/etc/init.d/postgresql-8.3.invirt
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/server/etc/init.d/postgresql-8.3.invirt	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/server/etc/init.d/postgresql-8.3.invirt	(revision 1251)
@@ -0,0 +1,29 @@
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          postgresql postgresql-8.3
+# Required-Start:    $local_fs $remote_fs $network $time
+# Required-Stop:     $local_fs $remote_fs $network $time
+# Should-Start:      $syslog
+# Should-Stop:       $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: PostgreSQL 8.3 RDBMS server
+# Description:       This script proxies requests to the default postgresql-8.3,
+#                    except for restart, which it translates to a stop request,
+#                    and then a start request, so that PostgreSQL is shut down
+#                    with a fast shutdown
+### END INIT INFO
+
+case "$1" in
+  restart)
+        invoke-rc.d postgresql-8.3.invirt-orig stop
+        invoke-rc.d postgresql-8.3.invirt-orig start
+        exit $?
+	;;
+  *)
+        invoke-rc.d postgresql-8.3.invirt-orig "$1"
+        exit $?
+	;;
+esac
+
+:
Index: /package_tags/sipb-xen-database/10.36.1/server/etc/postgresql/8.3/main/pg_hba.conf.mako
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/server/etc/postgresql/8.3/main/pg_hba.conf.mako	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/server/etc/postgresql/8.3/main/pg_hba.conf.mako	(revision 1251)
@@ -0,0 +1,87 @@
+<% from invirt.config import structs as cfg %>\
+# PostgreSQL Client Authentication Configuration File
+# ===================================================
+#
+# Refer to the PostgreSQL Administrator's Guide, chapter "Client
+# Authentication" for a complete description.  A short synopsis
+# follows.
+#
+# This file controls: which hosts are allowed to connect, how clients
+# are authenticated, which PostgreSQL user names they can use, which
+# databases they can access.  Records take one of these forms:
+#
+# local      DATABASE  USER  METHOD  [OPTION]
+# host       DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTION]
+# hostssl    DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTION]
+# hostnossl  DATABASE  USER  CIDR-ADDRESS  METHOD  [OPTION]
+#
+# (The uppercase items must be replaced by actual values.)
+#
+# The first field is the connection type: "local" is a Unix-domain socket,
+# "host" is either a plain or SSL-encrypted TCP/IP socket, "hostssl" is an
+# SSL-encrypted TCP/IP socket, and "hostnossl" is a plain TCP/IP socket.
+#
+# DATABASE can be "all", "sameuser", "samerole", a database name, or
+# a comma-separated list thereof.
+#
+# USER can be "all", a user name, a group name prefixed with "+", or
+# a comma-separated list thereof.  In both the DATABASE and USER fields
+# you can also write a file name prefixed with "@" to include names from
+# a separate file.
+#
+# CIDR-ADDRESS specifies the set of hosts the record matches.
+# It is made up of an IP address and a CIDR mask that is an integer
+# (between 0 and 32 (IPv4) or 128 (IPv6) inclusive) that specifies
+# the number of significant bits in the mask.  Alternatively, you can write
+# an IP address and netmask in separate columns to specify the set of hosts.
+#
+# METHOD can be "trust", "reject", "md5", "crypt", "password",
+# "krb5", "ident", or "pam".  Note that "password" sends passwords
+# in clear text; "md5" is preferred since it sends encrypted passwords.
+#
+# OPTION is the ident map or the name of the PAM service, depending on METHOD.
+#
+# Database and user names containing spaces, commas, quotes and other special
+# characters must be quoted. Quoting one of the keywords "all", "sameuser" or
+# "samerole" makes the name lose its special character, and just match a
+# database or username with that name.
+#
+# This file is read on server startup and when the postmaster receives
+# a SIGHUP signal.  If you edit the file on a running system, you have
+# to SIGHUP the postmaster for the changes to take effect.  You can use
+# "pg_ctl reload" to do that.
+
+# Put your actual configuration here
+# ----------------------------------
+#
+# If you want to allow non-local connections, you need to add more
+# "host" records. In that case you will also need to make PostgreSQL listen
+# on a non-local interface via the listen_addresses configuration parameter,
+# or via the -i or -h command line switches.
+#
+
+
+
+
+# DO NOT DISABLE!
+# If you change this first entry you will need to make sure that the
+# database
+# super user can access the database using some other method.
+# Noninteractive
+# access to all databases is required during automatic maintenance
+# (autovacuum, daily cronjob, replication, and similar tasks).
+#
+# Database administrative login by UNIX sockets
+local   all         postgres                          ident sameuser
+
+# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
+
+# "local" is for Unix domain socket connections only
+local   all         all                               ident sameuser
+# IPv4 local connections:
+host    all         all         127.0.0.1/32          md5
+# IPv6 local connections:
+host    all         all         ::1/128               md5
+% for m in cfg.hosts + [cfg.db, cfg.remote, cfg.console]:
+host	${cfg.db.dbname}	${cfg.db.user}	${m.ip}/32	trust
+% endfor
Index: /package_tags/sipb-xen-database/10.36.1/server/etc/postgresql/8.3/main/postgresql.conf.invirt
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/server/etc/postgresql/8.3/main/postgresql.conf.invirt	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/server/etc/postgresql/8.3/main/postgresql.conf.invirt	(revision 1251)
@@ -0,0 +1,493 @@
+# -----------------------------
+# PostgreSQL configuration file
+# -----------------------------
+#
+# This file consists of lines of the form:
+#
+#   name = value
+#
+# (The "=" is optional.)  Whitespace may be used.  Comments are introduced with
+# "#" anywhere on a line.  The complete list of parameter names and allowed
+# values can be found in the PostgreSQL documentation.
+#
+# The commented-out settings shown in this file represent the default values.
+# Re-commenting a setting is NOT sufficient to revert it to the default value;
+# you need to reload the server.
+#
+# This file is read on server startup and when the server receives a SIGHUP
+# signal.  If you edit the file on a running system, you have to SIGHUP the
+# server for the changes to take effect, or use "pg_ctl reload".  Some
+# parameters, which are marked below, require a server shutdown and restart to
+# take effect.
+#
+# Any parameter can also be given as a command-line option to the server, e.g.,
+# "postgres -c log_connections=on".  Some paramters can be changed at run time
+# with the "SET" SQL command.
+#
+# Memory units:  kB = kilobytes MB = megabytes GB = gigabytes
+# Time units:    ms = milliseconds s = seconds min = minutes h = hours d = days
+
+
+#------------------------------------------------------------------------------
+# FILE LOCATIONS
+#------------------------------------------------------------------------------
+
+# The default values of these variables are driven from the -D command-line
+# option or PGDATA environment variable, represented here as ConfigDir.
+
+data_directory = '/var/lib/postgresql/8.3/main'		# use data in another directory
+					# (change requires restart)
+hba_file = '/etc/postgresql/8.3/main/pg_hba.conf'	# host-based authentication file
+					# (change requires restart)
+ident_file = '/etc/postgresql/8.3/main/pg_ident.conf'	# ident configuration file
+					# (change requires restart)
+
+# If external_pid_file is not explicitly set, no extra PID file is written.
+external_pid_file = '/var/run/postgresql/8.3-main.pid'		# write an extra PID file
+					# (change requires restart)
+
+
+#------------------------------------------------------------------------------
+# CONNECTIONS AND AUTHENTICATION
+#------------------------------------------------------------------------------
+
+# - Connection Settings -
+
+listen_addresses = '*'			# what IP address(es) to listen on;
+					# comma-separated list of addresses;
+					# defaults to 'localhost', '*' = all
+					# (change requires restart)
+port = 5432				# (change requires restart)
+max_connections = 100			# (change requires restart)
+# Note:  Increasing max_connections costs ~400 bytes of shared memory per 
+# connection slot, plus lock space (see max_locks_per_transaction).  You might
+# also need to raise shared_buffers to support more connections.
+#superuser_reserved_connections = 3	# (change requires restart)
+unix_socket_directory = '/var/run/postgresql'		# (change requires restart)
+#unix_socket_group = ''			# (change requires restart)
+#unix_socket_permissions = 0777		# begin with 0 to use octal notation
+					# (change requires restart)
+#bonjour_name = ''			# defaults to the computer name
+					# (change requires restart)
+
+# - Security and Authentication -
+
+#authentication_timeout = 1min		# 1s-600s
+ssl = true				# (change requires restart)
+#ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH'	# allowed SSL ciphers
+					# (change requires restart)
+#password_encryption = on
+#db_user_namespace = off
+
+# Kerberos and GSSAPI
+#krb_server_keyfile = ''		# (change requires restart)
+#krb_srvname = 'postgres'		# (change requires restart, Kerberos only)
+#krb_server_hostname = ''		# empty string matches any keytab entry
+					# (change requires restart, Kerberos only)
+#krb_caseins_users = off		# (change requires restart)
+#krb_realm = ''           		# (change requires restart)
+
+# - TCP Keepalives -
+# see "man 7 tcp" for details
+
+#tcp_keepalives_idle = 0		# TCP_KEEPIDLE, in seconds;
+					# 0 selects the system default
+#tcp_keepalives_interval = 0		# TCP_KEEPINTVL, in seconds;
+					# 0 selects the system default
+#tcp_keepalives_count = 0		# TCP_KEEPCNT;
+					# 0 selects the system default
+
+
+#------------------------------------------------------------------------------
+# RESOURCE USAGE (except WAL)
+#------------------------------------------------------------------------------
+
+# - Memory -
+
+shared_buffers = 24MB			# min 128kB or max_connections*16kB
+					# (change requires restart)
+#temp_buffers = 8MB			# min 800kB
+#max_prepared_transactions = 5		# can be 0 or more
+					# (change requires restart)
+# Note:  Increasing max_prepared_transactions costs ~600 bytes of shared memory
+# per transaction slot, plus lock space (see max_locks_per_transaction).
+#work_mem = 1MB				# min 64kB
+#maintenance_work_mem = 16MB		# min 1MB
+#max_stack_depth = 2MB			# min 100kB
+
+# - Free Space Map -
+
+max_fsm_pages = 153600			# min max_fsm_relations*16, 6 bytes each
+					# (change requires restart)
+#max_fsm_relations = 1000		# min 100, ~70 bytes each
+					# (change requires restart)
+
+# - Kernel Resource Usage -
+
+#max_files_per_process = 1000		# min 25
+					# (change requires restart)
+#shared_preload_libraries = ''		# (change requires restart)
+
+# - Cost-Based Vacuum Delay -
+
+#vacuum_cost_delay = 0			# 0-1000 milliseconds
+#vacuum_cost_page_hit = 1		# 0-10000 credits
+#vacuum_cost_page_miss = 10		# 0-10000 credits
+#vacuum_cost_page_dirty = 20		# 0-10000 credits
+#vacuum_cost_limit = 200		# 1-10000 credits
+
+# - Background Writer -
+
+#bgwriter_delay = 200ms			# 10-10000ms between rounds
+#bgwriter_lru_maxpages = 100		# 0-1000 max buffers written/round
+#bgwriter_lru_multiplier = 2.0		# 0-10.0 multipler on buffers scanned/round
+
+
+#------------------------------------------------------------------------------
+# WRITE AHEAD LOG
+#------------------------------------------------------------------------------
+
+# - Settings -
+
+#fsync = on				# turns forced synchronization on or off
+#synchronous_commit = on		# immediate fsync at commit
+#wal_sync_method = fsync		# the default is the first option 
+					# supported by the operating system:
+					#   open_datasync
+					#   fdatasync
+					#   fsync
+					#   fsync_writethrough
+					#   open_sync
+#full_page_writes = on			# recover from partial page writes
+#wal_buffers = 64kB			# min 32kB
+					# (change requires restart)
+#wal_writer_delay = 200ms		# 1-10000 milliseconds
+
+#commit_delay = 0			# range 0-100000, in microseconds
+#commit_siblings = 5			# range 1-1000
+
+# - Checkpoints -
+
+#checkpoint_segments = 3		# in logfile segments, min 1, 16MB each
+#checkpoint_timeout = 5min		# range 30s-1h
+#checkpoint_completion_target = 0.5	# checkpoint target duration, 0.0 - 1.0
+#checkpoint_warning = 30s		# 0 is off
+
+# - Archiving -
+
+#archive_mode = off		# allows archiving to be done
+				# (change requires restart)
+#archive_command = ''		# command to use to archive a logfile segment
+#archive_timeout = 0		# force a logfile segment switch after this
+				# time; 0 is off
+
+
+#------------------------------------------------------------------------------
+# QUERY TUNING
+#------------------------------------------------------------------------------
+
+# - Planner Method Configuration -
+
+#enable_bitmapscan = on
+#enable_hashagg = on
+#enable_hashjoin = on
+#enable_indexscan = on
+#enable_mergejoin = on
+#enable_nestloop = on
+#enable_seqscan = on
+#enable_sort = on
+#enable_tidscan = on
+
+# - Planner Cost Constants -
+
+#seq_page_cost = 1.0			# measured on an arbitrary scale
+#random_page_cost = 4.0			# same scale as above
+#cpu_tuple_cost = 0.01			# same scale as above
+#cpu_index_tuple_cost = 0.005		# same scale as above
+#cpu_operator_cost = 0.0025		# same scale as above
+#effective_cache_size = 128MB
+
+# - Genetic Query Optimizer -
+
+#geqo = on
+#geqo_threshold = 12
+#geqo_effort = 5			# range 1-10
+#geqo_pool_size = 0			# selects default based on effort
+#geqo_generations = 0			# selects default based on effort
+#geqo_selection_bias = 2.0		# range 1.5-2.0
+
+# - Other Planner Options -
+
+#default_statistics_target = 10		# range 1-1000
+#constraint_exclusion = off
+#from_collapse_limit = 8
+#join_collapse_limit = 8		# 1 disables collapsing of explicit 
+					# JOIN clauses
+
+
+#------------------------------------------------------------------------------
+# ERROR REPORTING AND LOGGING
+#------------------------------------------------------------------------------
+
+# - Where to Log -
+
+#log_destination = 'stderr'		# Valid values are combinations of
+					# stderr, csvlog, syslog and eventlog,
+					# depending on platform.  csvlog
+					# requires logging_collector to be on.
+
+# This is used when logging to stderr:
+#logging_collector = off		# Enable capturing of stderr and csvlog
+					# into log files. Required to be on for
+					# csvlogs.
+					# (change requires restart)
+
+# These are only used if logging_collector is on:
+#log_directory = 'pg_log'		# directory where log files are written,
+					# can be absolute or relative to PGDATA
+#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'	# log file name pattern,
+					# can include strftime() escapes
+#log_truncate_on_rotation = off		# If on, an existing log file of the
+					# same name as the new log file will be
+					# truncated rather than appended to.
+					# But such truncation only occurs on
+					# time-driven rotation, not on restarts
+					# or size-driven rotation.  Default is
+					# off, meaning append to existing files
+					# in all cases.
+#log_rotation_age = 1d			# Automatic rotation of logfiles will
+					# happen after that time.  0 to disable.
+#log_rotation_size = 10MB		# Automatic rotation of logfiles will 
+					# happen after that much log output.
+					# 0 to disable.
+
+# These are relevant when logging to syslog:
+#syslog_facility = 'LOCAL0'
+#syslog_ident = 'postgres'
+
+
+# - When to Log -
+
+#client_min_messages = notice		# values in order of decreasing detail:
+					#   debug5
+					#   debug4
+					#   debug3
+					#   debug2
+					#   debug1
+					#   log
+					#   notice
+					#   warning
+					#   error
+
+#log_min_messages = notice		# values in order of decreasing detail:
+					#   debug5
+					#   debug4
+					#   debug3
+					#   debug2
+					#   debug1
+					#   info
+					#   notice
+					#   warning
+					#   error
+					#   log
+					#   fatal
+					#   panic
+
+#log_error_verbosity = default		# terse, default, or verbose messages
+
+#log_min_error_statement = error	# values in order of decreasing detail:
+				 	#   debug5
+					#   debug4
+					#   debug3
+					#   debug2
+					#   debug1
+				 	#   info
+					#   notice
+					#   warning
+					#   error
+					#   log
+					#   fatal
+					#   panic (effectively off)
+
+#log_min_duration_statement = -1	# -1 is disabled, 0 logs all statements
+					# and their durations, > 0 logs only
+					# statements running at least this time.
+
+#silent_mode = off			# DO NOT USE without syslog or
+					# logging_collector
+					# (change requires restart)
+
+# - What to Log -
+
+#debug_print_parse = off
+#debug_print_rewritten = off
+#debug_print_plan = off
+#debug_pretty_print = off
+#log_checkpoints = off
+#log_connections = off
+#log_disconnections = off
+#log_duration = off
+#log_hostname = off
+log_line_prefix = '%t '			# special values:
+					#   %u = user name
+					#   %d = database name
+					#   %r = remote host and port
+					#   %h = remote host
+					#   %p = process ID
+					#   %t = timestamp without milliseconds
+					#   %m = timestamp with milliseconds
+					#   %i = command tag
+					#   %c = session ID
+					#   %l = session line number
+					#   %s = session start timestamp
+					#   %v = virtual transaction ID
+					#   %x = transaction ID (0 if none)
+					#   %q = stop here in non-session
+					#        processes
+					#   %% = '%'
+					# e.g. '<%u%%%d> '
+#log_lock_waits = off			# log lock waits >= deadlock_timeout
+#log_statement = 'none'			# none, ddl, mod, all
+#log_temp_files = -1			# log temporary files equal or larger
+					# than specified size;
+					# -1 disables, 0 logs all temp files
+#log_timezone = unknown			# actually, defaults to TZ environment
+					# setting
+
+
+#------------------------------------------------------------------------------
+# RUNTIME STATISTICS
+#------------------------------------------------------------------------------
+
+# - Query/Index Statistics Collector -
+
+#track_activities = on
+#track_counts = on
+#update_process_title = on
+
+
+# - Statistics Monitoring -
+
+#log_parser_stats = off
+#log_planner_stats = off
+#log_executor_stats = off
+#log_statement_stats = off
+
+
+#------------------------------------------------------------------------------
+# AUTOVACUUM PARAMETERS
+#------------------------------------------------------------------------------
+
+#autovacuum = on			# Enable autovacuum subprocess?  'on' 
+					# requires track_counts to also be on.
+#log_autovacuum_min_duration = -1	# -1 disables, 0 logs all actions and
+					# their durations, > 0 logs only
+					# actions running at least that time.
+#autovacuum_max_workers = 3		# max number of autovacuum subprocesses
+#autovacuum_naptime = 1min		# time between autovacuum runs
+#autovacuum_vacuum_threshold = 50	# min number of row updates before
+					# vacuum
+#autovacuum_analyze_threshold = 50	# min number of row updates before 
+					# analyze
+#autovacuum_vacuum_scale_factor = 0.2	# fraction of table size before vacuum
+#autovacuum_analyze_scale_factor = 0.1	# fraction of table size before analyze
+#autovacuum_freeze_max_age = 200000000	# maximum XID age before forced vacuum
+					# (change requires restart)
+#autovacuum_vacuum_cost_delay = 20	# default vacuum cost delay for
+					# autovacuum, -1 means use
+					# vacuum_cost_delay
+#autovacuum_vacuum_cost_limit = -1	# default vacuum cost limit for
+					# autovacuum, -1 means use
+					# vacuum_cost_limit
+
+
+#------------------------------------------------------------------------------
+# CLIENT CONNECTION DEFAULTS
+#------------------------------------------------------------------------------
+
+# - Statement Behavior -
+
+#search_path = '"$user",public'		# schema names
+#default_tablespace = ''		# a tablespace name, '' uses the default
+#temp_tablespaces = ''			# a list of tablespace names, '' uses
+					# only default tablespace
+#check_function_bodies = on
+#default_transaction_isolation = 'read committed'
+#default_transaction_read_only = off
+#session_replication_role = 'origin'
+#statement_timeout = 0			# 0 is disabled
+#vacuum_freeze_min_age = 100000000
+#xmlbinary = 'base64'
+#xmloption = 'content'
+
+# - Locale and Formatting -
+
+datestyle = 'iso, mdy'
+#timezone = unknown			# actually, defaults to TZ environment
+					# setting
+#timezone_abbreviations = 'Default'     # Select the set of available time zone
+					# abbreviations.  Currently, there are
+					#   Default
+					#   Australia
+					#   India
+					# You can create your own file in
+					# share/timezonesets/.
+#extra_float_digits = 0			# min -15, max 2
+#client_encoding = sql_ascii		# actually, defaults to database
+					# encoding
+
+# These settings are initialized by initdb, but they can be changed.
+lc_messages = 'C'			# locale for system error message
+					# strings
+lc_monetary = 'C'			# locale for monetary formatting
+lc_numeric = 'C'			# locale for number formatting
+lc_time = 'C'				# locale for time formatting
+
+# default configuration for text search
+default_text_search_config = 'pg_catalog.english'
+
+# - Other Defaults -
+
+#explain_pretty_print = on
+#dynamic_library_path = '$libdir'
+#local_preload_libraries = ''
+
+
+#------------------------------------------------------------------------------
+# LOCK MANAGEMENT
+#------------------------------------------------------------------------------
+
+#deadlock_timeout = 1s
+#max_locks_per_transaction = 64		# min 10
+					# (change requires restart)
+# Note:  Each lock table slot uses ~270 bytes of shared memory, and there are
+# max_locks_per_transaction * (max_connections + max_prepared_transactions)
+# lock table slots.
+
+
+#------------------------------------------------------------------------------
+# VERSION/PLATFORM COMPATIBILITY
+#------------------------------------------------------------------------------
+
+# - Previous PostgreSQL Versions -
+
+#add_missing_from = off
+#array_nulls = on
+#backslash_quote = safe_encoding	# on, off, or safe_encoding
+#default_with_oids = off
+#escape_string_warning = on
+#regex_flavor = advanced		# advanced, extended, or basic
+#sql_inheritance = on
+#standard_conforming_strings = off
+#synchronize_seqscans = on
+
+# - Other Platforms and Clients -
+
+#transform_null_equals = off
+
+
+#------------------------------------------------------------------------------
+# CUSTOMIZED OPTIONS
+#------------------------------------------------------------------------------
+
+#custom_variable_classes = ''		# list of custom variable class names
Index: /package_tags/sipb-xen-database/10.36.1/sipb-xen-database-tables
===================================================================
--- /package_tags/sipb-xen-database/10.36.1/sipb-xen-database-tables	(revision 1251)
+++ /package_tags/sipb-xen-database/10.36.1/sipb-xen-database-tables	(revision 1251)
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+
+from invirt import database
+import sys
+
+def usage():
+    print >>sys.stderr, "Usage: %s [create|drop]" %(sys.argv[0],)
+    sys.exit(-1)
+
+if len(sys.argv) == 1:
+    usage()
+
+database.connect()
+
+if sys.argv[1] == "create":
+    database.meta.create_all()
+elif sys.argv[1] == "drop":
+    database.meta.drop_all()
+else:
+    usage()
