def waitForDevice(self, device, timeout=CONNECTION_TIMEOUT): props = isys.getDeviceProperties(device) i = 0 while not props and i < timeout: props = isys.getDeviceProperties(device) i += 1 time.sleep(1) return bool(props)
def available(self): ksdevice = None if flags.cmdline.has_key('ksdevice'): ksdevice = flags.cmdline['ksdevice'] for dev in isys.getDeviceProperties().keys(): if not self.netdevices.has_key(dev): self.netdevices[dev] = NetworkDevice(dev) hwaddr = isys.getMacAddress(dev) if hwaddr is None: # not a valid device log.warning("invalid hwaddr for: %s" % (dev, )) continue self.netdevices[dev].set(('HWADDR', hwaddr)) self.netdevices[dev].set(('DESC', isys.getNetDevDesc(dev))) if not ksdevice: continue if ksdevice == 'link' and isys.getLinkStatus(dev): self.ksdevice = dev elif ksdevice == dev: self.ksdevice = dev elif ksdevice.find(':') != -1: if ksdevice.upper() == hwaddr: self.ksdevice = dev return self.netdevices
def available(self): ksdevice = None if flags.cmdline.has_key('ksdevice'): ksdevice = flags.cmdline['ksdevice'] for dev in isys.getDeviceProperties().keys(): if not self.netdevices.has_key(dev): self.netdevices[dev] = NetworkDevice(dev) hwaddr = isys.getMacAddress(dev) if hwaddr is None: # not a valid device log.warning("invalid hwaddr for: %s" % (dev,)) continue self.netdevices[dev].set(('HWADDR', hwaddr)) self.netdevices[dev].set(('DESC', isys.getNetDevDesc(dev))) if not ksdevice: continue if ksdevice == 'link' and isys.getLinkStatus(dev): self.ksdevice = dev elif ksdevice == dev: self.ksdevice = dev elif ksdevice.find(':') != -1: if ksdevice.upper() == hwaddr: self.ksdevice = dev return self.netdevices
def logIfcfgFiles(header="\n"): lf = open(ifcfgLogFile, 'a') lf.write(header) lf.close() devprops = isys.getDeviceProperties(dev=None) for device in devprops: path = "%s/ifcfg-%s" % (netscriptsDir, device) logIfcfgFile(path, "===== %s\n" % (path,))
def update(self): ifcfglog.debug("Network.update() called") self.netdevices = {} self.ksdevice = None if flags.imageInstall: return # populate self.netdevices devhash = isys.getDeviceProperties(dev=None) for iface in devhash.keys(): if isys.isWirelessDevice(iface): device = WirelessNetworkDevice(iface) else: device = NetworkDevice(netscriptsDir, iface) if os.access(device.path, os.R_OK): device.loadIfcfgFile() else: device.setDefaultConfig() # TODORV - the last iface in loop wins, might be ok, # not worthy of special juggling if device.get('HOSTNAME'): self.hostname = device.get('HOSTNAME') device.description = isys.getNetDevDesc(iface) self.netdevices[iface] = device ksdevice = flags.cmdline.get('ksdevice', None) if ksdevice: bootif_mac = None if ksdevice == 'bootif' and "BOOTIF" in flags.cmdline: bootif_mac = flags.cmdline["BOOTIF"][3:].replace("-", ":").upper() # sort for ksdevice=link (to select the same device as in initrd)) for dev in sorted(self.netdevices): mac = self.netdevices[dev].get('HWADDR').upper() if ksdevice == 'link' and isys.getLinkStatus(dev): self.ksdevice = dev break elif ksdevice == 'bootif': if bootif_mac == mac: self.ksdevice = dev break elif ksdevice == dev: self.ksdevice = dev break elif ':' in ksdevice: if ksdevice.upper() == mac: self.ksdevice = dev break
def update(self): ifcfglog.debug("Network.update() called") self.netdevices = {} self.ksdevice = None self.domains = [] # populate self.netdevices devhash = isys.getDeviceProperties(dev=None) for iface in devhash.keys(): device = NetworkDevice(netscriptsDir, iface) if os.access(device.path, os.R_OK): device.loadIfcfgFile() else: log.info("Network.update(): %s file not found" % device.path) continue if device.get('DOMAIN'): self.domains.append(device.get('DOMAIN')) # TODORV - the last iface in loop wins, might be ok, # not worthy of special juggling if device.get('HOSTNAME'): self.hostname = device.get('HOSTNAME') device.description = isys.getNetDevDesc(iface) self.netdevices[iface] = device ksdevice = flags.cmdline.get('ksdevice', None) if ksdevice: bootif_mac = None if ksdevice == 'bootif' and flags.cmdline.get("BOOTIF"): bootif_mac = flags.cmdline.get("BOOTIF")[3:].replace( "-", ":").upper() for dev in self.netdevices: mac = self.netdevices[dev].get('HWADDR').upper() if ksdevice == 'link' and isys.getLinkStatus(dev): self.ksdevice = dev break elif ksdevice == 'bootif': if bootif_mac == mac: self.ksdevice = dev break elif ksdevice == dev: self.ksdevice = dev break elif ':' in ksdevice: if ksdevice.upper() == mac: self.ksdevice = dev break
def _startEDD(self, intf = None): rc = iutil.execWithCapture("/usr/libexec/fcoe/fcoe_edd.sh", [ "-i" ], stderr="/dev/tty5") if not rc.startswith("NIC="): log.info("No FCoE EDD info found: %s" % rc) return (key, val) = rc.split("=", 1) if val not in isys.getDeviceProperties(): log.error("Unknown FCoE NIC found in EDD: %s, ignoring" % val) return log.info("FCoE NIC found in EDD: %s" % val) self.addSan(val, dcb=True, auto_vlan=True, intf=intf)
def update(self): ifcfglog.debug("Network.update() called") self.netdevices = {} self.ksdevice = None if flags.imageInstall: return # populate self.netdevices devhash = isys.getDeviceProperties(dev=None) for iface in devhash.keys(): device = NetworkDevice(netscriptsDir, iface) if os.access(device.path, os.R_OK): device.loadIfcfgFile() else: log.info("Network.update(): %s file not found" % device.path) continue # TODORV - the last iface in loop wins, might be ok, # not worthy of special juggling if device.get('HOSTNAME'): self.hostname = device.get('HOSTNAME') device.description = isys.getNetDevDesc(iface) self.netdevices[iface] = device ksdevice = flags.cmdline.get('ksdevice', None) if ksdevice: if ksdevice == 'bootif': bootif_mac = flags.cmdline.get("BOOTIF")[3:].replace("-", ":").upper() for dev in self.netdevices: mac = self.netdevices[dev].get('HWADDR').upper() if ksdevice == 'link' and isys.getLinkStatus(dev): self.ksdevice = dev break elif ksdevice == 'bootif': if bootif_mac == mac: self.ksdevice = dev break elif ksdevice == dev: self.ksdevice = dev break elif ':' in ksdevice: if ksdevice.upper() == mac: self.ksdevice = dev break
def update(self): self.netdevices = {} self.ksdevice = None # populate self.netdevices devhash = isys.getDeviceProperties(dev=None) for iface in devhash.keys(): device = NetworkDevice(netscriptsDir, iface, logfile=ifcfgLogFile) if os.access(device.path, os.R_OK): device.loadIfcfgFile() else: log.info("Network.update(): %s file not found" % device.path) continue # TODORV - the last iface in loop wins, might be ok, # not worthy of special juggling if device.get('HOSTNAME'): self.hostname = device.get('HOSTNAME') device.description = isys.getNetDevDesc(iface) self.netdevices[iface] = device ksdevice = flags.cmdline.get('ksdevice', None) if ksdevice: for dev in self.netdevices: if ksdevice == 'link' and isys.getLinkStatus(dev): self.ksdevice = dev break elif ksdevice == dev: self.ksdevice = dev break elif ':' in ksdevice: if ksdevice.upper() == self.netdevices[dev].get('HWADDR'): self.ksdevice = dev break
def logIfcfgFiles(message=""): devprops = isys.getDeviceProperties(dev=None) for device in devprops: path = "%s/ifcfg-%s" % (netscriptsDir, device) logIfcfgFile(path, message)
def __init__(self): self.netdevices = {} self.ksdevice = None self.domains = [] self.hostname = socket.gethostname() self.overrideDHCPhostname = False self.useFirewall = True # populate self.netdevices devhash = isys.getDeviceProperties(dev=None) for dev in devhash.keys(): self.netdevices[dev] = NetworkDevice(dev) ifcfg_contents = self.readIfcfgContents(dev) # if NM_CONTROLLED is set to yes, we read in settings from # NetworkManager first, then fill in the gaps with the data # from the ifcfg file useNetworkManager = False if ifcfg_contents.has_key('NM_CONTROLLED') and \ not ifcfg_contents['NM_CONTROLLED'].lower() == 'no': useNetworkManager = True # this interface is managed by NetworkManager, so read from # NetworkManager first if useNetworkManager: props = devhash[dev] if isys.isDeviceDHCP(dev): self.netdevices[dev].set(('BOOTPROTO', 'dhcp')) else: self.netdevices[dev].unset('BOOTPROTO') bus = dbus.SystemBus() config_path = props.Get(isys.NM_DEVICE_IFACE, 'Ip4Config') config = bus.get_object(isys.NM_SERVICE, config_path) config_props = dbus.Interface(config, isys.DBUS_PROPS_IFACE) # addresses (3-element list: ipaddr, netmask, gateway) addrs = config_props.Get(isys.NM_IP4CONFIG_IFACE, 'Addresses')[0] try: tmp = struct.pack('I', addrs[0]) ipaddr = socket.inet_ntop(socket.AF_INET, tmp) self.netdevices[dev].set(('IPADDR', ipaddr)) except: pass try: tmp = struct.pack('I', addrs[1]) netmask = socket.inet_ntop(socket.AF_INET, tmp) self.netdevices[dev].set(('NETMASK', netmask)) except: pass try: tmp = struct.pack('I', addrs[2]) gateway = socket.inet_ntop(socket.AF_INET, tmp) self.netdevices[dev].set(('GATEWAY', gateway)) except: pass self.hostname = socket.gethostname() # read in remaining settings from ifcfg file for key in ifcfg_contents.keys(): if key == 'GATEWAY': self.netdevices[dev].set((key, ifcfg_contents[key])) elif key == 'DOMAIN': self.domains.append(ifcfg_contents[key]) elif key == 'HOSTNAME': self.hostname = ifcfg_contents[key] elif self.netdevices[dev].get(key) == '': self.netdevices[dev].set((key, ifcfg_contents[key])) # now initialize remaining devices # XXX we just throw return away, the method initialize a # object member so we dont need to available_devices = self.available() if len(available_devices) > 0: # set first device to start up onboot oneactive = 0 for dev in available_devices.keys(): try: if available_devices[dev].get("ONBOOT") == "yes": oneactive = 1 break except: continue