bool open_db(UAContext *ua);
void close_db(UAContext *ua);
int cloud_volumes_cmd(UAContext *ua, const char *cmd, const char *mode);
+void enable_disable_job(UAContext *ua, JOB *job, bool setting, bool force);
enum e_pool_op {
POOL_OP_UPDATE,
POOL_OP_CREATE
/* ua_select.c */
STORE *select_storage_resource(UAContext *ua, bool unique=false);
JOB *select_job_resource(UAContext *ua);
-JOB *select_enable_disable_job_resource(UAContext *ua, bool enable);
+void select_enable_disable_job_resource(UAContext *ua, bool enable);
JOB *select_restore_job_resource(UAContext *ua);
CLIENT *select_enable_disable_client_resource(UAContext *ua, bool enable);
CLIENT *select_client_resource(UAContext *ua, int32_t jobtype);
return 1;
}
-static void enable_disable_job(UAContext *ua, JOB *job, bool setting, bool force)
+void enable_disable_job(UAContext *ua, JOB *job, bool setting, bool force)
{
if (!acl_access_ok(ua, Job_ACL, job->name())) {
return;
if (i >= 0) {
if (ua->argv[i]) {
LockRes();
+
job = GetJobResWithName(ua->argv[i]);
UnlockRes();
- } else {
- job = select_enable_disable_job_resource(ua, setting);
- if (!job) {
- return;
+
+ if (job) {
+ /* User manages single job, force flag can be set */
+ enable_disable_job(ua, job, setting, true);
}
- }
- }
- if (job) {
- /* User manages single job, force flag can be set */
- enable_disable_job(ua, job, setting, true);
- return;
+ return;
+ } else {
+ select_enable_disable_job_resource(ua, setting);
+ return;
+ }
}
i = find_arg(ua, NT_("jobs"));
if (i >= 0) {
- //TODO passing list of jobs could implemented as well
int j = find_arg(ua, NT_("all"));
if (j >= 0) {
ua->send_events("DC0007", EVENTS_TYPE_COMMAND, "%sabling all jobs", setting?"en":"dis");
/*
* Select a job to enable or disable
*/
-JOB *select_enable_disable_job_resource(UAContext *ua, bool enable)
+void select_enable_disable_job_resource(UAContext *ua, bool enable)
{
- char name[MAX_NAME_LENGTH];
JOB *job;
LockRes();
add_prompt(ua, job->name());
}
UnlockRes();
- if (do_prompt(ua, _("Job"), _("Select Job resource"), name, sizeof(name)) < 0) {
- return NULL;
+
+ alist selected(10);
+ if (do_alist_prompt(ua, _("Job"), _("Select Job resource"), &selected) < 0) {
+ return;
+ } else {
+ char *name;
+ foreach_alist(name, &selected) {
+ job = (JOB *)GetResWithName(R_JOB, name);
+ if (job) {
+ enable_disable_job(ua, job, enable, false);
+ } else {
+ return;
+ }
+ }
}
- job = (JOB *)GetResWithName(R_JOB, name);
- return job;
+
}
/*