From 76cce801349efaea694577c26d4d78226c40312c Mon Sep 17 00:00:00 2001 From: Danny Auble <da@schedmd.com> Date: Mon, 11 Mar 2013 11:36:18 -0700 Subject: [PATCH] Handle initialization of the purge_resv option added in pre2 for accounting. --- .../accounting_storage/common/common_as.c | 14 +++++++++++ .../mysql/as_mysql_rollup.c | 6 +++++ src/sacctmgr/archive_functions.c | 25 +++++++++++++++++++ src/slurmdbd/proc_req.c | 2 ++ 4 files changed, 47 insertions(+) diff --git a/src/plugins/accounting_storage/common/common_as.c b/src/plugins/accounting_storage/common/common_as.c index 1cbff59914e..0c512abdd34 100644 --- a/src/plugins/accounting_storage/common/common_as.c +++ b/src/plugins/accounting_storage/common/common_as.c @@ -691,6 +691,20 @@ extern int archive_run_script(slurmdb_archive_cond_t *arch_cond, (long)curr_end); } + if (arch_cond->purge_resv != NO_VAL) { + if (!(curr_end = archive_setup_end_time( + last_submit, arch_cond->purge_job))) { + error("Parsing purge job failed"); + return SLURM_ERROR; + } + + env_array_append_fmt(&env, "SLURM_ARCHIVE_RESV", "%u", + SLURMDB_PURGE_ARCHIVE_SET( + arch_cond->purge_job)); + env_array_append_fmt(&env, "SLURM_ARCHIVE_LAST_RESV", "%ld", + (long)curr_end); + } + if (arch_cond->purge_step != NO_VAL) { if (!(curr_end = archive_setup_end_time( last_submit, arch_cond->purge_step))) { diff --git a/src/plugins/accounting_storage/mysql/as_mysql_rollup.c b/src/plugins/accounting_storage/mysql/as_mysql_rollup.c index 3437cda4972..d8cd1ec1f38 100644 --- a/src/plugins/accounting_storage/mysql/as_mysql_rollup.c +++ b/src/plugins/accounting_storage/mysql/as_mysql_rollup.c @@ -128,6 +128,12 @@ static int _process_purge(mysql_conn_t *mysql_conn, arch_cond.purge_job = slurmdbd_conf->purge_job; else arch_cond.purge_job = NO_VAL; + + if (purge_period & slurmdbd_conf->purge_resv) + arch_cond.purge_resv = slurmdbd_conf->purge_resv; + else + arch_cond.purge_resv = NO_VAL; + if (purge_period & slurmdbd_conf->purge_step) arch_cond.purge_step = slurmdbd_conf->purge_step; else diff --git a/src/sacctmgr/archive_functions.c b/src/sacctmgr/archive_functions.c index f4a221ca777..87b29eaa47d 100644 --- a/src/sacctmgr/archive_functions.c +++ b/src/sacctmgr/archive_functions.c @@ -176,6 +176,10 @@ static int _set_cond(int *start, int argc, char *argv[], MAX(command_len, 1))) { arch_cond->purge_job |= SLURMDB_PURGE_ARCHIVE; set = 1; + } else if (!end && !strncasecmp(argv[i], "reservations", + MAX(command_len, 1))) { + arch_cond->purge_resv |= SLURMDB_PURGE_ARCHIVE; + set = 1; } else if (!end && !strncasecmp(argv[i], "steps", MAX(command_len, 1))) { arch_cond->purge_step |= SLURMDB_PURGE_ARCHIVE; @@ -283,6 +287,15 @@ static int _set_cond(int *start, int argc, char *argv[], arch_cond->purge_job |= tmp; set = 1; } + } else if (!strncasecmp (argv[i], "PurgeResvAfter", + MAX(command_len, 10))) { + if ((tmp = slurmdb_parse_purge(argv[i]+end)) + == NO_VAL) { + exit_code = 1; + } else { + arch_cond->purge_resv |= tmp; + set = 1; + } } else if (!strncasecmp (argv[i], "PurgeStepAfter", MAX(command_len, 10))) { if ((tmp = slurmdb_parse_purge(argv[i]+end)) @@ -321,6 +334,16 @@ static int _set_cond(int *start, int argc, char *argv[], arch_cond->purge_job |= SLURMDB_PURGE_MONTHS; set = 1; } + } else if (!strncasecmp (argv[i], "PurgeResvMonths", + MAX(command_len, 6))) { + if (get_uint(argv[i]+end, &tmp, "PurgeResvMonths") + != SLURM_SUCCESS) { + exit_code = 1; + } else { + arch_cond->purge_resv |= tmp; + arch_cond->purge_resv |= SLURMDB_PURGE_MONTHS; + set = 1; + } } else if (!strncasecmp (argv[i], "PurgeStepMonths", MAX(command_len, 7))) { if (get_uint(argv[i]+end, &tmp, "PurgeStepMonths") @@ -390,6 +413,8 @@ extern int sacctmgr_archive_dump(int argc, char *argv[]) arch_cond->purge_event = NO_VAL; if (!arch_cond->purge_job) arch_cond->purge_job = NO_VAL; + if (!arch_cond->purge_resv) + arch_cond->purge_resv = NO_VAL; if (!arch_cond->purge_step) arch_cond->purge_step = NO_VAL; if (!arch_cond->purge_suspend) diff --git a/src/slurmdbd/proc_req.c b/src/slurmdbd/proc_req.c index 7e0b45169f0..886d179bdb7 100644 --- a/src/slurmdbd/proc_req.c +++ b/src/slurmdbd/proc_req.c @@ -907,6 +907,8 @@ static int _archive_dump(slurmdbd_conn_t *slurmdbd_conn, arch_cond->purge_event = slurmdbd_conf->purge_event; if (arch_cond->purge_job == NO_VAL) arch_cond->purge_job = slurmdbd_conf->purge_job; + if (arch_cond->purge_resv == NO_VAL) + arch_cond->purge_resv = slurmdbd_conf->purge_resv; if (arch_cond->purge_step == NO_VAL) arch_cond->purge_step = slurmdbd_conf->purge_step; if (arch_cond->purge_suspend == NO_VAL) -- GitLab