Hello community,

here is the log from the commit of package yast2-installation for 
openSUSE:Factory checked in at 2017-05-06 20:45:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-installation (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-installation.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-installation"

Sat May  6 20:45:52 2017 rev:385 rq:492868 version:3.2.38

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-installation/yast2-installation.changes    
2017-04-12 17:09:54.308865305 +0200
+++ 
/work/SRC/openSUSE:Factory/.yast2-installation.new/yast2-installation.changes   
    2017-05-06 20:45:53.994448614 +0200
@@ -1,0 +2,19 @@
+Wed Apr 26 15:03:33 UTC 2017 - [email protected]
+
+- Move CaaSP specific code to yast2-caasp package
+  (bsc#1036838)
+- 3.2.38
+
+-------------------------------------------------------------------
+Wed Apr 26 09:52:01 UTC 2017 - [email protected]
+
+- bsc#1031840
+  - changed CheckFreeSpaceNow to use LANG=en_US.UTF-8
+
+-------------------------------------------------------------------
+Thu Apr 20 14:00:08 UTC 2017 - [email protected]
+
+- Add a NTP Servers settings to the overview dialog
+  (FATE#323249)
+
+-------------------------------------------------------------------

Old:
----
  yast2-installation-3.2.37.tar.bz2

New:
----
  yast2-installation-3.2.38.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-installation.spec ++++++
--- /var/tmp/diff_new_pack.b2f6du/_old  2017-05-06 20:45:54.982309258 +0200
+++ /var/tmp/diff_new_pack.b2f6du/_new  2017-05-06 20:45:54.994307566 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-installation
-Version:        3.2.37
+Version:        3.2.38
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ yast2-installation-3.2.37.tar.bz2 -> yast2-installation-3.2.38.tar.bz2 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/package/yast2-installation.changes 
new/yast2-installation-3.2.38/package/yast2-installation.changes
--- old/yast2-installation-3.2.37/package/yast2-installation.changes    
2017-04-07 14:59:25.098466244 +0200
+++ new/yast2-installation-3.2.38/package/yast2-installation.changes    
2017-05-04 15:58:44.317375667 +0200
@@ -1,4 +1,23 @@
 -------------------------------------------------------------------
+Wed Apr 26 15:03:33 UTC 2017 - [email protected]
+
+- Move CaaSP specific code to yast2-caasp package
+  (bsc#1036838)
+- 3.2.38
+
+-------------------------------------------------------------------
+Wed Apr 26 09:52:01 UTC 2017 - [email protected]
+
+- bsc#1031840
+  - changed CheckFreeSpaceNow to use LANG=en_US.UTF-8
+
+-------------------------------------------------------------------
+Thu Apr 20 14:00:08 UTC 2017 - [email protected]
+
+- Add a NTP Servers settings to the overview dialog
+  (FATE#323249)
+
+-------------------------------------------------------------------
 Wed Apr  5 11:31:12 CEST 2017 - [email protected]
 
 - Use y2start script instead of y2base (bsc#1027181)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/package/yast2-installation.spec 
new/yast2-installation-3.2.38/package/yast2-installation.spec
--- old/yast2-installation-3.2.37/package/yast2-installation.spec       
2017-04-07 14:59:25.098466244 +0200
+++ new/yast2-installation-3.2.38/package/yast2-installation.spec       
2017-05-04 15:58:44.317375667 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-installation
-Version:        3.2.37
+Version:        3.2.38
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/clients/inst_casp_overview.rb 
new/yast2-installation-3.2.38/src/clients/inst_casp_overview.rb
--- old/yast2-installation-3.2.37/src/clients/inst_casp_overview.rb     
2017-04-07 14:59:25.102466244 +0200
+++ new/yast2-installation-3.2.38/src/clients/inst_casp_overview.rb     
1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-require "installation/clients/inst_casp_overview"
-::Installation::InstCaspOverview.new.run
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/lib/installation/clients/inst_casp_overview.rb
 
new/yast2-installation-3.2.38/src/lib/installation/clients/inst_casp_overview.rb
--- 
old/yast2-installation-3.2.37/src/lib/installation/clients/inst_casp_overview.rb
    2017-04-07 14:59:25.110466244 +0200
+++ 
new/yast2-installation-3.2.38/src/lib/installation/clients/inst_casp_overview.rb
    1970-01-01 01:00:00.000000000 +0100
@@ -1,182 +0,0 @@
-# encoding: utf-8
-
-# 
------------------------------------------------------------------------------
-# Copyright (c) 2017 SUSE LLC
-#
-#
-# This program is free software; you can redistribute it and/or modify it under
-# the terms of version 2 of the GNU General Public License as published by the
-# Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, contact SUSE.
-#
-# To contact SUSE about this file by physical or electronic mail, you may find
-# current contact information at www.suse.com.
-# 
------------------------------------------------------------------------------
-
-require "users/widgets"
-require "y2country/widgets"
-require "ui/widgets"
-require "tune/widgets"
-require "registration/widgets/registration_code"
-
-require "installation/widgets/overview"
-require "installation/widgets/system_role"
-require "installation/services"
-
-module Installation
-  # This library provides a simple dialog for setting
-  # - the password for the system administrator (root)
-  # - the keyboard layout
-  # This dialog does not write the password to the system,
-  # only stores it in UsersSimple module,
-  # to be written during inst_finish.
-  class InstCaspOverview
-    include Yast::Logger
-    include Yast::I18n
-    include Yast::UIShortcuts
-
-    def run
-      Yast.import "UI"
-      Yast.import "Language"
-      Yast.import "Mode"
-      Yast.import "CWM"
-      Yast.import "Popup"
-      Yast.import "Pkg"
-      Yast.import "InstShowInfo"
-
-      textdomain "installation"
-
-      # Simplified work-flow do not contain language proposal, but have 
software one.
-      # So avoid false positive detection of language change
-      Yast::Pkg.SetPackageLocale(Yast::Language.language)
-
-      # We do not need to create a wizard dialog in installation, but it's
-      # helpful when testing all manually on a running system
-      Yast::Wizard.CreateDialog if separate_wizard_needed?
-
-      # show the Beta warning if it exists
-      Yast::InstShowInfo.show_info_txt(INFO_FILE) if File.exist?(INFO_FILE)
-
-      ret = nil
-      loop do
-        ret = Yast::CWM.show(
-          content,
-          # Title for installation overview dialog
-          caption:      _("Installation Overview"),
-          # Button label: start the installation
-          next_button:  _("Install"),
-          # do not show abort and back button
-          abort_button: "",
-          back_button:  ""
-        )
-
-        # Currently no other return value is expected, behavior can
-        # be unpredictable if something else is received - raise
-        # RuntimeError
-        raise "Unexpected return value" if ret != :next
-
-        # do software proposal
-        d = Yast::WFM.CallFunction("software_proposal",
-          [
-            "MakeProposal",
-            { "simple_mode" => true }
-          ])
-        # report problems with sofware proposal
-        if [:blocker, :fatal].include?(d["warning_level"])
-          # %s is a problem description
-          Yast::Popup.Error(
-            _("Software proposal failed. Cannot proceed with 
installation.\n%s") % d["warning"]
-          )
-        # continue only if confirmed
-        elsif Yast::WFM.CallFunction("inst_doit", []) == :next
-          break
-        end
-      end
-
-      add_casp_services
-
-      Yast::Wizard.CloseDialog if separate_wizard_needed?
-
-      ret
-    end
-
-  private
-
-    # location of the info.txt file (containing the Beta warning)
-    INFO_FILE = "/info.txt".freeze
-
-    # Specific services that needs to be enabled on CAaSP see (FATE#321738)
-    # It is additional services to the ones defined for role.
-    # It is caasp only services and for generic approach systemd-presets 
should be used.
-    # In this case it is not used, due to some problems with cloud services.
-    CASP_SERVICES = ["sshd", "cloud-init-local", "cloud-init", "cloud-config",
-                     "cloud-final", "issue-generator", 
"issue-add-ssh-keys"].freeze
-    def add_casp_services
-      ::Installation::Services.enabled.concat(CASP_SERVICES)
-    end
-
-    def quadrant_layout(upper_left:, lower_left:, upper_right:, lower_right:)
-      HBox(
-        HWeight(
-          6,
-          VBox(
-            VSpacing(2),
-            VWeight(5, upper_left),
-            VWeight(5, lower_left)
-          )
-        ),
-        HSpacing(3),
-        HWeight(
-          4,
-          VBox(
-            VSpacing(2),
-            VWeight(5, upper_right),
-            VWeight(5, lower_right)
-          )
-        )
-      )
-    end
-
-    # Returns a pair with UI widget-set for the dialog and widgets that can
-    # block installation
-    def content
-      controller_node = Installation::Widgets::ControllerNodePlace.new
-
-      kdump_overview = Installation::Widgets::Overview.new(client: 
"kdump_proposal")
-      bootloader_overview = Installation::Widgets::Overview.new(client: 
"bootloader_proposal", redraw: [kdump_overview])
-
-      quadrant_layout(
-        upper_left:  VBox(
-          ::Registration::Widgets::RegistrationCode.new,
-          ::Users::PasswordWidget.new(little_space: true),
-          # use english us as default keyboard layout
-          ::Y2Country::Widgets::KeyboardSelectionCombo.new("english-us")
-        ),
-        lower_left:  VBox(
-          Installation::Widgets::SystemRole.new(controller_node),
-          controller_node,
-          Tune::Widgets::SystemInformation.new
-        ),
-        upper_right: VBox(
-          Installation::Widgets::Overview.new(client: "partitions_proposal", 
redraw: [bootloader_overview]),
-          bootloader_overview
-        ),
-        lower_right: VBox(
-          Installation::Widgets::Overview.new(client: "network_proposal"),
-          kdump_overview
-        )
-      )
-    end
-
-    # Returns whether we need/ed to create new UI Wizard
-    def separate_wizard_needed?
-      Yast::Mode.normal
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/lib/installation/clients/switch_scr_finish.rb 
new/yast2-installation-3.2.38/src/lib/installation/clients/switch_scr_finish.rb
--- 
old/yast2-installation-3.2.37/src/lib/installation/clients/switch_scr_finish.rb 
    2017-04-07 14:59:25.118466244 +0200
+++ 
new/yast2-installation-3.2.38/src/lib/installation/clients/switch_scr_finish.rb 
    2017-05-04 15:58:44.497375667 +0200
@@ -152,7 +152,7 @@
 
     def CheckFreeSpaceNow
       ret_exec = Convert.to_map(
-        SCR.Execute(path(".target.bash_output"), "/bin/df -h")
+        SCR.Execute(path(".target.bash_output"), "LANG=en_US.UTF-8 /bin/df -h")
       )
 
       if Ops.get_integer(ret_exec, "exit", -1) != 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/lib/installation/dialogs/desktop_roles.rb 
new/yast2-installation-3.2.38/src/lib/installation/dialogs/desktop_roles.rb
--- old/yast2-installation-3.2.37/src/lib/installation/dialogs/desktop_roles.rb 
2017-04-07 14:59:25.118466244 +0200
+++ new/yast2-installation-3.2.38/src/lib/installation/dialogs/desktop_roles.rb 
2017-05-04 15:58:44.505375667 +0200
@@ -1,5 +1,5 @@
 require "yast"
-require "installation/widgets/system_role"
+require "installation/widgets/system_roles_radio_buttons"
 require "installation/widgets/online_repos"
 require "cwm/widget"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/lib/installation/system_role_reader.rb 
new/yast2-installation-3.2.38/src/lib/installation/system_role_reader.rb
--- old/yast2-installation-3.2.37/src/lib/installation/system_role_reader.rb    
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-installation-3.2.38/src/lib/installation/system_role_reader.rb    
2017-05-04 15:58:44.597375667 +0200
@@ -0,0 +1,64 @@
+# encoding: utf-8
+
+# 
------------------------------------------------------------------------------
+# Copyright (c) 2017 SUSE LLC
+#
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of version 2 of the GNU General Public License as published by the
+# Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, contact SUSE.
+#
+# To contact SUSE about this file by physical or electronic mail, you may find
+# current contact information at www.suse.com.
+# 
------------------------------------------------------------------------------
+module Installation
+  module Widgets
+    # Common methods for system roles widgets
+    #
+    # @see Installation::Widgets::SystemRole
+    module SystemRoleReader
+      def default
+        ::Installation::SystemRole.default? ? 
::Installation::SystemRole.ids.first : nil
+      end
+
+      def init
+        self.value = ::Installation::SystemRole.current || default
+      end
+
+      def label
+        Yast::ProductControl.GetTranslatedText("roles_caption")
+      end
+
+      def items
+        ::Installation::SystemRole.all.map do |role|
+          [role.id, role.label]
+        end
+      end
+
+      def help
+        Yast::ProductControl.GetTranslatedText("roles_help") + "\n\n" + 
roles_help_text
+      end
+
+      def store
+        log.info "Applying system role '#{value}'"
+        role = ::Installation::SystemRole.select(value)
+
+        role.overlay_features
+        role.adapt_services
+      end
+
+    private
+
+      def roles_help_text
+        ::Installation::SystemRole.all.map { |r| 
"#{r.label}\n\n#{r.description}" }.join("\n\n\n")
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/lib/installation/widgets/hiding_place.rb 
new/yast2-installation-3.2.38/src/lib/installation/widgets/hiding_place.rb
--- old/yast2-installation-3.2.37/src/lib/installation/widgets/hiding_place.rb  
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-installation-3.2.38/src/lib/installation/widgets/hiding_place.rb  
2017-05-04 15:58:44.597375667 +0200
@@ -0,0 +1,66 @@
+# encoding: utf-8
+
+# 
------------------------------------------------------------------------------
+# Copyright (c) 2017 SUSE LLC
+#
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of version 2 of the GNU General Public License as published by the
+# Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, contact SUSE.
+#
+# To contact SUSE about this file by physical or electronic mail, you may find
+# current contact information at www.suse.com.
+# 
------------------------------------------------------------------------------
+
+require "yast"
+require "installation/system_role"
+
+Yast.import "CWM"
+
+module Installation
+  module Widgets
+    # This class offers a placeholder that to hide/show a given widget
+    class HidingPlace < CWM::ReplacePoint
+      # Constructor
+      #
+      # @param main_widget [CWM::AbstractWidget]
+      def initialize(main_widget)
+        @main_widget = main_widget
+        @empty = CWM::Empty.new("no_#{main_widget.widget_id}_placeholder")
+        super(id: "#{main_widget.widget_id}_placeholder", widget: @empty)
+      end
+
+      # Show the main widget
+      def show
+        replace(main_widget)
+        main_widget.value = @main_widget_value if @main_widget_value
+      end
+
+      # Hide the main widget
+      def hide
+        @main_widget_value = main_widget.value
+        replace(empty)
+      end
+
+      # Save the main widget value
+      def store
+        @main_widget_value = main_widget.value
+        super
+      end
+
+    private
+
+      # @return [CWM::AbstractWidget] main widget
+      attr_reader :main_widget
+      # @return [Empty] Empty widget placeholder
+      attr_reader :empty
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/lib/installation/widgets/overview.rb 
new/yast2-installation-3.2.38/src/lib/installation/widgets/overview.rb
--- old/yast2-installation-3.2.37/src/lib/installation/widgets/overview.rb      
2017-04-07 14:59:25.122466244 +0200
+++ new/yast2-installation-3.2.38/src/lib/installation/widgets/overview.rb      
1970-01-01 01:00:00.000000000 +0100
@@ -1,139 +0,0 @@
-# encoding: utf-8
-
-# 
------------------------------------------------------------------------------
-# Copyright (c) 2017 SUSE LLC
-#
-#
-# This program is free software; you can redistribute it and/or modify it under
-# the terms of version 2 of the GNU General Public License as published by the
-# Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, contact SUSE.
-#
-# To contact SUSE about this file by physical or electronic mail, you may find
-# current contact information at www.suse.com.
-# 
------------------------------------------------------------------------------
-
-require "yast"
-require "cwm/widget"
-
-Yast.import "Popup"
-
-module Installation
-  module Widgets
-    # A widget for an all-in-one installation dialog.
-    # It uses the `simple_mode` of {Installation::ProposalClient#make_proposal}
-    # It is immutable, so for showing new values reinitialize widget
-    class Overview < CWM::CustomWidget
-      attr_reader :proposal_client
-
-      # @param client [String] A proposal client implementing simple_mode,
-      # @param redraw [Array<Overview>] list of other Overview clients. In case
-      # of :redraw action every of these clients will be redrawn too. Caller is
-      # responsible for not creating circular dependencies.
-      #   eg. "bootloader_proposal"
-      def initialize(client:, redraw: [])
-        textdomain "installation"
-        @proposal_client = client
-        @replace_point = "rp_" + client
-        # by default widget_id is the class name; must differentiate instances
-        self.widget_id = "overview_" + client
-        @blocking = false
-        @overviews_for_redraw = redraw
-      end
-
-      def contents
-        ReplacePoint(Id(@replace_point), widget)
-      end
-
-      def label
-        return @label if @label
-
-        d = Yast::WFM.CallFunction(proposal_client, ["Description", {}])
-        @label = d["menu_title"]
-      end
-
-      def items
-        return @items if @items
-
-        d = Yast::WFM.CallFunction(proposal_client,
-          [
-            "MakeProposal",
-            { "simple_mode" => true }
-          ])
-        if d["warning"] && !d["warning"].empty? && d["warning_level"] != 
:notice
-          Yast::Popup.LongError(
-            format(
-              _("Problem found when proposing %{client}:<br>" \
-              "Severity: %{severity}<br>" \
-              "Message: %{message}"),
-              client:   label.delete("&"),
-              severity: (d["warning_level"] || :warning).to_s,
-              message:  d["warning"]
-            )
-          )
-          @blocking = [:blocker, :fatal].include?(d["warning_level"])
-        else
-          @blocking = false
-        end
-        @items = d["label_proposal"]
-      end
-
-      # Updates overview content
-      def redraw
-        reset
-
-        Yast::UI.ReplaceWidget(Id(@replace_point), widget)
-
-        @overviews_for_redraw.each(&:redraw)
-      end
-
-      # Custom event handler
-      def handle(_event)
-        Yast::WFM.CallFunction(proposal_client, ["AskUser", {}])
-
-        redraw
-
-        nil
-      end
-
-      def validate
-        return true unless @blocking
-
-        # %s is a heading of a problematic section, like "Partitioning" or 
"Network"
-        Yast::Popup.Error(
-          _("%s blocks the installation. Please solve the problem there before 
proceeding.") %
-          label.delete("&")
-        )
-
-        false
-      end
-
-    private
-
-      def button_id
-        # an arbitrary unique id
-        "ask_" + proposal_client
-      end
-
-      # The overview representation in common UI widgets
-      def widget
-        VBox(
-          Left(PushButton(Id(button_id), label)),
-          * items.map { |i| Left(Label(" * #{i}")) }
-        )
-      end
-
-      # Flush cache(s)
-      def reset
-        @label = nil
-        @items = nil
-      end
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/lib/installation/widgets/system_role.rb 
new/yast2-installation-3.2.38/src/lib/installation/widgets/system_role.rb
--- old/yast2-installation-3.2.37/src/lib/installation/widgets/system_role.rb   
2017-04-07 14:59:25.122466244 +0200
+++ new/yast2-installation-3.2.38/src/lib/installation/widgets/system_role.rb   
1970-01-01 01:00:00.000000000 +0100
@@ -1,187 +0,0 @@
-# encoding: utf-8
-
-# 
------------------------------------------------------------------------------
-# Copyright (c) 2017 SUSE LLC
-#
-#
-# This program is free software; you can redistribute it and/or modify it under
-# the terms of version 2 of the GNU General Public License as published by the
-# Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, contact SUSE.
-#
-# To contact SUSE about this file by physical or electronic mail, you may find
-# current contact information at www.suse.com.
-# 
------------------------------------------------------------------------------
-
-require "yast"
-require "cwm/widget"
-require "installation/services"
-require "installation/custom_patterns"
-require "installation/system_role"
-
-Yast.import "DefaultDesktop"
-Yast.import "ProductControl"
-Yast.import "IP"
-Yast.import "Hostname"
-
-module Installation
-  module Widgets
-    # This widget is responsible of validate and store the introduced location
-    # which must be a valid IP or FQDN.
-    # bsc#1032057: old name: Controller Node, new name: Administration Node.
-    class ControllerNode < CWM::InputField
-      def label
-        # intentional no translation for CAASP
-        "Administration Node"
-      end
-
-      # It stores the value of the input field if validates
-      #
-      # @see #validate
-      def store
-        role["controller_node"] = value
-      end
-
-      # The input field is initialized with previous stored value
-      def init
-        self.value = role["controller_node"]
-      end
-
-      # It returns true if the value is a valid IP or a valid FQDN, if not it
-      # displays a popup error.
-      #
-      # @return [Boolean] true if valid IP or FQDN
-      def validate
-        return true if Yast::IP.Check(value) || Yast::Hostname.CheckFQ(value)
-
-        Yast::Popup.Error(
-          # TRANSLATORS: error message for invalid administration node location
-          _("Not valid location for the administration node, " \
-          "please enter a valid IP or Hostname")
-        )
-
-        false
-      end
-
-    private
-
-      def role
-        ::Installation::SystemRole.find("worker_role")
-      end
-    end
-
-    class ControllerNodePlace < CWM::ReplacePoint
-      def initialize
-        @controller_node = ControllerNode.new
-        @empty = CWM::Empty.new("no_controller")
-        super(widget: @empty)
-      end
-
-      def show
-        replace(@controller_node)
-      end
-
-      def hide
-        replace(@empty)
-      end
-    end
-
-    module SystemRoleReader
-      def default
-        ::Installation::SystemRole.default? ? 
::Installation::SystemRole.ids.first : nil
-      end
-
-      def init
-        self.value = ::Installation::SystemRole.current || default
-      end
-
-      def label
-        Yast::ProductControl.GetTranslatedText("roles_caption")
-      end
-
-      def items
-        ::Installation::SystemRole.all.map do |role|
-          [role.id, role.label]
-        end
-      end
-
-      def help
-        Yast::ProductControl.GetTranslatedText("roles_help") + "\n\n" + 
roles_help_text
-      end
-
-      def store
-        log.info "Applying system role '#{value}'"
-        role = ::Installation::SystemRole.select(value)
-
-        role.overlay_features
-        role.adapt_services
-      end
-
-    private
-
-      def roles_help_text
-        ::Installation::SystemRole.all.map { |r| 
"#{r.label}\n\n#{r.description}" }.join("\n\n\n")
-      end
-    end
-
-    # CaaSP specialized role widget
-    class SystemRole < CWM::ComboBox
-      include SystemRoleReader
-
-      def initialize(dashboard_widget)
-        textdomain "installation"
-        @dashboard_widget = dashboard_widget
-      end
-
-      def opt
-        [:hstretch, :notify]
-      end
-
-      alias_method :init_orig, :init
-      def init
-        init_orig
-        handle
-      end
-
-      def handle
-        if value == "worker_role"
-          @dashboard_widget.show
-        else
-          @dashboard_widget.hide
-        end
-
-        nil
-      end
-    end
-
-    class SystemRolesRadioButtons < CWM::RadioButtons
-      include SystemRoleReader
-
-      alias_method :store_orig, :store
-      def store
-        # set flag to show custom patterns only if custom role selected
-        CustomPatterns.show = value == "custom"
-        store_orig
-
-        if value == "custom"
-          # for custom role do not use any desktop
-          Yast::DefaultDesktop.SetDesktop(nil)
-        else
-          # force reset of Default Desktop, because it is cached and when going
-          # forward and backward, it can be changed
-          Yast::DefaultDesktop.ForceReinit
-        end
-      end
-
-      def vspacing
-        1
-      end
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/lib/installation/widgets/system_role_reader.rb
 
new/yast2-installation-3.2.38/src/lib/installation/widgets/system_role_reader.rb
--- 
old/yast2-installation-3.2.37/src/lib/installation/widgets/system_role_reader.rb
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/yast2-installation-3.2.38/src/lib/installation/widgets/system_role_reader.rb
    2017-05-04 15:58:44.597375667 +0200
@@ -0,0 +1,64 @@
+# encoding: utf-8
+
+# 
------------------------------------------------------------------------------
+# Copyright (c) 2017 SUSE LLC
+#
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of version 2 of the GNU General Public License as published by the
+# Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, contact SUSE.
+#
+# To contact SUSE about this file by physical or electronic mail, you may find
+# current contact information at www.suse.com.
+# 
------------------------------------------------------------------------------
+module Installation
+  module Widgets
+    # Common methods for system roles widgets
+    #
+    # @see Installation::Widgets::SystemRole
+    module SystemRoleReader
+      def default
+        ::Installation::SystemRole.default? ? 
::Installation::SystemRole.ids.first : nil
+      end
+
+      def init
+        self.value = ::Installation::SystemRole.current || default
+      end
+
+      def label
+        Yast::ProductControl.GetTranslatedText("roles_caption")
+      end
+
+      def items
+        ::Installation::SystemRole.all.map do |role|
+          [role.id, role.label]
+        end
+      end
+
+      def help
+        Yast::ProductControl.GetTranslatedText("roles_help") + "\n\n" + 
roles_help_text
+      end
+
+      def store
+        log.info "Applying system role '#{value}'"
+        role = ::Installation::SystemRole.select(value)
+
+        role.overlay_features
+        role.adapt_services
+      end
+
+    private
+
+      def roles_help_text
+        ::Installation::SystemRole.all.map { |r| 
"#{r.label}\n\n#{r.description}" }.join("\n\n\n")
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/src/lib/installation/widgets/system_roles_radio_buttons.rb
 
new/yast2-installation-3.2.38/src/lib/installation/widgets/system_roles_radio_buttons.rb
--- 
old/yast2-installation-3.2.37/src/lib/installation/widgets/system_roles_radio_buttons.rb
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/yast2-installation-3.2.38/src/lib/installation/widgets/system_roles_radio_buttons.rb
    2017-05-04 15:58:44.597375667 +0200
@@ -0,0 +1,60 @@
+# encoding: utf-8
+
+# 
------------------------------------------------------------------------------
+# Copyright (c) 2017 SUSE LLC
+#
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of version 2 of the GNU General Public License as published by the
+# Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 
details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, contact SUSE.
+#
+# To contact SUSE about this file by physical or electronic mail, you may find
+# current contact information at www.suse.com.
+# 
------------------------------------------------------------------------------
+
+require "yast"
+require "cwm/widget"
+require "installation/services"
+require "installation/custom_patterns"
+require "installation/system_role"
+require "installation/widgets/system_role_reader"
+
+Yast.import "DefaultDesktop"
+Yast.import "ProductControl"
+Yast.import "IP"
+Yast.import "Hostname"
+
+module Installation
+  module Widgets
+    class SystemRolesRadioButtons < CWM::RadioButtons
+      include SystemRoleReader
+
+      alias_method :store_orig, :store
+      def store
+        # set flag to show custom patterns only if custom role selected
+        CustomPatterns.show = value == "custom"
+        store_orig
+
+        if value == "custom"
+          # for custom role do not use any desktop
+          Yast::DefaultDesktop.SetDesktop(nil)
+        else
+          # force reset of Default Desktop, because it is cached and when going
+          # forward and backward, it can be changed
+          Yast::DefaultDesktop.ForceReinit
+        end
+      end
+
+      def vspacing
+        1
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/test/inst_casp_overview_test.rb 
new/yast2-installation-3.2.38/test/inst_casp_overview_test.rb
--- old/yast2-installation-3.2.37/test/inst_casp_overview_test.rb       
2017-04-07 14:59:25.142466244 +0200
+++ new/yast2-installation-3.2.38/test/inst_casp_overview_test.rb       
1970-01-01 01:00:00.000000000 +0100
@@ -1,128 +0,0 @@
-#! /usr/bin/env rspec
-
-require_relative "test_helper"
-
-require "installation/clients/inst_casp_overview"
-
-Yast.import "CWM"
-Yast.import "Language"
-Yast.import "Mode"
-Yast.import "Pkg"
-Yast.import "Popup"
-Yast.import "Wizard"
-
-# stub tune widgets used in dialog
-require "cwm/widget"
-
-module Tune
-  module Widgets
-    class SystemInformation < CWM::PushButton
-      def label
-        "System Information"
-      end
-    end
-  end
-end
-
-module Registration
-  module Widgets
-    class RegistrationCode < CWM::InputField
-      def label
-        "Registration code"
-      end
-    end
-  end
-end
-
-module Users
-  class PasswordWidget < CWM::CustomWidget
-    def initialize(little_space: true)
-    end
-
-    def label
-      "Password"
-    end
-  end
-end
-
-module Y2Country
-  module Widgets
-    class KeyboardSelectionCombo < CWM::ComboBox
-      def initialize(_language)
-      end
-
-      def label
-        "Keyboard"
-      end
-    end
-  end
-end
-
-describe ::Installation::InstCaspOverview do
-  describe "#run" do
-    before do
-      allow(Yast::Wizard).to receive(:CreateDialog)
-      allow(Yast::Wizard).to receive(:CloseDialog)
-      allow(Yast::Pkg).to receive(:SetPackageLocale)
-      allow(Yast::CWM).to receive(:show).and_return(:next)
-      allow(Yast::Language).to receive(:language).and_return("en_US")
-      allow(Yast::WFM).to receive(:CallFunction).and_return({})
-      allow(Yast::WFM).to receive(:CallFunction)
-        .with("inst_doit", []).and_return(:next)
-      allow(File).to receive(:exist?).and_call_original
-      allow(File).to receive(:exist?).with("/info.txt").and_return(false)
-    end
-
-    it "sets package locale same as Language" do
-      expect(Yast::Pkg).to 
receive(:SetPackageLocale).with(Yast::Language.language)
-
-      subject.run
-    end
-
-    it "creates wizard dialog in normal mode" do
-      allow(Yast::Mode).to receive(:normal).and_return(true)
-
-      expect(Yast::Wizard).to receive(:CreateDialog)
-
-      subject.run
-    end
-
-    it "closed wizard dialog in normal mode" do
-      allow(Yast::Mode).to receive(:normal).and_return(true)
-
-      expect(Yast::Wizard).to receive(:CloseDialog)
-
-      subject.run
-    end
-
-    it "shows CWM widgets" do
-      allow(Yast::Mode).to receive(:normal).and_return(true)
-
-      expect(Yast::CWM).to receive(:show).and_return(:next)
-
-      subject.run
-    end
-
-    it "adds caasp specific services to be enabled" do
-      subject.run
-
-      expect(::Installation::Services.enabled).to include("cloud-init")
-    end
-
-    it "displays the /info.txt file if it exists" do
-      expect(File).to receive(:exist?).with("/info.txt").and_return(true)
-      expect(Yast::InstShowInfo).to 
receive(:show_info_txt).with("/info.txt").and_return(true)
-      expect(Yast::CWM).to receive(:show).and_return(:next)
-
-      subject.run
-    end
-
-    it "does not try displaying the /info.txt file if it does not exist" do
-      expect(File).to receive(:exist?).with("/info.txt").and_return(false)
-      expect(Yast::InstShowInfo).to_not receive(:show_info_txt)
-      expect(Yast::CWM).to receive(:show).and_return(:next)
-
-      subject.run
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/test/lib/widgets/hiding_place_test.rb 
new/yast2-installation-3.2.38/test/lib/widgets/hiding_place_test.rb
--- old/yast2-installation-3.2.37/test/lib/widgets/hiding_place_test.rb 
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-installation-3.2.38/test/lib/widgets/hiding_place_test.rb 
2017-05-04 15:58:44.793375667 +0200
@@ -0,0 +1,52 @@
+#!/usr/bin/env rspec
+
+require_relative "../../test_helper"
+require "installation/widgets/hiding_place"
+
+describe ::Installation::Widgets::HidingPlace do
+  subject(:place) { ::Installation::Widgets::HidingPlace.new(widget) }
+  let(:widget) { DummyWidget.new }
+
+  class DummyWidget < CWM::InputField
+    def label
+      "Label"
+    end
+
+    def init
+      @value = "current"
+    end
+
+    attr_accessor :value
+  end
+
+  describe "#show" do
+    it "shows the widget" do
+      expect(place).to receive(:replace).with(widget)
+      place.show
+    end
+
+    it "restores the previous value" do
+      widget.value = "updated"
+      place.hide
+      place.show
+      expect(widget.value).to eq("updated")
+    end
+  end
+
+  describe "#hide" do
+    it "hides the widget" do
+      expect(place).to receive(:replace).with(CWM::Empty)
+      place.hide
+    end
+  end
+
+  describe "#store" do
+    it "restores the previous value" do
+      widget.value = "original"
+      place.store
+      widget.value = "forced"
+      place.show
+      expect(widget.value).to eq("original")
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/test/lib/widgets/system_role_reader_test.rb 
new/yast2-installation-3.2.38/test/lib/widgets/system_role_reader_test.rb
--- old/yast2-installation-3.2.37/test/lib/widgets/system_role_reader_test.rb   
2017-04-07 14:59:25.142466244 +0200
+++ new/yast2-installation-3.2.38/test/lib/widgets/system_role_reader_test.rb   
2017-05-04 15:58:44.793375667 +0200
@@ -1,7 +1,7 @@
 #!/usr/bin/env rspec
 
 require_relative "../../test_helper"
-require "installation/widgets/system_role"
+require "installation/widgets/system_role_reader"
 
 describe ::Installation::Widgets::SystemRoleReader do
   class DummySystemRoleReader
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/test/lib/widgets/system_roles_radio_buttons_test.rb
 
new/yast2-installation-3.2.38/test/lib/widgets/system_roles_radio_buttons_test.rb
--- 
old/yast2-installation-3.2.37/test/lib/widgets/system_roles_radio_buttons_test.rb
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/yast2-installation-3.2.38/test/lib/widgets/system_roles_radio_buttons_test.rb
   2017-05-04 15:58:44.793375667 +0200
@@ -0,0 +1,35 @@
+#!/usr/bin/env rspec
+
+require_relative "../../test_helper"
+require "installation/widgets/system_roles_radio_buttons"
+
+describe Installation::Widgets::SystemRolesRadioButtons do
+  subject(:widget) { Installation::Widgets::SystemRolesRadioButtons.new }
+
+  describe "#store" do
+    before do
+      allow(widget).to receive(:value).and_return(value)
+      allow(widget).to receive(:store_orig)
+    end
+
+    context "when value is custom" do
+      let(:value) { "custom" }
+
+      it "do not set any default desktop" do
+        expect(Installation::CustomPatterns).to receive(:show=).with(true)
+        expect(Yast::DefaultDesktop).to receive(:SetDesktop).with(nil)
+        widget.store
+      end
+    end
+
+    context "when value is not custom" do
+      let(:value) { "server" }
+
+      it "resets default desktop" do
+        expect(Installation::CustomPatterns).to receive(:show=).with(false)
+        expect(Yast::DefaultDesktop).to receive(:ForceReinit)
+        widget.store
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/test/widgets_overview_test.rb 
new/yast2-installation-3.2.38/test/widgets_overview_test.rb
--- old/yast2-installation-3.2.37/test/widgets_overview_test.rb 2017-04-07 
14:59:25.146466244 +0200
+++ new/yast2-installation-3.2.38/test/widgets_overview_test.rb 1970-01-01 
01:00:00.000000000 +0100
@@ -1,128 +0,0 @@
-#! /usr/bin/env rspec
-
-require_relative "test_helper"
-
-require "installation/widgets/overview"
-
-# TODO: these shared examples will soon be available in yast2.rpm
-# and then we can just `require "cwm/rspec"`
-RSpec.shared_examples "CWM::AbstractWidget" do
-  context "these methods are only tested if they exist" do
-    describe "#label" do
-      it "produces a String" do
-        next unless subject.respond_to?(:label)
-        expect(subject.label).to be_a String
-      end
-    end
-
-    describe "#help" do
-      it "produces a String" do
-        next unless subject.respond_to?(:help)
-        expect(subject.help).to be_a String
-      end
-    end
-
-    describe "#opt" do
-      it "produces Symbols" do
-        next unless subject.respond_to?(:opt)
-        expect(subject.opt).to be_an Enumerable
-        subject.opt.each do |o|
-          expect(o).to be_a Symbol
-        end
-      end
-    end
-
-    describe "#handle" do
-      it "produces a Symbol or nil" do
-        next unless subject.respond_to?(:handle)
-        m = subject.method(:handle)
-        args = m.arity == 0 ? [] : [:dummy_event]
-        expect(subject.handle(* args)).to be_a(Symbol).or be_nil
-      end
-    end
-
-    describe "#validate" do
-      it "produces a Boolean (or nil)" do
-        next unless subject.respond_to?(:validate)
-        expect(subject.validate).to be(true).or be(false).or be_nil
-      end
-    end
-  end
-end
-
-RSpec.shared_examples "CWM::CustomWidget" do
-  include_examples "CWM::AbstractWidget"
-  describe "#contents" do
-    it "produces a Term" do
-      expect(subject.contents).to be_a Yast::Term
-    end
-  end
-end
-
-describe ::Installation::Widgets::Overview do
-  subject { ::Installation::Widgets::Overview.new(client: "adventure") }
-  let(:description) do
-    {
-      "menu_title" => "An Unexpected Journey"
-    }
-  end
-  let(:proposal) do
-    {
-      "label_proposal" => ["Walk to the Lonely Mountain", "Take Gold and 
Reign"]
-    }
-  end
-  let(:proposal_oops) do
-    {
-      "label_proposal" => ["Walk to the Lonely Mountain", "Take Gold and 
Reign"],
-      "warning"        => "Dragon guarding the gold, no thief in your party",
-      "warning_level"  => :fatal
-    }
-  end
-
-  before do
-    allow(Yast::WFM).to receive(:CallFunction)
-      .with("adventure", ["Description", {}])
-      .and_return(description)
-    allow(Yast::WFM).to receive(:CallFunction)
-      .with("adventure", ["MakeProposal", { "simple_mode" => true }])
-      .and_return(proposal)
-    allow(Yast::WFM).to receive(:CallFunction)
-      .with("adventure", ["AskUser", {}])
-  end
-
-  include_examples "CWM::CustomWidget"
-  context "when there is a problem" do
-    before do
-      allow(Yast::WFM).to receive(:CallFunction)
-        .with("adventure", ["MakeProposal", { "simple_mode" => true }])
-        .and_return(proposal_oops)
-    end
-
-    describe "#validate" do
-      it "returns false" do
-        subject.contents
-        expect(subject.validate).to be false
-      end
-    end
-  end
-
-  context "when there is a problem and the user corrects it" do
-    before do
-      allow(Yast::WFM).to receive(:CallFunction)
-        .with("adventure", ["MakeProposal", { "simple_mode" => true }])
-        .and_return(proposal_oops, proposal)
-    end
-
-    describe "#validate" do
-      it "first returns false, then returns true" do
-        subject.contents
-        expect(subject.validate).to be false
-
-        subject.handle(:hire_mr_baggins)
-
-        subject.contents
-        expect(subject.validate).to be true
-      end
-    end
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-installation-3.2.37/test/widgets_system_role_test.rb 
new/yast2-installation-3.2.38/test/widgets_system_role_test.rb
--- old/yast2-installation-3.2.37/test/widgets_system_role_test.rb      
2017-04-07 14:59:25.146466244 +0200
+++ new/yast2-installation-3.2.38/test/widgets_system_role_test.rb      
1970-01-01 01:00:00.000000000 +0100
@@ -1,62 +0,0 @@
-#! /usr/bin/env rspec
-
-require_relative "test_helper"
-
-require "installation/widgets/system_role"
-
-describe ::Installation::Widgets::ControllerNode do
-  let(:worker_role) { ::Installation::SystemRole.new(id: "worker_role") }
-
-  before do
-    allow(subject).to receive(:role).and_return(worker_role)
-  end
-
-  it "has label" do
-    expect(subject.label).to_not be_empty
-  end
-
-  context "initialization" do
-    it "is initialized with the previously stored value if present" do
-      worker_role["controller_node"] = "previous_location"
-
-      expect(subject).to receive(:value=).with("previous_location")
-
-      subject.init
-    end
-  end
-
-  context "store" do
-    it "stores current value" do
-      expect(subject).to receive(:value).and_return("value_to_store")
-
-      expect(worker_role).to receive("[]=").with("controller_node", 
"value_to_store")
-
-      subject.store
-    end
-  end
-
-  context "validation" do
-    it "reports an error if the current value is not a valid IP or FQDN and 
returns false" do
-      allow(Yast::IP).to receive(:Check).and_return(false)
-      allow(Yast::Hostname).to receive(:CheckFQ).and_return(false)
-      expect(Yast::Popup).to receive(:Error)
-
-      expect(subject.validate).to eql(false)
-    end
-
-    it "returns true if the current value is a valid IP" do
-      allow(Yast::IP).to receive(:Check).and_return(true)
-      allow(Yast::Hostname).to receive(:CheckFQ).and_return(false)
-
-      expect(subject.validate).to eql(true)
-    end
-
-    it "returns true if the current value is a valid FQDN" do
-      allow(Yast::IP).to receive(:Check).and_return(false)
-      allow(Yast::Hostname).to receive(:CheckFQ).and_return(true)
-
-      expect(subject.validate).to eql(true)
-    end
-  end
-
-end


Reply via email to