[pve-devel] [PATCH manager 6/6] ui: dc/Auth: add sync button

Dominik Csapak d.csapak at proxmox.com
Thu Apr 9 16:10:49 CEST 2020


opens a window with the parameters for the sync and two buttons:
'preview' and 'sync'

both open the taskviewer, but the 'preview' one sets the 'no-write'
parameter so that it does not get written out to the user.cfg

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 www/manager6/Makefile         |   1 +
 www/manager6/dc/AuthView.js   |  21 ++++++
 www/manager6/dc/SyncWindow.js | 125 ++++++++++++++++++++++++++++++++++
 3 files changed, 147 insertions(+)
 create mode 100644 www/manager6/dc/SyncWindow.js

diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index a06d349c..67f81b20 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -232,6 +232,7 @@ JSSRC= 				                 	\
 	dc/RoleView.js					\
 	dc/RoleEdit.js					\
 	dc/ACLView.js					\
+	dc/SyncWindow.js				\
 	dc/AuthView.js					\
 	dc/AuthEditBase.js				\
 	dc/AuthEditAD.js				\
diff --git a/www/manager6/dc/AuthView.js b/www/manager6/dc/AuthView.js
index a2486fef..3e5a8517 100644
--- a/www/manager6/dc/AuthView.js
+++ b/www/manager6/dc/AuthView.js
@@ -73,6 +73,19 @@ Ext.define('PVE.dc.AuthView', {
 	me.openEditWindow(rec.data.type, rec.data.realm);
     },
 
+    open_sync_window: function() {
+	let me = this;
+	let rec = me.getSelection()[0];
+	if (!rec) {
+	    return;
+	}
+	Ext.create('PVE.dc.SyncWindow', {
+	    realm: rec.data.realm,
+	    listeners: {
+		destroy: () => me.reload(),
+	    },
+	}).show();
+    },
 
     initComponent: function() {
 	var me = this;
@@ -107,6 +120,14 @@ Ext.define('PVE.dc.AuthView', {
 		    enableFn: (rec) => PVE.Utils.authSchema[rec.data.type].add,
 		    callback: () => me.reload(),
 		},
+		'-',
+		{
+		    xtype: 'proxmoxButton',
+		    text: gettext('Sync'),
+		    disabled: true,
+		    enableFn: (rec) => Boolean(PVE.Utils.authSchema[rec.data.type].syncipanel),
+		    handler: () => me.open_sync_window(),
+		},
 	    ],
 	    listeners: {
 		activate: () => me.reload(),
diff --git a/www/manager6/dc/SyncWindow.js b/www/manager6/dc/SyncWindow.js
new file mode 100644
index 00000000..21d4fbfb
--- /dev/null
+++ b/www/manager6/dc/SyncWindow.js
@@ -0,0 +1,125 @@
+Ext.define('PVE.dc.SyncWindow', {
+    extend: 'Ext.window.Window',
+
+    title: gettext('Realm Sync'),
+
+    bodyPadding: 10,
+    modal: true,
+    resizable: false,
+
+    sync_realm: function(is_preview) {
+	let me = this;
+	let ipanel = me.down('inputpanel');
+	let params = ipanel.getValues();
+	params['no-write'] = is_preview ? 1 : 0;
+	Proxmox.Utils.API2Request({
+	    url: `/access/domains/${me.realm}/sync`,
+	    waitMsgTarget: me,
+	    method: 'POST',
+	    params,
+	    failure: function(response) {
+		me.show();
+		Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+	    },
+	    success: function(response) {
+		me.hide();
+		Ext.create('Proxmox.window.TaskViewer', {
+		    upid: response.result.data,
+		    listeners: {
+			destroy: function() {
+			    me.close();
+			},
+		    },
+		}).show();
+	    },
+	});
+    },
+
+    items: [
+	{
+	    xtype: 'inputpanel',
+	    column1: [
+		{
+		    xtype: 'proxmoxKVComboBox',
+		    name: 'scope',
+		    fieldLabel: gettext('Scope'),
+		    value: '__default__',
+		    deleteEmpty: false,
+		    comboItems: [
+			['__default__', Proxmox.Utils.defaultText],
+			['users', gettext('Users')],
+			['groups', gettext('Groups')],
+			['both', gettext('Users and Groups')],
+		    ],
+		},
+		{
+		    xtype: 'proxmoxKVComboBox',
+		    value: '__default__',
+		    deleteEmpty: false,
+		    comboItems: [
+			['__default__', Proxmox.Utils.defaultText],
+			['1', Proxmox.Utils.yesText],
+			['0', Proxmox.Utils.noText],
+		    ],
+		    name: 'full',
+		    fieldLabel: gettext('Full'),
+		},
+	    ],
+
+	    column2: [
+		{
+		    xtype: 'proxmoxKVComboBox',
+		    value: '__default__',
+		    deleteEmpty: false,
+		    comboItems: [
+			[
+			    '__default__',
+			    Ext.String.format(
+					      gettext("{0} ({1})"),
+					      Proxmox.Utils.yesText,
+					      Proxmox.Utils.defaultText,
+			    ),
+			],
+			['1', Proxmox.Utils.yesText],
+			['0', Proxmox.Utils.noText],
+		    ],
+		    name: 'enable-new',
+		    fieldLabel: gettext('Enable new'),
+		},
+		{
+		    xtype: 'proxmoxKVComboBox',
+		    value: '__default__',
+		    deleteEmpty: false,
+		    comboItems: [
+			['__default__', Proxmox.Utils.defaultText],
+			['1', Proxmox.Utils.yesText],
+			['0', Proxmox.Utils.noText],
+		    ],
+		    name: 'purge',
+		    fieldLabel: gettext('Purge'),
+		},
+	    ],
+	},
+    ],
+
+    buttons: [
+	{
+	    text: gettext('Preview'),
+	    handler: function() { this.up('window').sync_realm(true); },
+	},
+	{
+	    text: gettext('Sync'),
+	    handler: function() { this.up('window').sync_realm(false); },
+	},
+    ],
+
+    initComponent: function() {
+	let me = this;
+
+	if (!me.realm) {
+	    throw "no realm defined";
+	}
+
+	me.callParent();
+    },
+});
-- 
2.20.1





More information about the pve-devel mailing list