Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/bareos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Steffens <joergsteffens@users.noreply.github.com>2018-09-20 13:49:37 +0300
committerGitHub <noreply@github.com>2018-09-20 13:49:37 +0300
commite83cf6984d6f4dc790ee774aa4a459f9a58c3e5f (patch)
tree58a3adf5a5d29e2d4b0fc5764af096981f0deee5
parentc533f28be9c3c96e73d422059803e08407ac0afb (diff)
parent0269b12967d622bc7430da242ec9fd4a7d3adaa1 (diff)
Merge pull request #115 from Intellique/list-job-by-poolWIP/16.2.9-pre
Improve list command
-rw-r--r--src/cats/protos.h2
-rw-r--r--src/cats/sql_list.c7
-rw-r--r--src/dird/ua_output.c15
-rw-r--r--src/dird/ua_select.c2
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;
}