diff options
author | Jörg Steffens <joergsteffens@users.noreply.github.com> | 2018-09-20 13:49:37 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-20 13:49:37 +0300 |
commit | e83cf6984d6f4dc790ee774aa4a459f9a58c3e5f (patch) | |
tree | 58a3adf5a5d29e2d4b0fc5764af096981f0deee5 | |
parent | c533f28be9c3c96e73d422059803e08407ac0afb (diff) | |
parent | 0269b12967d622bc7430da242ec9fd4a7d3adaa1 (diff) |
Merge pull request #115 from Intellique/list-job-by-poolWIP/16.2.9-pre
Improve list command
-rw-r--r-- | src/cats/protos.h | 2 | ||||
-rw-r--r-- | src/cats/sql_list.c | 7 | ||||
-rw-r--r-- | src/dird/ua_output.c | 15 | ||||
-rw-r--r-- | src/dird/ua_select.c | 2 |
4 files changed, 21 insertions, 5 deletions
diff --git a/src/cats/protos.h b/src/cats/protos.h index 2b8017638..e79a64fd2 100644 --- a/src/cats/protos.h +++ b/src/cats/protos.h @@ -126,7 +126,7 @@ bool db_get_ndmp_environment_string(JCR *jcr, B_DB *mdb, JOB_DBR *jr, void db_list_pool_records(JCR *jcr, B_DB *db, POOL_DBR *pr, OUTPUT_FORMATTER *sendit, e_list_type type); void db_list_job_records(JCR *jcr, B_DB *db, JOB_DBR *jr, const char *range, - const char *clientname, int jobstatus, const char *volumename, + const char *clientname, int jobstatus, const char *volumename, const char *poolname, utime_t since_time, bool last, bool count, OUTPUT_FORMATTER *sendit, e_list_type type); void db_list_job_totals(JCR *jcr, B_DB *db, JOB_DBR *jr, diff --git a/src/cats/sql_list.c b/src/cats/sql_list.c index 082c7f802..54eff4e30 100644 --- a/src/cats/sql_list.c +++ b/src/cats/sql_list.c @@ -467,7 +467,7 @@ bail_out: * List Job record(s) that match JOB_DBR */ void db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, const char *range, - const char *clientname, int jobstatus, const char *volumename, + const char *clientname, int jobstatus, const char *volumename, const char *poolname, utime_t since_time, bool last, bool count, OUTPUT_FORMATTER *sendit, e_list_type type) { @@ -504,6 +504,11 @@ void db_list_job_records(JCR *jcr, B_DB *mdb, JOB_DBR *jr, const char *range, pm_strcat(selection, temp.c_str()); } + if (poolname) { + temp.bsprintf("AND Job.poolid = (SELECT poolid FROM pool WHERE name = '%s' LIMIT 1) ", poolname); + pm_strcat(selection, temp.c_str()); + } + if (since_time) { bstrutime(dt, sizeof(dt), since_time); temp.bsprintf("AND Job.SchedTime > '%s' ", dt); diff --git a/src/dird/ua_output.c b/src/dird/ua_output.c index d57b95188..de1c52b47 100644 --- a/src/dird/ua_output.c +++ b/src/dird/ua_output.c @@ -541,6 +541,7 @@ static bool do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) time_t schedtime = 0; char *clientname = NULL; char *volumename = NULL; + char *poolname = NULL; const int secs_in_day = 86400; const int secs_in_hour = 3600; POOL_MEM query_range(PM_MESSAGE); @@ -621,6 +622,11 @@ static bool do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) volumename = ua->argv[i]; } + i = find_arg_with_value(ua, NT_("pool")); + if (i >= 0) { + poolname = ua->argv[i]; + } + switch (llist) { case VERT_LIST: if (!count) { @@ -663,7 +669,7 @@ static bool do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) set_query_range(query_range, ua, &jr); db_list_job_records(ua->jcr, ua->db, &jr, query_range.c_str(), clientname, - jobstatus, volumename, schedtime, last, count, + jobstatus, volumename, poolname, schedtime, last, count, ua->send, llist); } else if (bstrcasecmp(ua->argk[1], NT_("jobtotals"))) { /* @@ -681,6 +687,11 @@ static bool do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) if (jobid > 0) { jr.JobId = jobid; + i = find_arg_with_value(ua, NT_("pool")); + if (i >= 0) { + poolname = ua->argv[i]; + } + set_acl_filter(ua, 1, Job_ACL); /* JobName */ set_acl_filter(ua, 2, Client_ACL); /* ClientName */ if (current) { @@ -697,7 +708,7 @@ static bool do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist) set_query_range(query_range, ua, &jr); db_list_job_records(ua->jcr, ua->db, &jr, query_range.c_str(), clientname, - jobstatus, volumename, schedtime, last, count, ua->send, llist); + jobstatus, volumename, poolname, schedtime, last, count, ua->send, llist); } } } else if (bstrcasecmp(ua->argk[1], NT_("basefiles"))) { diff --git a/src/dird/ua_select.c b/src/dird/ua_select.c index fe8b43233..f69c20629 100644 --- a/src/dird/ua_select.c +++ b/src/dird/ua_select.c @@ -923,7 +923,7 @@ POOLRES *get_pool_resource(UAContext *ua) */ int select_job_dbr(UAContext *ua, JOB_DBR *jr) { - db_list_job_records(ua->jcr, ua->db, jr, "", NULL, 0, NULL, 0, 0, 0, ua->send, HORZ_LIST); + db_list_job_records(ua->jcr, ua->db, jr, "", NULL, 0, NULL, NULL, 0, 0, 0, ua->send, HORZ_LIST); if (!get_pint(ua, _("Enter the JobId to select: "))) { return 0; } |