Hello community,
here is the log from the commit of package yast2-registration for
openSUSE:Factory checked in at 2018-04-26 13:29:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-registration (Old)
and /work/SRC/openSUSE:Factory/.yast2-registration.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-registration"
Thu Apr 26 13:29:11 2018 rev:17 rq:597320 version:4.0.34
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-registration/yast2-registration.changes
2018-04-07 20:51:52.697636936 +0200
+++
/work/SRC/openSUSE:Factory/.yast2-registration.new/yast2-registration.changes
2018-04-26 13:29:14.443405229 +0200
@@ -1,0 +2,20 @@
+Mon Apr 16 11:39:41 UTC 2018 - [email protected]
+
+- Reimplemented AutoYaST autoupgrade, use the same API and workflow
+ like in a manual upgrade (bsc#1087206)
+- 4.0.34
+
+-------------------------------------------------------------------
+Tue Apr 10 13:43:12 UTC 2018 - [email protected]
+
+- Select wanted release packages during SCC based offline
+ migration (bsc#1086818)
+- 4.0.33
+
+-------------------------------------------------------------------
+Mon Apr 9 09:47:09 UTC 2018 - [email protected]
+
+- do not build on 32-bit architectures (bsc#1088552)
+- 4.0.32
+
+-------------------------------------------------------------------
Old:
----
yast2-registration-4.0.31.tar.bz2
New:
----
yast2-registration-4.0.34.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-registration.spec ++++++
--- /var/tmp/diff_new_pack.onWoc6/_old 2018-04-26 13:29:14.983385451 +0200
+++ /var/tmp/diff_new_pack.onWoc6/_new 2018-04-26 13:29:14.987385305 +0200
@@ -17,7 +17,7 @@
Name: yast2-registration
-Version: 4.0.31
+Version: 4.0.34
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -58,6 +58,9 @@
BuildRequires: yast2-update >= 3.1.36
BuildArch: noarch
+# SUSEConnect does not build for i586 and s390 and is not supported on those
architectures
+# bsc#1088552
+ExcludeArch: %ix86 s390
# FIXME: it seems can we cannot move it to macros.yast, the yast-rake-ci is not
# installed into the chroot, the build fails...
++++++ yast2-registration-4.0.31.tar.bz2 -> yast2-registration-4.0.34.tar.bz2
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-registration-4.0.31/.travis.yml
new/yast2-registration-4.0.34/.travis.yml
--- old/yast2-registration-4.0.31/.travis.yml 2018-04-06 09:27:49.000000000
+0200
+++ new/yast2-registration-4.0.34/.travis.yml 2018-04-17 08:58:29.000000000
+0200
@@ -12,3 +12,4 @@
# the "yast-travis-ruby" script is included in the base yastdevel/ruby image
# see https://github.com/yast/docker-yast-ruby/blob/master/yast-travis-ruby
- docker run -it -e TRAVIS=1 -e TRAVIS_JOB_ID="$TRAVIS_JOB_ID"
yast-registration-image yast-travis-ruby
+ - docker run -it yast-registration-image rake check:doc
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-registration-4.0.31/package/yast2-registration.changes
new/yast2-registration-4.0.34/package/yast2-registration.changes
--- old/yast2-registration-4.0.31/package/yast2-registration.changes
2018-04-06 09:27:49.000000000 +0200
+++ new/yast2-registration-4.0.34/package/yast2-registration.changes
2018-04-17 08:58:29.000000000 +0200
@@ -1,4 +1,24 @@
-------------------------------------------------------------------
+Mon Apr 16 11:39:41 UTC 2018 - [email protected]
+
+- Reimplemented AutoYaST autoupgrade, use the same API and workflow
+ like in a manual upgrade (bsc#1087206)
+- 4.0.34
+
+-------------------------------------------------------------------
+Tue Apr 10 13:43:12 UTC 2018 - [email protected]
+
+- Select wanted release packages during SCC based offline
+ migration (bsc#1086818)
+- 4.0.33
+
+-------------------------------------------------------------------
+Mon Apr 9 09:47:09 UTC 2018 - [email protected]
+
+- do not build on 32-bit architectures (bsc#1088552)
+- 4.0.32
+
+-------------------------------------------------------------------
Thu Apr 5 16:36:49 UTC 2018 - [email protected]
- Given a license, remember whether another one with the same
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-registration-4.0.31/package/yast2-registration.spec
new/yast2-registration-4.0.34/package/yast2-registration.spec
--- old/yast2-registration-4.0.31/package/yast2-registration.spec
2018-04-06 09:27:49.000000000 +0200
+++ new/yast2-registration-4.0.34/package/yast2-registration.spec
2018-04-17 08:58:29.000000000 +0200
@@ -17,7 +17,7 @@
Name: yast2-registration
-Version: 4.0.31
+Version: 4.0.34
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -61,6 +61,9 @@
BuildRequires: yast2-update >= 3.1.36
BuildArch: noarch
+# SUSEConnect does not build for i586 and s390 and is not supported on those
architectures
+# bsc#1088552
+ExcludeArch: %ix86 s390
# FIXME: it seems can we cannot move it to macros.yast, the yast-rake-ci is not
# installed into the chroot, the build fails...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-registration-4.0.31/src/clients/scc_auto.rb
new/yast2-registration-4.0.34/src/clients/scc_auto.rb
--- old/yast2-registration-4.0.31/src/clients/scc_auto.rb 2018-04-06
09:27:49.000000000 +0200
+++ new/yast2-registration-4.0.34/src/clients/scc_auto.rb 2018-04-17
08:58:29.000000000 +0200
@@ -26,6 +26,7 @@
#
#
+require "fileutils"
require "yast/suse_connect"
require "registration/storage"
@@ -38,6 +39,7 @@
require "registration/ssl_certificate"
require "registration/url_helpers"
require "registration/ui/autoyast_config_workflow"
+require "registration/ui/offline_migration_workflow"
require "registration/erb_renderer.rb"
module Yast
@@ -187,9 +189,15 @@
# update the registration in AutoUpgrade mode if the old system was
registered
if Mode.update && old_system_registered?
- updated = update_registration
- log.info "Registration updated: #{updated}"
- return updated
+ # drop all obsolete repositories and services (manual upgrade contains
a dialog
+ # where the old repositories are deleted, in AY we need to do it
automatically here)
+ # Note: the Update module creates automatically a backup which is
restored
+ # when upgrade is aborted or crashes.
+ repo_cleanup
+
+ ret = ::Registration::UI::OfflineMigrationWorkflow.new.main
+ log.info "Migration result: #{ret}"
+ return ret == :next
end
ret = ::Registration::ConnectHelpers.catch_registration_errors do
@@ -204,6 +212,17 @@
true
end
+ # delete all previous services and repositories
+ def repo_cleanup
+ # we cannot use pkg-bindings here because loading services would trigger
+ # service and repository refresh which we want to avoid (it might easily
fail)
+ old = Dir[File.join(Installation.destdir, "/etc/zypp/repos.d/*")] +
+ Dir[File.join(Installation.destdir, "/etc/zypp/services.d/*")]
+
+ log.info "Removing #{old}"
+ ::FileUtils.rm_rf(old)
+ end
+
# finish the registration process
def finish_registration
# save the registered repositories
@@ -298,10 +317,8 @@
# update the registration (system, the base product, the installed
extensions)
def update_registration
return false unless update_system_registration
- return false unless update_base_product
- return false unless update_addons
- # register additional addons (e.g. originally not present in SLE11)
+ # register additional addons (e.g. originally not present in SLE11/SLE12)
register_addons
end
@@ -346,12 +363,6 @@
registration_ui.update_system
end
- # update the base product registration
- # @return [Boolean] true on success
- def update_base_product
- handle_product_service { registration_ui.update_base_product }
- end
-
# @yieldreturn [Boolean, SUSE::Connect::Remote::Product] success flag and
# remote product pair
# @return [Boolean] true on success
@@ -364,15 +375,6 @@
registration_ui.disable_update_repos(product_service)
end
-
- # @return [Boolean] true on success
- # FIXME: share with inst_scc.rb
- def update_addons
- addons = registration_ui.get_available_addons
-
- failed_addons = registration_ui.update_addons(addons, enable_updates:
@config.install_updates)
- failed_addons.empty?
- end
end unless defined?(SccAutoClient)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-registration-4.0.31/src/lib/registration/registration_ui.rb
new/yast2-registration-4.0.34/src/lib/registration/registration_ui.rb
--- old/yast2-registration-4.0.31/src/lib/registration/registration_ui.rb
2018-04-06 09:27:49.000000000 +0200
+++ new/yast2-registration-4.0.34/src/lib/registration/registration_ui.rb
2018-04-17 08:58:29.000000000 +0200
@@ -353,7 +353,7 @@
# Register those of *selected_addons* that we can without asking
# the user for a reg code. The remaining ones are returned.
- # @param product [Array<Addon>]
+ # @param selected_addons [Array<Addon>]
# @param known_reg_codes [Hash{String => String}] addon id -> reg code
# @return [Array<Addon>] the remaining addons
def try_register_addons(selected_addons, known_reg_codes)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-registration-4.0.31/src/lib/registration/sw_mgmt.rb
new/yast2-registration-4.0.34/src/lib/registration/sw_mgmt.rb
--- old/yast2-registration-4.0.31/src/lib/registration/sw_mgmt.rb
2018-04-06 09:27:49.000000000 +0200
+++ new/yast2-registration-4.0.34/src/lib/registration/sw_mgmt.rb
2018-04-17 08:58:29.000000000 +0200
@@ -123,7 +123,7 @@
# products use the same version and arch.
#
# @param self_update_id [String] product name to be used for get the
installer updates
- # @return product [Hash,nil] with pkg-binding format; return nil if the
+ # @return [Hash,nil] with pkg-binding format; return nil if the
# given self_update_id is empty or there is no base product available
def self.installer_update_base_product(self_update_id)
return if self_update_id.empty?
@@ -508,9 +508,12 @@
end
# select products for new added extensions/modules
+ #
+ # @param addon_services [Array<SUSE::Connect::Remote::Service] List of
services
+ # If it is not specified, it falls back to
{Registration::Storage::Cache#addon_services}.
# @return [Boolean] true on success
- def self.select_addon_products
- addon_services = ::Registration::Storage::Cache.instance.addon_services
+ def self.select_addon_products(addon_services = nil)
+ addon_services ||= ::Registration::Storage::Cache.instance.addon_services
log.info "New addon services: #{addon_services}"
new_repos = addon_services.reduce([]) do |acc, service|
@@ -530,13 +533,18 @@
ret = products.all? { |product| Pkg.ResolvableInstall(product, :product)
}
+ select_default_product_patterns unless Mode.update
+
+ ret
+ end
+
+ # Select default product patterns
+ def self.select_default_product_patterns
# preselect the default product patterns (FATE#320199)
# note: must be called *after* selecting the products
product_patterns = ProductPatterns.new
log.info "Selecting the default product patterns:
#{product_patterns.names}"
product_patterns.select
-
- ret
end
# select remote addons matching the product resolvables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-registration-4.0.31/src/lib/registration/ui/migration_repos_workflow.rb
new/yast2-registration-4.0.34/src/lib/registration/ui/migration_repos_workflow.rb
---
old/yast2-registration-4.0.31/src/lib/registration/ui/migration_repos_workflow.rb
2018-04-06 09:27:49.000000000 +0200
+++
new/yast2-registration-4.0.34/src/lib/registration/ui/migration_repos_workflow.rb
2018-04-17 08:58:29.000000000 +0200
@@ -84,6 +84,7 @@
"register_migration_products" => [->() {
register_migration_products }, true],
"activate_migration_repos" => [->() { activate_migration_repos
}, true],
"select_migration_repos" => ->() { select_migration_repos },
+ "select_products" => ->() { select_products },
"store_repos_state" => ->() { store_repos_state }
}
@@ -138,12 +139,15 @@
abort: :rollback,
cancel: :rollback,
repo_selection: "select_migration_repos",
- next: "store_repos_state"
+ next: "select_products"
},
"select_migration_repos" => {
abort: :rollback,
cancel: :rollback,
- next: "store_repos_state"
+ next: "select_products"
+ },
+ "select_products" => {
+ next: "store_repos_state"
},
"store_repos_state" => {
next: :next
@@ -154,11 +158,8 @@
# if the system is not registered
# @return [Symbol] workflow symbol, :next if registered, :abort when not
def registration_check
- # handle system upgrade (fate#323163)
- if Yast::Stage.initial && Yast::Mode.update
- log.info "System upgrade mode detected"
- return system_upgrade_check
- end
+ ret = registration_check_at_installation
+ return ret if ret
return :next if Registration.is_registered?
@@ -174,6 +175,23 @@
register_system
end
+ # check the current registration status
+ # @return [nil, Symbol] the workflow symbol (:next, :skip) or nil if not
+ # in an installation
+ def registration_check_at_installation
+ # handle system upgrade (fate#323163)
+ return nil unless Yast::Stage.initial
+ # test autoupgrade first, Mode.update covers the autoupgrade as well
+ return registration_check_at_autoupgrade if Yast::Mode.autoupgrade
+ return system_upgrade_check if Yast::Mode.update
+
+ nil
+ end
+
+ def registration_check_at_autoupgrade
+ Registration.is_registered? ? :next : :skip
+ end
+
# run the registration module to register the system
# @return [Symbol] the registration result
def register_system
@@ -246,9 +264,11 @@
addons =
Addon.registered_not_installed.each_with_object([]) do |addon,
result|
- if Yast::Popup.YesNoHeadline(addon.friendly_name, (msg %
addon.friendly_name))
- result << SwMgmt.remote_product(addon.to_h)
- end
+ next unless Yast::Mode.auto || Yast::Popup.YesNoHeadline(
+ addon.friendly_name, (msg % addon.friendly_name)
+ )
+
+ result << SwMgmt.remote_product(addon.to_h)
end
products.concat(addons)
@@ -307,6 +327,10 @@
release_type: nil
)
+ load_migrations_for_products(products, remote_product)
+ end
+
+ def load_migrations_for_products(products, remote_product)
log.info "Loading offline migrations for target product:
#{remote_product.inspect}"
log.info "Installed products: #{products.inspect}"
self.migrations = registration_ui.offline_migration_products(products,
remote_product)
@@ -314,7 +338,7 @@
if migrations.empty?
# TRANSLATORS: Error message
Yast::Report.Error(_("No migration product found."))
- return :empty
+ return Yast::Mode.auto ? :abort : :empty
end
:next
@@ -350,6 +374,8 @@
# run the migration target selection dialog
# @return [Symbol] workflow symbol (:next or :abort)
def select_migration_products
+ return select_migration_products_autoyast if Yast::Mode.auto
+
log.info "Displaying migration target selection dialog"
dialog = MigrationSelectionDialog.new(migrations,
SwMgmt.installed_products)
ret = dialog.run
@@ -363,6 +389,20 @@
ret
end
+ # Select the migration product in the AutoYaST mode
+ # @return [Symbol] workflow symbol (:next)
+ def select_migration_products_autoyast
+ # TODO: for now simply select the first found migration
(bsc#1087206#c7)
+ # later we can improve this (either choose the migration with higher
product versions
+ # or allow selecting the migration in the AY profile)
+ self.selected_migration = migrations.first
+ self.manual_repo_selection = false
+ log.warn "More than one migration available, using the first one" if
migrations.size > 1
+ log.info "Selected migration: #{selected_migration}"
+
+ :next
+ end
+
# collect products to migrate
# @return [Array<Hash>] installed or registered products
def products_to_migrate
@@ -451,7 +491,9 @@
migration_repos.services << service
end
- if migration_repos.service_with_update_repo?
+ if Yast::Mode.auto
+ migration_repos.install_updates =
::Registration::Storage::Config.instance.install_updates
+ elsif migration_repos.service_with_update_repo?
migration_repos.install_updates = registration_ui.install_updates?
end
@@ -466,6 +508,15 @@
UI::MigrationReposSelectionDialog.run
end
+ # Select products for migration
+ #
+ # It causes the *-release packages to be installed (see bsc#1086818 for
+ # further details).
+ def select_products
+ SwMgmt.select_addon_products(registered_services)
+ :next
+ end
+
def store_repos_state
RepoStateStorage.instance.write
:next
@@ -491,6 +542,7 @@
# (unregistered system or explicitly requested by user), :next =>
# continue with the SCC/SMT based upgrade
def system_upgrade_check
+ log.info "System upgrade mode detected"
# media based upgrade requested by user
if Yast::Linuxrc.InstallInf("MediaUpgrade") == "1"
explicit_media_upgrade
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-registration-4.0.31/src/lib/registration/ui/regservice_selection_dialog.rb
new/yast2-registration-4.0.34/src/lib/registration/ui/regservice_selection_dialog.rb
---
old/yast2-registration-4.0.31/src/lib/registration/ui/regservice_selection_dialog.rb
2018-04-06 09:27:49.000000000 +0200
+++
new/yast2-registration-4.0.34/src/lib/registration/ui/regservice_selection_dialog.rb
2018-04-17 08:58:29.000000000 +0200
@@ -85,7 +85,7 @@
# It's needed because the "scc" option is not a proper service, just a
# special value.
#
- # @param [SlpServiceClass::Service,String] Service to describe
+ # @param service [SlpServiceClass::Service,String] Service to describe
# @return [String] Service description
#
# @see Yast::Dialogs::ServiceSelection#service_to_description
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-registration-4.0.31/test/migration_repos_workflow_spec.rb
new/yast2-registration-4.0.34/test/migration_repos_workflow_spec.rb
--- old/yast2-registration-4.0.31/test/migration_repos_workflow_spec.rb
2018-04-06 09:27:49.000000000 +0200
+++ new/yast2-registration-4.0.34/test/migration_repos_workflow_spec.rb
2018-04-17 08:58:29.000000000 +0200
@@ -151,6 +151,15 @@
expect(subject.run_sequence).to eq(:next)
end
+ it "selects products to install" do
+ set_success_expectations
+ expect(Registration::SwMgmt).to receive(:select_addon_products) do
|services|
+ expect(services.first.id).to eq(1311)
+ end
+
+ subject.run_sequence
+ end
+
it "displays the custom repository selection if required" do
set_success_expectations
@@ -238,6 +247,23 @@
allow(Registration::UrlHelpers).to receive(:registration_url)
end
+ context "no migration product found" do
+ before do
+ expect(Y2Packager::ProductUpgrade).to
receive(:new_base_product).and_return(nil)
+ allow(Yast::Report).to receive(:Error)
+ end
+
+ it "displays a warning popup" do
+ expect(Yast::Report).to receive(:Error).with(/Cannot find a base
product/)
+ subject.send(:load_migration_products_offline, activated_products)
+ end
+
+ it "returns :empty" do
+ ret = subject.send(:load_migration_products_offline,
activated_products)
+ expect(ret).to eq(:empty)
+ end
+ end
+
it "loads the possible migrations from the server" do
subject.send(:load_migration_products_offline, activated_products)
expect(subject.send(:migrations)).to_not be_empty
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-registration-4.0.31/test/sw_mgmt_spec.rb
new/yast2-registration-4.0.34/test/sw_mgmt_spec.rb
--- old/yast2-registration-4.0.31/test/sw_mgmt_spec.rb 2018-04-06
09:27:49.000000000 +0200
+++ new/yast2-registration-4.0.34/test/sw_mgmt_spec.rb 2018-04-17
08:58:29.000000000 +0200
@@ -268,13 +268,12 @@
end
describe ".select_addon_products" do
+ let(:legacy_services) { load_yaml_fixture("legacy_module_services.yml") }
+
before do
allow_any_instance_of(Yast::ProductPatterns).to
receive(:names).and_return([])
allow_any_instance_of(Yast::ProductPatterns).to receive(:select)
- legacy_services = load_yaml_fixture("legacy_module_services.yml")
- allow(::Registration::Storage::Cache).to receive(:instance)
- .and_return(double("addon_services" => legacy_services))
allow(subject).to receive(:service_repos).with(legacy_services.first)
.and_return(load_yaml_fixture("legacy_module_repositories.yml"))
allow(Yast::Pkg).to receive(:ResolvableProperties)
@@ -285,13 +284,38 @@
it "selects new addon products for installation" do
expect(Yast::Pkg).to
receive(:ResolvableInstall).with("sle-module-legacy", :product)
- subject.select_addon_products
+ subject.select_addon_products(legacy_services)
end
it "selects the default patterns for the selected products" do
expect_any_instance_of(Yast::ProductPatterns).to receive(:select)
- subject.select_addon_products
+ subject.select_addon_products(legacy_services)
+ end
+
+ context "when no services list is given" do
+ before do
+ allow(::Registration::Storage::Cache).to receive(:instance)
+ .and_return(double("addon_services" => legacy_services))
+ end
+
+ it "defaults to the cached list of addon services" do
+ expect(Yast::Pkg).to
receive(:ResolvableInstall).with("sle-module-legacy", :product)
+
+ subject.select_addon_products
+ end
+ end
+
+ context "during update" do
+ before do
+ allow(Yast::Mode).to receive(:update).and_return(true)
+ end
+
+ it "does not select default patterns for the selected products" do
+ expect(Yast::ProductPatterns).to_not receive(:new)
+
+ subject.select_addon_products(legacy_services)
+ end
end
end