Add git URL to list of config to generalize
[invirt/packages/invirt-web.git] / code / validation.py
old mode 100644 (file)
new mode 100755 (executable)
index 0ab0988..5018ca3
@@ -5,6 +5,7 @@ import getafsgroups
 import re
 import string
 import dns.resolver
 import re
 import string
 import dns.resolver
+from invirt import authz
 from invirt.database import Machine, NIC, Type, Disk, CDROM, Autoinstall, Owner
 from invirt.config import structs as config
 from invirt.common import InvalidInput, CodeError
 from invirt.database import Machine, NIC, Type, Disk, CDROM, Autoinstall, Owner
 from invirt.config import structs as config
 from invirt.common import InvalidInput, CodeError
@@ -24,7 +25,7 @@ class Validate:
         if strict:
             if name is None:
                 raise InvalidInput('name', name, "You must provide a machine name.")
         if strict:
             if name is None:
                 raise InvalidInput('name', name, "You must provide a machine name.")
-            if description is None:
+            if description is None or description.strip() == '':
                 raise InvalidInput('description', description, "You must provide a description.")
             if memory is None:
                 raise InvalidInput('memory', memory, "You must provide a memory size.")
                 raise InvalidInput('description', description, "You must provide a description.")
             if memory is None:
                 raise InvalidInput('memory', memory, "You must provide a memory size.")
@@ -114,7 +115,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]
 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:
     if machines.count() >= quota_total:
         return 'You have too many VMs to create a new one.'
     if len(active_machines) >= quota_active:
@@ -129,7 +130,7 @@ def haveAccess(user, state, machine):
 
 def owns(user, machine):
     """Return whether a user owns a machine"""
 
 def owns(user, machine):
     """Return whether a user owns a machine"""
-    return user in expandLocker(machine.owner)
+    return user in authz.expandOwner(machine.owner)
 
 def validMachineName(name):
     """Check that name is valid for a machine name"""
 
 def validMachineName(name):
     """Check that name is valid for a machine name"""
@@ -222,7 +223,7 @@ def testAdmin(user, admin, machine):
             return admin
         admin = 'system:' + admin
     try:
             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)
             return admin
     except getafsgroups.AfsProcessError, e:
         errmsg = str(e)
@@ -241,8 +242,10 @@ def testOwner(user, owner, machine=None):
         return machine.owner
     if owner is None:
         raise InvalidInput('owner', owner, "Owner must be specified")
         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:
     try:
-        if user not in cache_acls.expandLocker(owner):
+        if user not in authz.expandOwner(owner):
             raise InvalidInput('owner', owner, 'You do not have access to the '
                                + owner + ' locker')
     except getafsgroups.AfsProcessError, e:
             raise InvalidInput('owner', owner, 'You do not have access to the '
                                + owner + ' locker')
     except getafsgroups.AfsProcessError, e:
@@ -256,9 +259,6 @@ def testContact(user, contact, machine=None):
         raise InvalidInput('contact', contact, "Not a valid email.")
     return contact
 
         raise InvalidInput('contact', contact, "Not a valid email.")
     return contact
 
-def testDisk(user, disksize, machine=None):
-    return disksize
-
 def testName(user, name, machine=None):
     if name is None:
         return None
 def testName(user, name, machine=None):
     if name is None:
         return None