diff --git a/engine/apps/base/utils.py b/engine/apps/base/utils.py index a3b5a657..8339e295 100644 --- a/engine/apps/base/utils.py +++ b/engine/apps/base/utils.py @@ -8,8 +8,6 @@ from telegram import Bot from twilio.base.exceptions import TwilioException from twilio.rest import Client -from apps.oss_installation.models import CloudConnector - class LiveSettingProxy: def __dir__(self): @@ -98,6 +96,8 @@ class LiveSettingValidator: @classmethod def _check_grafana_cloud_oncall_token(cls, grafana_oncall_token): + from apps.oss_installation.models import CloudConnector + _, err = CloudConnector.sync_with_cloud(grafana_oncall_token) return err diff --git a/engine/apps/oss_installation/migrations/0001_squashed_initial.py b/engine/apps/oss_installation/migrations/0001_squashed_initial.py index dac55f47..b1a34cbd 100644 --- a/engine/apps/oss_installation/migrations/0001_squashed_initial.py +++ b/engine/apps/oss_installation/migrations/0001_squashed_initial.py @@ -30,4 +30,20 @@ class Migration(migrations.Migration): ('report_sent_at', models.DateTimeField(default=None, null=True)), ], ), + migrations.CreateModel( + name='CloudConnector', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('cloud_url', models.URLField()), + ], + ), + migrations.CreateModel( + name='CloudUserIdentity', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('phone_number_verified', models.BooleanField(default=False)), + ('cloud_id', models.CharField(max_length=20)), + ('email', models.EmailField(max_length=254)), + ], + ), ] diff --git a/engine/apps/oss_installation/models/cloud_connector.py b/engine/apps/oss_installation/models/cloud_connector.py index 1434b1ba..39edc18c 100644 --- a/engine/apps/oss_installation/models/cloud_connector.py +++ b/engine/apps/oss_installation/models/cloud_connector.py @@ -5,7 +5,6 @@ import requests from django.db import models, transaction from apps.base.utils import live_settings -from apps.oss_installation.models import CloudHeartbeat from apps.oss_installation.models.cloud_user_identity import CloudUserIdentity from apps.user_management.models import User from settings.base import GRAFANA_CLOUD_ONCALL_API_URL @@ -40,7 +39,7 @@ class CloudConnector(models.Model): try: r = requests.get(info_url, headers={"AUTHORIZATION": api_token}, timeout=5) if r.status_code == 200: - connector = cls.objects.get_or_create() + connector, _ = cls.objects.get_or_create() connector.cloud_url = r.json()["url"] connector.save() elif r.status_code == 403: @@ -104,9 +103,9 @@ class CloudConnector(models.Model): ) ) - CloudUserIdentity.objects.delete() + CloudUserIdentity.objects.all().delete() CloudUserIdentity.objects.bulk_create(cloud_users_identities_to_create, batch_size=1000) - + sync_status = True return sync_status, error_msg def sync_user_with_cloud(self, user): @@ -151,6 +150,8 @@ class CloudConnector(models.Model): @classmethod def remove_sync(cls): - cls.objects.delete() - CloudUserIdentity.objects.delete() - CloudHeartbeat.objects.delete() + from apps.oss_installation.models import CloudHeartbeat + + cls.objects.all().delete() + CloudUserIdentity.objects.all().delete() + CloudHeartbeat.objects.all().delete() diff --git a/engine/apps/oss_installation/views/__init__.py b/engine/apps/oss_installation/views/__init__.py index 9cbe8980..2b206cac 100644 --- a/engine/apps/oss_installation/views/__init__.py +++ b/engine/apps/oss_installation/views/__init__.py @@ -1,3 +1,2 @@ from .cloud_connection import CloudConnectionView # noqa: F401 -from .cloud_heartbeat import CloudHeartbeatStatusView # noqa: F401 from .cloud_users import CloudUsersView, CloudUserView # noqa: F401