[PATCH rhel7-branch] network: apply ks configuration to devices activated in initramfs (#1037605)

Martin Kolman mkolman at redhat.com
Fri Mar 7 13:24:03 UTC 2014


On Fri, 2014-03-07 at 13:05 +0100, Radek Vykydal wrote:
> Resolves: rhbz#1037605
> ---
>  pyanaconda/network.py | 27 ++++++++++++++++++++++-----
>  1 file changed, 22 insertions(+), 5 deletions(-)
> 
> diff --git a/pyanaconda/network.py b/pyanaconda/network.py
> index 1b74fb3..a296536 100644
> --- a/pyanaconda/network.py
> +++ b/pyanaconda/network.py
> @@ -1118,10 +1118,10 @@ def setOnboot(ksdata):
>              log.debug("setOnboot: %s" % e)
>      return updated_devices
>  
> -def apply_kickstart_from_pre_section(ksdata):
> +def apply_kickstart(ksdata):
>      applied_devices = []
>  
> -    for network_data in ksdata.network.network:
> +    for i, network_data in enumerate(ksdata.network.network):
>  
>          # TODO: wireless not supported yet
>          if network_data.essid:
> @@ -1129,16 +1129,33 @@ def apply_kickstart_from_pre_section(ksdata):
>  
>          dev_name = get_device_name(network_data)
>          if not dev_name:
> -            log.warning("network: pre kickstart: --device %s does not exist" % network_data.device)
> +            log.warning("network: apply kickstart: --device %s does not exist" % network_data.device)
>              continue
>  
>          ifcfg_path = find_ifcfg_file_of_device(dev_name)
> -        # if the device was already configured in intramfs by kickstart ignore it
>          if ifcfg_path:
>              with open(ifcfg_path, 'r') as f:
> +                # If we have kickstart ifcfg from initramfs
>                  if "Generated by parse-kickstart" in f.read():
> +                    # and we should activate the device
> +                    if i == 0 or network_data.activate:
> +                        ifcfg = IfcfgFile(ifcfg_path)
> +                        ifcfg.read()
> +                        con_uuid = ifcfg.get("UUID")
> +                        # and the ifcfg had not been already applied to device by NM
> +                        if con_uuid != nm.nm_device_active_con_uuid(dev_name):
> +                            # apply it overriding configuration generated by NM
> +                            # taking over connection activated in initramfs
> +                            log.debug("network: kickstart - reactivating device %s with %s" % (dev_name, con_uuid))
> +                            try:
> +                                nm.nm_activate_device_connection(dev_name, con_uuid)
> +                            except nm.UnknownConnectionError:
> +                                log.warning("network: pre kickstart: can't activate connection %s on %s" %
> +                                            (con_uuid, dev_name))
>                      continue
>  
> +        # If we don't have kickstart ifcfg from initramfs the command was added
> +        # in %pre section after switch root, so apply it now
>          applied_devices.append(dev_name)
>          if ifcfg_path:
>              # if the device was already configured in initramfs update the settings
> @@ -1162,7 +1179,7 @@ def networkInitialize(ksdata):
>      logIfcfgFiles("network initialization")
>  
>      if not flags.imageInstall:
> -        devnames = apply_kickstart_from_pre_section(ksdata)
> +        devnames = apply_kickstart(ksdata)
>          if devnames:
>              msg = "kickstart pre section applied for devices %s" % devnames
>              log.debug("network: %s" % msg)
Also ACK! :)



More information about the anaconda-patches mailing list