Skip to content

Commit 29114d2

Browse files
CodelaxMonitob
andauthored
fix(secret_version): data source get region from secret_id (#2121)
Co-authored-by: jaime Bernabe <[email protected]>
1 parent 951c279 commit 29114d2

File tree

3 files changed

+36
-2
lines changed

3 files changed

+36
-2
lines changed

scaleway/data_source_secret_version.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,15 @@ func dataSourceScalewaySecretVersion() *schema.Resource {
4444
}
4545

4646
func datasourceSchemaFromResourceVersionSchema(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
47-
api, region, err := secretAPIWithRegion(d, meta)
47+
secretID, existSecretID := d.GetOk("secret_id")
48+
api, region, err := secretAPIWithRegionAndDefault(d, meta, expandRegionalID(secretID).Region)
4849
if err != nil {
4950
return diag.FromErr(err)
5051
}
5152

5253
var secretVersionIDStr string
5354
var payloadSecretRaw []byte
5455

55-
secretID, existSecretID := d.GetOk("secret_id")
5656
if !existSecretID {
5757
request := &secret.AccessSecretVersionByNameRequest{
5858
Region: region,

scaleway/helpers.go

+22
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,28 @@ func extractRegion(d terraformResourceData, meta *Meta) (scw.Region, error) {
249249
return "", ErrRegionNotFound
250250
}
251251

252+
// extractRegion will try to guess the region from the following:
253+
// - region field of the resource data
254+
// - default region given in argument
255+
// - default region from config
256+
func extractRegionWithDefault(d terraformResourceData, meta *Meta, defaultRegion scw.Region) (scw.Region, error) {
257+
rawRegion, exist := d.GetOk("region")
258+
if exist {
259+
return scw.ParseRegion(rawRegion.(string))
260+
}
261+
262+
if defaultRegion != "" {
263+
return defaultRegion, nil
264+
}
265+
266+
region, exist := meta.scwClient.GetDefaultRegion()
267+
if exist {
268+
return region, nil
269+
}
270+
271+
return "", ErrRegionNotFound
272+
}
273+
252274
// ErrProjectIDNotFound is returned when no region can be detected
253275
var ErrProjectIDNotFound = fmt.Errorf("could not detect project id")
254276

scaleway/helpers_secret.go

+12
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@ func secretAPIWithRegion(d *schema.ResourceData, m interface{}) (*secret.API, sc
2525
return api, region, nil
2626
}
2727

28+
// secretAPIWithRegionAndDefault returns a new Secret API and the region for a Create request
29+
func secretAPIWithRegionAndDefault(d *schema.ResourceData, m interface{}, defaultRegion scw.Region) (*secret.API, scw.Region, error) {
30+
meta := m.(*Meta)
31+
api := secret.NewAPI(meta.scwClient)
32+
33+
region, err := extractRegionWithDefault(d, meta, defaultRegion)
34+
if err != nil {
35+
return nil, "", err
36+
}
37+
return api, region, nil
38+
}
39+
2840
// secretAPIWithRegionAndProjectID returns a new Secret API, with region and projectID
2941
func secretAPIWithRegionAndProjectID(d *schema.ResourceData, m interface{}) (*secret.API, scw.Region, string, error) {
3042
meta := m.(*Meta)

0 commit comments

Comments
 (0)