def completed(self): """ Check whether this spoke is complete or not. Do an additional check if we're installing from CD/DVD, since a network connection should not be required in this case. """ return (not can_touch_runtime_system("require network connection") or nm.nm_activated_devices())
def _discover(self, credentials, bind): # This needs to be in its own thread, not marked with gtk_action_* because it's # called from on_start_clicked, which is in the GTK main loop. Those decorators # won't do anything special in that case. if not self.iscsi.initiatorSet: self.iscsi.initiator = credentials.initiator # interfaces created here affect nodes that iscsi.discover would return if self.iscsi.mode == "none" and not bind: self.iscsi.delete_interfaces() elif (self.iscsi.mode == "bind" or self.iscsi.mode == "none" and bind): activated = set(nm.nm_activated_devices()) created = set(self.iscsi.ifaces.values()) self.iscsi.create_interfaces(activated - created) try: self._discoveredNodes = self.iscsi.discover(credentials.targetIP, username=credentials.username, password=credentials.password, r_username=credentials.rUsername, r_password=credentials.rPassword) except IOError as e: self._discoveryError = str(e) return if len(self._discoveredNodes) == 0: self._discoveryError = "No nodes discovered."
def _update_network_data(self): hostname = self.data.network.hostname self.data.network.network = [] for i, name in enumerate(nm.nm_devices()): if network.is_ibft_configured_device(name): continue nd = network.ksdata_from_ifcfg(name) if not nd: continue if name in nm.nm_activated_devices(): nd.activate = True else: # First network command defaults to --activate so we must # use --no-activate explicitly to prevent the default if i == 0: nd.activate = False self.data.network.network.append(nd) (valid, error) = network.sanityCheckHostname(self.hostname_dialog.value) if valid: hostname = self.hostname_dialog.value else: self.errors.append(_("Host name is not valid: %s") % error) self.hostname_dialog.value = hostname network.update_hostname_data(self.data, hostname)
def getHostname(): hn = None # First address (we prefer ipv4) of last device (as it used to be) wins for dev in nm.nm_activated_devices(): addrs = (nm.nm_device_ip_addresses(dev, version=4) + nm.nm_device_ip_addresses(dev, version=6)) for ipaddr in addrs: try: hinfo = socket.gethostbyaddr(ipaddr) except socket.herror as e: log.debug("Exception caught trying to get host name of %s: %s", ipaddr, e) else: if len(hinfo) == 3: hn = hinfo[0] break if not hn or hn in ('(none)', 'localhost', 'localhost.localdomain'): hn = socket.gethostname() if not hn or hn in ('(none)', 'localhost', 'localhost.localdomain'): hn = DEFAULT_HOSTNAME return hn
def get_device_name(devspec): devices = nm.nm_devices() devname = None if not devspec: if "ksdevice" in flags.cmdline: msg = "ksdevice boot parameter" devname = ks_spec_to_device_name(flags.cmdline["ksdevice"]) elif nm.nm_is_connected(): # device activated in stage 1 by network kickstart command msg = "first active device" try: devname = nm.nm_activated_devices()[0] except IndexError: log.debug("get_device_name: NM is connected but no activated devices found") else: msg = "first device found" devname = min(devices) log.info("unspecified network --device in kickstart, using %s (%s)", devname, msg) else: if iutil.lowerASCII(devspec) == "ibft": devname = "" if iutil.lowerASCII(devspec) == "link": for dev in sorted(devices): try: link_up = nm.nm_device_carrier(dev) except ValueError as e: log.debug("get_device_name: %s", e) continue if link_up: devname = dev break else: log.error("Kickstart: No network device with link found") elif iutil.lowerASCII(devspec) == "bootif": if "BOOTIF" in flags.cmdline: # MAC address like 01-aa-bb-cc-dd-ee-ff devname = flags.cmdline["BOOTIF"][3:] devname = devname.replace("-", ":") else: log.error("Using --device=bootif without BOOTIF= boot option supplied") else: devname = devspec if devname and devname not in devices: for d in devices: try: hwaddr = nm.nm_device_hwaddress(d) except ValueError as e: log.debug("get_device_name: %s", e) continue if hwaddr.lower() == devname.lower(): devname = d break else: return "" return devname
def getIPs(): ips = [] for devname in nm.nm_activated_devices(): try: ips += nm.nm_device_ip_addresses(devname, version=4) + nm.nm_device_ip_addresses(devname, version=6) except (dbus.DBusException, ValueError) as e: log.warning("Got an exception trying to get the ip addr " "of %s: %s", devname, e) return ips
def completed(self): """ Check whether this spoke is complete or not. Do an additional check if we're installing from CD/DVD, since a network connection should not be required in this case. """ localinst = bool(self.data.method.method in ["cdrom", "harddrive"]) return (not can_touch_runtime_system("require network connection") or nm.nm_activated_devices() or localinst)
def wait_for_network_devices(devices, timeout=constants.NETWORK_CONNECTION_TIMEOUT): devices = set(devices) i = 0 log.debug("waiting for connection of devices %s for iscsi", devices) while i < timeout: if not devices - set(nm.nm_activated_devices()): return True i += 1 time.sleep(1) return False
def getIPs(): ips = [] for devname in nm.nm_activated_devices(): try: ips += (nm.nm_device_ip_addresses(devname, version=4) + nm.nm_device_ip_addresses(devname, version=6)) except Exception as e: log.warning("Got an exception trying to get the ip addr " "of %s: %s" % (devname, e)) return ips
def _summary_text(self): """Devices cofiguration shown to user.""" msg = "" activated_devs = nm.nm_activated_devices() for name in self.supported_devices: if name in activated_devs: msg += self._activated_device_msg(name) else: msg += _("Wired (%(interface_name)s) disconnected\n") \ % {"interface_name": name} return msg
def getIPs(): ipv4_addresses = [] ipv6_addresses = [] for devname in nm.nm_activated_devices(): try: ipv4_addresses += nm.nm_device_ip_addresses(devname, version=4) ipv6_addresses += nm.nm_device_ip_addresses(devname, version=6) except (dbus.DBusException, ValueError) as e: log.warning("Got an exception trying to get the ip addr " "of %s: %s", devname, e) # prefer IPv4 addresses to IPv6 addresses return ipv4_addresses + ipv6_addresses
def _update_network_data(self): hostname = self.data.network.hostname self.data.network.network = [] for name in nm.nm_devices(): nd = network.ksdata_from_ifcfg(name) if not nd: continue if name in nm.nm_activated_devices(): nd.activate = True self.data.network.network.append(nd) (valid, error) = network.sanityCheckHostname(self.hostname_dialog.value) if valid: hostname = self.hostname_dialog.value else: self.errors.append(_("Host name is not valid: %s") % error) self.hostname_dialog.value = hostname network.update_hostname_data(self.data, hostname)
def status_message(): """ A short string describing which devices are connected. """ msg = _("Unknown") state = nm.nm_state() if state == NetworkManager.State.CONNECTING: msg = _("Connecting...") elif state == NetworkManager.State.DISCONNECTING: msg = _("Disconnecting...") else: active_devs = nm.nm_activated_devices() if active_devs: slaves = {} ssids = {} # first find slaves and wireless aps for devname in active_devs: slaves[devname] = nm.nm_device_slaves(devname) or [] if nm.nm_device_type_is_wifi(devname): ssids[devname] = nm.nm_device_active_ssid(devname) or "" all_slaves = set(itertools.chain.from_iterable(slaves.values())) nonslaves = [dev for dev in active_devs if dev not in all_slaves] if len(nonslaves) == 1: devname = nonslaves[0] if nm.nm_device_type_is_ethernet(devname): msg = _("Wired (%(interface_name)s) connected") % {"interface_name": devname} elif nm.nm_device_type_is_wifi(devname): msg = _("Wireless connected to %(access_point)s") % {"access_point": ssids[devname]} elif nm.nm_device_type_is_bond(devname): msg = _("Bond %(interface_name)s (%(list_of_slaves)s) connected") % { "interface_name": devname, "list_of_slaves": ",".join(slaves[devname]), } elif nm.nm_device_type_is_team(devname): msg = _("Team%(interface_name)s (%(list_of_slaves)s) connected") % { "interface_name": devname, "list_of_slaves": ",".join(slaves[devname]), } elif nm.nm_device_type_is_vlan(devname): parent = nm.nm_device_setting_value(devname, "vlan", "parent") vlanid = nm.nm_device_setting_value(devname, "vlan", "id") msg = _("Vlan %(interface_name)s (%(parent_device)s, ID %(vlanid)s) connected") % { "interface_name": devname, "parent_device": parent, "vlanid": vlanid, } elif len(nonslaves) > 1: devlist = [] for devname in nonslaves: if nm.nm_device_type_is_ethernet(devname): devlist.append("%s" % devname) elif nm.nm_device_type_is_wifi(devname): devlist.append("%s" % ssids[devname]) elif nm.nm_device_type_is_bond(devname): devlist.append("%s (%s)" % (devname, ",".join(slaves[devname]))) elif nm.nm_device_type_is_team(devname): devlist.append("%s (%s)" % (devname, ",".join(slaves[devname]))) elif nm.nm_device_type_is_vlan(devname): devlist.append("%s" % devname) msg = _("Connected: %(list_of_interface_names)s") % {"list_of_interface_names": ", ".join(devlist)} else: msg = _("Not connected") if not nm.nm_devices(): msg = _("No network devices available") return msg
def completed(self): return (not can_touch_runtime_system("require network connection") or nm.nm_activated_devices())
def status_message(): """ A short string describing which devices are connected. """ msg = _("Unknown") state = nm.nm_state() if state == NetworkManager.State.CONNECTING: msg = _("Connecting...") elif state == NetworkManager.State.DISCONNECTING: msg = _("Disconnecting...") else: active_devs = nm.nm_activated_devices() if active_devs: slaves = {} ssids = {} # first find slaves and wireless aps for devname in active_devs: slaves[devname] = nm.nm_device_slaves(devname) or [] if nm.nm_device_type_is_wifi(devname): ssids[devname] = nm.nm_device_active_ssid(devname) or "" all_slaves = set(itertools.chain.from_iterable(slaves.values())) nonslaves = [dev for dev in active_devs if dev not in all_slaves] if len(nonslaves) == 1: if nm.nm_device_type_is_ethernet(devname): msg = _("Wired (%(interface_name)s) connected") \ % {"interface_name": devname} elif nm.nm_device_type_is_wifi(devname): msg = _("Wireless connected to %(access_point)s") \ % {"access_point" : ssids[devname]} elif nm.nm_device_type_is_bond(devname): msg = _("Bond %(interface_name)s (%(list_of_slaves)s) connected") \ % {"interface_name": devname, \ "list_of_slaves": ",".join(slaves[devname])} elif nm.nm_device_type_is_team(devname): msg = _("Team%(interface_name)s (%(list_of_slaves)s) connected") \ % {"interface_name": devname, \ "list_of_slaves": ",".join(slaves[devname])} elif nm.nm_device_type_is_vlan(devname): parent = nm.nm_device_setting_value( devname, "vlan", "parent") vlanid = nm.nm_device_setting_value(devname, "vlan", "id") msg = _("Vlan %(interface_name)s (%(parent_device)s, ID %(vlanid)s) connected") \ % {"interface_name": devname, "parent_device": parent, "vlanid": vlanid} elif len(nonslaves) > 1: devlist = [] for devname in nonslaves: if nm.nm_device_type_is_ethernet(devname): devlist.append("%s" % devname) elif nm.nm_device_type_is_wifi(devname): devlist.append("%s" % ssids[devname]) elif nm.nm_device_type_is_bond(devname): devlist.append("%s (%s)" % (devname, ",".join(slaves[devname]))) elif nm.nm_device_type_is_team(devname): devlist.append("%s (%s)" % (devname, ",".join(slaves[devname]))) elif nm.nm_device_type_is_vlan(devname): devlist.append("%s" % devname) msg = _("Connected: %(list_of_interface_names)s") \ % {"list_of_interface_names": ", ".join(devlist)} else: msg = _("Not connected") if not nm.nm_devices(): msg = _("No network devices available") return msg
def completed(self): """ Check whether this spoke is complete or not.""" # If we can't configure network, don't require it return (not conf.system.can_configure_network or nm.nm_activated_devices())