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


Reply via email to