Hello community,

here is the log from the commit of package yast2-services-manager for 
openSUSE:Factory checked in at 2020-07-01 14:26:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-services-manager (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-services-manager.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-services-manager"

Wed Jul  1 14:26:08 2020 rev:53 rq:817913 version:4.3.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/yast2-services-manager/yast2-services-manager.changes
    2020-05-15 23:50:43.989361060 +0200
+++ 
/work/SRC/openSUSE:Factory/.yast2-services-manager.new.3060/yast2-services-manager.changes
  2020-07-01 14:26:16.210688524 +0200
@@ -1,0 +2,8 @@
+Tue Jun 30 11:48:27 UTC 2020 - Imobach Gonzalez Sosa <[email protected]>
+
+- Honor the 'target' argument when cloning the system. If it is
+  set to 'compact', it only exports those services which start
+  mode is not set to their predefined values (bsc#1172749).
+- 4.3.1
+
+-------------------------------------------------------------------

Old:
----
  yast2-services-manager-4.3.0.tar.bz2

New:
----
  yast2-services-manager-4.3.1.tar.bz2

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

Other differences:
------------------
++++++ yast2-services-manager.spec ++++++
--- /var/tmp/diff_new_pack.hohsoQ/_old  2020-07-01 14:26:17.310691936 +0200
+++ /var/tmp/diff_new_pack.hohsoQ/_new  2020-07-01 14:26:17.314691948 +0200
@@ -24,7 +24,7 @@
 ######################################################################
 
 Name:           yast2-services-manager
-Version:        4.3.0
+Version:        4.3.1
 Release:        0
 Summary:        YaST2 - Services Manager
 License:        GPL-2.0-or-later
@@ -35,8 +35,8 @@
 
 BuildRequires:  ruby
 BuildRequires:  update-desktop-files
-# Yast2::Firewalld::Interface#zone returns a Zone object
-BuildRequires:  yast2 >= 4.1.17
+# 'target' argument for Installation::AutoClient#export method
+BuildRequires:  yast2 >= 4.3.10
 BuildRequires:  yast2-ruby-bindings >= 1.2.0
 # To show service logs
 BuildRequires:  yast2-journal >= 4.1.1
@@ -46,8 +46,8 @@
 BuildRequires:  rubygem(%{rb_default_ruby_abi}:yast-rake) >= 0.1.7
 
 Requires:       ruby
-# Yast2::Firewalld::Interface#zone returns a Zone object
-Requires:       yast2 >= 4.1.17
+ # 'target' argument for Installation::AutoClient#export method
+Requires:       yast2 >= 4.3.10
 Requires:       yast2-ruby-bindings >= 1.2.0
 
 # To show service logs

++++++ yast2-services-manager-4.3.0.tar.bz2 -> 
yast2-services-manager-4.3.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-services-manager-4.3.0/package/yast2-services-manager.changes 
new/yast2-services-manager-4.3.1/package/yast2-services-manager.changes
--- old/yast2-services-manager-4.3.0/package/yast2-services-manager.changes     
2020-05-12 18:02:09.000000000 +0200
+++ new/yast2-services-manager-4.3.1/package/yast2-services-manager.changes     
2020-06-30 17:16:09.000000000 +0200
@@ -1,4 +1,12 @@
 -------------------------------------------------------------------
+Tue Jun 30 11:48:27 UTC 2020 - Imobach Gonzalez Sosa <[email protected]>
+
+- Honor the 'target' argument when cloning the system. If it is
+  set to 'compact', it only exports those services which start
+  mode is not set to their predefined values (bsc#1172749).
+- 4.3.1
+
+-------------------------------------------------------------------
 Tue May 12 15:32:28 UTC 2020 - josef Reidinger <jreidinger@localhost>
 
 - Autoyast schema: Allow optional types for string and map objects
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-services-manager-4.3.0/package/yast2-services-manager.spec 
new/yast2-services-manager-4.3.1/package/yast2-services-manager.spec
--- old/yast2-services-manager-4.3.0/package/yast2-services-manager.spec        
2020-05-12 18:02:09.000000000 +0200
+++ new/yast2-services-manager-4.3.1/package/yast2-services-manager.spec        
2020-06-30 17:16:09.000000000 +0200
@@ -24,7 +24,7 @@
 ######################################################################
 
 Name:           yast2-services-manager
-Version:        4.3.0
+Version:        4.3.1
 Release:        0
 Summary:        YaST2 - Services Manager
 Group:          System/YaST
@@ -35,8 +35,8 @@
 
 BuildRequires:  ruby
 BuildRequires:  update-desktop-files
-# Yast2::Firewalld::Interface#zone returns a Zone object
-BuildRequires:  yast2 >= 4.1.17
+# 'target' argument for Installation::AutoClient#export method
+BuildRequires:  yast2 >= 4.3.10
 BuildRequires:  yast2-ruby-bindings >= 1.2.0
 # To show service logs
 BuildRequires:  yast2-journal >= 4.1.1
@@ -46,8 +46,8 @@
 BuildRequires:  yast2-devtools >= 4.2.2
 
 Requires:       ruby
-# Yast2::Firewalld::Interface#zone returns a Zone object
-Requires:       yast2 >= 4.1.17
+ # 'target' argument for Installation::AutoClient#export method
+Requires:       yast2 >= 4.3.10
 Requires:       yast2-ruby-bindings >= 1.2.0
 
 # To show service logs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-services-manager-4.3.0/src/lib/services-manager/clients/auto.rb 
new/yast2-services-manager-4.3.1/src/lib/services-manager/clients/auto.rb
--- old/yast2-services-manager-4.3.0/src/lib/services-manager/clients/auto.rb   
2020-05-12 18:02:09.000000000 +0200
+++ new/yast2-services-manager-4.3.1/src/lib/services-manager/clients/auto.rb   
2020-06-30 17:16:09.000000000 +0200
@@ -46,8 +46,8 @@
       end
 
       # @see ::Installation::AutoClient#export
-      def export
-        Yast::ServicesManager.export
+      def export(target: :default)
+        Yast::ServicesManager.export(target: target)
       end
 
       # @see ::Installation::AutoClient#read
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-services-manager-4.3.0/src/modules/services_manager.rb 
new/yast2-services-manager-4.3.1/src/modules/services_manager.rb
--- old/yast2-services-manager-4.3.0/src/modules/services_manager.rb    
2020-05-12 18:02:09.000000000 +0200
+++ new/yast2-services-manager-4.3.1/src/modules/services_manager.rb    
2020-06-30 17:16:09.000000000 +0200
@@ -29,10 +29,13 @@
       textdomain 'services-manager'
     end
 
-    def export
+    # @param target [Symbol] Control how much information should be exported
+    #   (e.g., :default or :compact).
+    # @return [Hash] profile data
+    def export(target: :default)
       {
         TARGET   => ServicesManagerTarget.export,
-        SERVICES => ServicesManagerService.export
+        SERVICES => ServicesManagerService.export(target: target)
       }
     end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-services-manager-4.3.0/src/modules/services_manager_service.rb 
new/yast2-services-manager-4.3.1/src/modules/services_manager_service.rb
--- old/yast2-services-manager-4.3.0/src/modules/services_manager_service.rb    
2020-05-12 18:02:09.000000000 +0200
+++ new/yast2-services-manager-4.3.1/src/modules/services_manager_service.rb    
2020-06-30 17:16:09.000000000 +0200
@@ -111,7 +111,7 @@
     # @param key [Symbol] value that has been changed (:active and :start_mode)
     # @return [Boolean] true if the key has changed
     def changed_value?(name, key)
-      exists?(name) { |s| s.changed?(:active) }
+      exists?(name) { |s| s.changed?(key) }
     end
 
     # Returns whether the given service has been enabled
@@ -206,16 +206,37 @@
     #
     # FIXME: should be checked (and decided what to do if so) if service is 
marked to be exported as
     # both, enabled or disabled
-    # @return [Hash{String => Array<String>}]
-    def export
-      on_boot_srvs = exportable_on_boot_services | 
ServicesProposal.enabled_services
-      on_demand_srvs = exportable_on_demand_services
-      disabled_srvs = exportable_disabled_services | 
ServicesProposal.disabled_services
+    #
+    # @param target [Symbol] Control how much information should be exported
+    #   (e.g., :default or :compact).
+    # @return [Hash{String => Array<String>}] profile data
+    def export(target: :default)
+      exportable_services = select_exportable_services(target == :compact)
+
+      on_boot_srvs = exportable_on_boot_services(exportable_services)
+      on_demand_srvs = exportable_on_demand_services(exportable_services)
+      disabled_srvs = exportable_disabled_services(exportable_services)
 
       log.info "Exported services: on boot: #{on_boot_srvs}; on-demand: 
#{on_demand_srvs}; " \
         "disabled: #{disabled_srvs}"
 
-      { "enable" => on_boot_srvs, "on_demand" => on_demand_srvs, "disable" => 
disabled_srvs }
+      exported = {
+        "enable" => on_boot_srvs, "on_demand" => on_demand_srvs, "disable" => 
disabled_srvs
+      }
+      exported.reject { |_k, v| v.empty? }
+    end
+
+    # Selects which services should be exported
+    #
+    # @param changed_preset [Boolean] Consider only those services which start 
mode is not the preset
+    # @return [Hash{String => Array<String>}] profile data
+    def select_exportable_services(changed_preset)
+      exportable_services = services.keys
+      return exportable_services unless changed_preset
+
+      exportable_services.reject! do |name|
+        exists?(name, &:default_start_mode?)
+      end
     end
 
     # Import services from AutoYast profile
@@ -460,16 +481,19 @@
 
     # Selects candidate services to be exported as enabled to AutoYast profile
     #
-    # @return [Array<String>]
-    def exportable_on_boot_services
-      services.select { |n, _| start_mode(n) == :on_boot }.keys
+    # @param srvs [Array<String>] Exportable services names
+    # @return [Array<String>] Service names
+    def exportable_on_boot_services(srvs)
+      service_names = srvs.select { |s| start_mode(s) == :on_boot }
+      service_names | ServicesProposal.enabled_services
     end
 
     # Selects candidate services to be exported as enabled on-demand to 
AutoYast profile
     #
-    # @return [Array<String>]
-    def exportable_on_demand_services
-      services.select { |n, _| start_mode(n) == :on_demand }.keys
+    # @param srvs [Array<String>] Exportable services names
+    # @return [Array<String>] Service names
+    def exportable_on_demand_services(srvs)
+      srvs.select { |s| start_mode(s) == :on_demand }
     end
 
     # Selects candidate services to be exported as disabled to AutoYast profile
@@ -477,9 +501,11 @@
     # Untouched services are discarded; only services modified by the user to 
be disabled must be
     # exported to AutoYast profile.
     #
-    # @return [Array<String>]
-    def exportable_disabled_services
-      services.select { |n, s| s.changed? && !enabled(n) }.keys
+    # @param srvs [Array<String>] Exportable services names
+    # @return [Array<String>] Service names
+    def exportable_disabled_services(srvs)
+      service_names = srvs.select { |s| !enabled(s) && changed_value?(s, 
:start_mode) }
+      service_names | ServicesProposal.disabled_services
     end
 
     # Enable or disable given services according to its status
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-services-manager-4.3.0/test/services_manager_service_test.rb 
new/yast2-services-manager-4.3.1/test/services_manager_service_test.rb
--- old/yast2-services-manager-4.3.0/test/services_manager_service_test.rb      
2020-05-12 18:02:09.000000000 +0200
+++ new/yast2-services-manager-4.3.1/test/services_manager_service_test.rb      
2020-06-30 17:16:09.000000000 +0200
@@ -33,7 +33,7 @@
       Yast2::SystemService, name: "cups", description: "CUPS", start: true, 
stop: true,
       state: "active", substate: "running", changed?: false, start_mode: 
:on_boot,
       save: nil, refresh: nil, errors: {}, found?: true, action: nil,
-      keywords: ["cups.service", "cups.socket"]
+      keywords: ["cups.service", "cups.socket"], default_start_mode?: false
     )
   end
 
@@ -41,12 +41,20 @@
     instance_double(
       Yast2::SystemService, name: "dbus", changed?: true, start_mode: nil, 
active?: true,
       running?: true, refresh: nil, save: nil, errors: {}, found?: true, 
action: nil,
-      keywords: ["dbus.service"]
+      keywords: ["dbus.service"], default_start_mode?: false
+    )
+  end
+
+  let(:sshd) do
+    instance_double(
+      Yast2::SystemService, name: "sshd", changed?: false, start_mode: nil, 
active?: true,
+      running?: true, refresh: nil, save: nil, errors: {}, found?: true, 
action: nil,
+      keywords: ["sshd.service"], default_start_mode?: true
     )
   end
 
   let(:services) do
-    { "cups" => cups, "dbus" => dbus }
+    { "cups" => cups, "dbus" => dbus, "sshd" => sshd }
   end
 
   let(:loader) do
@@ -294,13 +302,27 @@
   end
 
   describe "#export" do
-    before do
-      allow(cups).to receive(:start_mode)
-      allow(dbus).to receive(:start_mode)
-    end
-
     let(:exported_services) { subject.export }
 
+    context "on compact mode" do
+      let(:exported_services) { subject.export(target: :compact) }
+
+      context "when all services are using the preset start mode" do
+        before do
+          allow(dbus).to receive(:default_start_mode?).and_return(true)
+          allow(cups).to receive(:default_start_mode?).and_return(true)
+        end
+
+        it "does not return any list" do
+          expect(exported_services).to eq({})
+        end
+      end
+
+      it "exports the service which start mode is not the preset" do
+        expect(exported_services).to include("enable" => ["cups"])
+      end
+    end
+
     context "when service is proposed to be started on boot" do
       before do
         allow(Yast::ServicesProposal).to 
receive(:enabled_services).and_return(["sshd"])
@@ -320,7 +342,6 @@
         exported = subject.export
         expect(exported["on_demand"]).to include("dbus")
         expect(exported["enable"]).to_not include("dbus")
-        expect(exported["disable"]).to_not include("dbus")
       end
     end
 
@@ -345,8 +366,8 @@
         end
 
         it "exports the service as disabled" do
-          expect(exported_services["enable"]).to_not include("cups")
           expect(exported_services["disable"]).to include("cups")
+          expect(exported_services["enable"]).to be_nil
         end
       end
 
@@ -357,7 +378,7 @@
 
         it "exports the service as enable" do
           expect(exported_services["enable"]).to include("cups")
-          expect(exported_services["disable"]).to_not include("cups")
+          expect(exported_services["disable"]).to be_nil
         end
       end
 
@@ -368,8 +389,8 @@
 
         it "exports the service to be started on demand" do
           expect(exported_services["on_demand"]).to include("cups")
-          expect(exported_services["enable"]).to_not include("cups")
-          expect(exported_services["disable"]).to_not include("cups")
+          expect(exported_services["enable"]).to be_nil
+          expect(exported_services["disable"]).to be_nil
         end
       end
 


Reply via email to