From af27dd7e7dcab18061eabe2d0883535a5b774b5a Mon Sep 17 00:00:00 2001 From: Emil Tullstedt Date: Mon, 18 Jan 2021 14:42:39 +0100 Subject: [PATCH] Licensing: Send map of environment variables to plugins (#30347) Replace hard-coded `GF_ENTERPRISE_LICENSE_TEXT` with a `map[string]string` to allow the licensing service to allow sending any environment variable through to the plugins for licensing purposes. --- pkg/models/licensing.go | 7 +++++-- pkg/plugins/backendplugin/manager.go | 7 ++++++- pkg/plugins/backendplugin/manager_test.go | 4 ++-- pkg/services/licensing/oss.go | 4 ---- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/pkg/models/licensing.go b/pkg/models/licensing.go index aadc0e8b3bb..c4de1f15f1e 100644 --- a/pkg/models/licensing.go +++ b/pkg/models/licensing.go @@ -16,6 +16,9 @@ type Licensing interface { LicenseURL(user *SignedInUser) string StateInfo() string - - TokenRaw() string +} + +type LicenseEnvironment interface { + // Environment is a map of environment variables + Environment() map[string]string } diff --git a/pkg/plugins/backendplugin/manager.go b/pkg/plugins/backendplugin/manager.go index 5913b202708..36f9b36ebd5 100644 --- a/pkg/plugins/backendplugin/manager.go +++ b/pkg/plugins/backendplugin/manager.go @@ -98,8 +98,13 @@ func (m *manager) Register(pluginID string, factory PluginFactoryFunc) error { hostEnv = append( hostEnv, fmt.Sprintf("GF_ENTERPRISE_LICENSE_PATH=%s", m.Cfg.EnterpriseLicensePath), - fmt.Sprintf("GF_ENTERPRISE_LICENSE_TEXT=%s", m.License.TokenRaw()), ) + + if envProvider, ok := m.License.(models.LicenseEnvironment); ok { + for k, v := range envProvider.Environment() { + hostEnv = append(hostEnv, fmt.Sprintf("%s=%s", k, v)) + } + } } env := pluginSettings.ToEnv("GF_PLUGIN", hostEnv) diff --git a/pkg/plugins/backendplugin/manager_test.go b/pkg/plugins/backendplugin/manager_test.go index 28fb8a737cc..8dbcadad369 100644 --- a/pkg/plugins/backendplugin/manager_test.go +++ b/pkg/plugins/backendplugin/manager_test.go @@ -411,6 +411,6 @@ func (t *testLicensingService) HasValidLicense() bool { return false } -func (t *testLicensingService) TokenRaw() string { - return t.tokenRaw +func (t *testLicensingService) Environment() map[string]string { + return map[string]string{"GF_ENTERPRISE_LICENSE_TEXT": t.tokenRaw} } diff --git a/pkg/services/licensing/oss.go b/pkg/services/licensing/oss.go index b3a8556c9cc..aacdc989d94 100644 --- a/pkg/services/licensing/oss.go +++ b/pkg/services/licensing/oss.go @@ -60,7 +60,3 @@ func (l *OSSLicensingService) Init() error { func (*OSSLicensingService) HasValidLicense() bool { return false } - -func (*OSSLicensingService) TokenRaw() string { - return "" -}