Merge "Improve parsing of cron schedule"

This commit is contained in:
Zuul 2021-08-18 09:58:30 +00:00 committed by Gerrit Code Review
commit dcf0ef07c1
2 changed files with 16 additions and 2 deletions

View File

@ -103,9 +103,23 @@ def get_cron_interval(cronspec, base):
def get_stats_cron_schedule():
"""Returns the cron schedule from the stats CRONJOB spec file.
:return: a string containing the cron schedule
:rtype: str
"""
# TODO(wolsen) in general, the layout of this code makes a lot of
# assumptions about the files that are written, etc and is somewhat
# brittle for anything not specifically laid out by the charm. This
# should be revisited in the future.
with open(CRONJOB) as f:
cronjob = f.read()
return cronjob.split("root")[0].strip()
# The first 5 columns make up the cron spec, but the output of this
# function should be a string. Split the line on whitespace and reform
# the spec string from the necessary columns
# See LP#1939702
cron_spec = ' '.join(cronjob.split()[:5])
return cron_spec
def check_stats_file_freshness(stats_file, asof=None):

View File

@ -27,7 +27,7 @@ class CheckRabbitTest(unittest.TestCase):
cls.tmpdir = TemporaryDirectory()
cronjob = Path(cls.tmpdir.name) / "rabbitmq-stats"
with cronjob.open('w') as f:
f.write("*/5 * * * * root timeout -k 10s -s SIGINT 300 "
f.write("*/5 * * * * rabbitmq timeout -k 10s -s SIGINT 300 "
"/usr/local/bin/collect_rabbitmq_stats.sh 2>&1 | "
"logger -p local0.notice")
cls.old_cron = check_rabbitmq_queues.CRONJOB