GoogleCloudMonitoring: use grafana-google-sdk-go for auth (#40490)
This commit is contained in:
@@ -2,43 +2,31 @@ package pluginproxy
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
googletokenprovider "github.com/grafana/grafana-google-sdk-go/pkg/tokenprovider"
|
||||
"github.com/grafana/grafana/pkg/plugins"
|
||||
"golang.org/x/oauth2/google"
|
||||
)
|
||||
|
||||
type gceAccessTokenProvider struct {
|
||||
datasourceId int64
|
||||
datasourceUpdated time.Time
|
||||
ctx context.Context
|
||||
route *plugins.AppPluginRoute
|
||||
authParams *plugins.JwtTokenAuth
|
||||
source googletokenprovider.TokenProvider
|
||||
ctx context.Context
|
||||
}
|
||||
|
||||
func newGceAccessTokenProvider(ctx context.Context, ds DSInfo, pluginRoute *plugins.AppPluginRoute,
|
||||
authParams *plugins.JwtTokenAuth) *gceAccessTokenProvider {
|
||||
cfg := googletokenprovider.Config{
|
||||
RoutePath: pluginRoute.Path,
|
||||
RouteMethod: pluginRoute.Method,
|
||||
DataSourceID: ds.ID,
|
||||
DataSourceUpdated: ds.Updated,
|
||||
Scopes: authParams.Scopes,
|
||||
}
|
||||
return &gceAccessTokenProvider{
|
||||
datasourceId: ds.ID,
|
||||
datasourceUpdated: ds.Updated,
|
||||
ctx: ctx,
|
||||
route: pluginRoute,
|
||||
authParams: authParams,
|
||||
source: googletokenprovider.NewGceAccessTokenProvider(cfg),
|
||||
ctx: ctx,
|
||||
}
|
||||
}
|
||||
|
||||
func (provider *gceAccessTokenProvider) GetAccessToken() (string, error) {
|
||||
tokenSrc, err := google.DefaultTokenSource(provider.ctx, provider.authParams.Scopes...)
|
||||
if err != nil {
|
||||
logger.Error("Failed to get default token from meta data server", "error", err)
|
||||
return "", err
|
||||
} else {
|
||||
token, err := tokenSrc.Token()
|
||||
if err != nil {
|
||||
logger.Error("Failed to get default access token from meta data server", "error", err)
|
||||
return "", err
|
||||
} else {
|
||||
return token.AccessToken, nil
|
||||
}
|
||||
}
|
||||
return provider.source.GetAccessToken(provider.ctx)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user