From c058baf8238ed1f5946428a6a1cac36ecf209d67 Mon Sep 17 00:00:00 2001 From: Michal Filka Date: Wed, 24 Aug 2016 08:37:50 +0200 Subject: [PATCH] Perform explicit device activation in case of ssh install. bnc#993587 --- src/lib/network/network_autoconfiguration.rb | 13 ++---------- src/lib/network/wicked_handlers.rb | 20 ++++++++++++++++++ src/modules/Lan.rb | 22 +++++++++++++++----- src/modules/LanItems.rb | 1 + 4 files changed, 40 insertions(+), 16 deletions(-) create mode 100644 src/lib/network/wicked_handlers.rb diff --git a/src/lib/network/network_autoconfiguration.rb b/src/lib/network/network_autoconfiguration.rb index 852b4e0ff..777c0af9f 100644 --- a/src/lib/network/network_autoconfiguration.rb +++ b/src/lib/network/network_autoconfiguration.rb @@ -1,11 +1,13 @@ # encoding: utf-8 require "yast" +require "network/wicked_handlers" module Yast # The class is responsible for generating / proposing automatic # configuration during installation workflow class NetworkAutoconfiguration + include Wicked include Singleton include Logger include Yast @@ -142,17 +144,6 @@ def setup_dhcp(card) LanItems.Commit end - # Reloads configuration for each device named in devs - # - # @devs [Array] list of device names - # @return true if configuration was reloaded - def reload_config(devs) - raise ArgumentError if devs.nil? - return true if devs.empty? - - SCR.Execute(BASH_PATH, "wicked ifreload #{devs.join(" ")}") == 0 - end - def delete_config(devname) LanItems.delete_dev(devname) end diff --git a/src/lib/network/wicked_handlers.rb b/src/lib/network/wicked_handlers.rb new file mode 100644 index 000000000..5a58facd2 --- /dev/null +++ b/src/lib/network/wicked_handlers.rb @@ -0,0 +1,20 @@ +# encoding: utf-8 + +require "yast" + +module Yast + module Wicked + BASH_PATH = Path.new(".target.bash") + + # Reloads configuration for each device named in devs + # + # @devs [Array] list of device names + # @return true if configuration was reloaded + def reload_config(devs) + raise ArgumentError if devs.nil? + return true if devs.empty? + + SCR.Execute(BASH_PATH, "wicked ifreload #{devs.join(" ")}").zero? + end + end +end diff --git a/src/modules/Lan.rb b/src/modules/Lan.rb index 8ce331ec6..403a38c39 100644 --- a/src/modules/Lan.rb +++ b/src/modules/Lan.rb @@ -31,6 +31,7 @@ # Input and output routines. require "yast" require "network/confirm_virt_proposal" +require "network/wicked_handlers" module Yast class LanClass < Module @@ -1120,17 +1121,28 @@ def HaveXenBridge private def activate_network_service - if LanItems.force_restart + # If the second installation stage has been called by yast.ssh via + # ssh, we should not restart network because systemctl + # hangs in that case. (bnc#885640) + action = :reload_restart if Stage.normal || !Linuxrc.usessh + action = :force_restart if LanItems.force_restart + action = :remote_installer if Stage.initial && (Linuxrc.usessh || Linuxrc.vnc) + + case action + when :force_restart log.info("Network service activation forced") NetworkService.Restart - else + + when :reload_restart log.info "Attempting to reload network service, normal stage " \ "#{Stage.normal}, ssh: #{Linuxrc.usessh}" - # If the second installation stage has been called by yast.ssh via - # ssh, we should not restart network cause systemctl - # hangs in that case. (bnc#885640) NetworkService.ReloadOrRestart if Stage.normal || !Linuxrc.usessh + + when :remote_installer + # last instance handling "special" cases like ssh installation + # FIXME: most probably not everything will be set properly + LanItems.reload_config(LanItems.GetAllInterfaces()) end end end diff --git a/src/modules/LanItems.rb b/src/modules/LanItems.rb index 763f6ca47..f96000080 100644 --- a/src/modules/LanItems.rb +++ b/src/modules/LanItems.rb @@ -46,6 +46,7 @@ class LanItemsClass < Module attr_accessor :ipoib_mode include Logger + include Wicked def main Yast.import "UI"