Index: trunk/packages/invirt-database/debian/changelog
===================================================================
--- trunk/packages/invirt-database/debian/changelog	(revision 2193)
+++ trunk/packages/invirt-database/debian/changelog	(revision 2194)
@@ -5,8 +5,13 @@
 
   [Greg Price]
+  invirt.database.record, .owner:
   * use self.c rather than self.__dict__ for SQLAlchemy fields
   * make Record._ignore, Owner.get* classmethods
   * fold FormattableRecord, NullableRecord into Record
   * shorten types in lists to __name__
+  
+  invirt-quota:
+  * refactor code that sets values
+  * print full help on no arguments
 
  -- Greg Price <price@mit.edu>  Thu, 26 Feb 2009 22:51:43 -0500
Index: trunk/packages/invirt-database/scripts/invirt-quota
===================================================================
--- trunk/packages/invirt-database/scripts/invirt-quota	(revision 2193)
+++ trunk/packages/invirt-database/scripts/invirt-quota	(revision 2194)
@@ -5,8 +5,4 @@
 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
 """
 
@@ -16,13 +12,13 @@
 
 def main(argv):
-    parser = OptionParser(usage = '%prog owner [options]',
-            description = __doc__.strip().split('\n\n')[0])
-    parser.add_option('-m', '--mem-total',
+    parser = 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',
@@ -45,5 +41,5 @@
 
     if len(args) != 1:
-        print >> stderr, __doc__.strip()
+        parser.print_help(stderr)
         return 1
     owner = args[0]
@@ -52,48 +48,14 @@
     
     x = Owner.query().filter_by(owner_id=owner).first()
-    if x == None:
+    if x is 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
-
-    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')]:
+        opt = getattr(opts, resource+scope)
+        if opt is not None:
+            val = int(opt)
+            setattr(x, resource+'_quota_'+scope, val if val >= 0 else None)
 
     session.commit()
