From 57ec064c3a2dd59ac552e77dab44137810ac16aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= Date: Wed, 10 Apr 2024 13:48:32 +0200 Subject: [PATCH 1/3] Fixed setting unlimited maximum partition size gh#openSUSE/agama#1065 --- .../dbus/storage/volume_conversion/from_dbus.rb | 12 +++++++++++- service/package/rubygem-agama-yast.changes | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/service/lib/agama/dbus/storage/volume_conversion/from_dbus.rb b/service/lib/agama/dbus/storage/volume_conversion/from_dbus.rb index b2440dab4f..0ae34719f2 100644 --- a/service/lib/agama/dbus/storage/volume_conversion/from_dbus.rb +++ b/service/lib/agama/dbus/storage/volume_conversion/from_dbus.rb @@ -51,9 +51,19 @@ def convert dbus_volume_issues.each { |i| logger.warn(i) } builder = Agama::Storage::VolumeTemplatesBuilder.new_from_config(config) - builder.for(dbus_volume["MountPath"] || "").tap do |target| + ret = builder.for(dbus_volume["MountPath"] || "").tap do |target| valid_dbus_properties.each { |p| conversion(target, p) } end + + # The `undefined` value is used as a value for unlimited size in the + # UI but D-Bus cannot send `undefined`, `nil` or `NULL` values. In + # that case the value is missing in the D-Bus data. Override the + # default from the config when the max size is missing. + if ret.max_size && !ret.max_size.unlimited? && !dbus_volume.key?("MaxSize") + ret.max_size = Y2Storage::DiskSize.unlimited + end + + ret end private diff --git a/service/package/rubygem-agama-yast.changes b/service/package/rubygem-agama-yast.changes index 1e8f813afa..ee05a357fb 100644 --- a/service/package/rubygem-agama-yast.changes +++ b/service/package/rubygem-agama-yast.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Wed Apr 10 11:35:53 UTC 2024 - Ladislav Slezák + +- Fixed setting unlimited maximum partition size + (gh#openSUSE/agama#1065) + ------------------------------------------------------------------- Wed Apr 3 15:12:05 UTC 2024 - José Iván López González From 23a4e0193fd5a172326c024bbeb19b04a4a8760e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= Date: Wed, 10 Apr 2024 17:48:29 +0200 Subject: [PATCH 2/3] Update service/lib/agama/dbus/storage/volume_conversion/from_dbus.rb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Simplify the code Co-authored-by: José Iván López --- .../dbus/storage/volume_conversion/from_dbus.rb | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/service/lib/agama/dbus/storage/volume_conversion/from_dbus.rb b/service/lib/agama/dbus/storage/volume_conversion/from_dbus.rb index 0ae34719f2..6e6f7ecaef 100644 --- a/service/lib/agama/dbus/storage/volume_conversion/from_dbus.rb +++ b/service/lib/agama/dbus/storage/volume_conversion/from_dbus.rb @@ -51,19 +51,10 @@ def convert dbus_volume_issues.each { |i| logger.warn(i) } builder = Agama::Storage::VolumeTemplatesBuilder.new_from_config(config) - ret = builder.for(dbus_volume["MountPath"] || "").tap do |target| + builder.for(dbus_volume["MountPath"] || "").tap do |target| valid_dbus_properties.each { |p| conversion(target, p) } + target.max_size = Y2Storage::DiskSize.unlimited unless dbus_volume.key?("MaxSize") end - - # The `undefined` value is used as a value for unlimited size in the - # UI but D-Bus cannot send `undefined`, `nil` or `NULL` values. In - # that case the value is missing in the D-Bus data. Override the - # default from the config when the max size is missing. - if ret.max_size && !ret.max_size.unlimited? && !dbus_volume.key?("MaxSize") - ret.max_size = Y2Storage::DiskSize.unlimited - end - - ret end private From 90c13f23a3f00e9d76c30ab389026e5b542d0b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Slez=C3=A1k?= Date: Wed, 10 Apr 2024 17:53:46 +0200 Subject: [PATCH 3/3] Updated unit test --- service/test/agama/dbus/storage/manager_test.rb | 3 ++- .../agama/dbus/storage/volume_conversion/from_dbus_test.rb | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/service/test/agama/dbus/storage/manager_test.rb b/service/test/agama/dbus/storage/manager_test.rb index 7e85660587..d61bb7127a 100644 --- a/service/test/agama/dbus/storage/manager_test.rb +++ b/service/test/agama/dbus/storage/manager_test.rb @@ -391,7 +391,8 @@ expect(volume.mount_path).to eq("/") expect(volume.auto_size).to eq(false) expect(volume.min_size.to_i).to eq(5 * (1024**3)) - expect(volume.max_size.to_i).to eq(20 * (1024**3)) + # missing maximum value means unlimited size + expect(volume.max_size.to_i).to eq(-1) expect(volume.btrfs.snapshots).to eq(false) end diff --git a/service/test/agama/dbus/storage/volume_conversion/from_dbus_test.rb b/service/test/agama/dbus/storage/volume_conversion/from_dbus_test.rb index e3d3e2bfa9..a5e584a1ef 100644 --- a/service/test/agama/dbus/storage/volume_conversion/from_dbus_test.rb +++ b/service/test/agama/dbus/storage/volume_conversion/from_dbus_test.rb @@ -113,7 +113,8 @@ expect(volume.fs_type).to eq(Y2Storage::Filesystems::Type::BTRFS) expect(volume.auto_size?).to eq(false) expect(volume.min_size.to_i).to eq(5 * (1024**3)) - expect(volume.max_size.to_i).to eq(10 * (1024**3)) + # missing maximum value means unlimited size + expect(volume.max_size.to_i).to eq(-1) expect(volume.btrfs.snapshots?).to eq(false) end end