K8s: Dashboards: Fix multi-org quota (#103073)

This commit is contained in:
Stephanie Hingtgen
2025-03-31 14:34:39 +01:00
committed by GitHub
parent 39c33d421b
commit 19a52ba35e
3 changed files with 22 additions and 9 deletions
@@ -447,11 +447,13 @@ func (dr *DashboardServiceImpl) Count(ctx context.Context, scopeParams *quota.Sc
}
total += orgDashboards
tag, err := quota.NewTag(dashboards.QuotaTargetSrv, dashboards.QuotaTarget, quota.OrgScope)
if err != nil {
return nil, err
if scopeParams != nil && scopeParams.OrgID == org.ID {
tag, err := quota.NewTag(dashboards.QuotaTargetSrv, dashboards.QuotaTarget, quota.OrgScope)
if err != nil {
return nil, err
}
u.Set(tag, orgDashboards)
}
u.Set(tag, orgDashboards)
}
tag, err := quota.NewTag(dashboards.QuotaTargetSrv, dashboards.QuotaTarget, quota.GlobalScope)
@@ -2244,8 +2244,8 @@ func TestQuotaCount(t *testing.T) {
ctx, k8sCliMock := setupK8sDashboardTests(service)
orgSvc := orgtest.FakeOrgService{ExpectedOrgs: orgs}
service.orgService = &orgSvc
k8sCliMock.On("GetStats", mock.Anything, mock.Anything).Return(&countOrg2, nil).Once()
k8sCliMock.On("GetStats", mock.Anything, mock.Anything).Return(&countOrg1, nil).Once()
k8sCliMock.On("GetStats", mock.Anything, int64(2)).Return(&countOrg2, nil).Once()
k8sCliMock.On("GetStats", mock.Anything, int64(1)).Return(&countOrg1, nil).Once()
result, err := service.Count(ctx, query)
require.NoError(t, err)
@@ -47,14 +47,25 @@ func TestIntegrationDashboardQuota(t *testing.T) {
if testing.Short() {
t.Skip("skipping integration test")
}
testDashboardQuota(t, []string{})
}
func TestIntegrationDashboardQuotaK8s(t *testing.T) {
if testing.Short() {
t.Skip("skipping integration test")
}
testDashboardQuota(t, []string{featuremgmt.FlagKubernetesClientDashboardsFolders})
}
func testDashboardQuota(t *testing.T, featureToggles []string) {
// enable quota and set low dashboard quota
// Setup Grafana and its Database
dashboardQuota := int64(1)
dir, path := testinfra.CreateGrafDir(t, testinfra.GrafanaOpts{
DisableAnonymous: true,
EnableQuota: true,
DashboardOrgQuota: &dashboardQuota,
DisableAnonymous: true,
EnableQuota: true,
DashboardOrgQuota: &dashboardQuota,
EnableFeatureToggles: featureToggles,
})
grafanaListedAddr, env := testinfra.StartGrafanaEnv(t, dir, path)