From a74e7301cd224555da3f90c921b82d3964c6731c Mon Sep 17 00:00:00 2001 From: Zack Kayyali Date: Mon, 3 Feb 2025 05:40:16 -0500 Subject: [PATCH] [AAP-39138] - Add DAB Feature Flag common API (#15786) * Add DAB Feature Flag common API * Use updated API /feature_flags_state/ * fix git reference * organization updates --- .../test_feature_flags_api.py | 35 +++++++++++++++++++ awx/settings/defaults.py | 1 + requirements/requirements_git.txt | 2 +- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 awx/main/tests/functional/dab_feature_flags/test_feature_flags_api.py diff --git a/awx/main/tests/functional/dab_feature_flags/test_feature_flags_api.py b/awx/main/tests/functional/dab_feature_flags/test_feature_flags_api.py new file mode 100644 index 0000000000..abd4c5e7c9 --- /dev/null +++ b/awx/main/tests/functional/dab_feature_flags/test_feature_flags_api.py @@ -0,0 +1,35 @@ +import pytest +from django.test import override_settings + +from awx.main.models import User + + +@pytest.mark.django_db +def test_feature_flags_list_endpoint(get): + bob = User.objects.create(username='bob', password='test_user', is_superuser=False) + + url = "/api/v2/feature_flags_state/" + response = get(url, user=bob, expect=200) + assert len(response.data) == 1 + + +@override_settings( + FLAGS={ + "FEATURE_SOME_PLATFORM_FLAG_ENABLED": [ + {"condition": "boolean", "value": False}, + {"condition": "before date", "value": "2022-06-01T12:00Z"}, + ], + "FEATURE_SOME_PLATFORM_FLAG_FOO_ENABLED": [ + {"condition": "boolean", "value": True}, + ], + } +) +@pytest.mark.django_db +def test_feature_flags_list_endpoint_override(get): + bob = User.objects.create(username='bob', password='test_user', is_superuser=False) + + url = "/api/v2/feature_flags_state/" + response = get(url, user=bob, expect=200) + assert len(response.data) == 2 + assert response.data["FEATURE_SOME_PLATFORM_FLAG_ENABLED"] is False + assert response.data["FEATURE_SOME_PLATFORM_FLAG_FOO_ENABLED"] is True diff --git a/awx/settings/defaults.py b/awx/settings/defaults.py index b5d22b1c37..ffffa1e21a 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -358,6 +358,7 @@ INSTALLED_APPS = [ 'ansible_base.jwt_consumer', 'ansible_base.resource_registry', 'ansible_base.rbac', + 'ansible_base.feature_flags', 'flags', ] diff --git a/requirements/requirements_git.txt b/requirements/requirements_git.txt index 07e0b8878c..cfd354be4c 100644 --- a/requirements/requirements_git.txt +++ b/requirements/requirements_git.txt @@ -1,6 +1,6 @@ git+https://github.com/ansible/system-certifi.git@devel#egg=certifi # Remove pbr from requirements.in when moving ansible-runner to requirements.in git+https://github.com/ansible/ansible-runner.git@devel#egg=ansible-runner -django-ansible-base @ git+https://github.com/ansible/django-ansible-base@devel#egg=django-ansible-base[rest-filters,jwt_consumer,resource-registry,rbac] +django-ansible-base @ git+https://github.com/ansible/django-ansible-base@devel#egg=django-ansible-base[rest-filters,jwt_consumer,resource-registry,rbac,feature-flags] awx-plugins-core @ git+https://github.com/ansible/awx-plugins.git@devel#egg=awx-plugins-core awx_plugins.interfaces @ git+https://github.com/ansible/awx_plugins.interfaces.git