From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 23BBE64146; Thu, 29 Oct 2020 15:19:08 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1217DA502; Thu, 29 Oct 2020 15:19:08 +0100 (CET) Received: from gaia.proxmox.com (212-186-127-178.static.upcbusiness.at [212.186.127.178]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 86F9EA4F8; Thu, 29 Oct 2020 15:19:06 +0100 (CET) Received: from gaia.proxmox.com (localhost.localdomain [127.0.0.1]) by gaia.proxmox.com (8.15.2/8.15.2/Debian-14~deb10u1) with ESMTP id 09TEJ6b0988441; Thu, 29 Oct 2020 15:19:06 +0100 Received: (from oguz@localhost) by gaia.proxmox.com (8.15.2/8.15.2/Submit) id 09TEJ6Uo988440; Thu, 29 Oct 2020 15:19:06 +0100 From: Oguz Bektas To: pve-devel@lists.proxmox.com, pbs-devel@lists.proxmox.com Date: Thu, 29 Oct 2020 15:19:02 +0100 Message-Id: <20201029141902.988185-1-o.bektas@proxmox.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 1 AWL -0.606 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods KHOP_HELO_FCRDNS 0.4 Relay HELO differs from its IP's reverse DNS NO_DNS_FOR_FROM 0.379 Envelope sender has no MX or A DNS records SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Subject: [pve-devel] [PATCH proxmox-backup] ui: add 'join info' copy/paste button on datastore summary X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Oct 2020 14:19:08 -0000 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 --- 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