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