From 9ddc14832d6bd9eb5a11b44468706b159d8a6990 Mon Sep 17 00:00:00 2001 From: Ancor Gonzalez Sosa Date: Thu, 7 Mar 2024 15:35:13 +0000 Subject: [PATCH] WIP --- products.d/tumbleweed.yaml | 8 +++++--- .../lib/agama/dbus/storage/volume_conversion/to_dbus.rb | 1 + web/src/client/storage.js | 2 ++ web/src/components/storage/ProposalVolumes.jsx | 8 +++++--- web/src/components/storage/VolumeForm.jsx | 4 ++++ 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/products.d/tumbleweed.yaml b/products.d/tumbleweed.yaml index 6c5f0426a2..590008e631 100644 --- a/products.d/tumbleweed.yaml +++ b/products.d/tumbleweed.yaml @@ -154,10 +154,12 @@ storage: - mount_path: "swap" filesystem: swap size: - auto: false - min: 1 GiB - max: 2 GiB + auto: true outline: + auto_size: + base_min: 1 GiB + base_max: 2 GiB + adjust_by_ram: true required: false filesystems: - swap diff --git a/service/lib/agama/dbus/storage/volume_conversion/to_dbus.rb b/service/lib/agama/dbus/storage/volume_conversion/to_dbus.rb index dd03df6dd8..3f586f7d2e 100644 --- a/service/lib/agama/dbus/storage/volume_conversion/to_dbus.rb +++ b/service/lib/agama/dbus/storage/volume_conversion/to_dbus.rb @@ -70,6 +70,7 @@ def outline_conversion(target) "Required" => outline.required?, "FsTypes" => outline.filesystems.map(&:to_human_string), "SupportAutoSize" => outline.adaptive_sizes?, + "AdjustByRam" => outline.adjust_by_ram?, "SnapshotsConfigurable" => outline.snapshots_configurable?, "SnapshotsAffectSizes" => outline.snapshots_affect_sizes?, "SizeRelevantVolumes" => outline.size_relevant_volumes diff --git a/web/src/client/storage.js b/web/src/client/storage.js index 66a92956bf..488862d9a1 100644 --- a/web/src/client/storage.js +++ b/web/src/client/storage.js @@ -300,6 +300,7 @@ class ProposalManager { * @property {boolean} required * @property {string[]} fsTypes * @property {boolean} supportAutoSize + * @property {boolean} adjustByRam * @property {boolean} snapshotsConfigurable * @property {boolean} snapshotsAffectSizes * @property {string[]} sizeRelevantVolumes @@ -543,6 +544,7 @@ class ProposalManager { required: dbusOutline.Required.v, fsTypes: dbusOutline.FsTypes.v.map(val => val.v), supportAutoSize: dbusOutline.SupportAutoSize.v, + adjustByRam: dbusOutline.AdjustByRam.v, snapshotsConfigurable: dbusOutline.SnapshotsConfigurable.v, snapshotsAffectSizes: dbusOutline.SnapshotsAffectSizes.v, sizeRelevantVolumes: dbusOutline.SizeRelevantVolumes.v.map(val => val.v) diff --git a/web/src/components/storage/ProposalVolumes.jsx b/web/src/components/storage/ProposalVolumes.jsx index be080ece93..4015589800 100644 --- a/web/src/components/storage/ProposalVolumes.jsx +++ b/web/src/components/storage/ProposalVolumes.jsx @@ -46,10 +46,10 @@ import { noop } from "~/utils"; * @returns {(ReactComponent|null)} component to display (can be `null`) */ const AutoCalculatedHint = (volume) => { - // no hint, the size is not affected by snapshots or other volumes - const { snapshotsAffectSizes = false, sizeRelevantVolumes = [] } = volume.outline; + const { snapshotsAffectSizes = false, sizeRelevantVolumes = [], adjustByRam } = volume.outline; - if (!snapshotsAffectSizes && sizeRelevantVolumes.length === 0) { + // no hint, the size is not affected by known criteria + if (!snapshotsAffectSizes && !adjustByRam && sizeRelevantVolumes.length === 0) { return null; } @@ -65,6 +65,8 @@ const AutoCalculatedHint = (volume) => { // TRANSLATORS: list item, this affects the computed partition size limits // %s is replaced by a list of the volumes (like "/home, /boot") {sprintf(_("Presence of other volumes (%s)"), sizeRelevantVolumes.join(", "))}} + {adjustByRam && + {_("The amount of RAM in the system")}} ); diff --git a/web/src/components/storage/VolumeForm.jsx b/web/src/components/storage/VolumeForm.jsx index b93f3bae11..b106d9925d 100644 --- a/web/src/components/storage/VolumeForm.jsx +++ b/web/src/components/storage/VolumeForm.jsx @@ -310,6 +310,10 @@ const SizeAuto = ({ volume }) => { // TRANSLATORS: conjunction for merging two list items volume.outline.sizeRelevantVolumes.join(_(", ")))); + if (volume.outline.adjustByRam) + // TRANSLATORS: item which affects the final computed partition size + conditions.push(_("the amount of RAM in the system")); + // TRANSLATORS: the %s is replaced by the items which affect the computed size const conditionsText = sprintf(_("The final size depends on %s."), // TRANSLATORS: conjunction for merging two texts