Skip to content

Commit bae0a65

Browse files
committed
Added support to fetch UserAgent from env var
1 parent e6cc01d commit bae0a65

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

internal/globalvar/constants.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ const (
2020
TestTerraformCLIVersion = "test"
2121
UserAgentFormatter = "Oracle-GoSDK/%s (go/%s; %s/%s; terraform/%s; terraform-cli/%s) %s/%s"
2222
UserAgentProviderNameEnv = "USER_AGENT_PROVIDER_NAME"
23+
UserAgentTerraformNameEnv = "TF_APPEND_USER_AGENT"
24+
UserAgentSDKNameEnv = "OCI_SDK_APPEND_USER_AGENT"
2325
DomainNameOverrideEnv = "domain_name_override"
2426
HasCorrectDomainNameEnv = "has_correct_domain_name"
2527
ClientHostOverridesEnv = "CLIENT_HOST_OVERRIDES"

internal/provider/provider.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ var ApiKeyConfigAttributes = [5]string{globalvar.UserOcidAttrName, globalvar.Fin
4545
var ociProvider *schema.Provider
4646

4747
var TerraformCLIVersion = globalvar.UnknownTerraformCLIVersion
48+
var schemaMultiEnvDefaultFuncVar = schema.MultiEnvDefaultFunc
4849
var AvoidWaitingForDeleteTarget bool
4950

5051
// creating an interface to aid in unit tests
@@ -569,12 +570,23 @@ func BuildHttpClient() (httpClient *http.Client) {
569570
return
570571
}
571572

573+
func UserAgentFromEnv() string {
574+
575+
userAgentFromEnv, err := schemaMultiEnvDefaultFuncVar([]string{globalvar.UserAgentProviderNameEnv, globalvar.UserAgentSDKNameEnv, globalvar.UserAgentTerraformNameEnv}, globalvar.DefaultUserAgentProviderName)()
576+
577+
if err != nil {
578+
log.Printf("[ERROR] Error while fetching user agent from env var: %v", err)
579+
return globalvar.DefaultUserAgentProviderName
580+
}
581+
return userAgentFromEnv.(string)
582+
}
583+
572584
func BuildConfigureClientFn(configProvider oci_common.ConfigurationProvider, httpClient *http.Client) (tf_client.ConfigureClient, error) {
573585

574586
if ociProvider != nil && len(ociProvider.TerraformVersion) > 0 {
575587
TerraformCLIVersion = ociProvider.TerraformVersion
576588
}
577-
userAgentProviderName := utils.GetEnvSettingWithDefault(globalvar.UserAgentProviderNameEnv, globalvar.DefaultUserAgentProviderName)
589+
userAgentProviderName := UserAgentFromEnv()
578590
userAgent := fmt.Sprintf(globalvar.UserAgentFormatter, oci_common.Version(), runtime.Version(), runtime.GOOS, runtime.GOARCH, sdkMeta.SDKVersionString(), TerraformCLIVersion, userAgentProviderName, globalvar.Version)
579591

580592
useOboToken, err := strconv.ParseBool(utils.GetEnvSettingWithDefault("use_obo_token", "false"))

internal/provider/provider_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,3 +851,28 @@ func TestUnit_OciVarName(t *testing.T) {
851851
})
852852
}
853853
}
854+
func TestUnitUserAgentFromEnv(t *testing.T) {
855+
tests := []struct {
856+
name string
857+
want string
858+
mock func() (interface{}, error)
859+
}{{
860+
"env value",
861+
"agent/terraform",
862+
func() (interface{}, error) { return "agent/terraform", nil },
863+
},
864+
{
865+
"default value",
866+
globalvar.DefaultUserAgentProviderName,
867+
func() (interface{}, error) { return globalvar.DefaultUserAgentProviderName, nil },
868+
},
869+
}
870+
for _, tt := range tests {
871+
t.Run(tt.name, func(t *testing.T) {
872+
schemaMultiEnvDefaultFuncVar = func(ks []string, dv interface{}) schema.SchemaDefaultFunc {
873+
return tt.mock
874+
}
875+
assert.Equalf(t, tt.want, UserAgentFromEnv(), tt.name)
876+
})
877+
}
878+
}

0 commit comments

Comments
 (0)