Skip to content

Commit 12d4597

Browse files
Add Grafana-Terraform-Provider-Version header (#1700)
* Add `Grafana-Terraform-Provider-Version` header Closes #1694 * Fix unit test
1 parent 66c9b05 commit 12d4597

4 files changed

+14
-5
lines changed

pkg/provider/configure_clients.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,17 @@ func createMLClient(client *common.Client, providerConfig ProviderConfig) error
128128
}
129129

130130
func createSLOClient(client *common.Client, providerConfig ProviderConfig) error {
131+
var err error
132+
131133
sloConfig := slo.NewConfiguration()
132134
sloConfig.Host = client.GrafanaAPIURLParsed.Host
133135
sloConfig.Scheme = client.GrafanaAPIURLParsed.Scheme
136+
sloConfig.DefaultHeader, err = getHTTPHeadersMap(providerConfig)
134137
sloConfig.DefaultHeader["Authorization"] = "Bearer " + providerConfig.Auth.ValueString()
135-
sloConfig.DefaultHeader["Grafana-Terraform-Provider"] = "true"
136138
sloConfig.HTTPClient = getRetryClient(providerConfig)
137139
client.SLOClient = slo.NewAPIClient(sloConfig)
138-
return nil
140+
141+
return err
139142
}
140143

141144
func createCloudClient(client *common.Client, providerConfig ProviderConfig) error {
@@ -167,7 +170,10 @@ func createOnCallClient(providerConfig ProviderConfig) (*onCallAPI.Client, error
167170
// Sets a custom HTTP Header on all requests coming from the Grafana Terraform Provider to Grafana-Terraform-Provider: true
168171
// in addition to any headers set within the `http_headers` field or the `GRAFANA_HTTP_HEADERS` environment variable
169172
func getHTTPHeadersMap(providerConfig ProviderConfig) (map[string]string, error) {
170-
headers := map[string]string{"Grafana-Terraform-Provider": "true"}
173+
headers := map[string]string{
174+
"Grafana-Terraform-Provider": "true",
175+
"Grafana-Terraform-Provider-Version": providerConfig.Version.ValueString(),
176+
}
171177
for k, v := range providerConfig.HTTPHeaders.Elements() {
172178
if vString, ok := v.(types.String); ok {
173179
headers[k] = vString.ValueString()

pkg/provider/framework_provider.go

+2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ type ProviderConfig struct {
4141
OncallURL types.String `tfsdk:"oncall_url"`
4242

4343
UserAgent types.String `tfsdk:"-"`
44+
Version types.String `tfsdk:"-"`
4445
}
4546

4647
func (c *ProviderConfig) SetDefaults() error {
@@ -206,6 +207,7 @@ func (p *frameworkProvider) Configure(ctx context.Context, req provider.Configur
206207
resp.Diagnostics.AddError("failed to set defaults", err.Error())
207208
return
208209
}
210+
cfg.Version = types.StringValue(p.version)
209211
cfg.UserAgent = types.StringValue(fmt.Sprintf("Terraform/%s (+https://www.terraform.io) terraform-provider-grafana/%s", req.TerraformVersion, p.version))
210212

211213
clients, err := CreateClients(cfg)

pkg/provider/legacy_provider.go

+1
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ func configure(version string, p *schema.Provider) func(context.Context, *schema
180180
RetryStatusCodes: statusCodes,
181181
RetryWait: types.Int64Value(int64(d.Get("retry_wait").(int))),
182182
UserAgent: types.StringValue(p.UserAgent("terraform-provider-grafana", version)),
183+
Version: types.StringValue(version),
183184
}
184185
if err := cfg.SetDefaults(); err != nil {
185186
return nil, diag.FromErr(err)

pkg/provider/legacy_provider_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ func TestProviderConfigure(t *testing.T) {
2929
// Helper for header tests
3030
checkHeaders := func(t *testing.T, provider *schema.Provider) {
3131
gotHeaders := provider.Meta().(*common.Client).GrafanaAPIConfig.HTTPHeaders
32-
if len(gotHeaders) != 3 {
33-
t.Errorf("expected 3 HTTP header, got %d", len(gotHeaders))
32+
if len(gotHeaders) != 4 {
33+
t.Errorf("expected 4 HTTP header, got %d", len(gotHeaders))
3434
}
3535
if gotHeaders["Authorization"] != "Bearer test" {
3636
t.Errorf("expected HTTP header Authorization to be \"Bearer test\", got %q", gotHeaders["Authorization"])

0 commit comments

Comments
 (0)