Skip to content

Commit

Permalink
bconsole: joblevel argument for the (l)list cmd
Browse files Browse the repository at this point in the history
This adds a joblevel argument to the (l)list
command for the list jobs context.
  • Loading branch information
fbergkemper authored and pstorz committed May 13, 2017
1 parent 7362f02 commit eae7ad9
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/cats/cats.h
Expand Up @@ -727,7 +727,7 @@ class CATS_IMP_EXP B_DB: public SMARTALLOC, public B_DB_QUERY_ENUM_CLASS {
/* sql_list.c */
void list_pool_records(JCR *jcr, POOL_DBR *pr, OUTPUT_FORMATTER *sendit, e_list_type type);
void list_job_records(JCR *jcr, JOB_DBR *jr, const char *range, const char *clientname,
int jobstatus, const char* volumename, utime_t since_time, bool last,
int jobstatus, int joblevel, const char* volumename, utime_t since_time, bool last,
bool count, OUTPUT_FORMATTER *sendit, e_list_type type);
void list_job_totals(JCR *jcr, JOB_DBR *jr, OUTPUT_FORMATTER *sendit);
void list_files_for_job(JCR *jcr, uint32_t jobid, OUTPUT_FORMATTER *sendit);
Expand Down
7 changes: 6 additions & 1 deletion src/cats/sql_list.c
Expand Up @@ -485,7 +485,7 @@ void B_DB::list_jobstatistics_records(JCR *jcr, uint32_t JobId, OUTPUT_FORMATTER
* List Job record(s) that match JOB_DBR
*/
void B_DB::list_job_records(JCR *jcr, JOB_DBR *jr, const char *range, const char *clientname, int jobstatus,
const char *volumename, utime_t since_time, bool last, bool count,
int joblevel, const char *volumename, utime_t since_time, bool last, bool count,
OUTPUT_FORMATTER *sendit, e_list_type type)
{
char ed1[50];
Expand Down Expand Up @@ -516,6 +516,11 @@ void B_DB::list_job_records(JCR *jcr, JOB_DBR *jr, const char *range, const char
pm_strcat(selection, temp.c_str());
}

if (joblevel) {
temp.bsprintf("AND Job.Level = '%c' ", joblevel);
pm_strcat(selection, temp.c_str());
}

if (volumename) {
temp.bsprintf("AND Media.Volumename = '%s' ", volumename);
pm_strcat(selection, temp.c_str());
Expand Down
1 change: 1 addition & 0 deletions src/dird/protos.h
Expand Up @@ -409,6 +409,7 @@ int get_job_dbr(UAContext *ua, JOB_DBR *jr);
bool get_user_slot_list(UAContext *ua, char *slot_list, const char *argument, int num_slots);
bool get_user_job_type_selection(UAContext *ua, int *jobtype);
bool get_user_job_status_selection(UAContext *ua, int *jobstatus);
bool get_user_job_level_selection(UAContext *ua, int *joblevel);

int find_arg_keyword(UAContext *ua, const char **list);
int find_arg(UAContext *ua, const char *keyword);
Expand Down
4 changes: 2 additions & 2 deletions src/dird/ua_cmds.c
Expand Up @@ -272,7 +272,7 @@ static struct ua_cmdstruct commands[] = {
"filesets |\n"
"fileset [ jobid=<jobid> ] | fileset [ ujobid=<complete_name> ] |\n"
"fileset [ filesetid=<filesetid> ] | fileset [ jobid=<jobid> ] |\n"
"jobs [job=<job-name>] [client=<client-name>] [jobstatus=<status>] [volume=<volumename>] [days=<number>] [hours=<number>] [last] [count] |\n"
"jobs [job=<job-name>] [client=<client-name>] [jobstatus=<status>] [joblevel=<joblevel>] [volume=<volumename>] [days=<number>] [hours=<number>] [last] [count] |\n"
"job=<job-name> [client=<client-name>] [jobstatus=<status>] [volume=<volumename>] [days=<number>] [hours=<number>] |\n"
"jobid=<jobid> | ujobid=<complete_name> |\n"
"joblog jobid=<jobid> | joblog ujobid=<complete_name> |\n"
Expand All @@ -299,7 +299,7 @@ static struct ua_cmdstruct commands[] = {
"fileset jobid=<jobid> | fileset ujobid=<complete_name> |\n"
"fileset [ filesetid=<filesetid> ] | fileset [ jobid=<jobid> ] |\n"
"jobs [job=<job-name>] [client=<client-name>] [jobstatus=<status>] [volume=<volumename>] [days=<number>] [hours=<number>] [last] [count] |\n"
"job=<job-name> [client=<client-name>] [jobstatus=<status>] [volume=<volumename>] [days=<number>] [hours=<number>] |\n"
"job=<job-name> [client=<client-name>] [jobstatus=<status>] [joblevel=<joblevel>] [volume=<volumename>] [days=<number>] [hours=<number>] |\n"
"jobid=<jobid> | ujobid=<complete_name> |\n"
"joblog jobid=<jobid> | joblog ujobid=<complete_name> |\n"
"jobmedia jobid=<jobid> | jobmedia ujobid=<complete_name> |\n"
Expand Down
15 changes: 12 additions & 3 deletions src/dird/ua_output.c
Expand Up @@ -539,7 +539,8 @@ static bool do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
MEDIA_DBR mr;
int days = 0,
hours = 0,
jobstatus = 0;
jobstatus = 0,
joblevel = 0;
bool count,
last,
current,
Expand Down Expand Up @@ -607,6 +608,14 @@ static bool do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
return false;
}

/*
* joblevel=X
*/
if (!get_user_job_level_selection(ua, &joblevel)) {
ua->error_msg(_("invalid joblevel parameter\n"));
return false;
}

/*
* Select what to do based on the first argument.
*/
Expand Down Expand Up @@ -671,7 +680,7 @@ static bool do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
set_query_range(query_range, ua, &jr);

ua->db->list_job_records(ua->jcr, &jr, query_range.c_str(), clientname,
jobstatus, volumename, schedtime, last, count, ua->send, llist);
jobstatus, joblevel, volumename, schedtime, last, count, ua->send, llist);
} else if (bstrcasecmp(ua->argk[1], NT_("jobtotals"))) {
/*
* List JOBTOTALS
Expand Down Expand Up @@ -704,7 +713,7 @@ static bool do_list_cmd(UAContext *ua, const char *cmd, e_list_type llist)
set_query_range(query_range, ua, &jr);

ua->db->list_job_records(ua->jcr, &jr, query_range.c_str(), clientname,
jobstatus, volumename, schedtime, last, count, ua->send, llist);
jobstatus, joblevel, volumename, schedtime, last, count, ua->send, llist);
}
}
} else if (bstrcasecmp(ua->argk[1], NT_("basefiles"))) {
Expand Down
17 changes: 16 additions & 1 deletion src/dird/ua_select.c
Expand Up @@ -925,7 +925,7 @@ POOLRES *get_pool_resource(UAContext *ua)
*/
int select_job_dbr(UAContext *ua, JOB_DBR *jr)
{
ua->db->list_job_records(ua->jcr, jr, "", NULL, 0, NULL, 0, 0, 0, ua->send, HORZ_LIST);
ua->db->list_job_records(ua->jcr, jr, "", NULL, 0, 0, NULL, 0, 0, 0, ua->send, HORZ_LIST);
if (!get_pint(ua, _("Enter the JobId to select: "))) {
return 0;
}
Expand Down Expand Up @@ -1887,3 +1887,18 @@ bool get_user_job_status_selection(UAContext *ua, int *jobstatus)
}
return true;
}

bool get_user_job_level_selection(UAContext *ua, int *joblevel)
{
int i;

if ((i = find_arg_with_value(ua, NT_("joblevel"))) >= 0) {
if (strlen(ua->argv[i]) == 1 && ua->argv[i][0] >= 'A' && ua->argv[i][0] <= 'z') {
*joblevel = ua->argv[i][0];
} else {
/* invalid joblevel */
return false;
}
}
return true;
}

0 comments on commit eae7ad9

Please sign in to comment.