def populate_interface_state(self, name): interface = self.conn.get_interface(name) children = interface.get_slaves() itype = interface.get_type() mac = interface.get_mac() active = interface.is_active() startmode = interface.get_startmode() ipv4 = interface.get_ipv4() ipv6 = interface.get_ipv6() self.widget("interface-details").set_sensitive(True) self.widget("interface-name").set_markup( "<b>%s %s:</b>" % (interface.get_pretty_type(), interface.get_name())) self.widget("interface-mac").set_text(mac or _("Unknown")) self.widget("interface-state-icon").set_from_icon_name( ((active and self.ICON_RUNNING) or self.ICON_SHUTOFF), Gtk.IconSize.MENU) self.widget("interface-state").set_text( (active and _("Active")) or _("Inactive")) # Set start mode start_list = self.widget("interface-startmode") start_model = start_list.get_model() start_label = self.widget("interface-startmode-label") start_list.hide() start_label.show() start_label.set_text(startmode) idx = 0 for row in start_model: if row[0] == startmode: start_list.set_active(idx) start_list.show() start_label.hide() break idx += 1 # This can fail if other interfaces are busted, so ignore errors used_by = None try: used_by = uihelpers.iface_in_use_by(self.conn, name) except Exception, e: logging.debug("Error looking up iface usage: %s", e)
def populate_interface_list(self, itype): iface_list = self.widget("interface-list") model = iface_list.get_model() model.clear() ifilter = [Interface.Interface.INTERFACE_TYPE_ETHERNET] msg = None if itype == Interface.Interface.INTERFACE_TYPE_BRIDGE: ifilter.append(Interface.Interface.INTERFACE_TYPE_VLAN) ifilter.append(Interface.Interface.INTERFACE_TYPE_BOND) msg = _("Choose interface(s) to bridge:") elif itype == Interface.Interface.INTERFACE_TYPE_VLAN: msg = _("Choose parent interface:") elif itype == Interface.Interface.INTERFACE_TYPE_BOND: msg = _("Choose interfaces to bond:") elif itype == Interface.Interface.INTERFACE_TYPE_ETHERNET: msg = _("Choose an unconfigured interface:") self.widget("interface-list-text").set_text(msg) iface_list = [] row_dict = {} for phys in self.conn.get_nodedevs("net"): row_dict[phys.interface] = [phys.interface, False, False, phys.interface, "ethernet", False, True, None, phys.address] for name in self.conn.list_interface_names(): iface = self.conn.get_interface(name) key = iface.get_backend() iface_type = iface.get_type() active = iface.is_active() name = iface.get_name() if iface_type not in ifilter: continue if itype == Interface.Interface.INTERFACE_TYPE_ETHERNET: if name in row_dict: del(row_dict[name]) # We only want 'unconfigured' interfaces here continue if name in row_dict: # Interface was listed via nodedev APIs row = row_dict[name] row[INTERFACE_ROW_KEY] = key row[INTERFACE_ROW_IS_DEFINED] = True row[INTERFACE_ROW_IS_ACTIVE] = True else: # Brand new row row = [key, False, False, iface.get_name(), iface.get_type(), True, active, None, iface.get_mac()] row_dict[name] = row for row in row_dict.values(): name = row[INTERFACE_ROW_NAME] row[INTERFACE_ROW_IN_USE_BY] = uihelpers.iface_in_use_by(self.conn, name) for row in row_dict.values(): model.append(row)