[PATCH rhel7-branch] network: apply ks configuration to devices activated in initramfs (#1037605)
Vratislav Podzimek
vpodzime at redhat.com
Fri Mar 7 13:10:44 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)
Looks good to me.
--
Vratislav Podzimek
Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic
More information about the anaconda-patches
mailing list