Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package yast2-storage-ng for 
openSUSE:Factory checked in at 2023-07-12 17:26:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-storage-ng (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-storage-ng.new.8922 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-storage-ng"

Wed Jul 12 17:26:14 2023 rev:146 rq:1098088 version:4.6.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-storage-ng/yast2-storage-ng.changes        
2023-06-08 21:41:50.989739173 +0200
+++ 
/work/SRC/openSUSE:Factory/.yast2-storage-ng.new.8922/yast2-storage-ng.changes  
    2023-07-12 17:26:17.474123597 +0200
@@ -1,0 +2,15 @@
+Wed Jul  5 13:42:12 UTC 2023 - Stefan Hundhammer <shundham...@suse.com>
+
+- Ensure adding storage support software packages for MicroOS
+  which uses its custom partitions_proposal client, not the 
+  standard inst_disk_proposal client (bsc#1212452)
+  https://github.com/yast/yast-storage-ng/pull/1351
+- 4.6.12
+
+-------------------------------------------------------------------
+Thu Jun 29 11:42:21 UTC 2023 - Ancor Gonzalez Sosa <an...@suse.com>
+
+- Honor encryption settings if they are set into ProductFeatures
+  by the Common Critera role (jsc#PED-4166, jsc#PED-4474).
+
+-------------------------------------------------------------------

Old:
----
  yast2-storage-ng-4.6.11.tar.bz2

New:
----
  yast2-storage-ng-4.6.12.tar.bz2

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

Other differences:
------------------
++++++ yast2-storage-ng.spec ++++++
--- /var/tmp/diff_new_pack.vhoq8l/_old  2023-07-12 17:26:18.310128470 +0200
+++ /var/tmp/diff_new_pack.vhoq8l/_new  2023-07-12 17:26:18.314128493 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-storage-ng
-Version:        4.6.11
+Version:        4.6.12
 Release:        0
 Summary:        YaST2 - Storage Configuration
 License:        GPL-2.0-only OR GPL-3.0-only

++++++ yast2-storage-ng-4.6.11.tar.bz2 -> yast2-storage-ng-4.6.12.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/package/yast2-storage-ng.changes 
new/yast2-storage-ng-4.6.12/package/yast2-storage-ng.changes
--- old/yast2-storage-ng-4.6.11/package/yast2-storage-ng.changes        
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/package/yast2-storage-ng.changes        
2023-07-11 11:08:25.000000000 +0200
@@ -1,4 +1,19 @@
 -------------------------------------------------------------------
+Wed Jul  5 13:42:12 UTC 2023 - Stefan Hundhammer <shundham...@suse.com>
+
+- Ensure adding storage support software packages for MicroOS
+  which uses its custom partitions_proposal client, not the 
+  standard inst_disk_proposal client (bsc#1212452)
+  https://github.com/yast/yast-storage-ng/pull/1351
+- 4.6.12
+
+-------------------------------------------------------------------
+Thu Jun 29 11:42:21 UTC 2023 - Ancor Gonzalez Sosa <an...@suse.com>
+
+- Honor encryption settings if they are set into ProductFeatures
+  by the Common Critera role (jsc#PED-4166, jsc#PED-4474).
+
+-------------------------------------------------------------------
 Wed Jun  7 08:03:52 UTC 2023 - Stefan Hundhammer <shundham...@suse.com>
 
 - Prevent setting the volume label for a mounted btrfs or swap
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/package/yast2-storage-ng.spec 
new/yast2-storage-ng-4.6.12/package/yast2-storage-ng.spec
--- old/yast2-storage-ng-4.6.11/package/yast2-storage-ng.spec   2023-06-07 
11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/package/yast2-storage-ng.spec   2023-07-11 
11:08:25.000000000 +0200
@@ -16,7 +16,7 @@
 #
 
 Name:           yast2-storage-ng
-Version:        4.6.11
+Version:        4.6.12
 Release:        0
 Summary:        YaST2 - Storage Configuration
 License:        GPL-2.0-only OR GPL-3.0-only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/src/lib/y2storage/clients/inst_disk_proposal.rb 
new/yast2-storage-ng-4.6.12/src/lib/y2storage/clients/inst_disk_proposal.rb
--- old/yast2-storage-ng-4.6.11/src/lib/y2storage/clients/inst_disk_proposal.rb 
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/src/lib/y2storage/clients/inst_disk_proposal.rb 
2023-07-11 11:08:25.000000000 +0200
@@ -158,23 +158,7 @@
       # Add storage-related software packages (filesystem tools etc.) to the
       # set of packages to be installed.
       def add_storage_packages
-        features = storage_manager.staging.used_features
-        required_features = 
storage_manager.staging.used_features(required_only: true)
-
-        required_packages = required_features.pkg_list
-        optional_packages = features.pkg_list - required_packages
-
-        set_proposal_packages(required_packages, false)
-        set_proposal_packages(optional_packages, true)
-      end
-
-      # @see #add_storage_packages
-      #
-      # @param pkgs [Array<String>] list of packages
-      # @param optional [Boolean] whether the packages in the list are optional
-      def set_proposal_packages(pkgs, optional)
-        pkg_handler = Y2Storage::PackageHandler.new(pkgs, optional: optional)
-        pkg_handler.set_proposal_packages
+        
Y2Storage::PackageHandler.set_proposal_packages_for(storage_manager.staging)
       end
 
       # Save the list of filesystem to /etc/sysconfig/storage.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/src/lib/y2storage/clients/partitions_proposal.rb 
new/yast2-storage-ng-4.6.12/src/lib/y2storage/clients/partitions_proposal.rb
--- 
old/yast2-storage-ng-4.6.11/src/lib/y2storage/clients/partitions_proposal.rb    
    2023-06-07 11:34:17.000000000 +0200
+++ 
new/yast2-storage-ng-4.6.12/src/lib/y2storage/clients/partitions_proposal.rb    
    2023-07-11 11:08:25.000000000 +0200
@@ -116,8 +116,9 @@
           staging = storage_manager.staging
           actiongraph = staging ? staging.actiongraph : nil
           self.actions_presenter = ActionsPresenter.new(actiongraph)
-          Y2Storage::DumpManager.dump(staging)
-          Y2Storage::DumpManager.dump(actions_presenter)
+          DumpManager.dump(staging)
+          DumpManager.dump(actions_presenter)
+          PackageHandler.set_proposal_packages_for(staging)
         end
       end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/src/lib/y2storage/devicegraph.rb 
new/yast2-storage-ng-4.6.12/src/lib/y2storage/devicegraph.rb
--- old/yast2-storage-ng-4.6.11/src/lib/y2storage/devicegraph.rb        
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/src/lib/y2storage/devicegraph.rb        
2023-07-11 11:08:25.000000000 +0200
@@ -612,6 +612,23 @@
       StorageFeaturesList.from_bitfield(storage_used_features(type))
     end
 
+    # List of required (mandatory) storage features used by the devicegraph
+    #
+    # @return [StorageFeaturesList]
+    def required_used_features
+      used_features(required_only: true)
+    end
+
+    # List of optional storage features used by the devicegraph
+    #
+    # @return [StorageFeaturesList]
+    def optional_used_features
+      all = 
storage_used_features(Storage::UsedFeaturesDependencyType_SUGGESTED)
+      required = 
storage_used_features(Storage::UsedFeaturesDependencyType_REQUIRED)
+      # Using binary XOR in those bit fields to calculate the difference
+      StorageFeaturesList.from_bitfield(all ^ required)
+    end
+
     private
 
     # Copy of a device tree where hashes have been substituted by sorted
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/src/lib/y2storage/package_handler.rb 
new/yast2-storage-ng-4.6.12/src/lib/y2storage/package_handler.rb
--- old/yast2-storage-ng-4.6.11/src/lib/y2storage/package_handler.rb    
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/src/lib/y2storage/package_handler.rb    
2023-07-11 11:08:25.000000000 +0200
@@ -112,6 +112,21 @@
       success
     end
 
+    # Add the proposal packages for storage that are needed for the specified
+    # devicegraph's used features. This marks the packages for installation;
+    # it does not install them yet.
+    #
+    # @param devicegraph [Devicegraph] usually StorageManager.instance.staging
+    # @param optional
+    def self.set_proposal_packages_for(devicegraph, optional: true)
+      required_packages = devicegraph.required_used_features.pkg_list
+      PackageHandler.new(required_packages, optional: 
false).set_proposal_packages
+      return unless optional
+
+      optional_packages = devicegraph.optional_used_features.pkg_list
+      PackageHandler.new(optional_packages, optional: 
true).set_proposal_packages
+    end
+
     private
 
     # Whether the packages should be considered as optional when adding them 
to the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/src/lib/y2storage/proposal_settings.rb 
new/yast2-storage-ng-4.6.12/src/lib/y2storage/proposal_settings.rb
--- old/yast2-storage-ng-4.6.11/src/lib/y2storage/proposal_settings.rb  
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/src/lib/y2storage/proposal_settings.rb  
2023-07-11 11:08:25.000000000 +0200
@@ -418,6 +418,23 @@
       load_feature(:proposal, :multidisk_first)
       load_size_feature(:proposal, :lvm_vg_size)
       load_volumes_feature(:volumes)
+      load_encryption
+    end
+
+    # Loads the default encryption settings
+    #
+    # The encryption settings are not part of control.xml, but can be injected 
by a previous step of
+    # the installation, eg. the dialog of the Common Criteria system role
+    def load_encryption
+      enc = feature(:proposal, :encryption)
+
+      return unless enc
+      return unless enc.respond_to?(:password)
+
+      passwd = enc.password.to_s
+      return if passwd.nil? || passwd.empty?
+
+      self.encryption_password = passwd
     end
 
     def validated_delete_mode(mode)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/src/lib/y2storage/storage_feature.rb 
new/yast2-storage-ng-4.6.12/src/lib/y2storage/storage_feature.rb
--- old/yast2-storage-ng-4.6.11/src/lib/y2storage/storage_feature.rb    
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/src/lib/y2storage/storage_feature.rb    
2023-07-11 11:08:25.000000000 +0200
@@ -125,6 +125,14 @@
       end
     end
 
+    # Drop the cache of storage packages that are available.
+    #
+    # This is only ever needed if the available packages might have changed
+    # since the last use of this class.
+    def self.drop_cache
+      @all = nil
+    end
+
     # Constructor
     #
     # This looks up a constant in the ::Storage namespace to make sure the id
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/test/y2storage/devicegraph_test.rb 
new/yast2-storage-ng-4.6.12/test/y2storage/devicegraph_test.rb
--- old/yast2-storage-ng-4.6.11/test/y2storage/devicegraph_test.rb      
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/test/y2storage/devicegraph_test.rb      
2023-07-11 11:08:25.000000000 +0200
@@ -1319,4 +1319,54 @@
       end
     end
   end
+
+  describe "#required_used_features" do
+    before { fake_scenario(scenario) }
+
+    context "with local devices combining several filesystem types" do
+      let(:scenario) { "mixed_disks" }
+
+      it "returns only the features for mounted filesystems" do
+        features = fake_devicegraph.required_used_features
+        expect(features).to be_a Y2Storage::StorageFeaturesList
+        expect(features.map(&:id))
+          .to contain_exactly(:UF_BTRFS, :UF_XFS, :UF_SWAP)
+      end
+    end
+
+    context "with an empty disk" do
+      let(:scenario) { "empty_disks" }
+
+      it "Survives not having any storage features" do
+        features = fake_devicegraph.required_used_features
+        expect(features).to be_a Y2Storage::StorageFeaturesList
+        expect(features.map(&:id)).to be == []
+      end
+    end
+  end
+
+  describe "#optional_used_features" do
+    before { fake_scenario(scenario) }
+
+    context "with local devices combining several filesystem types" do
+      let(:scenario) { "mixed_disks" }
+
+      it "returns only the features for filesystems that are not mounted" do
+        features = fake_devicegraph.optional_used_features
+        expect(features).to be_a Y2Storage::StorageFeaturesList
+        expect(features.map(&:id))
+          .to contain_exactly(:UF_EXT4, :UF_NTFS)
+      end
+    end
+
+    context "with an empty disk" do
+      let(:scenario) { "empty_disks" }
+
+      it "Survives not having any storage features" do
+        features = fake_devicegraph.optional_used_features
+        expect(features).to be_a Y2Storage::StorageFeaturesList
+        expect(features.map(&:id)).to be == []
+      end
+    end
+  end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/test/y2storage/package_handler_test.rb 
new/yast2-storage-ng-4.6.12/test/y2storage/package_handler_test.rb
--- old/yast2-storage-ng-4.6.11/test/y2storage/package_handler_test.rb  
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/test/y2storage/package_handler_test.rb  
2023-07-11 11:08:25.000000000 +0200
@@ -23,6 +23,7 @@
 
 require_relative "spec_helper"
 require "y2storage/package_handler"
+require "y2storage/storage_feature"
 
 describe Y2Storage::PackageHandler do
   let(:feature_pkg) { ["lvm2", "btrfsprogs", "e2fsprogs"] }
@@ -135,4 +136,47 @@
       end
     end
   end
+
+  describe ".set_proposal_packages_for" do
+    before do
+      fake_scenario(scenario)
+      Y2Storage::StorageFeature.drop_cache
+      allow(Yast::Mode).to receive(:installation).and_return(installation)
+      allow(Yast::Package).to receive(:Installed).and_return(false)
+      allow(Yast::Package).to receive(:Available).and_return(true)
+    end
+
+    context "with local devices combining several filesystem types" do
+      PROPOSAL_ID = "storage_proposal"
+      let(:scenario) { "mixed_disks" }
+      let(:installation) { true }
+
+      it "Adds the correct required and optional storage packages to the 
proposal" do
+        expect(Yast::PackagesProposal).to receive(:SetResolvables)
+          .with(PROPOSAL_ID, :package, ["btrfsprogs", "e2fsprogs", 
"xfsprogs"], optional: false)
+          .and_return true
+        expect(Yast::PackagesProposal).to receive(:SetResolvables)
+          .with(PROPOSAL_ID, :package, ["e2fsprogs", "ntfs-3g", "ntfsprogs"], 
optional: true)
+          .and_return true
+        described_class.set_proposal_packages_for(fake_devicegraph)
+      end
+
+      it "Adds only required storage packages to the proposal if 'optional' is 
'false" do
+        expect(Yast::PackagesProposal).to receive(:SetResolvables)
+          .with(PROPOSAL_ID, :package, ["btrfsprogs", "e2fsprogs", 
"xfsprogs"], optional: false)
+          .and_return true
+        described_class.set_proposal_packages_for(fake_devicegraph, optional: 
false)
+      end
+    end
+
+    context "with empty disks" do
+      let(:scenario) { "empty_disks" }
+      let(:installation) { true }
+
+      it "Does not add any storage packages to the proposal" do
+        expect(Yast::PackagesProposal).not_to receive(:SetResolvables)
+        described_class.set_proposal_packages_for(fake_devicegraph, optional: 
true)
+      end
+    end
+  end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/test/y2storage/proposal_settings_test.rb 
new/yast2-storage-ng-4.6.12/test/y2storage/proposal_settings_test.rb
--- old/yast2-storage-ng-4.6.11/test/y2storage/proposal_settings_test.rb        
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/test/y2storage/proposal_settings_test.rb        
2023-07-11 11:08:25.000000000 +0200
@@ -35,6 +35,19 @@
     stub_features("partitioning" => 
initial_partitioning_features.merge(features))
   end
 
+  # Used to test the mechanism to inject an encryption password into the 
settings
+  class TestInjectedPassword
+    include Y2Storage::SecretAttributes
+
+    # Real password
+    secret_attr :password
+
+    # Constructor
+    def initialize(passwd)
+      self.password = passwd
+    end
+  end
+
   before do
     Y2Storage::StorageManager.create_test_instance
   end
@@ -333,6 +346,15 @@
       expect(settings.lvm).to eq false
     end
 
+    it "sets 'encryption_password' based on the 'encryption' feature in the 
'proposal' section" do
+      read_feature("encryption", "SuperSecret")
+      expect(settings.use_encryption).to eq false
+      expect(settings.encryption_password).to eq nil
+      read_feature("encryption", TestInjectedPassword.new("SuperSecret"))
+      expect(settings.use_encryption).to eq true
+      expect(settings.encryption_password).to eq "SuperSecret"
+    end
+
     it "sets 'delete_resize_configurable' based on the feature in the 
'proposal' section" do
       read_feature("delete_resize_configurable", true)
       expect(settings.delete_resize_configurable).to eq true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-storage-ng-4.6.11/test/y2storage/storage_features_list_test.rb 
new/yast2-storage-ng-4.6.12/test/y2storage/storage_features_list_test.rb
--- old/yast2-storage-ng-4.6.11/test/y2storage/storage_features_list_test.rb    
2023-06-07 11:34:17.000000000 +0200
+++ new/yast2-storage-ng-4.6.12/test/y2storage/storage_features_list_test.rb    
2023-07-11 11:08:25.000000000 +0200
@@ -22,6 +22,7 @@
 # find current contact information at www.suse.com.
 
 require_relative "spec_helper"
+require "y2storage/storage_feature"
 require "y2storage/storage_features_list"
 
 describe Y2Storage::StorageFeaturesList do
@@ -84,6 +85,7 @@
       let(:bits) { Storage::UF_NTFS | Storage::UF_EXT3 }
 
       before do
+        Y2Storage::StorageFeature.drop_cache
         allow(Yast::Package).to receive(:Available).and_return false
         allow(Yast::Package).to 
receive(:Available).with("ntfsprogs").and_return true
       end

Reply via email to