commit
a4b3a034a9
4 changed files with 14 additions and 13 deletions
|
|
@ -1,6 +1,4 @@
|
|||
import logging
|
||||
import math
|
||||
from time import sleep
|
||||
|
||||
from celery.utils.log import get_task_logger
|
||||
from django.utils import timezone
|
||||
|
|
@ -38,8 +36,7 @@ def sync_organizations_v2(org_ids=None):
|
|||
logger.debug(f"Found {len(active_instance_ids)} active instances")
|
||||
organization_qs = organization_qs.filter(stack_id__in=active_instance_ids)
|
||||
|
||||
orgs_per_second = math.ceil(len(organization_qs) / SYNC_PERIOD.seconds)
|
||||
logger.info(f"Syncing {len(organization_qs)} organizations @ {orgs_per_second} per 1s pause")
|
||||
logger.info(f"Syncing {len(organization_qs)} organizations")
|
||||
for idx, org in enumerate(organization_qs):
|
||||
if GrafanaAPIClient.validate_grafana_token_format(org.api_token):
|
||||
client = GrafanaAPIClient(api_url=org.grafana_url, api_token=org.api_token)
|
||||
|
|
@ -48,9 +45,8 @@ def sync_organizations_v2(org_ids=None):
|
|||
logger.error(
|
||||
f"Failed to request sync stack_slug={org.stack_slug} status_code={status['status_code']} url={status['url']} message={status['message']}"
|
||||
)
|
||||
if idx % orgs_per_second == 0:
|
||||
logger.info(f"Sleep 1s after {idx + 1} organizations processed")
|
||||
sleep(1)
|
||||
if idx % 1000 == 0:
|
||||
logger.info(f"{idx + 1} organizations processed")
|
||||
else:
|
||||
logger.info(f"Skipping stack_slug={org.stack_slug}, api_token format is invalid or not set")
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import logging
|
||||
from dataclasses import asdict
|
||||
from dataclasses import asdict, is_dataclass
|
||||
|
||||
from django.conf import settings
|
||||
from rest_framework import status
|
||||
|
|
@ -49,6 +49,9 @@ class SyncV2View(APIView):
|
|||
try:
|
||||
self.do_sync(request)
|
||||
except SyncException as e:
|
||||
return Response(data=asdict(e.error_data), status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response(
|
||||
data=asdict(e.error_data) if is_dataclass(e.error_data) else e.error_data,
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
|
|
|
|||
|
|
@ -168,9 +168,9 @@ func (a *App) OnCallSettingsFromContext(ctx context.Context) (*OnCallPluginSetti
|
|||
return &settings, fmt.Errorf("get GrafanaURL from provisioning failed (not set in jsonData), unable to fallback to grafana cfg")
|
||||
}
|
||||
settings.GrafanaURL = appUrl
|
||||
log.DefaultLogger.Info(fmt.Sprintf("Using Grafana URL from grafana cfg app url: %s", settings.GrafanaURL))
|
||||
log.DefaultLogger.Debug(fmt.Sprintf("Using Grafana URL from grafana cfg app url: %s", settings.GrafanaURL))
|
||||
} else {
|
||||
log.DefaultLogger.Info(fmt.Sprintf("Using Grafana URL from provisioning: %s", settings.GrafanaURL))
|
||||
log.DefaultLogger.Debug(fmt.Sprintf("Using Grafana URL from provisioning: %s", settings.GrafanaURL))
|
||||
}
|
||||
|
||||
settings.RBACEnabled = cfg.FeatureToggles().IsEnabled("accessControlOnCall")
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import (
|
|||
"net/http"
|
||||
"net/url"
|
||||
"sort"
|
||||
"strconv"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
|
@ -264,14 +265,15 @@ func (a *App) GetAllUsersWithPermissions(settings *OnCallPluginSettings) ([]OnCa
|
|||
return nil, err
|
||||
}
|
||||
for i := range onCallUsers {
|
||||
actions, exists := permissions["1"]
|
||||
userId := strconv.Itoa(onCallUsers[i].ID)
|
||||
actions, exists := permissions[userId]
|
||||
if exists {
|
||||
onCallUsers[i].Permissions = []OnCallPermission{}
|
||||
for action, _ := range actions {
|
||||
onCallUsers[i].Permissions = append(onCallUsers[i].Permissions, OnCallPermission{Action: action})
|
||||
}
|
||||
} else {
|
||||
log.DefaultLogger.Error("Did not find permissions for user", "user", onCallUsers[i].Login)
|
||||
log.DefaultLogger.Error("Did not find permissions for user", "user", onCallUsers[i].Login, "id", userId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue