public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry
@ 2021-01-29 13:57 Dominik Csapak
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 2/5] ui: tape: add Changer config grid Dominik Csapak
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Dominik Csapak @ 2021-01-29 13:57 UTC (permalink / raw)
  To: pbs-devel

so that we can show it in the changer config grid

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 src/api2/config/changer.rs   | 1 +
 src/api2/tape/changer.rs     | 1 +
 src/api2/tape/drive.rs       | 1 +
 src/api2/types/tape/drive.rs | 3 +++
 4 files changed, 6 insertions(+)

diff --git a/src/api2/config/changer.rs b/src/api2/config/changer.rs
index 8404d20b..832939e9 100644
--- a/src/api2/config/changer.rs
+++ b/src/api2/config/changer.rs
@@ -146,6 +146,7 @@ pub fn list_changers(
             vendor: None,
             model: None,
             serial: None,
+            export_slots: changer.export_slots,
         });
     }
 
diff --git a/src/api2/tape/changer.rs b/src/api2/tape/changer.rs
index 84030f8e..64d36ae8 100644
--- a/src/api2/tape/changer.rs
+++ b/src/api2/tape/changer.rs
@@ -167,6 +167,7 @@ pub fn list_changers(
             path: changer.path.clone(),
             changer: None,
             changer_drivenum: None,
+            export_slots: changer.export_slots,
             vendor: None,
             model: None,
             serial: None,
diff --git a/src/api2/tape/drive.rs b/src/api2/tape/drive.rs
index 23991367..a49342fa 100644
--- a/src/api2/tape/drive.rs
+++ b/src/api2/tape/drive.rs
@@ -1162,6 +1162,7 @@ pub fn list_drives(
             vendor: None,
             model: None,
             serial: None,
+            export_slots: None,
         };
         if let Some(info) = lookup_drive(&linux_drives, &drive.path) {
             entry.vendor = Some(info.vendor.clone());
diff --git a/src/api2/types/tape/drive.rs b/src/api2/types/tape/drive.rs
index 9d9b0591..a17e5cbb 100644
--- a/src/api2/types/tape/drive.rs
+++ b/src/api2/types/tape/drive.rs
@@ -104,6 +104,9 @@ pub struct DriveListEntry {
     /// Serial number (autodetected)
     #[serde(skip_serializing_if="Option::is_none")]
     pub serial: Option<String>,
+    /// Self defined Import/Export Slots for devices without explicit ones
+    #[serde(skip_serializing_if="Option::is_none")]
+    pub export_slots: Option<String>,
 }
 
 #[api()]
-- 
2.20.1





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

* [pbs-devel] [PATCH proxmox-backup 2/5] ui: tape: add Changer config grid
  2021-01-29 13:57 [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dominik Csapak
@ 2021-01-29 13:57 ` Dominik Csapak
  2021-01-29 15:55   ` [pbs-devel] applied: " Dietmar Maurer
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 3/5] ui: tape/ChangerStatus: add import action for import/export slots Dominik Csapak
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Dominik Csapak @ 2021-01-29 13:57 UTC (permalink / raw)
  To: pbs-devel

analogous to the drive grid

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/Makefile               |   1 +
 www/tape/ChangerConfig.js  | 128 +++++++++++++++++++++++++++++++++++++
 www/tape/TapeManagement.js |   7 +-
 3 files changed, 135 insertions(+), 1 deletion(-)
 create mode 100644 www/tape/ChangerConfig.js

diff --git a/www/Makefile b/www/Makefile
index 91899028..7a47ad8d 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -21,6 +21,7 @@ TAPE_UI_FILES=						\
 	tape/window/PoolEdit.js				\
 	tape/window/TapeBackup.js			\
 	tape/BackupOverview.js				\
+	tape/ChangerConfig.js				\
 	tape/ChangerStatus.js				\
 	tape/DriveConfig.js				\
 	tape/PoolConfig.js				\
diff --git a/www/tape/ChangerConfig.js b/www/tape/ChangerConfig.js
new file mode 100644
index 00000000..a4258dfd
--- /dev/null
+++ b/www/tape/ChangerConfig.js
@@ -0,0 +1,128 @@
+Ext.define('pbs-model-changers', {
+    extend: 'Ext.data.Model',
+    fields: ['path', 'model', 'name', 'serial', 'vendor', 'export-slots'],
+    idProperty: 'name',
+});
+
+Ext.define('PBS.TapeManagement.ChangerPanel', {
+    extend: 'Ext.grid.Panel',
+    alias: 'widget.pbsTapeChangerPanel',
+
+    controller: {
+	xclass: 'Ext.app.ViewController',
+
+	onAdd: function() {
+	    let me = this;
+	    Ext.create('PBS.TapeManagement.ChangerEditWindow', {
+		listeners: {
+		    destroy: function() {
+			me.reload();
+		    },
+		},
+	    }).show();
+	},
+
+	onEdit: function() {
+	    let me = this;
+	    let view = me.getView();
+	    let selection = view.getSelection();
+	    if (!selection || selection.length < 1) {
+		return;
+	    }
+	    Ext.create('PBS.TapeManagement.ChangerEditWindow', {
+		changerid: selection[0].data.name,
+		autoLoad: true,
+		listeners: {
+		    destroy: () => me.reload(),
+		},
+	    }).show();
+	},
+
+	reload: function() {
+	    this.getView().getStore().rstore.load();
+	},
+
+	stopStore: function() {
+	    this.getView().getStore().rstore.stopUpdate();
+	},
+
+	startStore: function() {
+	    this.getView().getStore().rstore.startUpdate();
+	},
+    },
+
+    listeners: {
+	beforedestroy: 'stopStore',
+	deactivate: 'stopStore',
+	activate: 'startStore',
+	itemdblclick: 'onEdit',
+    },
+
+    store: {
+	type: 'diff',
+	rstore: {
+	    type: 'update',
+	    storeid: 'proxmox-tape-changers',
+	    model: 'pbs-model-changers',
+	    proxy: {
+		type: 'proxmox',
+		url: "/api2/json/tape/changer",
+	    },
+	},
+	sorters: 'name',
+    },
+
+    tbar: [
+	{
+	    text: gettext('Add'),
+	    xtype: 'proxmoxButton',
+	    handler: 'onAdd',
+	    selModel: false,
+	},
+	'-',
+	{
+	    text: gettext('Edit'),
+	    xtype: 'proxmoxButton',
+	    handler: 'onEdit',
+	    disabled: true,
+	},
+	{
+	    xtype: 'proxmoxStdRemoveButton',
+	    baseurl: '/api2/extjs/config/changer',
+	    callback: 'reload',
+	},
+    ],
+    columns: [
+	{
+	    text: gettext('Name'),
+	    dataIndex: 'name',
+	    flex: 1,
+	},
+	{
+	    text: gettext('Path'),
+	    dataIndex: 'path',
+	    flex: 2,
+	},
+	{
+	    text: gettext('Vendor'),
+	    dataIndex: 'vendor',
+	    flex: 1,
+	},
+	{
+	    text: gettext('Model'),
+	    dataIndex: 'model',
+	    flex: 1,
+	},
+	{
+	    text: gettext('Serial'),
+	    dataIndex: 'serial',
+	    flex: 1,
+	},
+	{
+	    text: gettext('Import/Export Slots'),
+	    dataIndex: 'export-slots',
+	    flex: 1,
+	},
+    ],
+});
+
diff --git a/www/tape/TapeManagement.js b/www/tape/TapeManagement.js
index f61c26d7..8461b0b3 100644
--- a/www/tape/TapeManagement.js
+++ b/www/tape/TapeManagement.js
@@ -16,10 +16,15 @@ Ext.define('PBS.TapeManagement', {
 	    itemId: 'backup',
 	    xtype: 'pbsBackupOverview',
 	},
+	{
+	    title: gettext('Library'),
+	    itemId: 'library',
+	    xtype: 'pbsChangerStatus',
+	},
 	{
 	    title: gettext('Changers'),
 	    itemId: 'changers',
-	    xtype: 'pbsChangerStatus',
+	    xtype: 'pbsTapeChangerPanel',
 	},
 	{
 	    title: gettext('Drives'),
-- 
2.20.1





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

* [pbs-devel] [PATCH proxmox-backup 3/5] ui: tape/ChangerStatus: add import action for import/export slots
  2021-01-29 13:57 [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dominik Csapak
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 2/5] ui: tape: add Changer config grid Dominik Csapak
@ 2021-01-29 13:57 ` Dominik Csapak
  2021-01-29 15:55   ` [pbs-devel] applied: " Dietmar Maurer
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 4/5] ui: tape: change wrong window title Dominik Csapak
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Dominik Csapak @ 2021-01-29 13:57 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/tape/ChangerStatus.js | 43 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 42 insertions(+), 1 deletion(-)

diff --git a/www/tape/ChangerStatus.js b/www/tape/ChangerStatus.js
index 75af75ce..59cc74c8 100644
--- a/www/tape/ChangerStatus.js
+++ b/www/tape/ChangerStatus.js
@@ -49,6 +49,39 @@ Ext.define('PBS.TapeManagement.ChangerStatus', {
 	    }).show();
 	},
 
+	importTape: function(view, rI, cI, button, el, record) {
+	    let me = this;
+	    let vm = me.getViewModel();
+	    let from = record.data['entry-id'];
+	    let changer = encodeURIComponent(vm.get('changer'));
+	    Ext.create('Proxmox.window.Edit', {
+		title: gettext('Import'),
+		isCreate: true,
+		submitText: gettext('OK'),
+		method: 'POST',
+		url: `/api2/extjs/tape/changer/${changer}/transfer`,
+		items: [
+		    {
+			xtype: 'displayfield',
+			name: 'from',
+			value: from,
+			submitValue: true,
+			fieldLabel: gettext('From Slot'),
+		    },
+		    {
+			xtype: 'proxmoxintegerfield',
+			name: 'to',
+			fieldLabel: gettext('To Slot'),
+		    },
+		],
+		listeners: {
+		    destroy: function() {
+			me.reload();
+		    },
+		},
+	    }).show();
+	},
+
 	slotTransfer: function(view, rI, cI, button, el, record) {
 	    let me = this;
 	    let vm = me.getViewModel();
@@ -618,7 +651,15 @@ Ext.define('PBS.TapeManagement.ChangerStatus', {
 				},
 				{
 				    text: gettext('Actions'),
-				    items: [],
+				    xtype: 'actioncolumn',
+				    items: [
+					{
+					    iconCls: 'fa fa-rotate-270 fa-upload',
+					    handler: 'importTape',
+					    tooltip: gettext('Import'),
+					    isDisabled: (v, r, c, i, rec) => !rec.data['label-text'],
+					},
+				    ],
 				    width: 80,
 				},
 			    ],
-- 
2.20.1





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

* [pbs-devel] [PATCH proxmox-backup 4/5] ui: tape: change wrong window title
  2021-01-29 13:57 [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dominik Csapak
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 2/5] ui: tape: add Changer config grid Dominik Csapak
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 3/5] ui: tape/ChangerStatus: add import action for import/export slots Dominik Csapak
@ 2021-01-29 13:57 ` Dominik Csapak
  2021-01-29 15:56   ` [pbs-devel] applied: " Dietmar Maurer
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 5/5] ui: tape/ChangerStatus: add missing tooltips Dominik Csapak
  2021-01-29 15:37 ` [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dietmar Maurer
  4 siblings, 1 reply; 11+ messages in thread
From: Dominik Csapak @ 2021-01-29 13:57 UTC (permalink / raw)
  To: pbs-devel

this is the 'status' msgbox not the label information

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/tape/ChangerStatus.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/www/tape/ChangerStatus.js b/www/tape/ChangerStatus.js
index 59cc74c8..ecfdc424 100644
--- a/www/tape/ChangerStatus.js
+++ b/www/tape/ChangerStatus.js
@@ -316,7 +316,7 @@ Ext.define('PBS.TapeManagement.ChangerStatus', {
 		let txt = lines.join('<br>');
 
 		Ext.Msg.show({
-		    title: gettext('Label Information'),
+		    title: gettext('Status'),
 		    message: txt,
 		    icon: undefined,
 		});
-- 
2.20.1





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

* [pbs-devel] [PATCH proxmox-backup 5/5] ui: tape/ChangerStatus: add missing tooltips
  2021-01-29 13:57 [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dominik Csapak
                   ` (2 preceding siblings ...)
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 4/5] ui: tape: change wrong window title Dominik Csapak
@ 2021-01-29 13:57 ` Dominik Csapak
  2021-01-29 15:56   ` [pbs-devel] applied: " Dietmar Maurer
  2021-01-29 15:37 ` [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dietmar Maurer
  4 siblings, 1 reply; 11+ messages in thread
From: Dominik Csapak @ 2021-01-29 13:57 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/tape/ChangerStatus.js | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/www/tape/ChangerStatus.js b/www/tape/ChangerStatus.js
index ecfdc424..78265024 100644
--- a/www/tape/ChangerStatus.js
+++ b/www/tape/ChangerStatus.js
@@ -527,11 +527,13 @@ Ext.define('PBS.TapeManagement.ChangerStatus', {
 				{
 				    iconCls: 'fa fa-rotate-90 fa-exchange',
 				    handler: 'slotTransfer',
+				    tooltip: gettext('Transfer'),
 				    isDisabled: (v, r, c, i, rec) => !rec.data['label-text'],
 				},
 				{
 				    iconCls: 'fa fa-rotate-90 fa-upload',
 				    handler: 'load',
+				    tooltip: gettext('Load'),
 				    isDisabled: (v, r, c, i, rec) => !rec.data['label-text'],
 				},
 			    ],
@@ -601,29 +603,35 @@ Ext.define('PBS.TapeManagement.ChangerStatus', {
 					{
 					    iconCls: 'fa fa-rotate-270 fa-upload',
 					    handler: 'unload',
+					    tooltip: gettext('Unload'),
 					    isDisabled: (v, r, c, i, rec) => !rec.data['label-text'],
 					},
 					{
 					    iconCls: 'fa fa-hdd-o',
 					    handler: 'cartridgeMemory',
+					    tooltip: gettext('Cartridge Memory'),
 					    isDisabled: (v, r, c, i, rec) => !rec.data['label-text'],
 					},
 					{
 					    iconCls: 'fa fa-line-chart',
 					    handler: 'volumeStatistics',
+					    tooltip: gettext('Volume Statistics'),
 					    isDisabled: (v, r, c, i, rec) => !rec.data['label-text'],
 					},
 					{
 					    iconCls: 'fa fa-tag',
 					    handler: 'readLabel',
+					    tooltip: gettext('Read Label'),
 					    isDisabled: (v, r, c, i, rec) => !rec.data['label-text'],
 					},
 					{
 					    iconCls: 'fa fa-info-circle',
+					    tooltip: gettext('Status'),
 					    handler: 'status',
 					},
 					{
 					    iconCls: 'fa fa-shower',
+					    tooltip: gettext('Clean Drive'),
 					    handler: 'cleanDrive',
 					},
 				    ],
-- 
2.20.1





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

* Re: [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry
  2021-01-29 13:57 [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dominik Csapak
                   ` (3 preceding siblings ...)
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 5/5] ui: tape/ChangerStatus: add missing tooltips Dominik Csapak
@ 2021-01-29 15:37 ` Dietmar Maurer
  2021-01-30  8:39   ` Dietmar Maurer
  4 siblings, 1 reply; 11+ messages in thread
