From a3e3d8bc9d67464ac1270e6679cdb421562ab58e Mon Sep 17 00:00:00 2001 From: Innokentii Konstantinov Date: Mon, 4 Dec 2023 20:45:07 +0800 Subject: [PATCH] Change labels feature flag to work per oncall org (#3493) It's needed because anyway labels plugin provisioned per stack, not per org --------- Co-authored-by: Yulya Artyukhina --- engine/apps/labels/tests/test_labels.py | 8 ++++---- engine/apps/labels/utils.py | 5 +---- engine/conftest.py | 2 +- engine/settings/base.py | 4 ++-- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/engine/apps/labels/tests/test_labels.py b/engine/apps/labels/tests/test_labels.py index b4d116c2..541beca4 100644 --- a/engine/apps/labels/tests/test_labels.py +++ b/engine/apps/labels/tests/test_labels.py @@ -16,18 +16,18 @@ def test_labels_feature_flag(mock_is_labels_feature_enabled_for_org, make_organi organization = make_organization() # returns True if feature flag is enabled assert settings.FEATURE_LABELS_ENABLED_FOR_ALL - assert organization.id not in settings.FEATURE_LABELS_ENABLED_FOR_GRAFANA_ORGS + assert organization.id not in settings.FEATURE_LABELS_ENABLED_PER_ORG assert is_labels_feature_enabled(organization) - mock_is_labels_feature_enabled_for_org(organization.org_id) + mock_is_labels_feature_enabled_for_org(organization.id) # returns True if feature flag is disabled and organization is in the feature list assert not settings.FEATURE_LABELS_ENABLED_FOR_ALL - assert organization.org_id in settings.FEATURE_LABELS_ENABLED_FOR_GRAFANA_ORGS + assert organization.id in settings.FEATURE_LABELS_ENABLED_PER_ORG assert is_labels_feature_enabled(organization) mock_is_labels_feature_enabled_for_org(12345) # returns False if feature flag is disabled and organization is not in the feature list - assert organization.org_id not in settings.FEATURE_LABELS_ENABLED_FOR_GRAFANA_ORGS + assert organization.org_id not in settings.FEATURE_LABELS_ENABLED_PER_ORG assert not is_labels_feature_enabled(organization) diff --git a/engine/apps/labels/utils.py b/engine/apps/labels/utils.py index e0369b0b..d5aeee32 100644 --- a/engine/apps/labels/utils.py +++ b/engine/apps/labels/utils.py @@ -51,10 +51,7 @@ def get_associating_label_model(obj_model_name: str) -> typing.Type["AssociatedL def is_labels_feature_enabled(organization: "Organization") -> bool: - return ( - settings.FEATURE_LABELS_ENABLED_FOR_ALL - or organization.org_id in settings.FEATURE_LABELS_ENABLED_FOR_GRAFANA_ORGS # Grafana org ID, not OnCall org ID - ) + return settings.FEATURE_LABELS_ENABLED_FOR_ALL or organization.id in settings.FEATURE_LABELS_ENABLED_PER_ORG def get_labels_dict(labelable) -> dict[str, str]: diff --git a/engine/conftest.py b/engine/conftest.py index 6a69915d..80c8c91d 100644 --- a/engine/conftest.py +++ b/engine/conftest.py @@ -200,7 +200,7 @@ def clear_ical_users_cache(): def mock_is_labels_feature_enabled_for_org(settings): def _mock_is_labels_feature_enabled_for_org(org_id): settings.FEATURE_LABELS_ENABLED_FOR_ALL = False - settings.FEATURE_LABELS_ENABLED_FOR_GRAFANA_ORGS = [org_id] + settings.FEATURE_LABELS_ENABLED_PER_ORG = [org_id] return _mock_is_labels_feature_enabled_for_org diff --git a/engine/settings/base.py b/engine/settings/base.py index 2ce633d1..5b6bf177 100644 --- a/engine/settings/base.py +++ b/engine/settings/base.py @@ -69,8 +69,8 @@ GRAFANA_CLOUD_ONCALL_HEARTBEAT_ENABLED = getenv_boolean("GRAFANA_CLOUD_ONCALL_HE GRAFANA_CLOUD_NOTIFICATIONS_ENABLED = getenv_boolean("GRAFANA_CLOUD_NOTIFICATIONS_ENABLED", default=True) # Enable labels feature fo all organizations. This flag overrides FEATURE_LABELS_ENABLED_FOR_GRAFANA_ORGS FEATURE_LABELS_ENABLED_FOR_ALL = getenv_boolean("FEATURE_LABELS_ENABLED_FOR_ALL", default=False) -# Enable labels feature for organizations from the list. Use Grafana org_id, not OnCall id, for this flag -FEATURE_LABELS_ENABLED_FOR_GRAFANA_ORGS = getenv_list("FEATURE_LABELS_ENABLED_FOR_GRAFANA_ORGS", default=list()) +# Enable labels feature for organizations from the list. Use OnCall organization ID, for this flag +FEATURE_LABELS_ENABLED_PER_ORG = getenv_list("FEATURE_LABELS_ENABLED_PER_ORG", default=list()) TWILIO_API_KEY_SID = os.environ.get("TWILIO_API_KEY_SID") TWILIO_API_KEY_SECRET = os.environ.get("TWILIO_API_KEY_SECRET")