public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup 1/2] api2/config/tape_backup_job: enable update api call
@ 2021-02-23 10:58 Dominik Csapak
  2021-02-23 10:58 ` [pbs-devel] [PATCH proxmox-backup 2/2] ui: tape/BackupJobs: add CRUD functions Dominik Csapak
  2021-02-23 12:25 ` [pbs-devel] applied: [PATCH proxmox-backup 1/2] api2/config/tape_backup_job: enable update api call Dietmar Maurer
  0 siblings, 2 replies; 3+ messages in thread
From: Dominik Csapak @ 2021-02-23 10:58 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 src/api2/config/tape_backup_job.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/api2/config/tape_backup_job.rs b/src/api2/config/tape_backup_job.rs
index 8b898bf8..a9edc00f 100644
--- a/src/api2/config/tape_backup_job.rs
+++ b/src/api2/config/tape_backup_job.rs
@@ -217,7 +217,7 @@ pub fn delete_tape_backup_job(
 
 const ITEM_ROUTER: Router = Router::new()
     .get(&API_METHOD_READ_TAPE_BACKUP_JOB)
-//.put(&API_METHOD_UPDATE_TAPE_BACKUP_JOB)
+    .put(&API_METHOD_UPDATE_TAPE_BACKUP_JOB)
     .delete(&API_METHOD_DELETE_TAPE_BACKUP_JOB);
 
 pub const ROUTER: Router = Router::new()
-- 
2.20.1





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

* [pbs-devel] [PATCH proxmox-backup 2/2] ui: tape/BackupJobs: add CRUD functions
  2021-02-23 10:58 [pbs-devel] [PATCH proxmox-backup 1/2] api2/config/tape_backup_job: enable update api call Dominik Csapak
@ 2021-02-23 10:58 ` Dominik Csapak
  2021-02-23 12:25 ` [pbs-devel] applied: [PATCH proxmox-backup 1/2] api2/config/tape_backup_job: enable update api call Dietmar Maurer
  1 sibling, 0 replies; 3+ messages in thread
From: Dominik Csapak @ 2021-02-23 10:58 UTC (permalink / raw)
  To: pbs-devel

similar to the other jobs grids (add/edit/remove etc.)

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/Makefile                     |   1 +
 www/tape/BackupJobs.js           | 106 ++++++++++++++++++++++++++++++-
 www/tape/window/TapeBackupJob.js |  82 ++++++++++++++++++++++++
 3 files changed, 188 insertions(+), 1 deletion(-)
 create mode 100644 www/tape/window/TapeBackupJob.js

diff --git a/www/Makefile b/www/Makefile
index 9f9b46aa..11858f98 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -23,6 +23,7 @@ TAPE_UI_FILES=						\
 	tape/window/LabelMedia.js			\
 	tape/window/PoolEdit.js				\
 	tape/window/TapeBackup.js			\
+	tape/window/TapeBackupJob.js			\
 	tape/window/TapeRestore.js			\
 	tape/BackupOverview.js				\
 	tape/ChangerConfig.js				\
diff --git a/www/tape/BackupJobs.js b/www/tape/BackupJobs.js
index 7c23864f..2532fb38 100644
--- a/www/tape/BackupJobs.js
+++ b/www/tape/BackupJobs.js
@@ -34,6 +34,75 @@ Ext.define('PBS.config.TapeBackupJobView', {
     controller: {
 	xclass: 'Ext.app.ViewController',
 
+	addJob: function() {
+	    let me = this;
+	    Ext.create('PBS.TapeManagement.BackupJobEdit', {
+		autoShow: true,
+		listeners: {
+		    destroy: function() {
+			me.reload();
+		    },
+		},
+	    }).show();
+	},
+
+	editJob: function() {
+	    let me = this;
+	    let view = me.getView();
+	    let selection = view.getSelection();
+	    if (!selection || selection.length < 1) {
+		return;
+	    }
+
+	    Ext.create('PBS.TapeManagement.BackupJobEdit', {
+		id: selection[0].data.id,
+		autoShow: true,
+		listeners: {
+		    destroy: function() {
+			me.reload();
+		    },
+		},
+	    }).show();
+	},
+
+	openTaskLog: function() {
+	    let me = this;
+	    let view = me.getView();
+	    let selection = view.getSelection();
+	    if (selection.length < 1) return;
+
+	    let upid = selection[0].data['last-run-upid'];
+	    if (!upid) return;
+
+	    Ext.create('Proxmox.window.TaskViewer', {
+		upid,
+	    }).show();
+	},
+
+	runJob: function() {
+	    let me = this;
+	    let view = me.getView();
+	    let selection = view.getSelection();
+	    if (selection.length < 1) return;
+
+	    let id = selection[0].data.id;
+	    Proxmox.Utils.API2Request({
+		method: 'POST',
+		url: `/tape/backup/${id}`,
+		success: function(response, opt) {
+		    Ext.create('Proxmox.window.TaskViewer', {
+		        upid: response.result.data,
+		        taskDone: function(success) {
+			    me.reload();
+		        },
+		    }).show();
+		},
+		failure: function(response, opt) {
+		    Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+		},
+	    });
+	},
+
 	startStore: function() { this.getView().getStore().rstore.startUpdate(); },
 
 	stopStore: function() { this.getView().getStore().rstore.stopUpdate(); },
@@ -48,7 +117,7 @@ Ext.define('PBS.config.TapeBackupJobView', {
     listeners: {
 	activate: 'startStore',
 	deactivate: 'stopStore',
-	//itemdblclick: 'editSyncJob',
+	itemdblclick: 'editJob',
     },
 
     store: {
@@ -68,6 +137,41 @@ Ext.define('PBS.config.TapeBackupJobView', {
 	trackOver: false,
     },
 
+    tbar: [
+	{
+	    xtype: 'proxmoxButton',
+	    text: gettext('Add'),
+	    selModel: false,
+	    handler: 'addJob',
+	},
+	{
+	    xtype: 'proxmoxButton',
+	    text: gettext('Edit'),
+	    handler: 'editJob',
+	    disabled: true,
+	},
+	{
+	    xtype: 'proxmoxStdRemoveButton',
+	    baseurl: '/config/tape-backup-job/',
+	    confirmMsg: gettext('Remove entry?'),
+	    callback: 'reload',
+	},
+	'-',
+	{
+	    xtype: 'proxmoxButton',
+	    text: gettext('Show Log'),
+	    handler: 'openTaskLog',
+	    enableFn: (rec) => !!rec.data['last-run-upid'],
+	    disabled: true,
+	},
+	{
+	    xtype: 'proxmoxButton',
+	    text: gettext('Run now'),
+	    handler: 'runJob',
+	    disabled: true,
+	},
+    ],
+
     columns: [
 	{
 	    header: gettext('Job ID'),
diff --git a/www/tape/window/TapeBackupJob.js b/www/tape/window/TapeBackupJob.js
new file mode 100644
index 00000000..9902a454
--- /dev/null
+++ b/www/tape/window/TapeBackupJob.js
@@ -0,0 +1,82 @@
+Ext.define('PBS.TapeManagement.BackupJobEdit', {
+    extend: 'Proxmox.window.Edit',
+    alias: 'widget.pbsTapeBackupJobEdit',
+    mixins: ['Proxmox.Mixin.CBind'],
+
+    userid: undefined,
+
+    isAdd: true,
+
+    subject: gettext('Tape Backup Job'),
+
+    fieldDefaults: { labelWidth: 120 },
+
+    cbindData: function(initialConfig) {
+	let me = this;
+
+	let baseurl = '/api2/extjs/config/tape-backup-job';
+	let id = initialConfig.id;
+
+	me.isCreate = !id;
+	me.url = id ? `${baseurl}/${id}` : baseurl;
+	me.method = id ? 'PUT' : 'POST';
+	me.autoLoad = !!id;
+	me.scheduleValue = id ? null : 'daily';
+	me.authid = id ? null : Proxmox.UserName;
+	me.editDatastore = me.datastore === undefined && me.isCreate;
+	return { };
+    },
+
+    items: {
+	xtype: 'inputpanel',
+	onGetValues: function(values) {
+	    let me = this;
+
+	    if (!values.id && me.up('pbsTapeBackupJobEdit').isCreate) {
+		values.id = 's-' + Ext.data.identifier.Uuid.Global.generate().slice(0, 13);
+	    }
+	    return values;
+	},
+	column1: [
+	    {
+		xtype: 'pbsDataStoreSelector',
+		fieldLabel: gettext('Local Datastore'),
+		name: 'store',
+	    },
+	    {
+		xtype: 'pbsMediaPoolSelector',
+		fieldLabel: gettext('Media Pool'),
+		name: 'pool',
+	    },
+	    {
+		xtype: 'pbsDriveSelector',
+		fieldLabel: gettext('Drive'),
+		name: 'drive',
+	    },
+	],
+
+	column2: [
+	    {
+		fieldLabel: gettext('Schedule'),
+		xtype: 'pbsCalendarEvent',
+		name: 'schedule',
+		emptyText: gettext('none (disabled)'),
+		cbind: {
+		    deleteEmpty: '{!isCreate}',
+		    value: '{scheduleValue}',
+		},
+	    },
+	],
+
+	columnB: [
+	    {
+		fieldLabel: gettext('Comment'),
+		xtype: 'proxmoxtextfield',
+		name: 'comment',
+		cbind: {
+		    deleteEmpty: '{!isCreate}',
+		},
+	    },
+	],
+    },
+});
-- 
2.20.1





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

* [pbs-devel] applied: [PATCH proxmox-backup 1/2] api2/config/tape_backup_job: enable update api call
  2021-02-23 10:58 [pbs-devel] [PATCH proxmox-backup 1/2] api2/config/tape_backup_job: enable update api call Dominik Csapak
  2021-02-23 10:58 ` [pbs-devel] [PATCH proxmox-backup 2/2] ui: tape/BackupJobs: add CRUD functions Dominik Csapak
@ 2021-02-23 12:25 ` Dietmar Maurer
  1 sibling, 0 replies; 3+ messages in thread
From: Dietmar Maurer @ 2021-02-23 12:25 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

applied both patches

> On 02/23/2021 11:58 AM Dominik Csapak <d.csapak@proxmox.com> wrote:
> 
>  
> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
>  src/api2/config/tape_backup_job.rs | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/api2/config/tape_backup_job.rs b/src/api2/config/tape_backup_job.rs
> index 8b898bf8..a9edc00f 100644
> --- a/src/api2/config/tape_backup_job.rs
> +++ b/src/api2/config/tape_backup_job.rs
> @@ -217,7 +217,7 @@ pub fn delete_tape_backup_job(
>  
>  const ITEM_ROUTER: Router = Router::new()
>      .get(&API_METHOD_READ_TAPE_BACKUP_JOB)
> -//.put(&API_METHOD_UPDATE_TAPE_BACKUP_JOB)
> +    .put(&API_METHOD_UPDATE_TAPE_BACKUP_JOB)
>      .delete(&API_METHOD_DELETE_TAPE_BACKUP_JOB);
>  
>  pub const ROUTER: Router = Router::new()
> -- 
> 2.20.1
> 
> 
> 
> _______________________________________________
> pbs-devel mailing list
> pbs-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel




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

end of thread, other threads:[~2021-02-23 12:27 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-23 10:58 [pbs-devel] [PATCH proxmox-backup 1/2] api2/config/tape_backup_job: enable update api call Dominik Csapak
2021-02-23 10:58 ` [pbs-devel] [PATCH proxmox-backup 2/2] ui: tape/BackupJobs: add CRUD functions Dominik Csapak
2021-02-23 12:25 ` [pbs-devel] applied: [PATCH proxmox-backup 1/2] api2/config/tape_backup_job: enable update api call 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