X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/f9904f2409d8fdc314676c624a414c27170c1551..a3342ba844b5ae85786314ace65c906c4c6ce7bc:/code/main.py diff --git a/code/main.py b/code/main.py index b443640..5e37889 100755 --- a/code/main.py +++ b/code/main.py @@ -286,7 +286,7 @@ console will suffer artifacts. machine_id=machine_id).machine d = infoDict(cherrypy.request.login, cherrypy.request.state, machine) return d - index = list + index = info @cherrypy.expose @cherrypy.tools.mako(filename="/info.mako") @@ -488,6 +488,8 @@ def getNicInfo(data_dict, machine): nic_fields_template = [('nic%s_hostname', 'NIC %s Hostname'), ('nic%s_mac', 'NIC %s MAC Addr'), ('nic%s_ip', 'NIC %s IP'), + ('nic%s_netmask', 'NIC %s Netmask'), + ('nic%s_gateway', 'NIC %s Gateway'), ] nic_fields = [] for i in range(len(machine.nics)): @@ -495,6 +497,23 @@ def getNicInfo(data_dict, machine): data_dict['nic%s_hostname' % i] = getHostname(machine.nics[i]) data_dict['nic%s_mac' % i] = machine.nics[i].mac_addr data_dict['nic%s_ip' % i] = machine.nics[i].ip + data_dict['nic%s_netmask' % i] = machine.nics[i].netmask + data_dict['nic%s_gateway' % i] = machine.nics[i].gateway + if machine.nics[i].other_ip: + nic_fields.append(('nic%s_other' % i, 'NIC %s Other Address' % i)) + other = '%s/%s via %s' % (machine.nics[i].other_ip, machine.nics[i].other_netmask, machine.nics[i].other_gateway) + other_action = machine.nics[i].other_action + if other_action == 'dnat': + other += " (NAT to primary IP)" + elif other_action == 'renumber': + other += " (cold boot or renew DHCP lease to swap)" + elif other_action == 'renumber_dhcp': + other += " (renew DHCP lease to swap)" + else: + # No message for renumber_dhcp since we don't know if + # they're using DHCP. + other += " (pending assignment)" + data_dict['nic%s_other' % i] = other if len(machine.nics) == 1: nic_fields = [(x, y.replace('NIC 0 ', '')) for x, y in nic_fields] return nic_fields @@ -549,7 +568,7 @@ def modifyDict(username, state, machine_id, fields): if hasattr(validate, 'contact'): machine.contact = validate.contact - session.save_or_update(machine) + session.add(machine) session.commit() except: session.rollback() @@ -563,10 +582,10 @@ def modifyDict(username, state, machine_id, fields): if disk.size != disksize: olddisk[disk.guest_device_name] = disksize disk.size = disksize - session.save_or_update(disk) + session.add(disk) for diskname in olddisk: controls.resizeDisk(oldname, diskname, str(olddisk[diskname])) - session.save_or_update(machine) + session.add(machine) session.commit() except: session.rollback() @@ -581,7 +600,7 @@ def modifyDict(username, state, machine_id, fields): n.hostname = validate.name if hasattr(validate, 'name'): controls.renameMachine(machine, oldname, validate.name) - session.save_or_update(machine) + session.add(machine) session.commit() except: session.rollback() @@ -594,7 +613,11 @@ def modifyDict(username, state, machine_id, fields): def infoDict(username, state, machine): """Get the variables used by info.tmpl.""" - status = controls.statusInfo(machine) + try: + status = controls.statusInfo(machine) + except CodeError, e: + # machine was shut down in between the call to listInfoDict and this + status = None has_vnc = hasVnc(status) if status is None: main_status = dict(name=machine.name,