* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal