Skip to content

Commit

Permalink
mxqsub: Add option --tags
Browse files Browse the repository at this point in the history
  • Loading branch information
donald committed Mar 29, 2021
1 parent fc04dee commit b6fa380
Showing 1 changed file with 30 additions and 5 deletions.
35 changes: 30 additions & 5 deletions mxqsub.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ static void print_usage(void)
" --blacklist=STRING set list of blacklisted servers (default: '')\n"
" --whitelist=STRING set list of whitelisted servers (default: '')\n"
" --prerequisites=STRING set prerequisites (default: '')\n"
" --tags=STRING set tags (default: '')\n"
"\n"
" [SIZE] may be suffixed with a combination of T, G and M\n"
" to specify tebibytes, gibibytes and mebibytes.\n"
Expand Down Expand Up @@ -175,6 +176,7 @@ static int load_group_id(struct mx_mysql *mysql, struct mxq_group *g)
" AND group_blacklist = ?"
" AND group_whitelist = ?"
" AND prerequisites = ?"
" AND tags = ?"
" AND group_status = 0"
" AND group_flags & ? = 0 "
" ORDER BY group_id DESC"
Expand All @@ -199,7 +201,8 @@ static int load_group_id(struct mx_mysql *mysql, struct mxq_group *g)
res += mx_mysql_statement_param_bind(stmt, 12, string, &(g->group_blacklist));
res += mx_mysql_statement_param_bind(stmt, 13, string, &(g->group_whitelist));
res += mx_mysql_statement_param_bind(stmt, 14, string, &(g->prerequisites));
res += mx_mysql_statement_param_bind(stmt, 15, uint64, &(flags));
res += mx_mysql_statement_param_bind(stmt, 15, string, &(g->tags));
res += mx_mysql_statement_param_bind(stmt, 16, uint64, &(flags));
assert(res == 0);

res = mx_mysql_statement_execute(stmt, &num_rows);
Expand Down Expand Up @@ -266,6 +269,7 @@ static int load_group_id_by_group_id(struct mx_mysql *mysql, struct mxq_group *g
" AND group_blacklist = ?"
" AND group_whitelist = ?"
" AND prerequisites = ?"
" AND tags = ?"
" AND group_status = 0"
" AND group_id = ?"
" AND group_flags & ? = 0 "
Expand All @@ -291,8 +295,9 @@ static int load_group_id_by_group_id(struct mx_mysql *mysql, struct mxq_group *g
res += mx_mysql_statement_param_bind(stmt, 12, string, &(g->group_blacklist));
res += mx_mysql_statement_param_bind(stmt, 13, string, &(g->group_whitelist));
res += mx_mysql_statement_param_bind(stmt, 14, string, &(g->prerequisites));
res += mx_mysql_statement_param_bind(stmt, 15, uint64, &(g->group_id));
res += mx_mysql_statement_param_bind(stmt, 16, uint64, &(flags));
res += mx_mysql_statement_param_bind(stmt, 15, string, &(g->tags));
res += mx_mysql_statement_param_bind(stmt, 16, uint64, &(g->group_id));
res += mx_mysql_statement_param_bind(stmt, 17, uint64, &(flags));
assert(res == 0);

res = mx_mysql_statement_execute(stmt, &num_rows);
Expand Down Expand Up @@ -351,6 +356,7 @@ static int load_group_id_run_or_wait(struct mx_mysql *mysql, struct mxq_group *g
" AND group_blacklist = ?"
" AND group_whitelist = ?"
" AND prerequisites = ?"
" AND tags = ?"
" AND group_status = 0"
" AND ("
"group_jobs_running > 0"
Expand Down Expand Up @@ -380,7 +386,8 @@ static int load_group_id_run_or_wait(struct mx_mysql *mysql, struct mxq_group *g
res += mx_mysql_statement_param_bind(stmt, 12, string, &(g->group_blacklist));
res += mx_mysql_statement_param_bind(stmt, 13, string, &(g->group_whitelist));
res += mx_mysql_statement_param_bind(stmt, 14, string, &(g->prerequisites));
res += mx_mysql_statement_param_bind(stmt, 15, uint64, &(flags));
res += mx_mysql_statement_param_bind(stmt, 15, string, &(g->tags));
res += mx_mysql_statement_param_bind(stmt, 16, uint64, &(flags));
assert(res == 0);

res = mx_mysql_statement_execute(stmt, &num_rows);
Expand Down Expand Up @@ -440,7 +447,8 @@ static int add_group(struct mx_mysql *mysql, struct mxq_group *g)
" group_priority = ?,"
" group_blacklist = ?,"
" group_whitelist = ?,"
" prerequisites = ?");
" prerequisites = ?,"
" tags = ?");
if (!stmt) {
mx_log_err("mx_mysql_statement_prepare(): %m");
return -errno;
Expand All @@ -461,6 +469,7 @@ static int add_group(struct mx_mysql *mysql, struct mxq_group *g)
res += mx_mysql_statement_param_bind(stmt,12, string, &(g->group_blacklist));
res += mx_mysql_statement_param_bind(stmt,13, string, &(g->group_whitelist));
res += mx_mysql_statement_param_bind(stmt,14, string, &(g->prerequisites));
res += mx_mysql_statement_param_bind(stmt,15, string, &(g->tags));
assert(res == 0);

res = mx_mysql_statement_execute(stmt, &num_rows);
Expand Down Expand Up @@ -685,6 +694,7 @@ int main(int argc, char *argv[])
char *arg_blacklist;
char *arg_whitelist;
char *arg_prerequisites;
char *arg_tags;
char *arg_program_name;
u_int16_t arg_threads;
u_int64_t arg_memory;
Expand All @@ -707,6 +717,7 @@ int main(int argc, char *argv[])
_mx_cleanup_free_ char *arg_args = NULL;
_mx_cleanup_free_ char *blacklist = NULL;
_mx_cleanup_free_ char *whitelist = NULL;
_mx_cleanup_free_ char *tags = NULL;

int flags = 0;

Expand Down Expand Up @@ -764,6 +775,7 @@ int main(int argc, char *argv[])
MX_OPTION_REQUIRED_ARG("blacklist", 8),
MX_OPTION_REQUIRED_ARG("whitelist", 9),
MX_OPTION_REQUIRED_ARG("prerequisites", 10),
MX_OPTION_REQUIRED_ARG("tags", 11),
MX_OPTION_END
};

Expand Down Expand Up @@ -792,6 +804,7 @@ int main(int argc, char *argv[])
arg_blacklist = NULL;
arg_whitelist = NULL;
arg_prerequisites = "";
arg_tags = NULL;

arg_mysql_default_group = getenv("MXQ_MYSQL_DEFAULT_GROUP");
if (!arg_mysql_default_group)
Expand Down Expand Up @@ -1008,6 +1021,9 @@ int main(int argc, char *argv[])
arg_prerequisites = optctl.optarg;
break;

case 11:
arg_tags = optctl.optarg;
break;
}
}

Expand Down Expand Up @@ -1082,6 +1098,14 @@ int main(int argc, char *argv[])
whitelist = mx_strdup_forever("");
}

if (arg_tags != NULL) {
struct keywordset *kws = keywordset_new(arg_tags);
tags = keywordset_get(kws);
keywordset_free(kws);
} else {
tags = mx_strdup_forever("");
}

/******************************************************************/

memset(&job, 0, sizeof(job));
Expand All @@ -1101,6 +1125,7 @@ int main(int argc, char *argv[])
group.group_blacklist = blacklist;
group.group_whitelist = whitelist;
group.prerequisites = arg_prerequisites;
group.tags = tags;

group.job_max_per_node = arg_max_per_node;

Expand Down

0 comments on commit b6fa380

Please sign in to comment.