From: Dietmar Maurer @ 2021-01-29 15:37 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

Stupid question, but why does list_drives and list_changers
return DriveListEntry?

Those function should simple return the configuration?

Vec<ScsiTapeChanger> and  Vec<LinuxTapeDrive> 

What do I miss?




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

* [pbs-devel] applied: [PATCH proxmox-backup 2/5] ui: tape: add Changer config grid
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 2/5] ui: tape: add Changer config grid Dominik Csapak
@ 2021-01-29 15:55   ` Dietmar Maurer
  0 siblings, 0 replies; 11+ messages in thread
From: Dietmar Maurer @ 2021-01-29 15:55 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

applied




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

* [pbs-devel] applied: [PATCH proxmox-backup 3/5] ui: tape/ChangerStatus: add import action for import/export slots
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 3/5] ui: tape/ChangerStatus: add import action for import/export slots Dominik Csapak
@ 2021-01-29 15:55   ` Dietmar Maurer
  0 siblings, 0 replies; 11+ messages in thread
From: Dietmar Maurer @ 2021-01-29 15:55 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

applied




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

* [pbs-devel] applied: [PATCH proxmox-backup 4/5] ui: tape: change wrong window title
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 4/5] ui: tape: change wrong window title Dominik Csapak
@ 2021-01-29 15:56   ` Dietmar Maurer
  0 siblings, 0 replies; 11+ messages in thread
From: Dietmar Maurer @ 2021-01-29 15:56 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

applied




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

* [pbs-devel] applied: [PATCH proxmox-backup 5/5] ui: tape/ChangerStatus: add missing tooltips
  2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 5/5] ui: tape/ChangerStatus: add missing tooltips Dominik Csapak
@ 2021-01-29 15:56   ` Dietmar Maurer
  0 siblings, 0 replies; 11+ messages in thread
