From 1f071f5bd771764cc90752f10a7d4c35fd634548 Mon Sep 17 00:00:00 2001 From: Dana Axinte <53751979+dana-axinte@users.noreply.github.com> Date: Thu, 18 Sep 2025 10:10:24 +0100 Subject: [PATCH] Secrets: Adding developer mode config (#111008) adding developer mode and feature flags for e2e tests --- pkg/registry/apis/secret/register.go | 2 +- pkg/setting/setting_secrets_manager.go | 4 ++++ pkg/setting/setting_secrets_manager_test.go | 22 +++++++++++++++++++++ scripts/grafana-server/custom.ini | 5 +++++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/pkg/registry/apis/secret/register.go b/pkg/registry/apis/secret/register.go index bf556405e33..879741dc948 100644 --- a/pkg/registry/apis/secret/register.go +++ b/pkg/registry/apis/secret/register.go @@ -25,7 +25,7 @@ func RegisterDependencies( } // We shouldn't need to create the DB in HG, as that will use the MT api server. - if cfg.StackID == "" { + if cfg.StackID == "" || cfg.SecretsManagement.IsDeveloperMode { // Some DBs that claim to be MySQL/Postgres-compatible might not support table locking. lockDatabase := cfg.Raw.Section("database").Key("migration_locking").MustBool(true) diff --git a/pkg/setting/setting_secrets_manager.go b/pkg/setting/setting_secrets_manager.go index 65a66aad183..72ff3a32361 100644 --- a/pkg/setting/setting_secrets_manager.go +++ b/pkg/setting/setting_secrets_manager.go @@ -34,6 +34,8 @@ type SecretsManagerSettings struct { GCWorkerPollInterval time.Duration // How long to wait for the process to clean up a secure value to complete. GCWorkerPerSecureValueCleanupTimeout time.Duration + // Whether the secrets management is running in developer mode. + IsDeveloperMode bool } func (cfg *Cfg) readSecretsManagerSettings() { @@ -53,6 +55,8 @@ func (cfg *Cfg) readSecretsManagerSettings() { cfg.SecretsManagement.GCWorkerPollInterval = secretsMgmt.Key("gc_worker_poll_interval").MustDuration(1 * time.Minute) cfg.SecretsManagement.GCWorkerPerSecureValueCleanupTimeout = secretsMgmt.Key("gc_worker_per_request_timeout").MustDuration(5 * time.Second) + cfg.SecretsManagement.IsDeveloperMode = secretsMgmt.Key("developer_mode").MustBool(false) + // Extract available KMS providers from configuration sections providers := make(map[string]map[string]string) for _, section := range cfg.Raw.Sections() { diff --git a/pkg/setting/setting_secrets_manager_test.go b/pkg/setting/setting_secrets_manager_test.go index 324acbe27ad..a71a36e0155 100644 --- a/pkg/setting/setting_secrets_manager_test.go +++ b/pkg/setting/setting_secrets_manager_test.go @@ -170,4 +170,26 @@ domain = example.com assert.Equal(t, MisconfiguredProvider, cfg.SecretsManagement.CurrentEncryptionProvider) assert.Empty(t, cfg.SecretsManagement.ConfiguredKMSProviders) }) + + t.Run("should handle configuration with developer mode on", func(t *testing.T) { + iniContent := ` +[secrets_manager] +developer_mode = true +` + cfg, err := NewCfgFromBytes([]byte(iniContent)) + require.NoError(t, err) + + assert.True(t, cfg.SecretsManagement.IsDeveloperMode) + }) + + t.Run("should handle configuration without developer mode set", func(t *testing.T) { + iniContent := ` +[secrets_manager] +encryption_provider = aws_kms +` + cfg, err := NewCfgFromBytes([]byte(iniContent)) + require.NoError(t, err) + + assert.False(t, cfg.SecretsManagement.IsDeveloperMode) + }) } diff --git a/scripts/grafana-server/custom.ini b/scripts/grafana-server/custom.ini index b1f396a57d2..f3595cb7ce7 100644 --- a/scripts/grafana-server/custom.ini +++ b/scripts/grafana-server/custom.ini @@ -14,6 +14,8 @@ publicDashboards=true grafanaAPIServer=true queryLibrary=true queryService=true +secretsManagementAppPlatform = true +secretsManagementAppPlatformUI = true [environment] stack_id = 12345 @@ -36,3 +38,6 @@ host = localhost:7777 [cloud_migration] developer_mode = true ; Enable developer mode to use in-memory implementations of 3rdparty services needed. + +[secrets_manager] +developer_mode = true