From 541445d60f2a5407221cb23289350696c7354d65 Mon Sep 17 00:00:00 2001 From: Chris Church Date: Thu, 4 Apr 2013 14:47:32 -0400 Subject: [PATCH] Added support and tests for --check option. --- lib/main/tasks.py | 4 +++- lib/main/tests/tasks.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/main/tasks.py b/lib/main/tasks.py index 7424029f55..f97ba04509 100644 --- a/lib/main/tasks.py +++ b/lib/main/tasks.py @@ -47,7 +47,9 @@ def run_launch_job(launch_job_status_pk): env['ANSIBLE_TRANSPORT'] = getattr(settings, 'ANSIBLE_TRANSPORT') playbook = launch_job.project.default_playbook - cmdline = ['ansible-playbook', '-i', inventory_script]#, '-v'] + cmdline = ['ansible-playbook', '-i', inventory_script] + if launch_job.job_type == 'check': + cmdline.append('--check') cmdline.append(playbook) # FIXME: How to cancel/interrupt job? (not that important for now) diff --git a/lib/main/tests/tasks.py b/lib/main/tests/tasks.py index 9491b341ef..f2df1ff65b 100644 --- a/lib/main/tests/tasks.py +++ b/lib/main/tests/tasks.py @@ -103,6 +103,22 @@ class RunLaunchJobTest(BaseCeleryTest): self.assertEqual(launch_job_status_events.filter(event='runner_on_ok').count(), 1) self.assertEqual(launch_job_status_events.filter(event='playbook_on_stats').count(), 1) + def test_check_launch_job(self): + self.create_test_playbook(TEST_PLAYBOOK) + self.launch_job.job_type = 'check' + self.launch_job.save() + launch_job_status = self.launch_job.start() + self.assertEqual(launch_job_status.status, 'pending') + launch_job_status = LaunchJobStatus.objects.get(pk=launch_job_status.pk) + self.assertEqual(launch_job_status.status, 'successful') + self.assertTrue(launch_job_status.result_stdout) + launch_job_status_events = launch_job_status.launch_job_status_events.all() + self.assertEqual(launch_job_status_events.filter(event='playbook_on_start').count(), 1) + self.assertEqual(launch_job_status_events.filter(event='playbook_on_play_start').count(), 1) + self.assertEqual(launch_job_status_events.filter(event='playbook_on_task_start').count(), 1) + self.assertEqual(launch_job_status_events.filter(event='runner_on_skipped').count(), 1) + self.assertEqual(launch_job_status_events.filter(event='playbook_on_stats').count(), 1) + def test_run_launch_job_that_fails(self): self.create_test_playbook(TEST_PLAYBOOK2) launch_job_status = self.launch_job.start() @@ -116,3 +132,21 @@ class RunLaunchJobTest(BaseCeleryTest): self.assertEqual(launch_job_status_events.filter(event='playbook_on_task_start').count(), 1) self.assertEqual(launch_job_status_events.filter(event='runner_on_failed').count(), 1) self.assertEqual(launch_job_status_events.filter(event='playbook_on_stats').count(), 1) + + def test_check_launch_job_where_task_would_fail(self): + self.create_test_playbook(TEST_PLAYBOOK2) + self.launch_job.job_type = 'check' + self.launch_job.save() + launch_job_status = self.launch_job.start() + self.assertEqual(launch_job_status.status, 'pending') + launch_job_status = LaunchJobStatus.objects.get(pk=launch_job_status.pk) + # Since we don't actually run the task, the --check should indicate + # everything is successful. + self.assertEqual(launch_job_status.status, 'successful') + self.assertTrue(launch_job_status.result_stdout) + launch_job_status_events = launch_job_status.launch_job_status_events.all() + self.assertEqual(launch_job_status_events.filter(event='playbook_on_start').count(), 1) + self.assertEqual(launch_job_status_events.filter(event='playbook_on_play_start').count(), 1) + self.assertEqual(launch_job_status_events.filter(event='playbook_on_task_start').count(), 1) + self.assertEqual(launch_job_status_events.filter(event='runner_on_skipped').count(), 1) + self.assertEqual(launch_job_status_events.filter(event='playbook_on_stats').count(), 1)