Implement administrator mode
[invirt/packages/invirt-web.git] / code / validation.py
index 0ab0988..875115c 100644 (file)
@@ -114,7 +114,7 @@ def maxDisk(owner, machine=None):
 def cantAddVm(owner, g):
     machines = getMachinesByOwner(owner)
     active_machines = [m for m in machines if m.name in g.xmlist_raw]
-    (quota_total, quota_active) = Owner.getVMQuotas(machine.owner if machine else owner)
+    (quota_total, quota_active) = Owner.getVMQuotas(owner)
     if machines.count() >= quota_total:
         return 'You have too many VMs to create a new one.'
     if len(active_machines) >= quota_active:
@@ -222,7 +222,7 @@ def testAdmin(user, admin, machine):
             return admin
         admin = 'system:' + admin
     try:
-        if user in getafsgroups.getAfsGroupMembers(admin, config.authz[0].cell):
+        if user in getafsgroups.getAfsGroupMembers(admin, config.authz.afs.cells[0].cell):
             return admin
     except getafsgroups.AfsProcessError, e:
         errmsg = str(e)
@@ -241,6 +241,8 @@ def testOwner(user, owner, machine=None):
         return machine.owner
     if owner is None:
         raise InvalidInput('owner', owner, "Owner must be specified")
+    if '@' in owner:
+        raise InvalidInput('owner', owner, "No cross-realm Hesiod lockers allowed")
     try:
         if user not in cache_acls.expandLocker(owner):
             raise InvalidInput('owner', owner, 'You do not have access to the '