Move invirt-setquotas into invirt-database.
authorEvan Broder <broder@mit.edu>
Tue, 17 Feb 2009 08:45:26 +0000 (03:45 -0500)
committerEvan Broder <broder@mit.edu>
Tue, 17 Feb 2009 08:45:26 +0000 (03:45 -0500)
While we're at it, clean up the mechanism to list scripts in a Python
package.

svn path=/trunk/packages/invirt-database/; revision=2151

debian/changelog
scripts/invirt-setquotas [new file with mode: 0755]
setup.py

index 89967fb..7dbf4ab 100644 (file)
@@ -1,3 +1,9 @@
+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
 
   * Make the default values on the owners table explicit
diff --git a/scripts/invirt-setquotas b/scripts/invirt-setquotas
new file mode 100755 (executable)
index 0000000..ceae1bf
--- /dev/null
@@ -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 c51e3a9..79db2e4 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -4,6 +4,7 @@ from os import path
 from debian_bundle.changelog import Changelog
 from debian_bundle.deb822 import Deb822
 from email.utils import parseaddr
+from glob import glob
 from setuptools import setup
 
 version = Changelog(open(path.join(path.dirname(__file__), 'debian/changelog')).read()).\
@@ -19,5 +20,6 @@ setup(
     maintainer_email=maintainer_email,
     
     packages = ['invirt.database'],
-    package_dir = {'invirt': 'python'}
+    package_dir = {'invirt': 'python'},
+    scripts=glob('scripts/*')
 )