def list_all(req): # datao = xmclib.list_all() conn = xmclib._get_db_conn() cur = conn.cursor() datao = {} cur.execute("SELECT name, up, mem FROM pmmachines WHERE live = 1 ORDER BY name") rows = cur.fetchall() for row in rows: machine_name = row[0] datao[machine_name] = {'up': row[1], 'mem': int(row[2])} datao[machine_name]['vms'] = [] datao[machine_name]['mem_free'] = (int(row[2]) - 192 - 18) * 1024 * 1024 cur.execute("SELECT vmmachines.name, vmmachines.mem, pmmachines.name, vmmachines.last_uuid FROM vmmachines, pmmachines WHERE vmmachines.pmmachine_id = pmmachines.id") rows = cur.fetchall() for row in rows: machine_name = row[2] datao[machine_name]['vms'].append({'name': row[0], 'uuid': row[3], 'mem_static_max': int(row[1]) * 1024 * 1024}) datao[machine_name]['mem_free'] = datao[machine_name]['mem_free'] - (int(row[1]) * 1024 * 1024) _cleanup() return datao;
import xmclib #print datao dbconn = xmclib._get_db_conn() cur = dbconn.cursor() # Clear the current locations of EVERYTHING! cur.execute("UPDATE vmmachines SET pmmachine_id=NULL, last_uuid=NULL, power_state=NULL") cur.execute("UPDATE pmmachines SET up = 1"); data = xmclib.list_all() for machine in data: if (data[machine]['responding'] == 0): print 'machine ' + machine + 'appears down' cur.execute("UPDATE pmmachines SET up = 0 WHERE name = '" + machine + "'"); vms = data[machine]['vms'] for vm in vms: # print vm print 'adding ' + vm['name'] + ' to ' + machine + '\n' cur.execute("UPDATE vmmachines SET pmmachine_id=(SELECT id FROM pmmachines WHERE name='" + machine + "' LIMIT 1), last_uuid='" + vm['uuid'] + "', power_state='" + vm['power_state'] + "' WHERE name='" + vm['name'] + "'") # print vms cur.execute("UPDATE meta SET last_refresh = now()") xmclib.cleanup()