[pve-devel] [PATCH pve-manager v3] ui: storage: add is_mountpoint checkbox to dir/btrfs storage edit
Hannes Laimer
h.laimer at proxmox.com
Tue Mar 25 16:20:58 CET 2025
This came up in support, and there is no reason to not have it in
the UI, while having it in the API.
Signed-off-by: Hannes Laimer <h.laimer at proxmox.com>
---
v2:
- use Aaron's improved help text
v3, thanks @Fabian and @Fiona:
- handle if a path is set correctly
- move to BaseStorage, so we don't have the same code in two places
www/manager6/storage/Base.js | 44 ++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/www/manager6/storage/Base.js b/www/manager6/storage/Base.js
index c8c735f3..813f961b 100644
--- a/www/manager6/storage/Base.js
+++ b/www/manager6/storage/Base.js
@@ -4,6 +4,13 @@ Ext.define('PVE.panel.StorageBase', {
type: '',
+ viewModel: {
+ data: {
+ isMpReadOnly: false,
+ isMpChecked: false,
+ },
+ },
+
onGetValues: function(values) {
let me = this;
@@ -19,6 +26,16 @@ Ext.define('PVE.panel.StorageBase', {
return values;
},
+ setValues: function(values) {
+ let isMp = values.is_mountpoint;
+ let isMpSet = !!isMp && isMp !== '0';
+ let isMpIsPath = isMpSet && isMp !== '1';
+ this.viewModel.set('isMpReadOnly', isMpIsPath);
+ this.viewModel.set('isMpChecked', isMpSet);
+
+ this.callParent([values]);
+ },
+
initComponent: function() {
let me = this;
@@ -73,6 +90,33 @@ Ext.define('PVE.panel.StorageBase', {
}
}
+ const hasIsMountpointStorageTypes = ['dir', 'btrfs'];
+
+ if (hasIsMountpointStorageTypes.includes(me.type)) {
+ const isMountpointBox = {
+ xtype: 'proxmoxcheckbox',
+ name: 'is_mountpoint',
+ uncheckedValue: 0,
+ fieldLabel: gettext('Mountpoint'),
+ bind: {
+ disabled: '{isMpReadOnly}',
+ value: '{isMpChecked}',
+ },
+ autoEl: {
+ tag: 'div',
+ 'data-qtip': gettext('Enable if something is mounted at this path. Storage is considered offline as long as nothing is mounted.'),
+ },
+ };
+
+ me.advancedColumn1 = me.advancedColumn1 || [];
+ me.advancedColumn2 = me.advancedColumn2 || [];
+ if (me.advancedColumn2.length < me.advancedColumn1.length) {
+ me.advancedColumn2.unshift(isMountpointBox);
+ } else {
+ me.advancedColumn1.unshift(isMountpointBox);
+ }
+ }
+
me.callParent();
},
});
--
2.39.5
More information about the pve-devel
mailing list