On 29.10.20 15:19, Oguz Bektas wrote:
> 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.
> 

code looks familiar, no reference from where you took it? ;-)

Did you see no way to pull common stuff out from the PVE cluster join info this
was based on to widget toolkit?

Also, where's a user for this code? I.e., the PVE Storage Add and PBS Remote
add? It's a bit hard to review if one has only half of the picture..

> 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({

Why isn't this request not done by the "joininfowindow"?

The button handler could also be a simple wrapper around creating that window,
which should do the request then on creation.

Can be OK as is, but I'd then move this out as it gets a bit crowded here.

> +                 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,

s/dsName/datastore/ - clear, understandable names trumps saving a few letters.

> +                         },
> +                     }).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', {

join info is the wrong name here, use DatastoreInfo or something like that, at 
least
if that widget stays here and not in widget toolkit


> +     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();
> +             },
> +         },
> +     ],
> +});
> +
> +
> 




_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to