diff --git a/engine/apps/grafana_plugin/helpers/gcom.py b/engine/apps/grafana_plugin/helpers/gcom.py index 3a595a44..b2f510e9 100644 --- a/engine/apps/grafana_plugin/helpers/gcom.py +++ b/engine/apps/grafana_plugin/helpers/gcom.py @@ -58,6 +58,7 @@ def check_gcom_permission(token_string: str, context) -> Optional["GcomToken"]: org_slug=instance_info["orgSlug"], org_title=instance_info["orgName"], region_slug=instance_info["regionSlug"], + cluster_slug=instance_info["clusterSlug"], gcom_token=token_string, gcom_token_org_last_time_synced=timezone.now(), ) @@ -67,6 +68,7 @@ def check_gcom_permission(token_string: str, context) -> Optional["GcomToken"]: organization.org_title = instance_info["orgName"] organization.region_slug = instance_info["regionSlug"] organization.grafana_url = instance_info["url"] + organization.cluster_slug = instance_info["clusterSlug"] organization.gcom_token = token_string organization.gcom_token_org_last_time_synced = timezone.now() organization.save( @@ -78,6 +80,7 @@ def check_gcom_permission(token_string: str, context) -> Optional["GcomToken"]: "grafana_url", "gcom_token", "gcom_token_org_last_time_synced", + "cluster_slug", ] ) logger.debug(f"Finish authenticate by making request to gcom api for org={org_id}, stack_id={stack_id}") diff --git a/engine/apps/grafana_plugin/tests/test_self_hosted_install.py b/engine/apps/grafana_plugin/tests/test_self_hosted_install.py index 244d8d4d..c53526a1 100644 --- a/engine/apps/grafana_plugin/tests/test_self_hosted_install.py +++ b/engine/apps/grafana_plugin/tests/test_self_hosted_install.py @@ -18,6 +18,7 @@ STACK_SLUG = "asdfasdf" ORG_SLUG = "hellooo" ORG_TITLE = "nmvcnmvnmvc" REGION_SLUG = "nmcvnmcvnmcvnmcv" +CLUSTER_SLUG = "nmcvnmcvnmcvnmcvnmcv" SELF_HOSTED_SETTINGS = { "GRAFANA_API_URL": GRAFANA_API_URL, "STACK_ID": STACK_ID, @@ -27,6 +28,7 @@ SELF_HOSTED_SETTINGS = { "ORG_SLUG": ORG_SLUG, "ORG_TITLE": ORG_TITLE, "REGION_SLUG": REGION_SLUG, + "CLUSTER_SLUG": CLUSTER_SLUG, } UNABLE_TO_FIND_GRAFANA_ERROR_MSG = f"Unable to connect to the specified Grafana API - {GRAFANA_API_URL}" diff --git a/engine/apps/grafana_plugin/views/self_hosted_install.py b/engine/apps/grafana_plugin/views/self_hosted_install.py index 8a40fed0..4ad2b580 100644 --- a/engine/apps/grafana_plugin/views/self_hosted_install.py +++ b/engine/apps/grafana_plugin/views/self_hosted_install.py @@ -59,6 +59,7 @@ class SelfHostedInstallView(GrafanaHeadersMixin, APIView): org_slug=settings.SELF_HOSTED_SETTINGS["ORG_SLUG"], org_title=settings.SELF_HOSTED_SETTINGS["ORG_TITLE"], region_slug=settings.SELF_HOSTED_SETTINGS["REGION_SLUG"], + cluster_slug=settings.SELF_HOSTED_SETTINGS["CLUSTER_SLUG"], grafana_url=grafana_url, api_token=grafana_api_token, is_rbac_permissions_enabled=rbac_is_enabled, diff --git a/engine/apps/user_management/migrations/0009_organization_cluster_slug.py b/engine/apps/user_management/migrations/0009_organization_cluster_slug.py new file mode 100644 index 00000000..f9cf8173 --- /dev/null +++ b/engine/apps/user_management/migrations/0009_organization_cluster_slug.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.18 on 2023-03-08 04:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('user_management', '0008_organization_is_grafana_incident_enabled'), + ] + + operations = [ + migrations.AddField( + model_name='organization', + name='cluster_slug', + field=models.CharField(default=None, max_length=300, null=True), + ), + ] diff --git a/engine/apps/user_management/models/organization.py b/engine/apps/user_management/models/organization.py index 1a165abe..784f3d4a 100644 --- a/engine/apps/user_management/models/organization.py +++ b/engine/apps/user_management/models/organization.py @@ -110,6 +110,7 @@ class Organization(MaintainableObject): default=None, null=True, ) + cluster_slug = models.CharField(max_length=300, null=True, default=None) grafana_url = models.URLField() diff --git a/engine/apps/user_management/sync.py b/engine/apps/user_management/sync.py index 93c4fb5f..f2abac9b 100644 --- a/engine/apps/user_management/sync.py +++ b/engine/apps/user_management/sync.py @@ -41,6 +41,7 @@ def sync_organization(organization): organization.save( update_fields=[ + "cluster_slug", "stack_slug", "org_slug", "org_title", @@ -68,6 +69,7 @@ def _sync_instance_info(organization): organization.org_title = instance_info["orgName"] organization.region_slug = instance_info["regionSlug"] organization.grafana_url = instance_info["url"] + organization.cluster_slug = instance_info["clusterSlug"] organization.gcom_token_org_last_time_synced = timezone.now() diff --git a/engine/settings/base.py b/engine/settings/base.py index d6d7438e..41b950a1 100644 --- a/engine/settings/base.py +++ b/engine/settings/base.py @@ -583,6 +583,7 @@ SELF_HOSTED_SETTINGS = { "ORG_TITLE": "Self-Hosted Organization", "REGION_SLUG": "self_hosted_region", "GRAFANA_API_URL": os.environ.get("GRAFANA_API_URL", default=None), + "CLUSTER_SLUG": "self_hosted_cluster", } GRAFANA_INCIDENT_STATIC_API_KEY = os.environ.get("GRAFANA_INCIDENT_STATIC_API_KEY", None)