From ccb6360a966c48b23f2c721942a673d20f8ec31e Mon Sep 17 00:00:00 2001 From: Hao Liu <44379968+TheRealHaoLiu@users.noreply.github.com> Date: Wed, 12 Feb 2025 15:47:06 -0500 Subject: [PATCH] AAP-39778[Backport][release_4.6] Add DAB Feature Flag common API (#6833) * [AAP-39138] - Add DAB Feature Flag common API (#15786) * Update django-ansible-base reference to ansible-automation-platform/django-ansible-base@stable-2.5 --------- Co-authored-by: Zack Kayyali --- .../test_feature_flags_api.py | 36 +++++++++++++++++++ awx/settings/defaults.py | 1 + requirements/requirements_git.txt | 2 +- 3 files changed, 38 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..490b3ac6e1 --- /dev/null +++ b/awx/main/tests/functional/dab_feature_flags/test_feature_flags_api.py @@ -0,0 +1,36 @@ +import pytest +from django.test import override_settings + +from awx.main.models import User + + +@override_settings(FLAGS={}) +@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) == 0 + + +@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 fffd4e0c19..a71367d4ac 100644 --- a/awx/settings/defaults.py +++ b/awx/settings/defaults.py @@ -366,6 +366,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 843c8cc175..f6c4cc00b8 100644 --- a/requirements/requirements_git.txt +++ b/requirements/requirements_git.txt @@ -1,4 +1,4 @@ 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/python3-saml.git@devel#egg=python3-saml -django-ansible-base @ git+https://github.com/ansible/django-ansible-base@2024.10.17#egg=django-ansible-base[rest_filters,jwt_consumer,resource_registry,rbac] +django-ansible-base @ git+https://github.com/ansible-automation-platform/django-ansible-base@stable-2.5#egg=django-ansible-base[rest-filters,jwt_consumer,resource-registry,rbac,feature-flags]