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
+
+- 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
+
+- 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
- 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