fix more imports EIBTI-style
[invirt/packages/invirt-database.git] / scripts / invirt-quota
index 73fef05..f0fb16f 100755 (executable)
@@ -4,26 +4,23 @@
 invirt-quota 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-quota joeuser -mt 512 -ms -1
 """
 
-from invirt.database import *
-from sys import argv, exit, stderr, stdout
-from optparse import OptionParser
+import sys
+import optparse
+
+from invirt import database
 
 def main(argv):
-    parser = OptionParser(usage = '%prog owner [options]',
-            description = __doc__.strip().split('\n\n')[0])
-    parser.add_option('-m', '--mem-total',
+    parser = optparse.OptionParser(usage = '%prog <owner> [options]',
+            description = __doc__.strip())
+    parser.add_option('-m', '--ram-total',
             type = 'int',
-            dest = 'memtotal',
+            dest = 'ramtotal',
             help = 'set total concurrent RAM quota')
-    parser.add_option('-n', '--mem-single',
+    parser.add_option('-n', '--ram-single',
             type = 'int',
-            dest = 'memsingle',
+            dest = 'ramsingle',
             help = 'set single VM RAM quota')
     parser.add_option('-d', '--disk-total',
             type = 'int',
@@ -44,61 +41,26 @@ def main(argv):
     opts, args = parser.parse_args()
 
     if len(args) != 1:
-        print >> stderr, __doc__.strip()
+        parser.print_help(sys.stderr)
         return 1
-    owner = args[0]
-    connect()
-    session.begin()
+    owner_id = args[0]
+    database.connect()
+    database.session.begin()
     
-    x = Owner.query().filter_by(owner_id=owner).first()
-    if x == None:
-        x = Owner(owner_id=owner)
-
-    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
+    owner = database.Owner.query().filter_by(owner_id=owner_id).first()
+    if owner is None:
+        owner = database.Owner(owner_id=owner_id)
 
-    if opts.vmsactive != None:
-        active = int(opts.vmsactive)
-        if active == -1:
-            x.vms_quota_active = None
-        else:
-            x.vms_quota_active = active
+    for resource, scope in [('ram',  'total'), ('ram',  'single'),
+                            ('disk', 'total'), ('disk', 'single'),
+                            ('vms',  'total'), ('vms',  'active')]:
+        val = getattr(opts, resource+scope)
+        if val is not None:
+            setattr(owner, resource+'_quota_'+scope, val if val >= 0 else None)
 
-    session.commit()
-    print str(x)
+    database.session.commit()
+    print owner
     return 0
 
 if __name__ == '__main__':
-    exit(main(argv))
+    sys.exit(main(sys.argv))