mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Plugins: Add cloudwatch support with the secure socks proxy (#65303)
* Plugins: enable secure socks proxy on cloudwatch with workaround
This commit is contained in:
parent
52a0f59706
commit
fb5a7acc73
@ -99,7 +99,12 @@ func NewInstanceSettings(httpClientProvider httpclient.Provider) datasource.Inst
|
|||||||
return nil, fmt.Errorf("error reading settings: %w", err)
|
return nil, fmt.Errorf("error reading settings: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
httpClient, err := httpClientProvider.New()
|
opts, err := settings.HTTPClientOptions()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
httpClient, err := httpClientProvider.New(opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error creating http client: %w", err)
|
return nil, fmt.Errorf("error creating http client: %w", err)
|
||||||
}
|
}
|
||||||
@ -245,9 +250,9 @@ func (e *cloudWatchExecutor) newSession(pluginCtx backend.PluginContext, region
|
|||||||
region = instance.Settings.Region
|
region = instance.Settings.Region
|
||||||
}
|
}
|
||||||
|
|
||||||
return e.sessions.GetSession(awsds.SessionConfig{
|
sess, err := e.sessions.GetSession(awsds.SessionConfig{
|
||||||
// https://github.com/grafana/grafana/issues/46365
|
// https://github.com/grafana/grafana/issues/46365
|
||||||
// HTTPClient: dsInfo.HTTPClient,
|
// HTTPClient: instance.HTTPClient,
|
||||||
Settings: awsds.AWSDatasourceSettings{
|
Settings: awsds.AWSDatasourceSettings{
|
||||||
Profile: instance.Settings.Profile,
|
Profile: instance.Settings.Profile,
|
||||||
Region: region,
|
Region: region,
|
||||||
@ -261,6 +266,17 @@ func (e *cloudWatchExecutor) newSession(pluginCtx backend.PluginContext, region
|
|||||||
},
|
},
|
||||||
UserAgentName: aws.String("Cloudwatch"),
|
UserAgentName: aws.String("Cloudwatch"),
|
||||||
})
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// work around until https://github.com/grafana/grafana/issues/39089 is implemented
|
||||||
|
if e.cfg.SecureSocksDSProxy.Enabled && e.features.IsEnabled(featuremgmt.FlagSecureSocksDatasourceProxy) && instance.Settings.SecureSocksProxyEnabled {
|
||||||
|
// only update the transport to try to avoid the issue mentioned here https://github.com/grafana/grafana/issues/46365
|
||||||
|
sess.Config.HTTPClient.Transport = instance.HTTPClient.Transport
|
||||||
|
}
|
||||||
|
|
||||||
|
return sess, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *cloudWatchExecutor) getInstance(pluginCtx backend.PluginContext) (*DataSource, error) {
|
func (e *cloudWatchExecutor) getInstance(pluginCtx backend.PluginContext) (*DataSource, error) {
|
||||||
|
@ -10,7 +10,8 @@ import (
|
|||||||
|
|
||||||
type CloudWatchSettings struct {
|
type CloudWatchSettings struct {
|
||||||
awsds.AWSDatasourceSettings
|
awsds.AWSDatasourceSettings
|
||||||
Namespace string `json:"customMetricsNamespaces"`
|
Namespace string `json:"customMetricsNamespaces"`
|
||||||
|
SecureSocksProxyEnabled bool `json:"enableSecureSocksProxy"` // this can be removed when https://github.com/grafana/grafana/issues/39089 is implemented
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadCloudWatchSettings(config backend.DataSourceInstanceSettings) (CloudWatchSettings, error) {
|
func LoadCloudWatchSettings(config backend.DataSourceInstanceSettings) (CloudWatchSettings, error) {
|
||||||
|
@ -8,8 +8,9 @@ import {
|
|||||||
onUpdateDatasourceJsonDataOption,
|
onUpdateDatasourceJsonDataOption,
|
||||||
updateDatasourcePluginJsonDataOption,
|
updateDatasourcePluginJsonDataOption,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { Input, InlineField, FieldProps } from '@grafana/ui';
|
import { Input, InlineField, FieldProps, SecureSocksProxySettings } from '@grafana/ui';
|
||||||
import { notifyApp } from 'app/core/actions';
|
import { notifyApp } from 'app/core/actions';
|
||||||
|
import { config } from 'app/core/config';
|
||||||
import { createWarningNotification } from 'app/core/copy/appNotification';
|
import { createWarningNotification } from 'app/core/copy/appNotification';
|
||||||
import { getDatasourceSrv } from 'app/features/plugins/datasource_srv';
|
import { getDatasourceSrv } from 'app/features/plugins/datasource_srv';
|
||||||
import { store } from 'app/store/store';
|
import { store } from 'app/store/store';
|
||||||
@ -66,6 +67,10 @@ export const ConfigEditor = (props: Props) => {
|
|||||||
</InlineField>
|
</InlineField>
|
||||||
</ConnectionConfig>
|
</ConnectionConfig>
|
||||||
|
|
||||||
|
{config.featureToggles.secureSocksDatasourceProxy && (
|
||||||
|
<SecureSocksProxySettings options={options} onOptionsChange={onOptionsChange} />
|
||||||
|
)}
|
||||||
|
|
||||||
<h3 className="page-heading">CloudWatch Logs</h3>
|
<h3 className="page-heading">CloudWatch Logs</h3>
|
||||||
<div className="gf-form-group">
|
<div className="gf-form-group">
|
||||||
<InlineField
|
<InlineField
|
||||||
@ -124,7 +129,6 @@ export const ConfigEditor = (props: Props) => {
|
|||||||
/>
|
/>
|
||||||
</InlineField>
|
</InlineField>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<XrayLinkConfig
|
<XrayLinkConfig
|
||||||
onChange={(uid) => updateDatasourcePluginJsonDataOption(props, 'tracingDatasourceUid', uid)}
|
onChange={(uid) => updateDatasourcePluginJsonDataOption(props, 'tracingDatasourceUid', uid)}
|
||||||
datasourceUid={options.jsonData.tracingDatasourceUid}
|
datasourceUid={options.jsonData.tracingDatasourceUid}
|
||||||
|
Loading…
Reference in New Issue
Block a user