Add button to trigger renumbering
[invirt/packages/invirt-web.git] / code / main.py
index 86da50e..0f77cee 100755 (executable)
@@ -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)"
+            elif other_action == 'remove':
+                other += " (will be removed at next cold boot or DHCP lease renewal)"
+            else:
+                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
@@ -649,6 +668,11 @@ def infoDict(username, state, machine):
     display_fields = (display_fields[:disk_point] + disk_fields +
                       display_fields[disk_point+1:])
 
+    renumber = False
+    for n in machine.nics:
+        if n.other_action in ('renumber', 'renumber_dhcp'):
+            renumber = True
+
     main_status['memory'] += ' MiB'
     for field, disp in display_fields:
         if field in ('uptime', 'cputime') and locals()[field] is not None:
@@ -671,6 +695,7 @@ def infoDict(username, state, machine):
     defaults.disk = "%0.2f" % (machine.disks[0].size/1024.)
     d = dict(user=username,
              on=status is not None,
+             renumber=renumber,
              machine=machine,
              defaults=defaults,
              has_vnc=has_vnc,