Hello community,

here is the log from the commit of package yast2-firstboot for openSUSE:Factory 
checked in at 2019-02-15 09:53:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-firstboot (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-firstboot.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-firstboot"

Fri Feb 15 09:53:46 2019 rev:77 rq:674525 version:4.1.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-firstboot/yast2-firstboot.changes  
2019-02-04 21:11:14.751872633 +0100
+++ 
/work/SRC/openSUSE:Factory/.yast2-firstboot.new.28833/yast2-firstboot.changes   
    2019-02-15 09:53:46.639790769 +0100
@@ -1,0 +2,7 @@
+Fri Feb  8 07:25:32 UTC 2019 - Imobach Gonzalez Sosa <igonzalezs...@suse.com>
+
+- Support going back when using the yast2-configuration-management
+  module integration (fate#322722).
+- 4.1.5
+
+-------------------------------------------------------------------

Old:
----
  yast2-firstboot-4.1.4.tar.bz2

New:
----
  yast2-firstboot-4.1.5.tar.bz2

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

Other differences:
------------------
++++++ yast2-firstboot.spec ++++++
--- /var/tmp/diff_new_pack.nKYPYu/_old  2019-02-15 09:53:47.803790402 +0100
+++ /var/tmp/diff_new_pack.nKYPYu/_new  2019-02-15 09:53:47.835790392 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-firstboot
-Version:        4.1.4
+Version:        4.1.5
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -39,7 +39,7 @@
 
 BuildArch:      noarch
 
-Requires:       yast2-configuration-management >= 4.1.1
+Requires:       yast2-configuration-management >= 4.1.3
 Requires:       yast2-ruby-bindings >= 1.0.0
 
 Summary:        YaST2 - Initial System Configuration

++++++ yast2-firstboot-4.1.4.tar.bz2 -> yast2-firstboot-4.1.5.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-firstboot-4.1.4/package/yast2-firstboot.changes 
new/yast2-firstboot-4.1.5/package/yast2-firstboot.changes
--- old/yast2-firstboot-4.1.4/package/yast2-firstboot.changes   2019-01-28 
12:15:42.000000000 +0100
+++ new/yast2-firstboot-4.1.5/package/yast2-firstboot.changes   2019-02-13 
13:24:02.000000000 +0100
@@ -1,4 +1,11 @@
 -------------------------------------------------------------------
+Fri Feb  8 07:25:32 UTC 2019 - Imobach Gonzalez Sosa <igonzalezs...@suse.com>
+
+- Support going back when using the yast2-configuration-management
+  module integration (fate#322722).
+- 4.1.5
+
+-------------------------------------------------------------------
 Fri Jan 25 14:59:38 UTC 2019 - igonzalezs...@suse.com
 
 - Add integration with the yast2-configuration-management module
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-firstboot-4.1.4/package/yast2-firstboot.spec 
new/yast2-firstboot-4.1.5/package/yast2-firstboot.spec
--- old/yast2-firstboot-4.1.4/package/yast2-firstboot.spec      2019-01-28 
12:15:42.000000000 +0100
+++ new/yast2-firstboot-4.1.5/package/yast2-firstboot.spec      2019-02-13 
13:24:02.000000000 +0100
@@ -16,7 +16,7 @@
 #
 
 Name:           yast2-firstboot
-Version:        4.1.4
+Version:        4.1.5
 Release:        0
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -39,7 +39,7 @@
 BuildArchitectures:    noarch
 
 Requires:       yast2-ruby-bindings >= 1.0.0
-Requires:       yast2-configuration-management >= 4.1.1
+Requires:       yast2-configuration-management >= 4.1.3
 
 Summary:       YaST2 - Initial System Configuration
 PreReq:         %fillup_prereq
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-firstboot-4.1.4/src/lib/y2firstboot/clients/configuration_management.rb
 
new/yast2-firstboot-4.1.5/src/lib/y2firstboot/clients/configuration_management.rb
--- 
old/yast2-firstboot-4.1.4/src/lib/y2firstboot/clients/configuration_management.rb
   2019-01-28 12:15:42.000000000 +0100
+++ 
new/yast2-firstboot-4.1.5/src/lib/y2firstboot/clients/configuration_management.rb
   2019-02-13 13:24:02.000000000 +0100
@@ -20,11 +20,12 @@
 # find current contact information at www.suse.com.
 
 require "yast"
-require "configuration_management/clients/provision"
-require "configuration_management/configurators/base"
+require "y2configuration_management/clients/provision"
+require "y2configuration_management/configurators/base"
 
 Yast.import "ProductFeatures"
 Yast.import "PackageSystem"
+Yast.import "GetInstArgs"
 
 module Y2Firstboot
   module Clients
@@ -32,17 +33,24 @@
     class ConfigurationManagement
       # Runs the client
       def run
-        configurator = 
Yast::ConfigurationManagement::Configurators::Base.for(config)
-        return :abort unless configurator.prepare
-        if 
!Yast::PackageSystem.CheckAndInstallPackages(configurator.packages.fetch("install",
 []))
-          return :abort
-        end
-        Yast::ConfigurationManagement::Clients::Provision.new.run
-        :auto
+        configurator = 
Y2ConfigurationManagement::Configurators::Base.for(config)
+        result = configurator.prepare(reverse: Yast::GetInstArgs.going_back)
+        return result unless result == :finish
+        provision ? :next : :abort
       end
 
     private
 
+      # Runs the provisioner
+      #
+      # @return [Boolean] true if it ran successfully; false otherwise.
+      def provision
+        if 
!Yast::PackageSystem.CheckAndInstallPackages(configurator.packages.fetch("install",
 []))
+          return false
+        end
+        Y2ConfigurationManagement::Clients::Provision.new.run
+      end
+
       # @return [Hash] Fixed settings (these settings cannot be overriden as 
this is the only
       #   supported scenario)
       FIXED_SETTINGS = { "type" => "salt", "mode" => "masterless" }.freeze
@@ -51,11 +59,21 @@
       #
       # It relies in the configuration found in the control file.
       #
-      # @return [Yast::ConfigurationManagement::Configurations::Base]
+      # @return [Y2ConfigurationManagement::Configurations::Base]
       def config
+        current_config = 
Y2ConfigurationManagement::Configurations::Base.current
+        return current_config if current_config
         settings = Yast::ProductFeatures.GetSection("configuration_management")
                                         .merge(FIXED_SETTINGS)
-        Yast::ConfigurationManagement::Configurations::Base.import(settings)
+        Y2ConfigurationManagement::Configurations::Base.current =
+          Y2ConfigurationManagement::Configurations::Base.import(settings)
+      end
+
+      def configurator
+        current_configurator = 
Y2ConfigurationManagement::Configurators::Base.current
+        return current_configurator if current_configurator
+        Y2ConfigurationManagement::Configurators::Base.current =
+          Y2ConfigurationManagement::Configurators::Base.for(config)
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-firstboot-4.1.4/test/y2firstboot/clients/configuration_management_test.rb
 
new/yast2-firstboot-4.1.5/test/y2firstboot/clients/configuration_management_test.rb
--- 
old/yast2-firstboot-4.1.4/test/y2firstboot/clients/configuration_management_test.rb
 2019-01-28 12:15:42.000000000 +0100
+++ 
new/yast2-firstboot-4.1.5/test/y2firstboot/clients/configuration_management_test.rb
 2019-02-13 13:24:02.000000000 +0100
@@ -22,36 +22,41 @@
 
 require_relative "../../test_helper"
 require "y2firstboot/clients/configuration_management"
-require "configuration_management/configurators/salt"
+require "y2configuration_management/configurators/salt"
 
 describe Y2Firstboot::Clients::ConfigurationManagement do
   subject(:client) { described_class.new }
 
   describe "#run" do
     let(:provisioner) do
-      instance_double(Yast::ConfigurationManagement::Clients::Provision, run: 
nil)
+      instance_double(Y2ConfigurationManagement::Clients::Provision, run: 
provision_result)
     end
     let(:configurator) do
       instance_double(
-        Yast::ConfigurationManagement::Configurators::Salt, prepare: true, 
packages: packages
+        Y2ConfigurationManagement::Configurators::Salt, prepare: :finish, 
packages: packages
       )
     end
     let(:packages) { { "install" => ["salt"] } }
     let(:settings) { { "states_roots" => ["/srv/salt"] } }
+    let(:provision_result) { true }
+    let(:going_back) { false }
 
     before do
       allow(Yast::ProductFeatures).to receive(:GetSection)
         .with("configuration_management")
         .and_return(settings)
-      allow(Yast::ConfigurationManagement::Configurators::Base).to 
receive(:for)
+      allow(Y2ConfigurationManagement::Configurators::Base).to receive(:for)
         .and_return(configurator)
-      allow(Yast::ConfigurationManagement::Clients::Provision).to receive(:new)
+      allow(Y2ConfigurationManagement::Clients::Provision).to receive(:new)
         .and_return(provisioner)
       allow(Yast::PackageSystem).to 
receive(:CheckAndInstallPackages).and_return(true)
+      allow(Yast::GetInstArgs).to receive(:going_back).and_return(going_back)
+      Y2ConfigurationManagement::Configurations::Base.current = nil
+      Y2ConfigurationManagement::Configurators::Base.current = nil
     end
 
     it "uses the configuration from the control file" do
-      expect(Yast::ConfigurationManagement::Configurators::Base).to 
receive(:for) do |config|
+      expect(Y2ConfigurationManagement::Configurators::Base).to receive(:for) 
do |config|
         expect(config.states_roots).to include(Pathname.new("/srv/salt"))
         configurator
       end
@@ -69,15 +74,42 @@
       client.run
     end
 
-    it "returns :auto" do
-      expect(client.run).to eq(:auto)
+    it "returns :next" do
+      allow(provisioner).to receive(:run).and_return(:finish)
+      expect(client.run).to eq(:next)
+    end
+
+    context "when the provisioner fails" do
+      let(:provision_result) { false }
+
+      it "returns :abort" do
+        expect(client.run).to eq(:abort)
+      end
+    end
+
+    context "when going back" do
+      let(:going_back) { true }
+
+      before do
+        allow(configurator).to receive(:prepare).and_return(:back)
+      end
+
+      it "runs the configurator in reverse mode" do
+        expect(configurator).to receive(:prepare).with(reverse: true)
+        client.run
+      end
+
+      it "does not run the provisioner" do
+        expect(provisioner).to_not receive(:run)
+        client.run
+      end
     end
 
     context "when type or mode are specified in the configuration" do
       let(:settings) { { "type" => "puppet", "mode" => "client" } }
 
       it "forces type and mode" do
-        expect(Yast::ConfigurationManagement::Configurators::Base).to 
receive(:for)
+        expect(Y2ConfigurationManagement::Configurators::Base).to receive(:for)
           .with(an_object_having_attributes(type: "salt", mode: :masterless))
           .and_return(configurator)
         client.run
@@ -88,7 +120,7 @@
       let(:settings) { {} }
 
       it "uses the default configuration" do
-        expect(Yast::ConfigurationManagement::Configurators::Base).to 
receive(:for)
+        expect(Y2ConfigurationManagement::Configurators::Base).to receive(:for)
           .with(an_object_having_attributes(type: 
"salt")).and_return(configurator)
         client.run
       end


Reply via email to