From 481df1fcf84fc9f8b016bcccd5ff9dcbd121cfab Mon Sep 17 00:00:00 2001 From: AlanCoding Date: Mon, 1 May 2017 10:17:49 -0400 Subject: [PATCH 1/3] mock message obect in callback receiver test --- .../commands/test_run_fact_cache_receiver.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/awx/main/tests/functional/commands/test_run_fact_cache_receiver.py b/awx/main/tests/functional/commands/test_run_fact_cache_receiver.py index 461024ee9c..0a7e4f97c6 100644 --- a/awx/main/tests/functional/commands/test_run_fact_cache_receiver.py +++ b/awx/main/tests/functional/commands/test_run_fact_cache_receiver.py @@ -6,6 +6,9 @@ import pytest from datetime import datetime import json +# Mock +import mock + # Django from django.utils import timezone @@ -41,21 +44,21 @@ def check_process_fact_message_module(fact_returned, data, module_name): @pytest.mark.django_db def test_process_fact_message_ansible(fact_msg_ansible, monkeypatch_jsonbfield_get_db_prep_save): receiver = FactBrokerWorker(None) - fact_returned = receiver.process_fact_message(fact_msg_ansible, None) + fact_returned = receiver.process_fact_message(fact_msg_ansible, mock.MagicMock()) check_process_fact_message_module(fact_returned, fact_msg_ansible, 'ansible') @pytest.mark.django_db def test_process_fact_message_packages(fact_msg_packages, monkeypatch_jsonbfield_get_db_prep_save): receiver = FactBrokerWorker(None) - fact_returned = receiver.process_fact_message(fact_msg_packages, None) + fact_returned = receiver.process_fact_message(fact_msg_packages, mock.MagicMock()) check_process_fact_message_module(fact_returned, fact_msg_packages, 'packages') @pytest.mark.django_db def test_process_fact_message_services(fact_msg_services, monkeypatch_jsonbfield_get_db_prep_save): receiver = FactBrokerWorker(None) - fact_returned = receiver.process_fact_message(fact_msg_services, None) + fact_returned = receiver.process_fact_message(fact_msg_services, mock.MagicMock()) check_process_fact_message_module(fact_returned, fact_msg_services, 'services') @@ -75,10 +78,10 @@ def test_process_facts_message_ansible_overwrite(fact_scans, fact_msg_ansible, m value = 'hello world' receiver = FactBrokerWorker(None) - receiver.process_fact_message(fact_msg_ansible, None) + receiver.process_fact_message(fact_msg_ansible, mock.MagicMock()) fact_msg_ansible['facts'][key] = value - fact_returned = receiver.process_fact_message(fact_msg_ansible, None) + fact_returned = receiver.process_fact_message(fact_msg_ansible, mock.MagicMock()) fact_obj = Fact.objects.get(id=fact_returned.id) assert key in fact_obj.facts From f6046d47c93d3f2d7043333018cee27d689aa0e5 Mon Sep 17 00:00:00 2001 From: Ryan Petrello Date: Mon, 1 May 2017 10:19:41 -0400 Subject: [PATCH 2/3] work around a change in ansible 2.3 to `Task.get_name()` Properly detect setup tasks so that we can filter out sensitive variables from the `ansible_facts` portion of the event payload. --- awx/lib/tower_display_callback/module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awx/lib/tower_display_callback/module.py b/awx/lib/tower_display_callback/module.py index 14e6fba66d..6f68b35046 100644 --- a/awx/lib/tower_display_callback/module.py +++ b/awx/lib/tower_display_callback/module.py @@ -301,7 +301,7 @@ class BaseCallbackModule(CallbackBase): # strip environment vars from the job event; it already exists on the # job and sensitive values are filtered there - if result._task.get_name() == 'setup': + if result._task.action in ('setup', 'gather_facts'): result._result.get('ansible_facts', {}).pop('ansible_env', None) event_data = dict( From 633da940a826cae78217e93768de5bdcc02ba21c Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Mon, 1 May 2017 11:15:18 -0400 Subject: [PATCH 3/3] create .lock file without needing the proj dir to exist * We create .lock file in the tower project root directory. This should not require that the project directory exists, only that the project directory name is generatable. --- awx/main/models/projects.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/awx/main/models/projects.py b/awx/main/models/projects.py index a49046e0eb..fe767a6a38 100644 --- a/awx/main/models/projects.py +++ b/awx/main/models/projects.py @@ -209,7 +209,11 @@ class ProjectOptions(models.Model): return sorted(results, key=lambda x: smart_str(x).lower()) def get_lock_file(self): - proj_path = self.get_project_path() + ''' + We want the project path in name only, we don't care if it exists or + not. This method will just append .lock onto the full directory path. + ''' + proj_path = self.get_project_path(check_if_exists=False) if not proj_path: return None return proj_path + '.lock'