Add migration

This commit is contained in:
Innokentii Konstantinov 2022-06-06 16:36:49 +04:00
parent 8748240172
commit ae0845d6a7
4 changed files with 26 additions and 10 deletions

View file

@ -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

View file

@ -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)),
],
),
]

View file

@ -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()

View file

@ -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