blob: 9ba097c0e47cbe8dda56983b3169e4f27bfb3ecb [file] [log] [blame]
// Package backends provides common logic to establish connections to backend RPC services that cabe depends on.
package backends
import (
"context"
apipb "go.chromium.org/luci/swarming/proto/api_v2"
"go.skia.org/infra/go/sklog"
"golang.org/x/oauth2"
"golang.org/x/oauth2/google"
compute "google.golang.org/api/compute/v0.beta"
grpc_oauth "google.golang.org/grpc/credentials/oauth"
"go.skia.org/infra/perf/go/perfresults"
)
var (
scopesForBackends = []string{
compute.CloudPlatformScope,
}
)
// CASResultReader is an interface for getting PerfResults for CAS instance and root digest values.
type CASResultReader func(context.Context, string, string) (map[string]perfresults.PerfResults, error)
// SwarmingTaskReader is an interface for getting Swarming task metadata associated with a pinpoint job.
type SwarmingTaskReader func(context.Context, string) ([]*apipb.TaskRequestMetadataResponse, error)
func outboundAuthTokenSource(ctx context.Context) (oauth2.TokenSource, error) {
ts, err := google.DefaultTokenSource(ctx, scopesForBackends...)
if err != nil {
sklog.Errorf("getting token source: %v", err)
return nil, err
}
return ts, nil
}
func outboundGRPCCreds(ctx context.Context) (*grpc_oauth.TokenSource, error) {
ts, err := outboundAuthTokenSource(ctx)
if err != nil {
return nil, err
}
return &grpc_oauth.TokenSource{
TokenSource: ts,
}, nil
}