#!/usr/bin/env python

"""
invirt-setquota allows an administrator to set the RAM 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 -t 512 -s 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('-t', '--total',
                type = 'int',
                dest = 'total',
                help = 'set the total concurrent RAM quota')
        parser.add_option('-s', '--single',
                type = 'int',
                dest = 'single',
                help = 'set the single VM RAM quota')
        opts, args = parser.parse_args()

        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.total != None:
            total = int(opts.total)
            if total == -1:
                x.ram_quota_total = None
            else:
                x.ram_quota_total = total
            edited = True

        if opts.single != None:
            single = int(opts.single)
            if single == -1:
                x.ram_quota_single = None
            else:
                x.ram_quota_single = single
            edited = True

        if edited:
            session.commit()
        print str(x)

    except invirt_exception, ex:
        print >> stderr, ex
        return 1

if __name__ == '__main__':
    exit(main(argv))
