wip: add http proxy handling
This commit is contained in:
@@ -50,12 +50,13 @@ type PluginInstanceCfg struct {
|
||||
|
||||
PluginSettings setting.PluginSettings
|
||||
|
||||
AWSAllowedAuthProviders []string
|
||||
AWSAssumeRoleEnabled bool
|
||||
AWSExternalId string
|
||||
AWSSessionDuration string
|
||||
AWSListMetricsPageLimit string
|
||||
AWSForwardSettingsPlugins []string
|
||||
AWSAllowedAuthProviders []string
|
||||
AWSAssumeRoleEnabled bool
|
||||
AWSPerDatasourceHTTPProxyEnabled bool
|
||||
AWSExternalId string
|
||||
AWSSessionDuration string
|
||||
AWSListMetricsPageLimit string
|
||||
AWSForwardSettingsPlugins []string
|
||||
|
||||
Azure *azsettings.AzureSettings
|
||||
AzureAuthEnabled bool
|
||||
@@ -107,6 +108,7 @@ func ProvidePluginInstanceConfig(cfg *setting.Cfg, settingProvider setting.Provi
|
||||
PluginSettings: extractPluginSettings(settingProvider),
|
||||
AWSAllowedAuthProviders: allowedAuth,
|
||||
AWSAssumeRoleEnabled: aws.KeyValue("assume_role_enabled").MustBool(cfg.AWSAssumeRoleEnabled),
|
||||
AWSPerDatasourceHTTPProxyEnabled: aws.KeyValue("per_datasource_http_proxy_enabled").MustBool(cfg.AWSPerDatasourceHTTPProxyEnabled),
|
||||
AWSExternalId: aws.KeyValue("external_id").Value(),
|
||||
AWSSessionDuration: aws.KeyValue("session_duration").Value(),
|
||||
AWSListMetricsPageLimit: aws.KeyValue("list_metrics_page_limit").Value(),
|
||||
|
||||
@@ -109,6 +109,9 @@ func (p *EnvVarsProvider) awsEnvVars(pluginID string) []string {
|
||||
if !p.cfg.AWSAssumeRoleEnabled {
|
||||
variables = append(variables, p.envVar(awsds.AssumeRoleEnabledEnvVarKeyName, "false"))
|
||||
}
|
||||
if p.cfg.AWSPerDatasourceHTTPProxyEnabled {
|
||||
variables = append(variables, p.envVar(awsds.PerDatasourceHTTPProxyEnabledEnvVarKeyName, "true"))
|
||||
}
|
||||
if len(p.cfg.AWSAllowedAuthProviders) > 0 {
|
||||
variables = append(variables, p.envVar(awsds.AllowedAuthProvidersEnvVarKeyName, strings.Join(p.cfg.AWSAllowedAuthProviders, ",")))
|
||||
}
|
||||
|
||||
@@ -65,6 +65,9 @@ func (s *RequestConfigProvider) PluginRequestConfig(ctx context.Context, pluginI
|
||||
if !s.cfg.AWSAssumeRoleEnabled {
|
||||
m[awsds.AssumeRoleEnabledEnvVarKeyName] = "false"
|
||||
}
|
||||
if s.cfg.AWSPerDatasourceHTTPProxyEnabled {
|
||||
m[awsds.PerDatasourceHTTPProxyEnabledEnvVarKeyName] = "true"
|
||||
}
|
||||
if len(s.cfg.AWSAllowedAuthProviders) > 0 {
|
||||
m[awsds.AllowedAuthProvidersEnvVarKeyName] = strings.Join(s.cfg.AWSAllowedAuthProviders, ",")
|
||||
}
|
||||
|
||||
@@ -544,6 +544,7 @@ func TestRequestConfigProvider_PluginRequestConfig_aws(t *testing.T) {
|
||||
}
|
||||
|
||||
cfg.AWSAssumeRoleEnabled = false
|
||||
cfg.AWSPerDatasourceHTTPProxyEnabled = true
|
||||
cfg.AWSAllowedAuthProviders = []string{"grafana_assume_role", "keys"}
|
||||
cfg.AWSExternalId = "mock_external_id"
|
||||
cfg.AWSSessionDuration = "10m"
|
||||
@@ -554,17 +555,19 @@ func TestRequestConfigProvider_PluginRequestConfig_aws(t *testing.T) {
|
||||
|
||||
t.Run("uses the aws settings for an AWS plugin", func(t *testing.T) {
|
||||
require.Subset(t, p.PluginRequestConfig(context.Background(), "cloudwatch", nil), map[string]string{
|
||||
"AWS_AUTH_AssumeRoleEnabled": "false",
|
||||
"AWS_AUTH_AllowedAuthProviders": "grafana_assume_role,keys",
|
||||
"AWS_AUTH_EXTERNAL_ID": "mock_external_id",
|
||||
"AWS_AUTH_SESSION_DURATION": "10m",
|
||||
"AWS_CW_LIST_METRICS_PAGE_LIMIT": "100",
|
||||
"AWS_AUTH_AssumeRoleEnabled": "false",
|
||||
"AWS_AUTH_PerDatasourceHTTPProxyEnabled": "true",
|
||||
"AWS_AUTH_AllowedAuthProviders": "grafana_assume_role,keys",
|
||||
"AWS_AUTH_EXTERNAL_ID": "mock_external_id",
|
||||
"AWS_AUTH_SESSION_DURATION": "10m",
|
||||
"AWS_CW_LIST_METRICS_PAGE_LIMIT": "100",
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("does not use the aws settings for a non-aws plugin", func(t *testing.T) {
|
||||
m := p.PluginRequestConfig(context.Background(), "", nil)
|
||||
require.NotContains(t, m, "AWS_AUTH_AssumeRoleEnabled")
|
||||
require.NotContains(t, m, "AWS_AUTH_PerDatasourceHTTPProxyEnabled")
|
||||
require.NotContains(t, m, "AWS_AUTH_AllowedAuthProviders")
|
||||
require.NotContains(t, m, "AWS_AUTH_EXTERNAL_ID")
|
||||
require.NotContains(t, m, "AWS_AUTH_SESSION_DURATION")
|
||||
@@ -576,11 +579,12 @@ func TestRequestConfigProvider_PluginRequestConfig_aws(t *testing.T) {
|
||||
|
||||
p = NewRequestConfigProvider(cfg, &fakeSSOSettingsProvider{})
|
||||
require.Subset(t, p.PluginRequestConfig(context.Background(), "test-datasource", nil), map[string]string{
|
||||
"AWS_AUTH_AssumeRoleEnabled": "false",
|
||||
"AWS_AUTH_AllowedAuthProviders": "grafana_assume_role,keys",
|
||||
"AWS_AUTH_EXTERNAL_ID": "mock_external_id",
|
||||
"AWS_AUTH_SESSION_DURATION": "10m",
|
||||
"AWS_CW_LIST_METRICS_PAGE_LIMIT": "100",
|
||||
"AWS_AUTH_AssumeRoleEnabled": "false",
|
||||
"AWS_AUTH_PerDatasourceHTTPProxyEnabled": "true",
|
||||
"AWS_AUTH_AllowedAuthProviders": "grafana_assume_role,keys",
|
||||
"AWS_AUTH_EXTERNAL_ID": "mock_external_id",
|
||||
"AWS_AUTH_SESSION_DURATION": "10m",
|
||||
"AWS_CW_LIST_METRICS_PAGE_LIMIT": "100",
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user