Update cache for machines on their modification.
[invirt/packages/invirt-web.git] / code / main.py
index f1ff5ac..de28a63 100755 (executable)
@@ -37,8 +37,9 @@ sys.path.append('/home/ecprice/.local/lib/python2.5/site-packages')
 import templates
 from Cheetah.Template import Template
 import sipb_xen_database
-from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess, Type
+from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess, Type, Autoinstall
 import validation
+import cache_acls
 from webcommon import InvalidInput, CodeError, g
 import controls
 
@@ -98,6 +99,7 @@ class Defaults:
     memory = 256
     disk = 4.0
     cdrom = ''
+    autoinstall = ''
     name = ''
     def __init__(self, max_memory=None, max_disk=None, **kws):
         self.type = Type.get('linux-hvm')
@@ -221,8 +223,7 @@ def getListDict(user):
              defaults=defaults,
              machines=machines,
              has_vnc=has_vnc,
-             uptimes=g.uptimes,
-             cdroms=CDROM.select())
+             uptimes=g.uptimes)
     return d
 
 def listVms(user, fields):
@@ -394,16 +395,21 @@ def modifyDict(user, fields):
                 disk.size = disksize
                 ctx.current.save(disk)
 
-        if owner is not None:
+        update_acl = False
+        if owner is not None and owner != machine.owner:
             machine.owner = owner
+            update_acl = True
         if name is not None:
             machine.name = name
-        if admin is not None:
+        if admin is not None and admin != machine.administrator:
             machine.administrator = admin
+            update_acl = True
         if contact is not None:
             machine.contact = contact
 
         ctx.current.save(machine)
+        if update_acl:
+            cache_acls.refreshMachine(machine)
         transaction.commit()
     except:
         transaction.rollback()
@@ -571,7 +577,6 @@ def infoDict(user, machine):
     defaults.disk = "%0.2f" % (machine.disks[0].size/1024.)
     checkpoint.checkpoint('Got defaults')
     d = dict(user=user,
-             cdroms=CDROM.select(),
              on=status is not None,
              machine=machine,
              defaults=defaults,