X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-base.git/blobdiff_plain/88c0269e83f71b56805408b58dfd191fe71c2329..bc9a52eeb172e8e416b3d8c576a722ca485a6652:/scripts/invirt-setquotas diff --git a/scripts/invirt-setquotas b/scripts/invirt-setquotas new file mode 100755 index 0000000..af33eec --- /dev/null +++ b/scripts/invirt-setquotas @@ -0,0 +1,116 @@ +#!/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))