Skip to content

Commit 83a310d

Browse files
committed
added support for region override in resource principal
1 parent b8f329f commit 83a310d

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

internal/provider/provider.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,15 @@ func getConfigProviders(d *schema.ResourceData, auth string) ([]oci_common.Confi
424424
}
425425
configProviders = append(configProviders, securityTokenBasedAuthConfigProvider)
426426
case strings.ToLower(globalvar.ResourcePrincipal):
427-
resourcePrincipalAuthConfigProvider, err := oci_common_auth.ResourcePrincipalConfigurationProvider()
427+
var err error
428+
var resourcePrincipalAuthConfigProvider oci_common_auth.ConfigurationProviderWithClaimAccess
429+
region, ok := d.GetOk(globalvar.RegionAttrName)
430+
if !ok {
431+
log.Printf("did not get %s from Terraform configuration (ResourcePrincipal), falling back to environment variable", globalvar.RegionAttrName)
432+
resourcePrincipalAuthConfigProvider, err = oci_common_auth.ResourcePrincipalConfigurationProvider()
433+
} else {
434+
resourcePrincipalAuthConfigProvider, err = oci_common_auth.ResourcePrincipalConfigurationProviderForRegion(oci_common.StringToRegion(region.(string)))
435+
}
428436
if err != nil {
429437
return nil, err
430438
}

internal/provider/provider_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"crypto/tls"
66
"io/ioutil"
7+
"log"
78
"net/http"
89
"os"
910
"reflect"
@@ -677,6 +678,38 @@ func TestUnitResourcePrincipal_basic(t *testing.T) {
677678
assert.NoError(t, err)
678679
}
679680

681+
func TestUnitResourcePrincipal_regionOverride(t *testing.T) {
682+
httpreplay.SetScenario("TestUnitResourcePrincipal_regionOverride")
683+
defer httpreplay.SaveScenario()
684+
685+
r := &schema.Resource{
686+
Schema: SchemaMap(),
687+
}
688+
d := r.Data(nil)
689+
d.Set("auth", globalvar.ResourcePrincipal)
690+
d.Set(globalvar.RegionAttrName, "test-region")
691+
692+
os.Setenv("OCI_RESOURCE_PRINCIPAL_VERSION", "2.2")
693+
os.Setenv("OCI_RESOURCE_PRINCIPAL_RPST", "$ST")
694+
os.Setenv("OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM", "")
695+
os.Setenv("OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM_PASSPHRASE", "")
696+
os.Setenv("OCI_RESOURCE_PRINCIPAL_REGION", "us-ashburn-1")
697+
698+
clients := &tf_client.OracleClients{
699+
SdkClientMap: make(map[string]interface{}, len(tf_client.OracleClientRegistrationsVar.RegisteredClients)),
700+
Configuration: make(map[string]string),
701+
}
702+
sdkConfigProvider, err := GetSdkConfigProvider(d, clients)
703+
if err != nil {
704+
log.Println(err)
705+
}
706+
707+
// Assert that the region is being overridden
708+
region, _ := sdkConfigProvider.Region()
709+
assert.Equal(t, region, "test-region")
710+
711+
}
712+
680713
type mockResourceData struct {
681714
state string
682715
}

0 commit comments

Comments
 (0)