Skip to content

Commit c6e4a0d

Browse files
authored
feat: Add support for using DEV/QA for mongodbgov (#2009)
1 parent 29d4268 commit c6e4a0d

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

internal/provider/provider.go

+22-5
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,15 @@ import (
3434
"github.com/mongodb/terraform-provider-mongodbatlas/internal/service/searchdeployment"
3535
"github.com/mongodb/terraform-provider-mongodbatlas/internal/service/streamconnection"
3636
"github.com/mongodb/terraform-provider-mongodbatlas/internal/service/streaminstance"
37-
3837
"github.com/mongodb/terraform-provider-mongodbatlas/version"
3938
)
4039

4140
const (
42-
MongodbGovCloudURL = "https://cloud.mongodbgov.com"
43-
ProviderConfigError = "error in configuring the provider."
44-
MissingAuthAttrError = "either Atlas Programmatic API Keys or AWS Secrets Manager attributes must be set"
41+
MongodbGovCloudURL = "https://cloud.mongodbgov.com"
42+
MongodbGovCloudQAURL = "https://cloud-qa.mongodbgov.com"
43+
MongodbGovCloudDevURL = "https://cloud-dev.mongodbgov.com"
44+
ProviderConfigError = "error in configuring the provider."
45+
MissingAuthAttrError = "either Atlas Programmatic API Keys or AWS Secrets Manager attributes must be set"
4546
)
4647

4748
type MongodbtlasProvider struct{}
@@ -296,7 +297,9 @@ func parseTfModel(ctx context.Context, tfAssumeRoleModel *tfAssumeRoleModel) *co
296297

297298
func setDefaultValuesWithValidations(ctx context.Context, data *tfMongodbAtlasProviderModel, resp *provider.ConfigureResponse) tfMongodbAtlasProviderModel {
298299
if mongodbgovCloud := data.IsMongodbGovCloud.ValueBool(); mongodbgovCloud {
299-
data.BaseURL = types.StringValue(MongodbGovCloudURL)
300+
if !isGovBaseURLConfiguredForProvider(data) {
301+
data.BaseURL = types.StringValue(MongodbGovCloudURL)
302+
}
300303
}
301304
if data.BaseURL.ValueString() == "" {
302305
data.BaseURL = types.StringValue(MultiEnvDefaultFunc([]string{
@@ -475,3 +478,17 @@ func MultiEnvDefaultFunc(ks []string, def any) any {
475478
}
476479
return def
477480
}
481+
482+
func isGovBaseURLConfigured(baseURL string) bool {
483+
if baseURL == "" {
484+
baseURL = MultiEnvDefaultFunc([]string{
485+
"MONGODB_ATLAS_BASE_URL",
486+
"MCLI_OPS_MANAGER_URL",
487+
}, "").(string)
488+
}
489+
return baseURL == MongodbGovCloudDevURL || baseURL == MongodbGovCloudQAURL
490+
}
491+
492+
func isGovBaseURLConfiguredForProvider(data *tfMongodbAtlasProviderModel) bool {
493+
return isGovBaseURLConfigured(data.BaseURL.ValueString())
494+
}

internal/provider/provider_sdk2.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1212
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1313
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
14+
1415
"github.com/mongodb/terraform-provider-mongodbatlas/internal/common/conversion"
1516
"github.com/mongodb/terraform-provider-mongodbatlas/internal/config"
1617
"github.com/mongodb/terraform-provider-mongodbatlas/internal/service/accesslistapikey"
@@ -324,8 +325,10 @@ func setDefaultsAndValidations(d *schema.ResourceData) diag.Diagnostics {
324325

325326
mongodbgovCloud := conversion.Pointer(d.Get("is_mongodbgov_cloud").(bool))
326327
if *mongodbgovCloud {
327-
if err := d.Set("base_url", MongodbGovCloudURL); err != nil {
328-
return append(diagnostics, diag.FromErr(err)...)
328+
if !isGovBaseURLConfiguredForSDK2Provider(d) {
329+
if err := d.Set("base_url", MongodbGovCloudURL); err != nil {
330+
return append(diagnostics, diag.FromErr(err)...)
331+
}
329332
}
330333
}
331334

@@ -573,3 +576,7 @@ func expandAssumeRole(tfMap map[string]any) *config.AssumeRole {
573576

574577
return &assumeRole
575578
}
579+
580+
func isGovBaseURLConfiguredForSDK2Provider(d *schema.ResourceData) bool {
581+
return isGovBaseURLConfigured(d.Get("base_url").(string))
582+
}

0 commit comments

Comments
 (0)