From 8ee4b9680cd8739ef9b429a35c45ff856aed0bf4 Mon Sep 17 00:00:00 2001 From: chris meyers Date: Wed, 6 Jun 2018 11:26:15 -0400 Subject: [PATCH] remove controller_node field from jobs that don't apply --- awx/api/serializers.py | 8 +++-- awx/main/tests/functional/api/test_job.py | 40 ++++++++++++++++++++++- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 2376956da5..6535ba6f56 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -1388,7 +1388,7 @@ class ProjectUpdateSerializer(UnifiedJobSerializer, ProjectOptionsSerializer): class Meta: model = ProjectUpdate - fields = ('*', 'project', 'job_type') + fields = ('*', 'project', 'job_type', '-controller_node') def get_related(self, obj): res = super(ProjectUpdateSerializer, self).get_related(obj) @@ -2098,7 +2098,8 @@ class InventoryUpdateSerializer(UnifiedJobSerializer, InventorySourceOptionsSeri class Meta: model = InventoryUpdate - fields = ('*', 'inventory_source', 'license_error', 'source_project_update') + fields = ('*', 'inventory_source', 'license_error', 'source_project_update', + '-controller_node',) def get_related(self, obj): res = super(InventoryUpdateSerializer, self).get_related(obj) @@ -3245,7 +3246,8 @@ class AdHocCommandSerializer(UnifiedJobSerializer): model = AdHocCommand fields = ('*', 'job_type', 'inventory', 'limit', 'credential', 'module_name', 'module_args', 'forks', 'verbosity', 'extra_vars', - 'become_enabled', 'diff_mode', '-unified_job_template', '-description') + 'become_enabled', 'diff_mode', '-unified_job_template', '-description', + '-controller_node',) extra_kwargs = { 'name': { 'read_only': True, diff --git a/awx/main/tests/functional/api/test_job.py b/awx/main/tests/functional/api/test_job.py index 1d5739731d..be8f7134ea 100644 --- a/awx/main/tests/functional/api/test_job.py +++ b/awx/main/tests/functional/api/test_job.py @@ -9,7 +9,14 @@ from rest_framework.exceptions import PermissionDenied from awx.api.versioning import reverse from awx.api.views import RelatedJobsPreventDeleteMixin, UnifiedJobDeletionMixin -from awx.main.models import JobTemplate, User, Job +from awx.main.models import ( + JobTemplate, + User, + Job, + ProjectUpdate, + AdHocCommand, + InventoryUpdate, +) from crum import impersonate @@ -159,3 +166,34 @@ def test_block_related_unprocessed_events(mocker, organization, project, delete, with mock.patch('awx.api.views.now', lambda: time_of_request): with pytest.raises(PermissionDenied): view.perform_destroy(organization) + + +class TestControllerNode(): + @pytest.fixture + def project_update(self, project): + return ProjectUpdate.objects.create(project=project) + + @pytest.fixture + def job(self): + return JobTemplate.objects.create().create_unified_job() + + @pytest.fixture + def adhoc(self, inventory): + return AdHocCommand.objects.create(inventory=inventory) + + @pytest.mark.django_db + def test_field_controller_node_exists(self, admin_user, job, project_update, inventory_update, adhoc, get): + r = get(reverse('api:unified_job_list') + '?id={}'.format(job.id), admin_user, expect=200) + assert 'controller_node' in r.data['results'][0] + + r = get(job.get_absolute_url(), admin_user, expect=200) + assert 'controller_node' in r.data + + r = get(reverse('api:project_update_detail', kwargs={'pk': project_update.pk}), admin_user, expect=200) + assert 'controller_node' not in r.data + + r = get(reverse('api:ad_hoc_command_detail', kwargs={'pk': adhoc.pk}), admin_user, expect=200) + assert 'controller_node' not in r.data + + r = get(reverse('api:inventory_update_detail', kwargs={'pk': inventory_update.pk}), admin_user, expect=200) + assert 'controller_node' not in r.data