From: Dietmar Maurer @ 2021-01-29 15:56 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

applied




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

* Re: [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry
  2021-01-29 15:37 ` [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dietmar Maurer
@ 2021-01-30  8:39   ` Dietmar Maurer
  0 siblings, 0 replies; 11+ messages in thread
From: Dietmar Maurer @ 2021-01-30  8:39 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

Ok, I have done some cleanup, now using serde flatten to derive
types, see:

commit b5b99a52cd317fa3025f29a3f3345ea40b328fba


> On 01/29/2021 4:37 PM Dietmar Maurer <dietmar@proxmox.com> wrote:
> 
>  
> Stupid question, but why does list_drives and list_changers
> return DriveListEntry?
> 
> Those function should simple return the configuration?
> 
> Vec<ScsiTapeChanger> and  Vec<LinuxTapeDrive> 
> 
> What do I miss?




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

end of thread, other threads:[~2021-01-30  8:39 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-29 13:57 [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dominik Csapak
2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 2/5] ui: tape: add Changer config grid Dominik Csapak
2021-01-29 15:55   ` [pbs-devel] applied: " Dietmar Maurer
2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 3/5] ui: tape/ChangerStatus: add import action for import/export slots Dominik Csapak
2021-01-29 15:55   ` [pbs-devel] applied: " Dietmar Maurer
2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 4/5] ui: tape: change wrong window title Dominik Csapak
2021-01-29 15:56   ` [pbs-devel] applied: " Dietmar Maurer
2021-01-29 13:57 ` [pbs-devel] [PATCH proxmox-backup 5/5] ui: tape/ChangerStatus: add missing tooltips Dominik Csapak
2021-01-29 15:56   ` [pbs-devel] applied: " Dietmar Maurer
2021-01-29 15:37 ` [pbs-devel] [PATCH proxmox-backup 1/5] api2/tape: add export_slots to DriveListEntry Dietmar Maurer
2021-01-30  8:39   ` Dietmar Maurer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal