Merge remote-tracking branch 'origin/main' into ds-apiserver-with-configs

This commit is contained in:
Ryan McKinley
2025-08-20 09:13:30 +03:00
21 changed files with 217 additions and 57 deletions
@@ -21,7 +21,7 @@ func ProvideRepositorySecrets(
decryptSvc secret.DecryptService,
cfg *setting.Cfg,
) RepositorySecrets {
return NewRepositorySecrets(features, NewSecretsService(secretsSvc, decryptSvc, cfg), NewSingleTenant(legacySecretsSvc))
return NewRepositorySecrets(features, NewSecretsService(secretsSvc, decryptSvc, cfg.SecretsManagement.GrpcGrafanaServiceName), NewSingleTenant(legacySecretsSvc))
}
//go:generate mockery --name RepositorySecrets --structname MockRepositorySecrets --inpackage --filename repository_secrets_mock.go --with-expecter
@@ -11,7 +11,6 @@ import (
provisioning "github.com/grafana/grafana/apps/provisioning/pkg/apis/provisioning/v0alpha1"
"github.com/grafana/grafana/pkg/registry/apis/secret"
"github.com/grafana/grafana/pkg/registry/apis/secret/contracts"
"github.com/grafana/grafana/pkg/setting"
)
const svcName = provisioning.GROUP
@@ -30,16 +29,16 @@ var _ Service = (*secretsService)(nil)
//go:generate mockery --name DecryptService --structname MockDecryptService --srcpkg=github.com/grafana/grafana/pkg/registry/apis/secret --filename decrypt_service_mock.go --with-expecter
type secretsService struct {
secureValues SecureValueClient
decryptSvc secret.DecryptService
cfg *setting.Cfg
secureValues SecureValueClient
decryptSvc secret.DecryptService
decrypterServiceName string
}
func NewSecretsService(secretsSvc SecureValueClient, decryptSvc secret.DecryptService, cfg *setting.Cfg) Service {
func NewSecretsService(secretsSvc SecureValueClient, decryptSvc secret.DecryptService, grpcGrafanaServiceName string) Service {
return &secretsService{
secureValues: secretsSvc,
decryptSvc: decryptSvc,
cfg: cfg,
secureValues: secretsSvc,
decryptSvc: decryptSvc,
decrypterServiceName: grpcGrafanaServiceName,
}
}
@@ -78,8 +77,8 @@ func (s *secretsService) Encrypt(ctx context.Context, namespace, name string, da
}
decrypters := []string{svcName}
if s.cfg.SecretsManagement.GrpcGrafanaServiceName != "" {
decrypters = append(decrypters, s.cfg.SecretsManagement.GrpcGrafanaServiceName)
if s.decrypterServiceName != "" {
decrypters = append(decrypters, s.decrypterServiceName)
}
// Create the secret directly as unstructured
@@ -16,7 +16,6 @@ import (
secretv1beta1 "github.com/grafana/grafana/apps/secret/pkg/apis/secret/v1beta1"
"github.com/grafana/grafana/pkg/registry/apis/secret"
"github.com/grafana/grafana/pkg/registry/apis/secret/contracts"
"github.com/grafana/grafana/pkg/setting"
)
// mockDynamicInterface implements a simplified version of the dynamic.ResourceInterface
@@ -51,7 +50,7 @@ func TestNewSecretsService(t *testing.T) {
mockSecretsSvc := NewMockSecureValueClient(t)
mockDecryptSvc := &secret.MockDecryptService{}
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, &setting.Cfg{})
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, "")
assert.NotNil(t, svc)
assert.IsType(t, &secretsService{}, svc)
@@ -209,7 +208,7 @@ func TestSecretsService_Encrypt(t *testing.T) {
tt.setupMocks(mockSecretsSvc, mockDecryptSvc, mockResourceInterface)
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, &setting.Cfg{})
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, "")
ctx := context.Background()
@@ -233,7 +232,7 @@ func TestSecretsService_Encrypt_ClientError(t *testing.T) {
// Setup client to return error
mockSecretsSvc.EXPECT().Client(mock.Anything, "test-namespace").Return(nil, errors.New("client error"))
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, &setting.Cfg{})
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, "")
ctx := context.Background()
@@ -336,7 +335,7 @@ func TestSecretsService_Decrypt(t *testing.T) {
tt.setupMocks(mockSecretsSvc, mockDecryptSvc)
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, &setting.Cfg{})
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, "")
ctx := context.Background()
@@ -374,7 +373,7 @@ func TestSecretsService_Decrypt_ServiceIdentityContext(t *testing.T) {
"test-secret": mockResult,
}, nil)
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, &setting.Cfg{})
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, "")
ctx := context.Background()
result, err := svc.Decrypt(ctx, "test-namespace", "test-secret")
@@ -436,7 +435,7 @@ func TestSecretsService_Delete(t *testing.T) {
tt.setupMocks(mockSecretsSvc, mockDecryptSvc, mockResourceInterface)
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, &setting.Cfg{})
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, "")
ctx := context.Background()
err := svc.Delete(ctx, tt.namespace, tt.secretName)
@@ -521,7 +520,7 @@ func TestSecretsService_Encrypt_WithK8sNotFoundError(t *testing.T) {
}
mockResourceInterface.createErr = nil
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, &setting.Cfg{})
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, "")
ctx := context.Background()
result, err := svc.Encrypt(ctx, "test-namespace", "test-secret", "secret-data")
@@ -542,7 +541,7 @@ func TestSecretsService_Delete_WithK8sNotFoundError(t *testing.T) {
k8sNotFoundErr := apierrors.NewNotFound(schema.GroupResource{Group: "secret.grafana.app", Resource: "securevalues"}, "test-secret")
mockResourceInterface.deleteErr = k8sNotFoundErr
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, &setting.Cfg{})
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, "")
ctx := context.Background()
err := svc.Delete(ctx, "test-namespace", "test-secret")
@@ -563,7 +562,7 @@ func TestSecretsService_Delete_WithGrafanaNotFoundError(t *testing.T) {
// Mock Delete call to return Grafana not found error
mockResourceInterface.deleteErr = contracts.ErrSecureValueNotFound
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, &setting.Cfg{})
svc := NewSecretsService(mockSecretsSvc, mockDecryptSvc, "")
ctx := context.Background()
err := svc.Delete(ctx, "test-namespace", "test-secret")
+11 -2
View File
@@ -501,6 +501,11 @@
"title-muting-grouping-and-timings": "Ztlumení, seskupení a časování"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Nebyly nalezeny žádné zdroje dat"
},
"alert-menu": {
@@ -2487,6 +2492,7 @@
},
"empty-data-source": "Nebyla nalezena žádná pravidla",
"error-button": "Chyba",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Zrušit vyhledávání",
"no-more-results": "Žádné další výsledky – nalezená pravidla: {{numberOfRules}}",
@@ -4207,7 +4213,8 @@
}
},
"connect-data": {
"category-header-label": "Zdroje dat",
"apps-header": "",
"datasources-header": "",
"empty-message": "Nebyly nalezeny žádné výsledky odpovídající vašemu dotazu",
"request-data-source": "Požádat o nový zdroj dat",
"roadmap": "Zobrazit plán"
@@ -6587,9 +6594,11 @@
"explore": "Prozkoumat"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Vytvořit nástěnku",
"explore-data": "Prozkoumat data",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Další podrobnosti o chybě"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Stummschaltung, Gruppierung und Zeitsteuerung"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Keine Datenquellen gefunden"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "Keine Regeln gefunden",
"error-button": "Fehler",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Suche abbrechen",
"no-more-results": "Keine weiteren Ergebnisse – {{numberOfRules}} Regeln gefunden",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Datenquellen",
"apps-header": "",
"datasources-header": "",
"empty-message": "Es wurden keine Ergebnisse gefunden, die Ihrer Abfrage entsprechen",
"request-data-source": "Neue Datenquelle anfordern",
"roadmap": "Roadmap anzeigen"
@@ -6545,9 +6552,11 @@
"explore": "Entdecken"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Dashboard erstellen",
"explore-data": "Daten untersuchen",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Weitere Details zum Fehler"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Silencio, agrupación y temporización"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "No se han encontrado fuentes de datos"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "No se han encontrado reglas",
"error-button": "Error",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Cancelar búsqueda",
"no-more-results": "No hay más resultados. Se han encontrado {{numberOfRules}} reglas",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Orígenes de datos",
"apps-header": "",
"datasources-header": "",
"empty-message": "No se han encontrado resultados que coincidan con tu consulta",
"request-data-source": "Solicitar una nueva fuente de datos",
"roadmap": "Ver hoja de ruta"
@@ -6545,9 +6552,11 @@
"explore": "Explorar"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Crear un dashboard",
"explore-data": "Explorar datos",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Más detalles sobre el error"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Mise en sourdine, regroupement et horaires"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Aucune source de données trouvée"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "Aucune règle trouvée",
"error-button": "Erreur",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Annuler la recherche",
"no-more-results": "Plus aucun résultat : {{numberOfRules}} règles trouvées",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Sources de données",
"apps-header": "",
"datasources-header": "",
"empty-message": "Aucun résultat correspondant à votre requête n'a été trouvé",
"request-data-source": "Demander une nouvelle source de données",
"roadmap": "Voir la feuille de route"
@@ -6545,9 +6552,11 @@
"explore": "Explorer"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Créer un tableau de bord",
"explore-data": "Explorer les données",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Plus de détails sur l’erreur"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Némítás, csoportosítás és időzítés"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Nem található adatforrás"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "Nem található szabály",
"error-button": "Hiba",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Keresés visszavonása",
"no-more-results": "Nincs több találat – {{numberOfRules}} szabályt sikerült találni",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Adatforrások",
"apps-header": "",
"datasources-header": "",
"empty-message": "Nincs találat a lekérdezésre",
"request-data-source": "Új adatforrás kérése",
"roadmap": "Ütemterv megtekintése"
@@ -6545,9 +6552,11 @@
"explore": "Explore"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Irányítópult létrehozása",
"explore-data": "Adatok felfedezése",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "További részletek a hibáról"
+11 -2
View File
@@ -489,6 +489,11 @@
"title-muting-grouping-and-timings": "Pembisuan, pengelompokan, dan pengaturan waktu"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Tidak ada sumber data yang ditemukan"
},
"alert-menu": {
@@ -2457,6 +2462,7 @@
},
"empty-data-source": "Tidak ada aturan yang ditemukan",
"error-button": "Kesalahan",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Batalkan pencarian",
"no-more-results": "Tidak ada hasil lagi – {{numberOfRules}} aturan ditemukan",
@@ -4153,7 +4159,8 @@
}
},
"connect-data": {
"category-header-label": "Sumber data",
"apps-header": "",
"datasources-header": "",
"empty-message": "Hasil yang cocok dengan kueri Anda tidak ditemukan",
"request-data-source": "Minta sumber data baru",
"roadmap": "Lihat peta jalan"
@@ -6524,9 +6531,11 @@
"explore": "Jelajahi"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Buat dasbor",
"explore-data": "Jelajahi data",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Detail lebih lanjut tentang kesalahan"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Disattivazione audio, raggruppamento e orari"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Nessuna fonte dati trovata"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "Nessuna regola trovata",
"error-button": "Errore",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Annulla ricerca",
"no-more-results": "Nessun altro risultato: {{numberOfRules}} regole trovate",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Fonti dei dati",
"apps-header": "",
"datasources-header": "",
"empty-message": "Nessun risultato trovato corrisponde alla tua ricerca",
"request-data-source": "Richiedi una nuova origine dati",
"roadmap": "Visualizza roadmap"
@@ -6545,9 +6552,11 @@
"explore": "Esplora"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Crea una dashboard",
"explore-data": "Esplora i dati",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Maggiori dettagli sull'errore"
+11 -2
View File
@@ -489,6 +489,11 @@
"title-muting-grouping-and-timings": "ミュート、グループ化、タイミング"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "データソースが見つかりません"
},
"alert-menu": {
@@ -2457,6 +2462,7 @@
},
"empty-data-source": "ルールが見つかりません",
"error-button": "エラー",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "検索をキャンセル",
"no-more-results": "これ以上の結果はありません – {{numberOfRules}}件のルールが見つかりました",
@@ -4153,7 +4159,8 @@
}
},
"connect-data": {
"category-header-label": "データソース",
"apps-header": "",
"datasources-header": "",
"empty-message": "クエリに一致する結果が見つかりませんでした",
"request-data-source": "新しいデータソースをリクエストする",
"roadmap": "ロードマップを表示"
@@ -6524,9 +6531,11 @@
"explore": "探検"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "ダッシュボードを作成",
"explore-data": "データを調査",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "エラーの詳細"
+11 -2
View File
@@ -489,6 +489,11 @@
"title-muting-grouping-and-timings": "알림 비활성화, 그룹화 및 타이밍"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "데이터 소스를 찾을 수 없습니다"
},
"alert-menu": {
@@ -2457,6 +2462,7 @@
},
"empty-data-source": "규칙을 찾을 수 없습니다",
"error-button": "오류",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "검색 취소",
"no-more-results": "더 이상 결과 없음 – {{numberOfRules}}개의 규칙 찾음",
@@ -4153,7 +4159,8 @@
}
},
"connect-data": {
"category-header-label": "데이터 소스",
"apps-header": "",
"datasources-header": "",
"empty-message": "쿼리와 일치하는 결과를 찾을 수 없음",
"request-data-source": "새 데이터 소스 요청",
"roadmap": "로드맵 보기"
@@ -6524,9 +6531,11 @@
"explore": "탐색"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "대시보드 구축",
"explore-data": "데이터 탐색",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "오류에 대한 자세한 정보"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Dempen, groeperen en timings"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Geen gegevensbronnen gevonden"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "Geen regels gevonden",
"error-button": "Fout",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Zoekopdracht annuleren",
"no-more-results": "Geen resultaten - {{numberOfRules}} regels gevonden",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Gegevensbronnen",
"apps-header": "",
"datasources-header": "",
"empty-message": "Er zijn geen resultaten gevonden die overeenkomen met je query",
"request-data-source": "Een nieuwe gegevensbron aanvragen",
"roadmap": "Routekaart weergeven"
@@ -6545,9 +6552,11 @@
"explore": "Verkennen"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Maak een dashboard",
"explore-data": "Gegevens verkennen",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Meer informatie over de fout"
+11 -2
View File
@@ -501,6 +501,11 @@
"title-muting-grouping-and-timings": "Wyciszanie, grupowanie i harmonogramy"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Nie znaleziono źródeł danych"
},
"alert-menu": {
@@ -2487,6 +2492,7 @@
},
"empty-data-source": "Nie znaleziono reguł",
"error-button": "Błąd",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Anuluj wyszukiwanie",
"no-more-results": "Nie ma więcej wyników – liczba znalezionych reguł: {{numberOfRules}}",
@@ -4207,7 +4213,8 @@
}
},
"connect-data": {
"category-header-label": "Źródła danych",
"apps-header": "",
"datasources-header": "",
"empty-message": "Nie znaleziono wyników pasujących do Twojego zapytania",
"request-data-source": "Poproś o nowe źródło danych",
"roadmap": "Widok etapów"
@@ -6587,9 +6594,11 @@
"explore": "Eksploruj"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Utwórz pulpit",
"explore-data": "Przeglądaj dane",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Więcej informacji o błędzie"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Silenciamento, agrupamento e cronogramas"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Nenhuma fonte de dados encontrada"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "Nenhuma regra encontrada",
"error-button": "Erro",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Cancelar pesquisa",
"no-more-results": "Não há mais resultados. Foram encontradas {{numberOfRules}} regras",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Fontes de dados",
"apps-header": "",
"datasources-header": "",
"empty-message": "Nenhum resultado foi encontrado para a sua consulta",
"request-data-source": "Solicitar uma nova fonte de dados",
"roadmap": "Ver roteiro"
@@ -6545,9 +6552,11 @@
"explore": "Explorar"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Criar um painel",
"explore-data": "Explorar dados",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Mais detalhes sobre o erro"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Silêncio, agrupamento e tempos"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Nenhuma fonte de dados encontrada"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "Nenhuma regra encontrada",
"error-button": "Erro",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Cancelar pesquisa",
"no-more-results": "Não existem mais resultados – {{numberOfRules}} regras encontradas",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Origens de dados",
"apps-header": "",
"datasources-header": "",
"empty-message": "Não foram encontrados resultados que correspondam à sua consulta",
"request-data-source": "Solicitar uma nova origem de dados",
"roadmap": "Ver roteiro"
@@ -6545,9 +6552,11 @@
"explore": "Explorar"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Criar um painel de controlo",
"explore-data": "Explorar dados",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Mais detalhes sobre o erro"
+11 -2
View File
@@ -501,6 +501,11 @@
"title-muting-grouping-and-timings": "Отключение звука, группировка и определение времени"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Источники данных не найдены"
},
"alert-menu": {
@@ -2487,6 +2492,7 @@
},
"empty-data-source": "Правила не найдены",
"error-button": "Ошибка",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Отменить поиск",
"no-more-results": "Больше нет результатов. Найдено правил: {{numberOfRules}}",
@@ -4207,7 +4213,8 @@
}
},
"connect-data": {
"category-header-label": "Источники данных",
"apps-header": "",
"datasources-header": "",
"empty-message": "По вашему запросу ничего не найдено",
"request-data-source": "Запросить новый источник данных",
"roadmap": "Просмотр дорожной карты"
@@ -6587,9 +6594,11 @@
"explore": "Explore"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Создать дашборд",
"explore-data": "Просмотреть данные",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Подробнее об ошибке"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Tystnad, gruppering och tidsinställningar"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Inga datakällor hittades"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "Inga regler hittades",
"error-button": "Fel",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Avbryt sökning",
"no-more-results": "Inga fler resultat – hittade {{numberOfRules}} regler",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Datakällor",
"apps-header": "",
"datasources-header": "",
"empty-message": "Inga resultat som matchar din fråga hittades",
"request-data-source": "Begär en ny datakälla",
"roadmap": "Visa planering"
@@ -6545,9 +6552,11 @@
"explore": "Utforska"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Bygg en instrumentpanel",
"explore-data": "Utforska data",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Mer information om felet"
+11 -2
View File
@@ -493,6 +493,11 @@
"title-muting-grouping-and-timings": "Sessize alma, gruplandırma ve zamanlamalar"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "Veri kaynağı bulunamadı"
},
"alert-menu": {
@@ -2467,6 +2472,7 @@
},
"empty-data-source": "Kural bulunamadı",
"error-button": "Hata",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "Aramayı iptal et",
"no-more-results": "Başka sonuç yok - {{numberOfRules}} kural bulundu",
@@ -4171,7 +4177,8 @@
}
},
"connect-data": {
"category-header-label": "Veri kaynakları",
"apps-header": "",
"datasources-header": "",
"empty-message": "Sorgunuzla eşleşen sonuç bulunamadı",
"request-data-source": "Yeni veri kaynağı talep et",
"roadmap": "Yol haritasını görüntüle"
@@ -6545,9 +6552,11 @@
"explore": "Keşfet"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "Pano oluştur",
"explore-data": "Verileri keşfedin",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "Hata hakkında daha fazla bilgi"
+11 -2
View File
@@ -489,6 +489,11 @@
"title-muting-grouping-and-timings": "静音、分组和时间设定"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "未找到数据源"
},
"alert-menu": {
@@ -2457,6 +2462,7 @@
},
"empty-data-source": "未找到规则",
"error-button": "错误",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "取消搜索",
"no-more-results": "没有更多结果 – 找到 {{numberOfRules}} 个规则",
@@ -4153,7 +4159,8 @@
}
},
"connect-data": {
"category-header-label": "数据源",
"apps-header": "",
"datasources-header": "",
"empty-message": "未找到与您的查询匹配的结果",
"request-data-source": "请求新的数据源",
"roadmap": "查看路线图"
@@ -6524,9 +6531,11 @@
"explore": "探索"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "构建数据面板",
"explore-data": "浏览数据",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "有关错误的更多详情"
+11 -2
View File
@@ -489,6 +489,11 @@
"title-muting-grouping-and-timings": "靜音、分組和時間"
},
"alert-manager-picker": {
"external-alertmanagers-group": "",
"extra-config-warning": {
"content": "",
"title": ""
},
"noOptionsMessage-no-datasources-found": "未找到資料來源"
},
"alert-menu": {
@@ -2457,6 +2462,7 @@
},
"empty-data-source": "未找到規則",
"error-button": "錯誤",
"export-all-grafana-rules": "",
"filter-view": {
"cancel-search": "取消搜尋",
"no-more-results": "沒有更多結果 – 找到 {{numberOfRules}} 個規則",
@@ -4153,7 +4159,8 @@
}
},
"connect-data": {
"category-header-label": "資料來源",
"apps-header": "",
"datasources-header": "",
"empty-message": "未找到符合您查詢的結果",
"request-data-source": "請求新的資料來源",
"roadmap": "檢視藍圖"
@@ -6524,9 +6531,11 @@
"explore": "探索"
},
"edit-data-source-actions": {
"add-favorite": "",
"build-a-dashboard": "建立儀表板",
"explore-data": "探索資料",
"open-in-explore": ""
"open-in-explore": "",
"remove-favorite": ""
},
"error-details-link": {
"aria-label-more-details-about-the-error": "有關錯誤的更多詳細資料"