all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH manager] ui: guest import: allow setting mac addresses to unique
@ 2024-03-26 13:25 Aaron Lauterer
  2024-03-27 10:26 ` [pve-devel] applied: " Thomas Lamprecht
  0 siblings, 1 reply; 4+ messages in thread
From: Aaron Lauterer @ 2024-03-26 13:25 UTC (permalink / raw)
  To: pve-devel

by adding a new checkbox and render the grid accordingly.

If unique MAC addresses are enabled, set them to undefined when getting
the values from the grid.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
not sure if setting `uniqueMac` directly on the component is okay.
Though we do that dynamically for the `vmConfig` as well. So probably
okayish.

 www/manager6/window/GuestImport.js | 39 +++++++++++++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)

diff --git a/www/manager6/window/GuestImport.js b/www/manager6/window/GuestImport.js
index ae9bac5b..aee54706 100644
--- a/www/manager6/window/GuestImport.js
+++ b/www/manager6/window/GuestImport.js
@@ -15,6 +15,8 @@ Ext.define('PVE.window.GuestImport', {
     showTaskViewer: true,
     method: 'POST',
 
+    uniqueMac: false,
+
     loadUrl: function(_url, { storage, nodename, volumeName }) {
 	let args = Ext.Object.toQueryString({ volume: volumeName });
 	return `/nodes/${nodename}/storage/${storage}/import-metadata?${args}`;
@@ -187,6 +189,7 @@ Ext.define('PVE.window.GuestImport', {
 	refreshGrids: function() {
 	    this.lookup('diskGrid').reconfigure();
 	    this.lookup('cdGrid').reconfigure();
+	    this.lookup('netGrid').reconfigure();
 	},
 
 	onOSTypeChange: function(_cb, value) {
@@ -226,6 +229,21 @@ Ext.define('PVE.window.GuestImport', {
 	    me.getView().vmConfig.scsihw = value;
 	},
 
+	onUniqueMacChange: function(_cb, value) {
+	    let me = this;
+	    me.getView().uniqueMac = value;
+
+	    me.refreshGrids();
+	},
+
+	renderMacAddress: function(value, metaData, record, rowIndex, colIndex, store, view) {
+	    let me = this;
+	    if (me.getView().uniqueMac) {
+		return 'auto';
+	    }
+	    return value ? value : 'auto';
+	},
+
 	control: {
 	    'grid field': {
 		// update records from widgetcolumns
@@ -256,6 +274,9 @@ Ext.define('PVE.window.GuestImport', {
 	    'pveScsiHwSelector': {
 		change: 'onScsiHwChange',
 	    },
+	    'proxmoxcheckbox[reference=uniqueMac]': {
+		change: 'onUniqueMacChange',
+	    },
 	},
     },
 
@@ -364,6 +385,9 @@ Ext.define('PVE.window.GuestImport', {
 			    if (!data.bridge) {
 				data.bridge = defaultBridge;
 			    }
+			    if (grid.uniqueMac) {
+				data.macaddr = undefined;
+			    }
 			    config[id] = PVE.Parser.printQemuNetwork(data);
 			});
 
@@ -778,7 +802,7 @@ Ext.define('PVE.window.GuestImport', {
 				    text: gettext('MAC address'),
 				    flex: 1,
 				    dataIndex: 'macaddr',
-				    renderer: value => value ?? 'auto',
+				    renderer: 'renderMacAddress',
 				},
 				{
 				    text: gettext('Model'),
@@ -809,6 +833,19 @@ Ext.define('PVE.window.GuestImport', {
 				},
 			    ],
 			},
+			{
+			    xtype: 'proxmoxcheckbox',
+			    name: 'uniqueMACs',
+			    reference: 'uniqueMac',
+			    labelWidth: 200,
+			    fieldLabel: gettext('Unique MAC addresses'),
+			    uncheckedValue: false,
+			    checked: false,
+			    autoEl: {
+				tag: 'div',
+				'data-qtip': gettext('Generate new unique MAC addresses.'),
+			    },
+			},
 		    ],
 		},
 		{
-- 
2.39.2





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-03-27 10:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-26 13:25 [pve-devel] [PATCH manager] ui: guest import: allow setting mac addresses to unique Aaron Lauterer
2024-03-27 10:26 ` [pve-devel] applied: " Thomas Lamprecht
2024-03-27 10:32   ` Aaron Lauterer
2024-03-27 10:33     ` Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal