diff --git a/swh/scheduler/tests/test_utils.py b/swh/scheduler/tests/test_utils.py --- a/swh/scheduler/tests/test_utils.py +++ b/swh/scheduler/tests/test_utils.py @@ -26,7 +26,6 @@ 'args': [], 'kwargs': {}, }, - 'priority': None, } self.assertEqual(actual_task, expected_task) @@ -54,3 +53,27 @@ self.assertEqual(actual_task, expected_task) mock_datetime.now.assert_called_once_with(tz=timezone.utc) + + @patch('swh.scheduler.utils.datetime') + def test_create_task_dict(self, mock_datetime): + mock_datetime.now.return_value = 'date' + + actual_task = utils.create_task_dict( + 'task-type', 'recurring', 'arg0', 'arg1', + priority='low', other_stuff='normal', retries_left=3 + ) + + expected_task = { + 'policy': 'recurring', + 'type': 'task-type', + 'next_run': 'date', + 'arguments': { + 'args': ('arg0', 'arg1'), + 'kwargs': {'other_stuff': 'normal'}, + }, + 'priority': 'low', + 'retries_left': 3, + } + + self.assertEqual(actual_task, expected_task) + mock_datetime.now.assert_called_once_with(tz=timezone.utc) diff --git a/swh/scheduler/utils.py b/swh/scheduler/utils.py --- a/swh/scheduler/utils.py +++ b/swh/scheduler/utils.py @@ -40,10 +40,7 @@ (swh.scheduler.backend.create_tasks) """ - priority = None - if 'priority' in kwargs: - priority = kwargs.pop('priority') - return { + task = { 'policy': policy, 'type': type, 'next_run': datetime.now(tz=timezone.utc), @@ -51,9 +48,15 @@ 'args': args if args else [], 'kwargs': kwargs if kwargs else {}, }, - 'priority': priority, } + for extra_key in ['priority', 'retries_left']: + if extra_key in kwargs: + extra_val = kwargs.pop(extra_key) + task[extra_key] = extra_val + + return task + def create_oneshot_task_dict(type, *args, **kwargs): """Create a oneshot task scheduled for as soon as possible.