diff --git a/awx/main/models/inventory.py b/awx/main/models/inventory.py index 606330b939..1c48df5b25 100644 --- a/awx/main/models/inventory.py +++ b/awx/main/models/inventory.py @@ -765,6 +765,13 @@ class InventoryUpdate(CommonTask): return 50 def signal_start(self, **kwargs): + if not self.can_start: + return False + needed = self._get_passwords_needed_to_start() + opts = dict([(field, kwargs.get(field, '')) for field in needed]) + if not all(opts.values()): + return False + json_args = json.dumps(kwargs) self.start_args = json_args self.save() diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index d621ee1404..55516ea5dc 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -385,6 +385,13 @@ class Job(CommonTask): return dependencies def signal_start(self, **kwargs): + if not self.can_start: + return False + needed = self._get_passwords_needed_to_start() + opts = dict([(field, kwargs.get(field, '')) for field in needed]) + if not all(opts.values()): + return False + json_args = json.dumps(kwargs) self.start_args = json_args self.save() diff --git a/awx/main/models/projects.py b/awx/main/models/projects.py index 94ab4d3cb7..37eaa89e67 100644 --- a/awx/main/models/projects.py +++ b/awx/main/models/projects.py @@ -377,6 +377,13 @@ class ProjectUpdate(CommonTask): return 20 def signal_start(self, **kwargs): + if not self.can_start: + return False + needed = self._get_passwords_needed_to_start() + opts = dict([(field, kwargs.get(field, '')) for field in needed]) + if not all(opts.values()): + return False + json_args = json.dumps(kwargs) self.start_args = json_args self.save() diff --git a/awx/main/tests/tasks.py b/awx/main/tests/tasks.py index a33513975b..3bbc4c7843 100644 --- a/awx/main/tests/tasks.py +++ b/awx/main/tests/tasks.py @@ -648,7 +648,6 @@ class RunJobTest(BaseCeleryTest): self.assertFalse(job.passwords_needed_to_start) self.build_args_callback = self._cancel_job_callback self.assertTrue(job.signal_start()) - self.assertEqual(job.status, 'waiting') job = Job.objects.get(pk=job.pk) self.check_job_result(job, 'canceled') self.assertEqual(job.cancel_flag, True)