Skip to content

Commit 5b994fa

Browse files
modular-magicianpaddycarver
authored andcommitted
terraform: Use real version in UA header (#4374)
Signed-off-by: Modular Magician <[email protected]>
1 parent f985b92 commit 5b994fa

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

google/config.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@ type Config struct {
6464
BatchingConfig *batchingConfig
6565
UserProjectOverride bool
6666

67-
client *http.Client
68-
userAgent string
67+
client *http.Client
68+
terraformVersion string
69+
userAgent string
6970

7071
tokenSource oauth2.TokenSource
7172

@@ -246,10 +247,9 @@ func (c *Config) LoadAndValidate() error {
246247
// timeout for the maximum amount of time a logical request can take.
247248
client.Timeout, _ = time.ParseDuration("30s")
248249

249-
terraformVersion := httpclient.UserAgentString()
250+
tfUserAgent := httpclient.TerraformUserAgent(c.terraformVersion)
250251
providerVersion := fmt.Sprintf("terraform-provider-google/%s", version.ProviderVersion)
251-
terraformWebsite := "(+https://www.terraform.io)"
252-
userAgent := fmt.Sprintf("%s %s %s", terraformVersion, terraformWebsite, providerVersion)
252+
userAgent := fmt.Sprintf("%s %s", tfUserAgent, providerVersion)
253253

254254
c.client = client
255255
c.userAgent = userAgent

google/provider.go

+14-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ var mutexKV = mutexkv.NewMutexKV()
1717

1818
// Provider returns a terraform.ResourceProvider.
1919
func Provider() terraform.ResourceProvider {
20-
return &schema.Provider{
20+
provider := &schema.Provider{
2121
Schema: map[string]*schema.Schema{
2222
"credentials": {
2323
Type: schema.TypeString,
@@ -391,9 +391,19 @@ func Provider() terraform.ResourceProvider {
391391
},
392392

393393
ResourcesMap: ResourceMap(),
394+
}
394395

395-
ConfigureFunc: providerConfigure,
396+
provider.ConfigureFunc = func(d *schema.ResourceData) (interface{}, error) {
397+
terraformVersion := provider.TerraformVersion
398+
if terraformVersion == "" {
399+
// Terraform 0.12 introduced this field to the protocol
400+
// We can therefore assume that if it's missing it's 0.10 or 0.11
401+
terraformVersion = "0.11+compatible"
402+
}
403+
return providerConfigure(d, terraformVersion)
396404
}
405+
406+
return provider
397407
}
398408

399409
// Generated resources: 73
@@ -608,12 +618,13 @@ func ResourceMapWithErrors() (map[string]*schema.Resource, error) {
608618
)
609619
}
610620

611-
func providerConfigure(d *schema.ResourceData) (interface{}, error) {
621+
func providerConfigure(d *schema.ResourceData, terraformVersion string) (interface{}, error) {
612622
config := Config{
613623
Project: d.Get("project").(string),
614624
Region: d.Get("region").(string),
615625
Zone: d.Get("zone").(string),
616626
UserProjectOverride: d.Get("user_project_override").(bool),
627+
terraformVersion: terraformVersion,
617628
}
618629

619630
// Add credential source

0 commit comments

Comments
 (0)