-#!/usr/bin/env python
+#!/usr/bin/python3
"""
-invirt-quota allows an administrator to set memory, disk, and VM quotas
+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.
"""
-import sys
-import optparse
+import argparse
from invirt import database
-def main(argv):
- parser = optparse.OptionParser(usage = '%prog <owner> [options]',
- description = __doc__.strip())
- parser.add_option('-m', '--ram-total',
- type = 'int',
- dest = 'ramtotal',
- help = 'set total concurrent RAM quota')
- parser.add_option('-n', '--ram-single',
- type = 'int',
- dest = 'ramsingle',
- 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()
- if len(args) != 1:
- parser.print_help(sys.stderr)
- return 1
- owner_id = args[0]
+def main():
+ parser = argparse.ArgumentParser(description='Set memory, disk, and VM quotas')
+
+ parser.add_argument('-m', '--ram-total', type=int, dest='ramtotal',
+ help='Set total concurrent RAM quota')
+ parser.add_argument('-n', '--ram-single', type=int, dest='ramsingle',
+ help='Set single VM RAM quota')
+ parser.add_argument('-d', '--disk-total', type=int, dest='disktotal',
+ help='Set total disk quota')
+ parser.add_argument('-e', '--disk-single', type=int, dest='disksingle',
+ help='Set single disk quota')
+ parser.add_argument('-v', '--vms-total', type=int, dest='vmstotal',
+ help='Set total VM quota')
+ parser.add_argument('-w', '--vms-active', type=int, dest='vmsactive',
+ help='Set active VM quota')
+ parser.add_argument('owner')
+
+ args = parser.parse_args()
+
database.connect()
database.session.begin()
-
- owner = database.session.query(database.Owner).filter_by(owner_id=owner_id).first()
+
+ owner = database.session.query(database.Owner).filter_by(owner_id=args.owner).first()
if owner is None:
- owner = database.Owner(owner_id=owner_id)
+ owner = database.Owner(owner_id=args.owner)
for resource, scope in [('ram', 'total'), ('ram', 'single'),
('disk', 'total'), ('disk', 'single'),
('vms', 'total'), ('vms', 'active')]:
- val = getattr(opts, resource+scope)
+ val = getattr(args, resource + scope)
if val is not None:
- setattr(owner, resource+'_quota_'+scope, val if val >= 0 else None)
+ setattr(owner, resource + '_quota_' + scope, val if val >= 0 else None)
database.session.add(owner)
database.session.commit()
- print owner
- return 0
+
+ print(owner)
+
if __name__ == '__main__':
- sys.exit(main(sys.argv))
+ main()