#!/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 None """ from invirt.database import * from sys import argv, exit, stderr, stdout from optparse import OptionParser class invirt_exception(Exception): pass def main(argv): try: 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() print opts if len(args) != 1: raise invirt_exception(__doc__.strip()) owner = args[0] connect() session.begin() x = Owner.query().filter_by(owner_id=owner).first() edited = False if opts.memtotal != None: total = int(opts.memtotal) if total == -1: x.ram_quota_total = None else: x.ram_quota_total = total edited = True if opts.memsingle != None: single = int(opts.memsingle) if single == -1: x.ram_quota_single = None else: x.ram_quota_single = single edited = True if opts.disktotal != None: total = int(opts.disktotal) if total == -1: x.disk_quota_total = None else: x.disk_quota_total = total edited = True if opts.disksingle != None: single = int(opts.disksingle) if single == -1: x.disk_quota_single = None else: x.disk_quota_single = single edited = True if opts.vmstotal != None: total = int(opts.vmstotal) if total == -1: x.vms_quota_total = None else: x.vms_quota_total = total edited = True if opts.vmsactive != None: active = int(opts.vmsactive) if active == -1: x.vms_quota_active = None else: x.vms_quota_active = active edited = True if edited: session.commit() print str(x) except invirt_exception, ex: print >> stderr, ex return 1 if __name__ == '__main__': exit(main(argv))