shows information about the datastore: - datastore name - hostname - host x509 fingerprint
and creates the base64-encoded json blob to be pasted into PVE to add as storage. Signed-off-by: Oguz Bektas <o.bek...@proxmox.com> --- www/DataStoreSummary.js | 35 ++++++++++++++- www/Makefile | 1 + www/window/DataStoreJoin.js | 88 +++++++++++++++++++++++++++++++++++++ 3 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 www/window/DataStoreJoin.js diff --git a/www/DataStoreSummary.js b/www/DataStoreSummary.js index 93bd99a3..616e2cf7 100644 --- a/www/DataStoreSummary.js +++ b/www/DataStoreSummary.js @@ -208,7 +208,40 @@ Ext.define('PBS.DataStoreSummary', { padding: 5, }, - tbar: ['->', { xtype: 'proxmoxRRDTypeSelector' }], + tbar: [ + { + xtype: 'button', + text: gettext('Show Datastore Information'), + handler: function() { + let me = this; + let panel = me.up('panel'); + Proxmox.Utils.API2Request({ + url: '/api2/extjs/nodes/localhost/status', + method: 'GET', + waitMsgTarget: panel, + failure: function(e) { + console.log(e); + }, + success: function(response) { + let fingerprint = response.result.data.info.fingerprint; + let hostname = window.location.hostname; + let dsName = panel.datastore; + Ext.create('PBS.JoinInfoWindow', { + joinInfo: { + ipAddress: hostname, + fingerprint: fingerprint, + dsName: dsName, + }, + }).show(); + }, + }); + }, + }, + '->', + { + xtype: 'proxmoxRRDTypeSelector', + }, + ], items: [ { diff --git a/www/Makefile b/www/Makefile index cba8bed5..42fe8724 100644 --- a/www/Makefile +++ b/www/Makefile @@ -21,6 +21,7 @@ JSSRC= \ window/BackupFileDownloader.js \ window/CreateDirectory.js \ window/DataStoreEdit.js \ + window/DataStoreJoin.js \ window/FileBrowser.js \ window/NotesEdit.js \ window/RemoteEdit.js \ diff --git a/www/window/DataStoreJoin.js b/www/window/DataStoreJoin.js new file mode 100644 index 00000000..3a1dd87f --- /dev/null +++ b/www/window/DataStoreJoin.js @@ -0,0 +1,88 @@ +Ext.define('PBS.JoinInfoWindow', { + extend: 'Ext.window.Window', + modal: true, + width: 600, + title: gettext('Datastore Join Information'), + mixins: ['Proxmox.Mixin.CBind'], + joinInfo: { + ipAddress: undefined, + fingerprint: undefined, + dsName: undefined, + }, + layout: 'form', + bodyPadding: '10 0', + items: [ + { + xtype: 'container', + layout: 'form', + border: false, + padding: '0 10 10 10', + items: [ + { + xtype: 'textfield', + fieldLabel: gettext('x509 Fingerprint'), + inputId: 'fingerprintField', + cbind: { + value: '{joinInfo.fingerprint}', + }, + editable: false, + }, + { + xtype: 'textfield', + fieldLabel: gettext('Hostname'), + editable: true, + inputId: 'hostnameField', + cbind: { + value: '{joinInfo.ipAddress}', + }, + }, + { + xtype: 'textfield', + fieldLabel: gettext('Datastore Name'), + inputId: 'dsNameField', + cbind: { + value: '{joinInfo.dsName}', + }, + editable: false, + }, + { + xtype: 'textarea', + inputId: 'SerializedJoinInfo', + fieldLabel: gettext('Join Information'), + grow: true, + editable: false, + cbind: { + joinInfo: '{joinInfo}', + }, + listeners: { + afterrender: function(field) { + var jsons = Ext.JSON.encode(field.joinInfo); + var base64s = Ext.util.Base64.encode(jsons); + field.setValue(base64s) + }, + }, + }, + ], + }, + ], + buttons: [ + { + xtype: 'button', + iconCls: 'fa fa-clipboard', + handler: function(b) { + var el = document.getElementById('SerializedJoinInfo'); + el.select(); + document.execCommand("copy"); + }, + text: gettext('Copy'), + }, + { + text: gettext('Ok'), + handler: function() { + this.up('window').close(); + }, + }, + ], +}); + + -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel