From 50fcc927b0320c9702f36cadae1273047b879820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Iv=C3=A1n=20L=C3=B3pez=20Gonz=C3=A1lez?= Date: Tue, 1 Oct 2024 07:02:05 +0100 Subject: [PATCH] WIP --- .../from_json_conversions/boot.rb | 13 +++------- .../from_json_conversions/btrfs.rb | 13 +++------- .../from_json_conversions/config.rb | 19 ++++---------- .../from_json_conversions/drive.rb | 23 ++++++---------- .../from_json_conversions/encryption.rb | 13 +++------- .../from_json_conversions/filesystem.rb | 15 +++-------- .../from_json_conversions/filesystem_type.rb | 15 +++-------- .../from_json_conversions/logical_volume.rb | 26 +++++-------------- .../from_json_conversions/partition.rb | 18 ++++--------- .../from_json_conversions/search.rb | 13 +++------- .../from_json_conversions/size.rb | 19 +++----------- .../from_json_conversions/volume_group.rb | 24 ++++------------- .../from_json_conversions/with_encryption.rb | 7 +++-- .../from_json_conversions/with_filesystem.rb | 7 +++-- .../from_json_conversions/with_partitions.rb | 3 +-- .../from_json_conversions/with_ptable_type.rb | 5 ++-- .../from_json_conversions/with_search.rb | 7 +++-- .../from_json_conversions/with_size.rb | 9 +++---- 18 files changed, 69 insertions(+), 180 deletions(-) diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/boot.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/boot.rb index 82cbd68589..e2d2096abf 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/boot.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/boot.rb @@ -29,25 +29,18 @@ module FromJSONConversions # Boot conversion from JSON hash according to schema. class Boot < Base # @see Base#convert - # - # @param boot_json [Hash] # @return [Configs::Boot] - def convert(boot_json) - @boot_json = boot_json - + def convert super(Configs::Boot.new) end private - # @return [Hash] - attr_reader :boot_json + alias_method :boot_json, :config_json # @see Base#conversions - # - # @param _config [Configs::Boot] # @return [Hash] - def conversions(_config) + def conversions { configure: boot_json[:configure], device: boot_json[:device] diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/btrfs.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/btrfs.rb index 932fac8742..f658287b74 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/btrfs.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/btrfs.rb @@ -29,25 +29,18 @@ module FromJSONConversions # Btrfs conversion from JSON hash according to schema. class Btrfs < Base # @see Base#convert - # - # @param btrfs_json [Hash] # @return [Configs::Btrfs] - def convert(btrfs_json) - @btrfs_json = btrfs_json - + def convert super(Configs::Btrfs.new) end private - # @return [String] - attr_reader :btrfs_json + alias_method :btrfs_json, :config_json # @see Base#conversions - # - # @param _config [Configs::Btrfs] # @return [Hash] - def conversions(_config) + def conversions { snapshots: btrfs_json[:snapshots] } diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/config.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/config.rb index 1aeb8500e0..4e86fef679 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/config.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/config.rb @@ -32,25 +32,16 @@ module FromJSONConversions # Config conversion from JSON hash according to schema. class Config < Base # @see Base#convert - # - # @param config_json [Hash] # @return [Config] - def convert(config_json) - @config_json = config_json - + def convert super(Storage::Config.new) end private - # @return [Hash] - attr_reader :config_json - # @see Base#conversions - # - # @param default [Config] # @return [Hash] - def conversions(config) + def conversions { boot: convert_boot, drives: convert_drives, @@ -63,7 +54,7 @@ def convert_boot boot_json = config_json[:boot] return unless boot_json - FromJSONConversions::Boot.new.convert(boot_json) + FromJSONConversions::Boot.new(boot_json).convert end # @return [Array, nil] @@ -77,7 +68,7 @@ def convert_drives # @param drive_json [Hash] # @return [Configs::Drive] def convert_drive(drive_json) - FromJSONConversions::Drive.new.convert(drive_json) + FromJSONConversions::Drive.new(drive_json).convert end # @return [Array, nil] @@ -91,7 +82,7 @@ def convert_volume_groups # @param volume_group_json [Hash] # @return [Configs::VolumeGroup] def convert_volume_group(volume_group_json) - FromJSONConversions::VolumeGroup.new.convert(volume_group_json) + FromJSONConversions::VolumeGroup.new(volume_group_json).convert end end end diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/drive.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/drive.rb index 1d77ea9f00..8fd661dd6c 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/drive.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/drive.rb @@ -40,32 +40,25 @@ class Drive < Base include WithPartitions # @see Base#convert - # - # @param drive_json [Hash] # @return [Configs::Drive] - def convert(drive_json) - @drive_json = drive_json - + def convert super(Configs::Drive.new) end private - # @return [Hash] - attr_reader :drive_json + alias_method :drive_json, :config_json # @see Base#conversions - # - # @param _config [Configs::Drive] # @return [Hash] - def conversions(_config) + def conversions { - search: convert_search(drive_json), + search: convert_search, alias: drive_json[:alias], - encryption: convert_encryption(drive_json), - filesystem: convert_filesystem(drive_json), - ptable_type: convert_ptable_type(drive_json), - partitions: convert_partitions(drive_json) + encryption: convert_encryption, + filesystem: convert_filesystem, + ptable_type: convert_ptable_type, + partitions: convert_partitions } end end diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/encryption.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/encryption.rb index 81207f9a60..0bafd6a992 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/encryption.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/encryption.rb @@ -31,25 +31,18 @@ module FromJSONConversions # Encryption conversion from JSON hash according to schema. class Encryption < Base # @see Base#convert - # - # @param encryption_json [Hash, String] # @return [Configs::Encryption] - def convert(encryption_json) - @encryption_json = encryption_json - + def convert super(Configs::Encryption.new) end private - # @return [Hash, String] - attr_reader :encryption_json + alias_method :encryption_json, :config_json # @see Base#conversions - # - # @param _config [Configs::Encryption] # @return [Hash] - def conversions(_config) + def conversions return luks1_conversions if luks1? return luks2_conversions if luks2? return pervasive_luks2_conversions if pervasive_luks2? diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/filesystem.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/filesystem.rb index c91797951a..b5aac14056 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/filesystem.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/filesystem.rb @@ -31,25 +31,18 @@ module FromJSONConversions # Filesystem conversion from JSON hash according to schema. class Filesystem < Base # @see Base#convert - # - # @param filesystem_json [Hash] # @return [Configs::Filesystem] - def convert(filesystem_json) - @filesystem_json = filesystem_json - + def convert super(Configs::Filesystem.new) end private - # @return [Hash] - attr_reader :filesystem_json + alias_method :filesystem_json, :config_json # @see Base#conversions - # - # @param _config [Configs::Filesystem] # @return [Hash] - def conversions(_config) + def conversions { reuse: filesystem_json[:reuseIfPossible], label: filesystem_json[:label], @@ -74,7 +67,7 @@ def convert_type filesystem_type_json = filesystem_json[:type] return unless filesystem_type_json - FromJSONConversions::FilesystemType.new.convert(filesystem_type_json) + FromJSONConversions::FilesystemType.new(filesystem_type_json).convert end end end diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/filesystem_type.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/filesystem_type.rb index e8fd37de17..4c36492b10 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/filesystem_type.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/filesystem_type.rb @@ -32,25 +32,18 @@ module FromJSONConversions # Filesystem type conversion from JSON hash according to schema. class FilesystemType < Base # @see Base#convert - # - # @param filesystem_type_json [Hash, String] # @return [Configs::FilesystemType] - def convert(filesystem_type_json) - @filesystem_type_json = filesystem_type_json - + def convert super(Configs::FilesystemType.new) end private - # @return [Hash, String] - attr_reader :filesystem_type_json + alias_method :filesystem_type_json, :config_json # @see Base#conversions - # - # @param _default [Configs::FilesystemType] # @return [Hash] - def conversions(_default) + def conversions { fs_type: convert_type, btrfs: convert_btrfs @@ -70,7 +63,7 @@ def convert_btrfs btrfs_json = filesystem_type_json[:btrfs] return unless btrfs_json - FromJSONConversions::Btrfs.new.convert(btrfs_json) + FromJSONConversions::Btrfs.convert(btrfs_json).convert end end end diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/logical_volume.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/logical_volume.rb index cd48f8de1f..048366b2db 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/logical_volume.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/logical_volume.rb @@ -36,36 +36,24 @@ class LogicalVolume < Base include WithFilesystem include WithSize - # @param logical_volume_json [Hash] - # @param config_builder [ConfigBuilder, nil] - def initialize(logical_volume_json, config_builder: nil) - super(config_builder) - @logical_volume_json = logical_volume_json - end - # @see Base#convert - # - # @param default [Configs::LogicalVolume, nil] # @return [Configs::LogicalVolume] - def convert(default = nil) - super(default || Configs::LogicalVolume.new) + def conver + super(Configs::LogicalVolume.new) end private - # @return [Hash] - attr_reader :logical_volume_json + alias_method :logical_volume_json, :config_json # @see Base#conversions - # - # @param default [Configs::LogicalVolume] # @return [Hash] - def conversions(default) + def conversions { alias: logical_volume_json[:alias], - encryption: convert_encryption(logical_volume_json, default: default.encryption), - filesystem: convert_filesystem(logical_volume_json, default: default.filesystem), - size: convert_size(logical_volume_json, default: default.size), + encryption: convert_encryption, + filesystem: convert_filesystem, + size: convert_size, name: logical_volume_json[:name], stripes: logical_volume_json[:stripes], stripe_size: convert_stripe_size, diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/partition.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/partition.rb index ff59947e93..00823a0c45 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/partition.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/partition.rb @@ -38,13 +38,7 @@ class Partition < Base include WithFilesystem include WithSize - # @param partition_json [Hash] - def initialize(partition_json) - super(partition_json) - end - # @see Base#convert - # # @return [Configs::Partition] def convert super(Configs::Partition.new) @@ -55,16 +49,14 @@ def convert alias_method :partition_json, :config_json # @see Base#conversions - # - # @param default [Configs::Partition] # @return [Hash] - def conversions(default) + def conversions { - search: convert_search(partition_json), + search: convert_search, alias: partition_json[:alias], - encryption: convert_encryption(partition_json), - filesystem: convert_filesystem(partition_json), - size: convert_size(partition_json), + encryption: convert_encryption, + filesystem: convert_filesystem, + size: convert_size, id: convert_id, delete: partition_json[:delete], delete_if_needed: partition_json[:deleteIfNeeded] diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/search.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/search.rb index 86291e4d23..5df1bfb673 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/search.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/search.rb @@ -29,25 +29,18 @@ module FromJSONConversions # Search conversion from JSON hash according to schema. class Search < Base # @see Base#convert - # - # @param search_json [Hash, String] # @return [Configs::Search] - def convert(search_json) - @search_json = search_json - + def convert super(Configs::Search.new) end private - # @return [Hash, String] - attr_reader :search_json + alias_method :search_json, :config_json # @see Base#conversions - # - # @param _config [Configs::Partition] # @return [Hash] - def conversions(_config) + def conversions { name: convert_name, if_not_found: convert_not_found diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/size.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/size.rb index cb02433aa4..c1cf93881b 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/size.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/size.rb @@ -29,30 +29,19 @@ module ConfigConversions module FromJSONConversions # Size conversion from JSON hash according to schema. class Size < Base - # @param size_json [Hash] - def initialize(size_json) - super() - @size_json = size_json - end - # @see Base#convert - # - # @param default [Configs::Size, nil] # @return [Configs::Size] - def convert(default = nil) - super(default || Configs::Size.new) + def convert + super(Configs::Size.new) end private - # @return [Hash] - attr_reader :size_json + alias_method :size_json, :config_json # @see Base#conversions - # - # @param _default [Configs::Size] # @return [Hash] - def conversions(_default) + def conversions { default: false, min: convert_min_size, diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/volume_group.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/volume_group.rb index b88e26212d..e17ff218fe 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/volume_group.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/volume_group.rb @@ -29,31 +29,19 @@ module ConfigConversions module FromJSONConversions # Volume group conversion from JSON hash according to schema. class VolumeGroup < Base - # @param volume_group_json [Hash] - # @param config_builder [ConfigBuilder, nil] - def initialize(volume_group_json, config_builder: nil) - super(config_builder) - @volume_group_json = volume_group_json - end - # @see Base#convert - # - # @param default [Configs::VolumeGroup, nil] # @return [Configs::VolumeGroup] - def convert(default = nil) - super(default || Configs::VolumeGroup.new) + def convert + super(Configs::VolumeGroup.new) end private - # @return [Hash] - attr_reader :volume_group_json + alias_method :volume_group_json, :config_json # @see Base#conversions - # - # @param _default [Configs::VolumeGroup] # @return [Hash] - def conversions(_default) + def conversions { name: volume_group_json[:name], extent_size: convert_extent_size, @@ -81,9 +69,7 @@ def convert_logical_volumes # @param logical_volume_json [Hash] # @return [Configs::LogicalVolume] def convert_logical_volume(logical_volume_json) - FromJSONConversions::LogicalVolume - .new(logical_volume_json, config_builder: config_builder) - .convert + FromJSONConversions::LogicalVolume.new(logical_volume_json).convert end end end diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/with_encryption.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/with_encryption.rb index 13d94ffa2f..3bfdd2dd61 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/with_encryption.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/with_encryption.rb @@ -27,13 +27,12 @@ module ConfigConversions module FromJSONConversions # Mixin for encryption conversion. module WithEncryption - # @param json [Hash] # @return [Configs::Encryption, nil] - def convert_encryption(json) - encryption_json = json[:encryption] + def convert_encryption + encryption_json = config_json[:encryption] return unless encryption_json - FromJSONConversions::Encryption.new.convert(encryption_json) + FromJSONConversions::Encryption.new(encryption_json).convert end end end diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/with_filesystem.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/with_filesystem.rb index 7c7c01b460..9c8b60be90 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/with_filesystem.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/with_filesystem.rb @@ -27,13 +27,12 @@ module ConfigConversions module FromJSONConversions # Mixin for filesystem conversion. module WithFilesystem - # @param json [Hash] # @return [Configs::Filesystem, nil] - def convert_filesystem(json) - filesystem_json = json[:filesystem] + def convert_filesystem + filesystem_json = config_json[:filesystem] return unless filesystem_json - FromJSONConversions::Filesystem.new.convert(filesystem_json) + FromJSONConversions::Filesystem.new(filesystem_json).convert end end end diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/with_partitions.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/with_partitions.rb index d9439ac5e2..9c5dad1e54 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/with_partitions.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/with_partitions.rb @@ -27,9 +27,8 @@ module ConfigConversions module FromJSONConversions # Mixin for partitions conversion. module WithPartitions - # @param config_json [Hash] # @return [Array, nil] - def convert_partitions(config_json) + def convert_partitions partitions_json = config_json[:partitions] return unless partitions_json diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/with_ptable_type.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/with_ptable_type.rb index 1d0a0b5d38..9c50f0cd05 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/with_ptable_type.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/with_ptable_type.rb @@ -27,10 +27,9 @@ module ConfigConversions module FromJSONConversions # Mixin for partition table type conversion. module WithPtableType - # @param json [Hash] # @return [Y2Storage::PartitionTables::Type, nil] - def convert_ptable_type(json) - value = json[:ptableType] + def convert_ptable_type + value = config_json[:ptableType] return unless value Y2Storage::PartitionTables::Type.find(value) diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/with_search.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/with_search.rb index a6d662e7e8..cf72d7642d 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/with_search.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/with_search.rb @@ -27,13 +27,12 @@ module ConfigConversions module FromJSONConversions # Mixin for search conversion. module WithSearch - # @param json [Hash] # @return [Configs::Search, nil] - def convert_search(json) - search_json = json[:search] + def convert_search + search_json = config_json[:search] return unless search_json - FromJSONConversions::Search.new.convert(search_json) + FromJSONConversions::Search.new(search_json).convert end end end diff --git a/service/lib/agama/storage/config_conversions/from_json_conversions/with_size.rb b/service/lib/agama/storage/config_conversions/from_json_conversions/with_size.rb index 33e9baa815..bde583b87d 100644 --- a/service/lib/agama/storage/config_conversions/from_json_conversions/with_size.rb +++ b/service/lib/agama/storage/config_conversions/from_json_conversions/with_size.rb @@ -27,15 +27,12 @@ module ConfigConversions module FromJSONConversions # Mixin for size conversion. module WithSize - # @param json [Hash] - # @param default [Configs::Size, nil] - # # @return [Configs::Size, nil] - def convert_size(json, default: nil) - size_json = json[:size] + def convert_size + size_json = config_json[:size] return unless size_json - FromJSONConversions::Size.new(size_json).convert(default) + FromJSONConversions::Size.new(size_json).convert end end end