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 2025-02-25 16:40:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-storage-ng (Old)
and /work/SRC/openSUSE:Factory/.yast2-storage-ng.new.1873 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-storage-ng"
Tue Feb 25 16:40:00 2025 rev:171 rq:1248189 version:5.0.27
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-storage-ng/yast2-storage-ng.changes
2025-02-12 21:30:54.700708708 +0100
+++
/work/SRC/openSUSE:Factory/.yast2-storage-ng.new.1873/yast2-storage-ng.changes
2025-02-25 16:40:45.601795499 +0100
@@ -1,0 +2,14 @@
+Mon Feb 24 15:11:04 UTC 2025 - Ancor Gonzalez Sosa <[email protected]>
+
+- Discarded RAM disks as candidate for installation
+ (gh#agama-project/agama#2042).
+- 5.0.27
+
+-------------------------------------------------------------------
+Fri Feb 21 13:30:05 UTC 2025 - Knut Anderssen <[email protected]>
+
+- Added AutoYaST support for selecting the APQNs and pervasive
+ encryption key type (jsc#PED-10950).
+- 5.0.26
+
+-------------------------------------------------------------------
Old:
----
yast2-storage-ng-5.0.25.tar.bz2
New:
----
yast2-storage-ng-5.0.27.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-storage-ng.spec ++++++
--- /var/tmp/diff_new_pack.HlWVBe/_old 2025-02-25 16:40:46.617837948 +0100
+++ /var/tmp/diff_new_pack.HlWVBe/_new 2025-02-25 16:40:46.617837948 +0100
@@ -17,7 +17,7 @@
Name: yast2-storage-ng
-Version: 5.0.25
+Version: 5.0.27
Release: 0
Summary: YaST2 - Storage Configuration
License: GPL-2.0-only OR GPL-3.0-only
++++++ yast2-storage-ng-5.0.25.tar.bz2 -> yast2-storage-ng-5.0.27.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.25/package/yast2-storage-ng.changes
new/yast2-storage-ng-5.0.27/package/yast2-storage-ng.changes
--- old/yast2-storage-ng-5.0.25/package/yast2-storage-ng.changes
2025-02-12 13:33:29.000000000 +0100
+++ new/yast2-storage-ng-5.0.27/package/yast2-storage-ng.changes
2025-02-24 16:18:28.000000000 +0100
@@ -1,4 +1,18 @@
-------------------------------------------------------------------
+Mon Feb 24 15:11:04 UTC 2025 - Ancor Gonzalez Sosa <[email protected]>
+
+- Discarded RAM disks as candidate for installation
+ (gh#agama-project/agama#2042).
+- 5.0.27
+
+-------------------------------------------------------------------
+Fri Feb 21 13:30:05 UTC 2025 - Knut Anderssen <[email protected]>
+
+- Added AutoYaST support for selecting the APQNs and pervasive
+ encryption key type (jsc#PED-10950).
+- 5.0.26
+
+-------------------------------------------------------------------
Wed Feb 12 11:01:03 UTC 2025 - Stefan Hundhammer <[email protected]>
- Require libstorage bindings for the current Ruby version (bsc#1235598)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.25/package/yast2-storage-ng.spec
new/yast2-storage-ng-5.0.27/package/yast2-storage-ng.spec
--- old/yast2-storage-ng-5.0.25/package/yast2-storage-ng.spec 2025-02-12
13:33:29.000000000 +0100
+++ new/yast2-storage-ng-5.0.27/package/yast2-storage-ng.spec 2025-02-24
16:18:28.000000000 +0100
@@ -16,7 +16,7 @@
#
Name: yast2-storage-ng
-Version: 5.0.25
+Version: 5.0.27
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-5.0.25/src/lib/y2partitioner/actions/controllers/encryption.rb
new/yast2-storage-ng-5.0.27/src/lib/y2partitioner/actions/controllers/encryption.rb
---
old/yast2-storage-ng-5.0.25/src/lib/y2partitioner/actions/controllers/encryption.rb
2025-02-12 13:33:29.000000000 +0100
+++
new/yast2-storage-ng-5.0.27/src/lib/y2partitioner/actions/controllers/encryption.rb
2025-02-24 16:18:28.000000000 +0100
@@ -52,7 +52,7 @@
# Selected APQNs to generate a new secure key for pervasive encryption
#
- # @return [Array<Y2Storage:.EncryptionProcesses::Apqn>]
+ # @return [Array<Y2Storage::EncryptionProcesses::Apqn>]
attr_accessor :apqns
# @return [String] Type for the new secure key for pervasive encryption
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.25/src/lib/y2storage/autoinst_profile/partition_section.rb
new/yast2-storage-ng-5.0.27/src/lib/y2storage/autoinst_profile/partition_section.rb
---
old/yast2-storage-ng-5.0.25/src/lib/y2storage/autoinst_profile/partition_section.rb
2025-02-12 13:33:29.000000000 +0100
+++
new/yast2-storage-ng-5.0.27/src/lib/y2storage/autoinst_profile/partition_section.rb
2025-02-24 16:18:28.000000000 +0100
@@ -54,6 +54,8 @@
{ name: :crypt_label },
{ name: :crypt_cipher },
{ name: :crypt_key_size },
+ { name: :crypt_pervasive_apqns },
+ { name: :crypt_pervasive_key_type },
{ name: :raid_name },
{ name: :raid_options },
{ name: :mkfs_options },
@@ -109,6 +111,12 @@
# @return [Integer,nil] If nil, the default key size will be used. If
an integer
# value is used, it has to be a multiple of 8.
+ # @!attribute crypt_pervasive_apqns
+ # @return [Array<String>,nil] items like "01.0001"
+ #
+ # @!attribute crypt_pervasive_key_type
+ # @return [String,nil] "CCA-AESCIPHER" or "CCA-AESDATA"
+
# @!attribute filesystem
# @return [Symbol] file system type to use in the partition, it also
# influences other fields
@@ -187,6 +195,8 @@
@raid_options =
RaidOptionsSection.new_from_hashes(hash["raid_options"], self)
end
+ @crypt_pervasive_apqns = hash["crypt_pervasive_apqns"] if
hash["crypt_pervasive_apqns"]
+
@subvolumes_prefix = hash["subvolumes_prefix"]
@create_subvolumes = hash.fetch("create_subvolumes", true)
@subvolumes = subvolumes_from_hashes(hash["subvolumes"]) if
hash["subvolumes"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.25/src/lib/y2storage/disk_analyzer.rb
new/yast2-storage-ng-5.0.27/src/lib/y2storage/disk_analyzer.rb
--- old/yast2-storage-ng-5.0.25/src/lib/y2storage/disk_analyzer.rb
2025-02-12 13:33:29.000000000 +0100
+++ new/yast2-storage-ng-5.0.27/src/lib/y2storage/disk_analyzer.rb
2025-02-24 16:18:28.000000000 +0100
@@ -276,11 +276,14 @@
# A device is candidate for installation if no filesystem belonging to the
device is mounted and the
# device does not contain a repository for installation.
#
+ # Moreover, RAM disks are also discarded.
+ #
# @param device [BlkDevice]
# @return [Boolean]
def candidate_disk?(device)
!contain_mounted_filesystem?(device) &&
- !contain_installation_repository?(device)
+ !contain_installation_repository?(device) &&
+ !device.name.match?(/^\/dev\/ram\d+$/)
end
# Checks whether a device contains a mounted filesystem
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.25/src/lib/y2storage/planned/can_be_encrypted.rb
new/yast2-storage-ng-5.0.27/src/lib/y2storage/planned/can_be_encrypted.rb
--- old/yast2-storage-ng-5.0.25/src/lib/y2storage/planned/can_be_encrypted.rb
2025-02-12 13:33:29.000000000 +0100
+++ new/yast2-storage-ng-5.0.27/src/lib/y2storage/planned/can_be_encrypted.rb
2025-02-24 16:18:28.000000000 +0100
@@ -61,6 +61,16 @@
# @return [String, nil] nil or empty string to use the default cipher
attr_accessor :encryption_cipher
+ # Selected APQNs to generate a new security key for pervasive encryption
+ #
+ # @return [Array<String>]
+ attr_accessor :encryption_pervasive_apqns
+
+ # Pervasive key key_type
+ #
+ # @return [String, nil] nil or empty string to use the default key type
+ attr_accessor :encryption_pervasive_key_type
+
# Key size (in bits) to use when encrypting a LUKS device
#
# Any positive value must be a multiple of 8.
@@ -74,7 +84,9 @@
attr_accessor :encryption_key_size
# Initializations of the mixin, to be called from the class constructor.
- def initialize_can_be_encrypted; end
+ def initialize_can_be_encrypted
+ self.encryption_pervasive_apqns = []
+ end
# Checks whether the resulting device must be encrypted
#
@@ -106,7 +118,15 @@
result = super
if create_encryption?
method = encryption_method || EncryptionMethod.find(:luks1)
- result = plain_device.encrypt(method: method, password:
encryption_password)
+ args = {}
+ # FIXME: For pervasive_luks2 the arguments need to be passed
directly at #encrypt
+ # instead of being able to assign them afterwards. That's a defect
on the API of
+ # that encryption method that should be fixed
+ if method.is?(:pervasive_luks2)
+ args[:apqns] = encryption_pervasive_apqns
+ args[:key_type] = encryption_pervasive_key_type
+ end
+ result = plain_device.encrypt(method: method, password:
encryption_password, **args)
assign_enc_attr(result, :pbkdf)
assign_enc_attr(result, :label)
assign_enc_attr(result, :cipher)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.25/src/lib/y2storage/proposal/autoinst_drive_planner.rb
new/yast2-storage-ng-5.0.27/src/lib/y2storage/proposal/autoinst_drive_planner.rb
---
old/yast2-storage-ng-5.0.25/src/lib/y2storage/proposal/autoinst_drive_planner.rb
2025-02-12 13:33:29.000000000 +0100
+++
new/yast2-storage-ng-5.0.27/src/lib/y2storage/proposal/autoinst_drive_planner.rb
2025-02-24 16:18:28.000000000 +0100
@@ -17,6 +17,7 @@
# To contact SUSE LLC about this file by physical or electronic mail, you may
# find current contact information at www.suse.com.
+require "yast"
require "y2storage/proposal_settings"
require "y2storage/proposal/autoinst_size_parser"
require "y2storage/volume_specification"
@@ -24,7 +25,8 @@
module Y2Storage
module Proposal
# This module offers a set of common methods that are used by AutoYaST
planners.
- class AutoinstDrivePlanner
+ class AutoinstDrivePlanner # rubocop:disable Metrics/ClassLength
+ include Yast::Logger
# @!attribute [r] devicegraph
# @return [Devicegraph]
# @!attribute [r] issues_list
@@ -147,11 +149,49 @@
device.encryption_label = partition_section.crypt_label
device.encryption_cipher = partition_section.crypt_cipher
device.encryption_key_size = encryption_key_size_for(partition_section)
+ if device.encryption_method&.is?(:pervasive_luks2)
+ device.encryption_pervasive_apqns = apqns_for(partition_section)
+ device.encryption_pervasive_key_type =
partition_section.crypt_pervasive_key_type
+ end
return unless device.encryption_method&.password_required?
device.encryption_password =
find_encryption_password(partition_section)
end
+ # Determines if the given apqn is valid for being used for
pervasive_luks2 encryption
+ #
+ # @param apqn [EncryptionProcesses::Apqn]
+ # @return [Boolean] whether the given apqn can be used for
pervasive_luks2 encryption
+ def valid_apqn_candidate?(apqn)
+ if apqn.online?
+ return true if apqn.master_key_pattern
+
+ log.error "The APQN #{apqn.name} does not have a configured master
key pattern"
+ else
+ log.error "The APQN #{apqn.name} is not online"
+ end
+ false
+ end
+
+ # Obtains the online APQNs for a partition section
+ #
+ # @param partition_section [AutoinstProfile::PartitionSection] AutoYaST
specification
+ # @return [Array<EncryptionProcesses::Apqn>]
+ def apqns_for(partition_section)
+ result = []
+ apqns = partition_section.crypt_pervasive_apqns || []
+ all_apqns = Y2Storage::EncryptionProcesses::Apqn.all
+ apqns.each do |name|
+ apqn = all_apqns.find { |a| a.name == name }
+ if apqn
+ result << apqn if valid_apqn_candidate?(apqn)
+ else
+ log.error "The APQN #{name} was not found"
+ end
+ end
+ result
+ end
+
# Determines the encryption method for a partition section
#
# @param device [Planned::Device] Planned device
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.25/test/data/devicegraphs/agama_pxe.yml
new/yast2-storage-ng-5.0.27/test/data/devicegraphs/agama_pxe.yml
--- old/yast2-storage-ng-5.0.25/test/data/devicegraphs/agama_pxe.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-storage-ng-5.0.27/test/data/devicegraphs/agama_pxe.yml
2025-02-24 16:18:28.000000000 +0100
@@ -0,0 +1,160 @@
+---
+- disk:
+ name: "/dev/ram0"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram1"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+ partition_table: gpt
+ partitions:
+ - free:
+ size: 1 MiB
+ start: 0 B
+ - partition:
+ size: 2 MiB
+ start: 1 MiB
+ name: "/dev/ram1p1"
+ type: primary
+ id: linux
+ - free:
+ size: 2045 MiB (2.00 GiB)
+ start: 3 MiB
+- disk:
+ name: "/dev/ram2"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram3"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram4"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram5"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram6"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram7"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram8"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram9"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram10"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram11"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram12"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram13"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram14"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/ram15"
+ size: 2 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+- disk:
+ name: "/dev/sda"
+ size: 70 GiB
+ block_size: 0.5 KiB
+ io_size: 0 B
+ min_grain: 1 MiB
+ align_ofs: 0 B
+ partition_table: gpt
+ partitions:
+ - free:
+ size: 1 MiB
+ start: 0 B
+ - partition:
+ size: 8 MiB
+ start: 1 MiB
+ name: "/dev/sda1"
+ type: primary
+ id: bios_boot
+ - partition:
+ size: 69622 MiB (67.99 GiB)
+ start: 9 MiB
+ name: "/dev/sda2"
+ type: primary
+ id: linux
+ - partition:
+ size: 2098159.5 KiB (2.00 GiB)
+ start: 69631 MiB (68.00 GiB)
+ name: "/dev/sda3"
+ type: primary
+ id: swap
+ - free:
+ size: 16.5 KiB
+ start: 73400303.5 KiB (70.00 GiB)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.25/test/y2storage/autoinst_proposal_encryption_test.rb
new/yast2-storage-ng-5.0.27/test/y2storage/autoinst_proposal_encryption_test.rb
---
old/yast2-storage-ng-5.0.25/test/y2storage/autoinst_proposal_encryption_test.rb
2025-02-12 13:33:29.000000000 +0100
+++
new/yast2-storage-ng-5.0.27/test/y2storage/autoinst_proposal_encryption_test.rb
2025-02-24 16:18:28.000000000 +0100
@@ -36,7 +36,7 @@
end
let(:scenario) { "empty_disks" }
- let(:issues_list) { ::Installation::AutoinstIssues::List.new }
+ let(:issues_list) { Installation::AutoinstIssues::List.new }
let(:partitioning) do
[
@@ -280,5 +280,64 @@
expect(mount_points).to contain_exactly("/boot", "/")
end
end
+
+ context "when using pervasive LUKS2 method" do
+ before do
+ allow(Yast::Execute).to receive(:locally).with(/zkey/, any_args)
+ allow_any_instance_of(Y2Storage::EncryptionMethod::PervasiveLuks2).to
receive(:available?)
+ .and_return(true)
+
+ allow(Y2Storage::EncryptionProcesses::Apqn).to
receive(:all).and_return(apqns)
+ end
+
+ let(:apqns) { [apqn1, apqn2, apqn3] }
+ let(:apqn1) do
+ instance_double(Y2Storage::EncryptionProcesses::Apqn, name: "01.0001",
type: "CEX5C",
+ mode: "CCA_Coproc", status: "online", master_key_pattern:
"0x654478", online?: true)
+ end
+ let(:apqn2) do
+ instance_double(Y2Storage::EncryptionProcesses::Apqn, name: "02.0001",
status: "offline",
+ master_key_pattern: nil, online?: false)
+ end
+ let(:apqn3) do
+ instance_double(Y2Storage::EncryptionProcesses::Apqn, name: "02.0002",
status: "online",
+ mode: "EP11-Coproc", master_key_pattern: nil, online?: true)
+ end
+
+ let(:password) { "s3cr3t" }
+ let(:method) { Y2Storage::EncryptionMethod::PERVASIVE_LUKS2 }
+ let(:apqn_name) { "01.0001" }
+
+ let(:partition) do
+ { "mount" => "/", "crypt_key" => password, "crypt_method" => method.id,
+"crypt_pervasive_apqns" => [apqn_name] }
+ end
+
+ it "encrypts the device with PERVASIVE LUKS2 as encryption method" do
+ proposal.propose
+ enc = proposal.devices.encryptions.first
+ expect(enc.method).to eq method
+ end
+
+ context "when an apqn is specified" do
+ context "and the selected APNs are online and with a proper master key
pattern configured" do
+ it "encrypts the device with the selected apqn" do
+ expect_any_instance_of(Y2Storage::BlkDevice).to
receive(:encrypt).with(method: method,
+ password: password, apqns: [apqn1], key_type:
nil).and_call_original
+ proposal.propose
+ end
+ end
+
+ context "and the selected APNs are not valid candidates to be used" do
+ let(:apqn_name) { "02.0001" }
+
+ it "encrypts the device with no APQNs selected explicitly" do
+ expect_any_instance_of(Y2Storage::BlkDevice).to
receive(:encrypt).with(method: method,
+ password: password, apqns: [], key_type: nil).and_call_original
+ proposal.propose
+ end
+ end
+ end
+ end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.25/test/y2storage/disk_analyzer_test.rb
new/yast2-storage-ng-5.0.27/test/y2storage/disk_analyzer_test.rb
--- old/yast2-storage-ng-5.0.25/test/y2storage/disk_analyzer_test.rb
2025-02-12 13:33:29.000000000 +0100
+++ new/yast2-storage-ng-5.0.27/test/y2storage/disk_analyzer_test.rb
2025-02-24 16:18:28.000000000 +0100
@@ -704,5 +704,13 @@
end
end
end
+
+ context "when there are some RAM disks (PXE scenario with Agama)" do
+ let(:scenario) { "agama_pxe" }
+
+ it "includes only the real physical disks" do
+ expect(candidate_disks).to eq ["/dev/sda"]
+ end
+ end
end
end