Hello community, here is the log from the commit of package yast2-ftp-server for openSUSE:Factory checked in at 2018-08-12 20:52:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-ftp-server (Old) and /work/SRC/openSUSE:Factory/.yast2-ftp-server.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-ftp-server" Sun Aug 12 20:52:18 2018 rev:64 rq:628377 version:4.1.3 Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-ftp-server/yast2-ftp-server.changes 2018-07-03 23:34:08.788426396 +0200 +++ /work/SRC/openSUSE:Factory/.yast2-ftp-server.new/yast2-ftp-server.changes 2018-08-12 20:52:20.913099074 +0200 @@ -1,0 +2,7 @@ +Wed Aug 8 13:35:09 UTC 2018 - jlo...@suse.com + +- Use new Yast2::ServiceWidget to manage the service status + (part of fate#319428). +- 4.1.3 + +------------------------------------------------------------------- Old: ---- yast2-ftp-server-4.1.2.tar.bz2 New: ---- yast2-ftp-server-4.1.3.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-ftp-server.spec ++++++ --- /var/tmp/diff_new_pack.6mRy8I/_old 2018-08-12 20:52:21.233099723 +0200 +++ /var/tmp/diff_new_pack.6mRy8I/_new 2018-08-12 20:52:21.233099723 +0200 @@ -17,17 +17,17 @@ Name: yast2-ftp-server -Version: 4.1.2 +Version: 4.1.3 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: %{name}-%{version}.tar.bz2 -# Replace xinetd by systemd socket activation (fate#323373) -Requires: yast2 >= 4.0.50 +# CWM::ServiceWidget +Requires: yast2 >= 4.1.0 BuildRequires: update-desktop-files -# Replace xinetd by systemd socket activation (fate#323373) -BuildRequires: yast2 >= 4.0.50 +# CWM::ServiceWidget +BuildRequires: yast2 >= 4.1.0 BuildRequires: yast2-devtools >= 3.1.10 BuildRequires: rubygem(%rb_default_ruby_abi:rspec) BuildRequires: rubygem(%rb_default_ruby_abi:yast-rake) ++++++ yast2-ftp-server-4.1.2.tar.bz2 -> yast2-ftp-server-4.1.3.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ftp-server-4.1.2/package/yast2-ftp-server.changes new/yast2-ftp-server-4.1.3/package/yast2-ftp-server.changes --- old/yast2-ftp-server-4.1.2/package/yast2-ftp-server.changes 2018-07-02 16:34:04.000000000 +0200 +++ new/yast2-ftp-server-4.1.3/package/yast2-ftp-server.changes 2018-08-09 12:28:27.000000000 +0200 @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Wed Aug 8 13:35:09 UTC 2018 - jlo...@suse.com + +- Use new Yast2::ServiceWidget to manage the service status + (part of fate#319428). +- 4.1.3 + +------------------------------------------------------------------- Thu Jun 28 14:53:32 CEST 2018 - sch...@suse.de - Added additional searchkeys to desktop file (fate#321043). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ftp-server-4.1.2/package/yast2-ftp-server.spec new/yast2-ftp-server-4.1.3/package/yast2-ftp-server.spec --- old/yast2-ftp-server-4.1.2/package/yast2-ftp-server.spec 2018-07-02 16:34:04.000000000 +0200 +++ new/yast2-ftp-server-4.1.3/package/yast2-ftp-server.spec 2018-08-09 12:28:27.000000000 +0200 @@ -17,17 +17,17 @@ Name: yast2-ftp-server -Version: 4.1.2 +Version: 4.1.3 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build Source0: %{name}-%{version}.tar.bz2 -# Replace xinetd by systemd socket activation (fate#323373) -Requires: yast2 >= 4.0.50 +# CWM::ServiceWidget +Requires: yast2 >= 4.1.0 BuildRequires: update-desktop-files -# Replace xinetd by systemd socket activation (fate#323373) -BuildRequires: yast2 >= 4.0.50 +# CWM::ServiceWidget +BuildRequires: yast2 >= 4.1.0 BuildRequires: yast2-devtools >= 3.1.10 BuildRequires: rubygem(%rb_default_ruby_abi:rspec) BuildRequires: rubygem(%rb_default_ruby_abi:yast-rake) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ftp-server-4.1.2/src/include/ftp-server/dialogs.rb new/yast2-ftp-server-4.1.3/src/include/ftp-server/dialogs.rb --- old/yast2-ftp-server-4.1.2/src/include/ftp-server/dialogs.rb 2018-07-02 16:34:04.000000000 +0200 +++ new/yast2-ftp-server-4.1.3/src/include/ftp-server/dialogs.rb 2018-08-09 12:28:27.000000000 +0200 @@ -6,6 +6,9 @@ # Authors: Jozef Uhliarik <juhlia...@suse.cz> # # $Id: dialogs.ycp 27914 2006-02-13 14:32:08Z juhliarik $ + +require "cwm/service_widget" + module Yast module FtpServerDialogsInclude def initialize_ftp_server_dialogs(include_target) @@ -13,8 +16,6 @@ textdomain "ftp-server" - Yast.import "CWM" - Yast.import "CWMServiceStart" Yast.import "DialogTree" Yast.import "Label" Yast.import "Wizard" @@ -26,15 +27,20 @@ Yast.include include_target, "ftp-server/wid_functions.rb" end + # Widget to define state and start mode of the service + # + # @return [::CWM::ServiceWidget] + def service_widget + @service_widget ||= ::CWM::ServiceWidget.new(FtpServer.service) + end + # map for description of widget later in CWNTree # widget_descr (vsftpd) # # @return [Hash{String,map<String => Object>}] def wid_handling_vsftpd @wid_handling_vsftpd ||= { - "StartMode" => CWMServiceStart.CreateAutoStartWidget(StartMode()), - "StartStop" => CWMServiceStart.CreateStartStopWidget(StartStop()), - "StartStopRestart" => StartStopRestart(), + "service_widget" => service_widget.cwm_definition, "Banner" => Banner(), "ChrootEnable" => ChrootEnable(), "VerboseLogging" => VerboseLogging(), @@ -60,9 +66,7 @@ "TLS" => TLS(), "CertFile" => CertFile(), "BrowseCertFile" => BrowseCertFile(), - "Firewall" => CWMFirewallInterfaces.CreateOpenFirewallWidget( - FirewallSettingsVs() - ) + "Firewall" => CWMFirewallInterfaces.CreateOpenFirewallWidget(FirewallSettingsVs()) } end @@ -104,111 +108,6 @@ end end - # Init function where are added UI hadle functions - # Start widget (vsftpd) - # - # @return [Hash{String => Object}] map for start-up widget - - def StartMode - result = {} - Ops.set( - result, - "get_service_auto_start", - fun_ref(method(:GetEnableService), "boolean ()") - ) - Ops.set( - result, - "set_service_auto_start", - fun_ref(method(:SetEnableService), "void (boolean)") - ) - Ops.set( - result, - "get_service_start_via_socket", - fun_ref(method(:"started_via_socket?"), "boolean ()") - ) - Ops.set( - result, - "set_service_start_via_socket", - fun_ref(method(:"start_via_socket="), "void (boolean)") - ) - Ops.set( - result, - "help", - CWMServiceStart.AutoStartSocketHelp - ) - - deep_copy(result) - end - - # Init function where are added UI hadle functions - # Start widget - # - # @return [Hash{String => Object}] map for start-stop widget - - def StartStop - result = {} - Ops.set(result, "service_id", "vsftpd") - Ops.set(result, "service_running_label", _("FTP is running")) - Ops.set(result, "service_not_running_label", _("FTP is not running")) - Ops.set(result, "start_now_button", _("&Start FTP Now")) - Ops.set(result, "stop_now_button", _("S&top FTP Now")) - Ops.set( - result, - "save_now_action", - fun_ref(method(:SaveAndRestartVsftpd), "boolean ()") - ) - Ops.set( - result, - "save_now_button", - _("Sa&ve Settings and Restart FTP Now") - ) - Ops.set( - result, - "start_now_action", - fun_ref(method(:StartNowVsftpd), "boolean ()") - ) - Ops.set( - result, - "stop_now_action", - fun_ref(method(:StopNowVsftpd), "boolean ()") - ) - Ops.set( - result, - "help", - Builtins.sformat( - CWMServiceStart.StartStopHelpTemplate(true), - # part of help text - push button label, NO SHORTCUT!!! - _("Start FTP Daemon Now"), - # part of help text - push button label, NO SHORTCUT!!! - _("Stop FTP Daemon Now"), - # part of help text - push button label, NO SHORTCUT!!! - _("Save Settings and Restart FTP Daemon Now") - ) - ) - - deep_copy(result) - end - - # Init function where are added UI hadle functions - # special hack widget where is handlig Start/Stop button - # - # @return [Hash{String => Object}] map for start-stop widget - - def StartStopRestart - result = {} - - Ops.set(result, "widget", :custom) - Ops.set(result, "custom_widget", Empty()) - Ops.set( - result, - "init", - fun_ref(method(:InitStartStopRestart), "void (string)") - ) - Ops.set(result, "help", " ") - - deep_copy(result) - end - #-----------================= GENERAL SCREEN =============---------- # @@ -1014,38 +913,16 @@ end #-----------================= SCREENS OF FTP_SERVER =============---------- - # - # Init function where are added UI hadle functions - # Start widget - # define for tabs_vsftpd necessary later in screens (CWNTree) + # Widgets for "Start-Up" tree item # # @return [Hash{String => Object}] map for start_up widget def start_up - result = {} - - Ops.set( - result, - "contents", - VBox( - "StartMode", - VSpacing(1), - # disabling start/stop buttons when it doesn't make sense - Mode.normal ? "StartStop" : Empty(), - VStretch() - ) - ) - # TRANSLATORS: part of dialog caption - Ops.set(result, "caption", _("FTP Start-up")) - # TRANSLATORS: tree menu item - Ops.set(result, "tree_item_label", _("Start-Up")) - Ops.set( - result, - "widget_names", - ["StartMode", "StartStop", "StartStopRestart"] - ) - - deep_copy(result) + { + "tree_item_label" => _("Start-Up"), + "contents" => VBox("service_widget", VStretch()), + "widget_names" => ["service_widget"] + } end # Init function where are added UI hadle functions diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ftp-server-4.1.2/src/include/ftp-server/wid_functions.rb new/yast2-ftp-server-4.1.3/src/include/ftp-server/wid_functions.rb --- old/yast2-ftp-server-4.1.2/src/include/ftp-server/wid_functions.rb 2018-07-02 16:34:04.000000000 +0200 +++ new/yast2-ftp-server-4.1.3/src/include/ftp-server/wid_functions.rb 2018-08-09 12:28:27.000000000 +0200 @@ -60,6 +60,8 @@ FtpServer.EDIT_SETTINGS["StartDaemon"] == "2" end + # @deprecated + # # CWMServiceStart function with one boolean parameter # returning boolean value that says if the service will be started at boot. def start_via_socket=(enable_service) @@ -83,6 +85,8 @@ nil end + # @deprecated + # # Function start vsftpd def StartNowVsftpd UpdateInfoAboutStartingFTP() @@ -104,6 +108,8 @@ true end + # @deprecated + # # Function stop vsftpd def StopNowVsftpd if FtpServer.start_via_socket? @@ -116,6 +122,8 @@ true end + # @deprecated + # # Function saves configuration and restarts vsftpd def SaveAndRestartVsftpd StopNowVsftpd() @@ -125,30 +133,6 @@ result end - # Init function for start-up - # - # init starting via socket and update status - def InitStartStopRestart(_key = nil) - log.info "current status socket: #{FtpServer.start_via_socket?} service: #{Service.active?("vsftpd")}" - if FtpServer.start_via_socket? || Service.active?("vsftpd") - UI.ReplaceWidget( - Id("_cwm_service_status_rp"), - Label(_("FTP is running")) - ) - UI.ChangeWidget(Id("_cwm_start_service_now"), :Enabled, false) - UI.ChangeWidget(Id("_cwm_stop_service_now"), :Enabled, true) - else - UI.ReplaceWidget( - Id("_cwm_service_status_rp"), - Label(_("FTP is not running")) - ) - UI.ChangeWidget(Id("_cwm_start_service_now"), :Enabled, true) - UI.ChangeWidget(Id("_cwm_stop_service_now"), :Enabled, false) - end - - nil - end - #-----------================= GENERAL SCREEN =============---------- # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ftp-server-4.1.2/src/modules/FtpServer.rb new/yast2-ftp-server-4.1.3/src/modules/FtpServer.rb --- old/yast2-ftp-server-4.1.2/src/modules/FtpServer.rb 2018-07-02 16:34:04.000000000 +0200 +++ new/yast2-ftp-server-4.1.3/src/modules/FtpServer.rb 2018-08-09 12:28:27.000000000 +0200 @@ -1,7 +1,7 @@ # encoding: utf-8 require "yast" - +require "yast2/system_service" require "y2firewall/firewalld" module Yast @@ -159,6 +159,10 @@ @write_only = false end + def service + @service ||= Yast2::SystemService.find("vsftpd") + end + def firewalld @firewalld ||= Y2Firewall::Firewalld.instance end @@ -674,7 +678,8 @@ end # Write all FtpServer settings - # @return true on success + # + # @return [Boolean] true on success; false otherwise def Write # FtpServer read dialog caption caption = _("Saving FTP Configuration") @@ -717,13 +722,31 @@ Builtins.sleep(@sl) return false if PollAbort() - write_daemon + + result = save_status + # Progress finished Progress.NextStage Builtins.sleep(@sl) return false if PollAbort() - true + + result + end + + # Saves service status (start mode and starts/stops the service) + # + # @note For AutoYaST and for command line actions, it uses the old way + # for backward compatibility, see {#write_daemon}. When the service + # is configured by using the UI, it directly saves the service, see + # Yast2::SystemService#save. + def save_status + if Mode.auto || Mode.commandline + write_daemon + true + else + service.save + end end # Get all FtpServer settings from the first parameter diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ftp-server-4.1.2/test/ftpserver_test.rb new/yast2-ftp-server-4.1.3/test/ftpserver_test.rb --- old/yast2-ftp-server-4.1.2/test/ftpserver_test.rb 2018-07-02 16:34:04.000000000 +0200 +++ new/yast2-ftp-server-4.1.3/test/ftpserver_test.rb 2018-08-09 12:28:27.000000000 +0200 @@ -94,4 +94,95 @@ end end end + + describe ".Write" do + subject(:ftp_server) { Yast::FtpServerClass.new } + + before do + allow(Yast::Progress).to receive(:New) + allow(Yast::Progress).to receive(:NextStage) + + allow(Yast::Builtins).to receive(:sleep) + + allow(Yast2::SystemService).to receive(:find).with("vsftpd").and_return(service) + + allow(Yast::Mode).to receive(:auto) { auto } + allow(Yast::Mode).to receive(:commandline) { commandline } + + allow(ftp_server).to receive(:PollAbort).and_return(false) + allow(ftp_server).to receive(:WriteSettings).and_return(true) + allow(ftp_server).to receive(:write_daemon) + + ftp_server.main + end + + let(:service) { instance_double(Yast2::SystemService, save: true) } + + let(:auto) { false } + let(:commandline) { false } + + shared_examples "old behavior" do + it "does not save the system service" do + expect(service).to_not receive(:save) + + ftp_server.Write + end + + it "calls to :write_daemon" do + expect(ftp_server).to receive(:write_daemon) + + ftp_server.Write + end + + it "returns true" do + expect(ftp_server.Write).to eq(true) + end + end + + context "when running in command line" do + let(:commandline) { true } + + include_examples "old behavior" + end + + context "when running in AutoYaST mode" do + let(:auto) { true } + + include_examples "old behavior" + end + + context "when running in normal mode" do + it "does not call to :write_daemon" do + expect(ftp_server).to_not receive(:write_daemon) + + ftp_server.Write + end + + it "saves the system service" do + expect(service).to receive(:save) + + ftp_server.Write + end + + context "and the service is correctly saved" do + before do + allow(service).to receive(:save).and_return(true) + end + + it "returns true" do + expect(ftp_server.Write).to eq(true) + end + end + + context "and the service is not correctly saved" do + before do + allow(service).to receive(:save).and_return(false) + end + + it "returns false" do + expect(ftp_server.Write).to eq(false) + end + end + end + end end