source: trunk/packages/invirt-base/scripts/invirt-setquotas @ 2134

Last change on this file since 2134 was 2134, checked in by iannucci, 15 years ago

Added all the other quotas for great win.

  • Property svn:executable set to *
File size: 3.4 KB
Line 
1#!/usr/bin/env python
2
3"""
4invirt-setquota allows an administrator to set memory, disk, and VM quotas
5for an owner.  Invoking with only an owner name returns the current quotas for
6that owner.  Setting a parameter to -1 restores the default.
7
8Examples:
9
10    invirt-setquota joeuser -mt 512 -ms None
11"""
12
13from invirt.database import *
14from sys import argv, exit, stderr, stdout
15from optparse import OptionParser
16
17class invirt_exception(Exception): pass
18
19def main(argv):
20    try:
21        parser = OptionParser(usage = '%prog owner [options]',
22                description = __doc__.strip().split('\n\n')[0])
23        parser.add_option('-m', '--mem-total',
24                type = 'int',
25                dest = 'memtotal',
26                help = 'set total concurrent RAM quota')
27        parser.add_option('-n', '--mem-single',
28                type = 'int',
29                dest = 'memsingle',
30                help = 'set single VM RAM quota')
31        parser.add_option('-d', '--disk-total',
32                type = 'int',
33                dest = 'disktotal',
34                help = 'set total disk quota')
35        parser.add_option('-e', '--disk-single',
36                type = 'int',
37                dest = 'disksingle',
38                help = 'set single VM disk quota')
39        parser.add_option('-v', '--vms-total',
40                type = 'int',
41                dest = 'vmstotal',
42                help = 'set total VM quota')
43        parser.add_option('-w', '--vms-active',
44                type = 'int',
45                dest = 'vmsactive',
46                help = 'set active VM quota')
47        opts, args = parser.parse_args()
48
49        print opts
50        if len(args) != 1:
51            raise invirt_exception(__doc__.strip())
52        owner = args[0]
53        connect()
54        session.begin()
55       
56        x = Owner.query().filter_by(owner_id=owner).first()
57
58        edited = False
59        if opts.memtotal != None:
60            total = int(opts.memtotal)
61            if total == -1:
62                x.ram_quota_total = None
63            else:
64                x.ram_quota_total = total
65            edited = True
66
67        if opts.memsingle != None:
68            single = int(opts.memsingle)
69            if single == -1:
70                x.ram_quota_single = None
71            else:
72                x.ram_quota_single = single
73            edited = True
74
75        if opts.disktotal != None:
76            total = int(opts.disktotal)
77            if total == -1:
78                x.disk_quota_total = None
79            else:
80                x.disk_quota_total = total
81            edited = True
82
83        if opts.disksingle != None:
84            single = int(opts.disksingle)
85            if single == -1:
86                x.disk_quota_single = None
87            else:
88                x.disk_quota_single = single
89            edited = True
90
91        if opts.vmstotal != None:
92            total = int(opts.vmstotal)
93            if total == -1:
94                x.vms_quota_total = None
95            else:
96                x.vms_quota_total = total
97            edited = True
98
99        if opts.vmsactive != None:
100            active = int(opts.vmsactive)
101            if active == -1:
102                x.vms_quota_active = None
103            else:
104                x.vms_quota_active = active
105            edited = True
106
107        if edited:
108            session.commit()
109        print str(x)
110
111    except invirt_exception, ex:
112        print >> stderr, ex
113        return 1
114
115if __name__ == '__main__':
116    exit(main(argv))
Note: See TracBrowser for help on using the repository browser.