Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/component/otelcol/auth/oauth2/oauth2.go
4096 views
1
package oauth2
2
3
import (
4
"net/url"
5
"time"
6
7
"github.com/grafana/agent/component"
8
"github.com/grafana/agent/component/otelcol"
9
"github.com/grafana/agent/component/otelcol/auth"
10
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension"
11
otelcomponent "go.opentelemetry.io/collector/component"
12
otelconfig "go.opentelemetry.io/collector/config"
13
)
14
15
func init() {
16
component.Register(component.Registration{
17
Name: "otelcol.auth.oauth2",
18
Args: Arguments{},
19
Exports: auth.Exports{},
20
21
Build: func(opts component.Options, args component.Arguments) (component.Component, error) {
22
fact := oauth2clientauthextension.NewFactory()
23
return auth.New(opts, fact, args.(Arguments))
24
},
25
})
26
}
27
28
// Arguments configures the otelcol.auth.oauth2 component.
29
type Arguments struct {
30
ClientID string `river:"client_id,attr"`
31
ClientSecret string `river:"client_secret,attr"`
32
TokenURL string `river:"token_url,attr"`
33
EndpointParams url.Values `river:"endpoint_params,attr,optional"`
34
Scopes []string `river:"scopes,attr,optional"`
35
TLSSetting otelcol.TLSClientArguments `river:"tls,block,optional"`
36
Timeout time.Duration `river:"timeout,attr,optional"`
37
}
38
39
var _ auth.Arguments = Arguments{}
40
41
// Convert implements auth.Arguments.
42
func (args Arguments) Convert() (otelconfig.Extension, error) {
43
return &oauth2clientauthextension.Config{
44
ExtensionSettings: otelconfig.NewExtensionSettings(otelconfig.NewComponentID("oauth2")),
45
ClientID: args.ClientID,
46
ClientSecret: args.ClientSecret,
47
TokenURL: args.TokenURL,
48
EndpointParams: args.EndpointParams,
49
Scopes: args.Scopes,
50
TLSSetting: *args.TLSSetting.Convert(),
51
Timeout: args.Timeout,
52
}, nil
53
}
54
55
// Extensions implements auth.Arguments.
56
func (args Arguments) Extensions() map[otelconfig.ComponentID]otelcomponent.Extension {
57
return nil
58
}
59
60
// Exporters implements auth.Arguments.
61
func (args Arguments) Exporters() map[otelconfig.DataType]map[otelconfig.ComponentID]otelcomponent.Exporter {
62
return nil
63
}
64
65