* [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