示例#1
0
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;
示例#2
0
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()