X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/f8c61d2924ba0ede2754ca798b45c43cf75f292a..6d171bbcd3eb2d5d60fc6c4bc9ef12608421d7c1:/code/validation.py diff --git a/code/validation.py b/code/validation.py index 817c2cf..f6e4a59 100644 --- a/code/validation.py +++ b/code/validation.py @@ -5,6 +5,7 @@ import getafsgroups import re import string from invirt.database import Machine, NIC, Type, Disk, CDROM, Autoinstall +from invirt.config import structs as config from webcommon import InvalidInput MAX_MEMORY_TOTAL = 512 @@ -125,7 +126,8 @@ def cantAddVm(owner, g): def haveAccess(user, state, machine): """Return whether a user has administrative access to a machine""" - return state.overlord or user in cache_acls.accessList(machine) + return (user in cache_acls.accessList(machine) + or (machine.adminable and state.isadmin)) def owns(user, machine): """Return whether a user owns a machine""" @@ -157,7 +159,7 @@ def validMemory(owner, g, memory, machine=None, on=True): raise InvalidInput('memory', memory, "Minimum %s MiB" % MIN_MEMORY_SINGLE) max_val = maxMemory(owner, g, machine, on) - if not g.overlord and memory > max_val: + if not g.isadmin and memory > max_val: raise InvalidInput('memory', memory, 'Maximum %s MiB for %s' % (max_val, owner)) return memory @@ -166,7 +168,7 @@ def validDisk(owner, g, disk, machine=None): """Parse and validate limits for disk for a given owner and machine.""" try: disk = float(disk) - if not g.overlord and disk > maxDisk(owner, machine): + if not g.isadmin and disk > maxDisk(owner, machine): raise InvalidInput('disk', disk, "Maximum %s G" % maxDisk(owner, machine)) disk = int(disk * 1024) @@ -222,7 +224,7 @@ def testAdmin(user, admin, machine): return admin admin = 'system:' + admin try: - if user in getafsgroups.getAfsGroupMembers(admin, 'athena.mit.edu'): + if user in getafsgroups.getAfsGroupMembers(admin, config.authz[0].cell): return admin except getafsgroups.AfsProcessError, e: errmsg = str(e)