From 15aa9cee6704f0221a704bfafe19d53bc73b9b09 Mon Sep 17 00:00:00 2001 From: Nicolas Wavrant <nicolas.wavrant@nexedi.com> Date: Wed, 9 Nov 2016 14:46:14 +0100 Subject: [PATCH] Revert "dcron: new parameter to get a random time, with a frequency of once a day" This reverts commit 2b0c61d9d9488c801ef4b0d8b67d30ab62f1220d. --- slapos/recipe/dcron.py | 30 +++---------- slapos/test/recipe/test_dcron.py | 73 -------------------------------- 2 files changed, 7 insertions(+), 96 deletions(-) diff --git a/slapos/recipe/dcron.py b/slapos/recipe/dcron.py index 2ce4e95ea..e274cc486 100644 --- a/slapos/recipe/dcron.py +++ b/slapos/recipe/dcron.py @@ -26,8 +26,6 @@ ############################################################################## import os -from random import randint - from slapos.recipe.librecipe import GenericBaseRecipe from zc.buildout import UserError @@ -56,36 +54,21 @@ class Recipe(GenericBaseRecipe): class Part(GenericBaseRecipe): - def _options(self, options): - periodicity = None - if options.get('frequency', '') != '': - periodicity = options['frequency'] - elif 'time' in options: - periodicity = options['time'] + def install(self): + try: + periodicity = self.options['frequency'] + except KeyError: + periodicity = self.options['time'] try: periodicity = systemd_to_cron(periodicity) except Exception: raise UserError("Invalid systemd calendar spec %r" % periodicity) - if periodicity is None and self.isTrueValue(options.get('once-a-day', False)): - # Migration code, to force a random value for already instanciated softwares - previous_periodicity = self.getValueFromPreviousRun(self.name, 'periodicity') - if previous_periodicity in ("0 0 * * *", '', None): - periodicity = "%d %d * * *" % (randint(0, 59), randint(0, 23)) - else: - periodicity = previous_periodicity - - if periodicity is None: - raise UserError("Missing one of 'frequency', 'once-a-day' or 'time' parameter") - - options['periodicity'] = periodicity - - def install(self): cron_d = self.options['cron-entries'] name = self.options['name'] filename = os.path.join(cron_d, name) with open(filename, 'w') as part: - part.write('%s %s\n' % (self.options['periodicity'], self.options['command'])) + part.write('%s %s\n' % (periodicity, self.options['command'])) return [filename] @@ -155,3 +138,4 @@ def systemd_to_cron(spec): continue raise ValueError return ' '.join(spec) + diff --git a/slapos/test/recipe/test_dcron.py b/slapos/test/recipe/test_dcron.py index 9a50c5236..0998ed794 100644 --- a/slapos/test/recipe/test_dcron.py +++ b/slapos/test/recipe/test_dcron.py @@ -1,8 +1,4 @@ -import os -import sys import unittest -from textwrap import dedent -from slapos.recipe import dcron from slapos.recipe.dcron import systemd_to_cron class TestDcron(unittest.TestCase): @@ -40,72 +36,3 @@ class TestDcron(unittest.TestCase): _("1-0"); _("1-32"); _("1-14/18") _("24:0"); _("8/16:0") _("0:60"); _("0:15/45") - - def setUp(self): - self.installed_file = './.installed.cfg' - - def tearDown(self): - if os.path.exists(self.installed_file): - os.unlink(self.installed_file) - - def new_recipe(self, extra_options=None, **kw): - buildout = { - 'buildout': { - 'bin-directory': '', - 'find-links': '', - 'allow-hosts': '', - 'develop-eggs-directory': '', - 'eggs-directory': '', - 'python': 'testpython', - 'installed': '.installed.cfg', - }, - 'testpython': { - 'executable': sys.executable, - }, - 'slap-connection': { - 'computer-id': '', - 'partition-id': '', - 'server-url': '', - 'software-release-url': '', - } - } - options = { - 'cron-entries': '.cron', - 'name': 'test', - 'command': 'true', - } - if isinstance(extra_options, dict): - options.update(extra_options) - options.update(kw) - return dcron.Part(buildout=buildout, name='cron-entry-test', options=options) - - def test_onceADayIsOverwrittenIfGivenFrequency(self): - parameter_dict = {'once-a-day': True} - recipe = self.new_recipe(parameter_dict) - random_periodicity = recipe.options['periodicity'] - - parameter_dict['frequency'] = '0 1 * * *' - recipe = self.new_recipe(parameter_dict) - new_periodicity = recipe.options['periodicity'] - self.assertEqual(new_periodicity, '0 1 * * *') - self.assertNotEqual(random_periodicity, new_periodicity) - - def test_periodicityNeverChangeIfOnceADay(self): - parameter_dict = {'once-a-day': True} - periodicity = None - - for _ in range(5): - recipe = self.new_recipe(parameter_dict) - recipe_periodicity = recipe.options['periodicity'] - if periodicity is not None: - self.assertEqual(periodicity, recipe_periodicity) - else: - periodicity = recipe_periodicity - with open(recipe.buildout['buildout']['installed'], 'w') as file: - file.write(dedent(""" - [cron-entry-test] - periodicity = %s - """ % periodicity)) - -if __name__ == '__main__': - unittest.main() -- 2.30.9