Index: trunk/packages/invirt-database/debian/changelog
===================================================================
--- trunk/packages/invirt-database/debian/changelog	(revision 2150)
+++ trunk/packages/invirt-database/debian/changelog	(revision 2151)
@@ -1,2 +1,8 @@
+invirt-database (0.1.6) unstable; urgency=low
+
+  * Move invirt-setquotas into this package.
+
+ -- Evan Broder <broder@mit.edu>  Tue, 17 Feb 2009 03:42:41 -0500
+
 invirt-database (0.1.5) unstable; urgency=low
 
Index: trunk/packages/invirt-database/scripts/invirt-setquotas
===================================================================
--- trunk/packages/invirt-database/scripts/invirt-setquotas	(revision 2151)
+++ trunk/packages/invirt-database/scripts/invirt-setquotas	(revision 2151)
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+
+"""
+invirt-setquota allows an administrator to set memory, disk, and VM quotas 
+for an owner.  Invoking with only an owner name returns the current quotas for
+that owner.  Setting a parameter to -1 restores the default.
+
+Examples:
+
+    invirt-setquota joeuser -mt 512 -ms -1
+"""
+
+from invirt.database import *
+from sys import argv, exit, stderr, stdout
+from optparse import OptionParser
+
+def main(argv):
+    parser = OptionParser(usage = '%prog owner [options]',
+            description = __doc__.strip().split('\n\n')[0])
+    parser.add_option('-m', '--mem-total',
+            type = 'int',
+            dest = 'memtotal',
+            help = 'set total concurrent RAM quota')
+    parser.add_option('-n', '--mem-single',
+            type = 'int',
+            dest = 'memsingle',
+            help = 'set single VM RAM quota')
+    parser.add_option('-d', '--disk-total',
+            type = 'int',
+            dest = 'disktotal',
+            help = 'set total disk quota')
+    parser.add_option('-e', '--disk-single',
+            type = 'int',
+            dest = 'disksingle',
+            help = 'set single VM disk quota')
+    parser.add_option('-v', '--vms-total',
+            type = 'int',
+            dest = 'vmstotal',
+            help = 'set total VM quota')
+    parser.add_option('-w', '--vms-active',
+            type = 'int',
+            dest = 'vmsactive',
+            help = 'set active VM quota')
+    opts, args = parser.parse_args()
+
+    if len(args) != 1:
+        print >> stderr, __doc__.strip()
+        return 1
+    owner = args[0]
+    connect()
+    session.begin()
+    
+    x = Owner.query().filter_by(owner_id=owner).first()
+    if x == None:
+        x = Owner(owner_id=owner, ram_quota_total=None, ram_quota_single=None,
+                  disk_quota_total=None, disk_quota_single=None,
+                  vms_quota_total=None, vms_quota_active=None)
+
+    if opts.memtotal != None:
+        total = int(opts.memtotal)
+        if total == -1:
+            x.ram_quota_total = None
+        else:
+            x.ram_quota_total = total
+
+    if opts.memsingle != None:
+        single = int(opts.memsingle)
+        if single == -1:
+            x.ram_quota_single = None
+        else:
+            x.ram_quota_single = single
+
+    if opts.disktotal != None:
+        total = int(opts.disktotal)
+        if total == -1:
+            x.disk_quota_total = None
+        else:
+            x.disk_quota_total = total
+
+    if opts.disksingle != None:
+        single = int(opts.disksingle)
+        if single == -1:
+            x.disk_quota_single = None
+        else:
+            x.disk_quota_single = single
+
+    if opts.vmstotal != None:
+        total = int(opts.vmstotal)
+        if total == -1:
+            x.vms_quota_total = None
+        else:
+            x.vms_quota_total = total
+
+    if opts.vmsactive != None:
+        active = int(opts.vmsactive)
+        if active == -1:
+            x.vms_quota_active = None
+        else:
+            x.vms_quota_active = active
+
+    session.commit()
+    print str(x)
+    return 0
+
+if __name__ == '__main__':
+    exit(main(argv))
Index: trunk/packages/invirt-database/setup.py
===================================================================
--- trunk/packages/invirt-database/setup.py	(revision 2150)
+++ trunk/packages/invirt-database/setup.py	(revision 2151)
@@ -5,4 +5,5 @@
 from debian_bundle.deb822 import Deb822
 from email.utils import parseaddr
+from glob import glob
 from setuptools import setup
 
@@ -20,4 +21,5 @@
     
     packages = ['invirt.database'],
-    package_dir = {'invirt': 'python'}
+    package_dir = {'invirt': 'python'},
+    scripts=glob('scripts/*')
 )
