Use joins, new xmlist.py
[invirt/packages/invirt-web.git] / code / controls.py
index 3cf6b1d..68e911c 100644 (file)
@@ -11,6 +11,7 @@ import sys
 import time
 import re
 import cache_acls
+import cPickle
 
 # ... and stolen from xend/uuid.py
 def randomUUID():
@@ -113,7 +114,7 @@ def createVm(owner, contact, name, memory, disk_size, machine_type, cdrom, clone
         machine.boot_off_cd = True
         machine.type_id = machine_type.type_id
         ctx.current.save(machine)
-        disk = Disk(machine_id=machine.machine_id, 
+        disk = Disk(machine_id=machine.machine_id,
                     guest_device_name='hda', size=disk_size)
         open_nics = NIC.select_by(machine_id=None)
         if not open_nics: #No IPs left!
@@ -122,7 +123,7 @@ def createVm(owner, contact, name, memory, disk_size, machine_type, cdrom, clone
         nic = open_nics[0]
         nic.machine_id = machine.machine_id
         nic.hostname = name
-        ctx.current.save(nic)    
+        ctx.current.save(nic)
         ctx.current.save(disk)
         cache_acls.refreshMachine(machine)
         transaction.commit()
@@ -136,20 +137,13 @@ def createVm(owner, contact, name, memory, disk_size, machine_type, cdrom, clone
     bootMachine(machine, cdrom)
     return machine
 
-def getUptimes(machines=None):
-    """Return a dictionary mapping machine names to uptime strings"""
-    value_string = remctl('web', 'listvms')
-    lines = value_string.splitlines()
-    d = {}
-    for line in lines:
-        lst = line.split()
-        name, id = lst[:2]
-        uptime = ' '.join(lst[2:])
-        d[name] = uptime
-    ans = {}
-    for m in machines:
-        ans[m] = d.get(m.name)
-    return ans
+def getList(machines):
+    """Return a dictionary mapping machine  to dicts."""
+    value_string = remctl('web', 'listvms', '--pickle')
+    value_dict = cPickle.loads(value_string)
+
+    d = dict((m, value_dict[m.name]) for m in machines if m.name in value_dict)
+    return d
 
 def parseStatus(s):
     """Parse a status string into nested tuples of strings.