Skip to content

Commit 875627d

Browse files
fix: orgID handling
1 parent 8ee2168 commit 875627d

File tree

7 files changed

+582
-798
lines changed

7 files changed

+582
-798
lines changed

internal/meta/errors.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,3 @@ import "errors"
44

55
// ErrProjectIDNotFound is returned when no project ID can be detected
66
var ErrProjectIDNotFound = errors.New("could not detect project id")
7-
8-
// ErrOrganizationIDNotFound is returned when no organization ID can be detected
9-
var ErrOrganizationIDNotFound = errors.New("could not detect organization id")

internal/meta/extractors.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -116,24 +116,6 @@ func ExtractProjectID(d terraformResourceData, m any) (projectID string, isDefau
116116
return "", false, ErrProjectIDNotFound
117117
}
118118

119-
// ExtractOrganizationID will try to guess the organization id from the following:
120-
// - organization_id field of the resource data
121-
// - default organization_id from config
122-
func ExtractOrganizationID(d terraformResourceData, m any) (organizationID string, err error) {
123-
rawOrgID, exist := d.GetOk("organization_id")
124-
125-
if exist {
126-
return rawOrgID.(string), nil
127-
}
128-
129-
defaultOrgID, defaultOrgIDExists := m.(*Meta).ScwClient().GetDefaultOrganizationID()
130-
if defaultOrgIDExists {
131-
return defaultOrgID, nil
132-
}
133-
134-
return "", ErrOrganizationIDNotFound
135-
}
136-
137119
func ExtractScwClient(m any) *scw.Client {
138120
return m.(*Meta).ScwClient()
139121
}

internal/services/audittrail/event_data_source.go

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/scaleway/scaleway-sdk-go/scw"
1414
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality"
1515
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
16+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account"
1617
"github.com/scaleway/terraform-provider-scaleway/v2/internal/types"
1718
"github.com/scaleway/terraform-provider-scaleway/v2/internal/verify"
1819
)
@@ -25,6 +26,7 @@ func DataSourceEvent() *schema.Resource {
2526
Type: schema.TypeString,
2627
Description: "ID of the organization containing the Audit Trail events.",
2728
Optional: true,
29+
Computed: true,
2830
ValidateDiagFunc: verify.IsUUID(),
2931
},
3032
"region": regional.Schema(),
@@ -88,14 +90,16 @@ func DataSourceEvent() *schema.Resource {
8890
Optional: true,
8991
},
9092
"recorded_after": {
91-
Type: schema.TypeString,
92-
Description: "The `recorded_after` parameter defines the earliest timestamp from which Audit Trail events are retrieved. Returns `one hour ago` by default (Format ISO 8601)",
93-
Optional: true,
93+
Type: schema.TypeString,
94+
Description: "The `recorded_after` parameter defines the earliest timestamp from which Audit Trail events are retrieved. Returns `one hour ago` by default (Format ISO 8601)",
95+
Optional: true,
96+
ValidateDiagFunc: verify.IsDate(),
9497
},
9598
"recorded_before": {
96-
Type: schema.TypeString,
97-
Description: "The `recorded_before` parameter defines the latest timestamp up to which Audit Trail events are retrieved. Must be later than recorded_after. Returns `now` by default (Format ISO 8601)",
98-
Optional: true,
99+
Type: schema.TypeString,
100+
Description: "The `recorded_before` parameter defines the latest timestamp up to which Audit Trail events are retrieved. Must be later than recorded_after. Returns `now` by default (Format ISO 8601)",
101+
Optional: true,
102+
ValidateDiagFunc: verify.IsDate(),
99103
},
100104
"order_by": {
101105
Type: schema.TypeString,
@@ -214,13 +218,13 @@ func DataSourceEvent() *schema.Resource {
214218
}
215219

216220
func DataSourceEventsRead(ctx context.Context, d *schema.ResourceData, m any) diag.Diagnostics {
217-
auditTrailAPI, region, orgID, err := newAPIWithRegionAndOrgID(d, m)
221+
auditTrailAPI, region, err := newAPIWithRegion(d, m)
218222
if err != nil {
219223
return diag.FromErr(err)
220224
}
221225

222226
req := audittrailSDK.ListEventsRequest{
223-
OrganizationID: orgID,
227+
OrganizationID: types.FlattenStringPtr(account.GetOrganizationID(m, d)).(string),
224228
Region: region,
225229
}
226230

@@ -235,7 +239,6 @@ func DataSourceEventsRead(ctx context.Context, d *schema.ResourceData, m any) di
235239
}
236240

237241
d.SetId(uuid.New().String())
238-
_ = d.Set("organization_id", orgID)
239242
_ = d.Set("region", region)
240243

241244
flattenedEvents, err := flattenEvents(res.Events)
@@ -286,11 +289,11 @@ func readOptionalData(d *schema.ResourceData, req *audittrailSDK.ListEventsReque
286289
}
287290

288291
if recordedBefore, ok := d.GetOk("recorded_before"); ok {
289-
req.RecordedBefore = types.ExpandTimePtr(recordedBefore)
292+
req.RecordedBefore = types.ExpandTimePtr(recordedBefore.(string))
290293
}
291294

292295
if recordedAfter, ok := d.GetOk("recorded_after"); ok {
293-
req.RecordedAfter = types.ExpandTimePtr(recordedAfter)
296+
req.RecordedAfter = types.ExpandTimePtr(recordedAfter.(string))
294297
}
295298

296299
if orderBy, ok := d.GetOk("order_by"); ok {

internal/services/audittrail/event_data_source_test.go

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package audittrail_test
33
import (
44
"fmt"
55
"testing"
6-
"time"
76

87
"github.com/google/uuid"
98
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
@@ -19,11 +18,6 @@ func TestAccDataSourceEvent_Basic(t *testing.T) {
1918

2019
ctx := t.Context()
2120

22-
orgID, orgIDExists := tt.Meta.ScwClient().GetDefaultOrganizationID()
23-
if !orgIDExists {
24-
orgID = dummyOrgID
25-
}
26-
2721
auditTrailAPI := audit_trail.NewAPI(tt.Meta.ScwClient())
2822

2923
project, iamAPIKey, _, terminateFakeSideProject, err := acctest.CreateFakeIAMManager(tt)
@@ -105,34 +99,22 @@ func TestAccDataSourceEvent_Basic(t *testing.T) {
10599
status = 200
106100
}
107101
108-
data "scaleway_audit_trail_event" "recorded_after" {
109-
project_id = scaleway_secret.main.project_id
110-
recorded_after = "%s"
111-
}
112-
113-
data "scaleway_audit_trail_event" "recorded_before" {
114-
project_id = scaleway_secret.main.project_id
115-
recorded_before = "%s"
116-
}
117-
118102
data "scaleway_audit_trail_event" "order_by" {
119103
project_id = scaleway_secret.main.project_id
120104
order_by = "recorded_at_asc"
121105
}
122-
`, secretName, project.ID, resourceType, productName, serviceName, methodCreate, time.Now().Add(-time.Minute*10).Format(time.RFC3339), time.Now().Add(-time.Minute*30).Format(time.RFC3339)),
106+
`, secretName, project.ID, resourceType, productName, serviceName, methodCreate),
123107
Check: resource.ComposeTestCheckFunc(
124-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_project", orgID),
125-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_type", orgID),
126-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_id", orgID),
127-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_id_with_locality", orgID),
128-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_product", orgID),
129-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_service", orgID),
130-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_method", orgID),
131-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_principal", orgID),
132-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_ip", orgID),
133-
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_status", orgID),
134-
createEventDataSourceChecks("data.scaleway_audit_trail_event.recorded_after", orgID),
135-
resource.TestCheckResourceAttr("data.scaleway_audit_trail_event.recorded_before", "events.#", "0"),
108+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_project"),
109+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_type"),
110+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_id"),
111+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_id_with_locality"),
112+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_product"),
113+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_service"),
114+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_method"),
115+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_principal"),
116+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_ip"),
117+
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_status"),
136118
resource.TestCheckResourceAttrSet("data.scaleway_audit_trail_event.order_by", "events.#"),
137119
),
138120
},

internal/services/audittrail/helpers.go

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,17 @@ import (
1111
)
1212

1313
// newAPIWithRegionAndProjectID returns a new Audit Trail API, with region and projectID
14-
func newAPIWithRegionAndOrgID(d *schema.ResourceData, m any) (*audittrailSDK.API, scw.Region, string, error) {
14+
func newAPIWithRegion(d *schema.ResourceData, m any) (*audittrailSDK.API, scw.Region, error) {
1515
api := audittrailSDK.NewAPI(meta.ExtractScwClient(m))
1616

1717
region, err := meta.ExtractRegion(d, m)
1818
if err != nil {
19-
return nil, "", "", err
19+
return nil, "", err
2020
}
2121
// In audit trail sdk-go so far only fr-par and nl-ams are supported
2222
if !slices.Contains(api.Regions(), region) {
23-
return nil, "", "", fmt.Errorf("invalid api region, expected one of %s, got: %s", api.Regions(), region)
23+
return nil, "", fmt.Errorf("invalid api region, expected one of %s, got: %s", api.Regions(), region)
2424
}
2525

26-
orgID, err := meta.ExtractOrganizationID(d, m)
27-
if err != nil {
28-
return nil, "", "", err
29-
}
30-
31-
return api, region, orgID, nil
26+
return api, region, nil
3227
}

internal/services/audittrail/helpers_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,13 @@ func waitForAuditTrailEvents(t *testing.T, ctx context.Context, api *audit_trail
6464
}
6565

6666
// Bundle of checks for audit trail event data source testing
67-
func createEventDataSourceChecks(eventsDataSourceName, orgID string) resource.TestCheckFunc {
67+
func createEventDataSourceChecks(eventsDataSourceName string) resource.TestCheckFunc {
6868
return resource.ComposeTestCheckFunc(
6969
resource.TestCheckResourceAttrPair(
7070
eventsDataSourceName, "events.0.locality",
7171
resourceName, "region",
7272
),
7373
resource.TestCheckResourceAttrSet(eventsDataSourceName, "events.0.principal_id"),
74-
resource.TestCheckResourceAttr(
75-
eventsDataSourceName, "events.0.organization_id", orgID,
76-
),
7774
resource.TestCheckResourceAttrSet(eventsDataSourceName, "events.0.source_ip"),
7875
resource.TestCheckResourceAttrSet(eventsDataSourceName, "events.0.user_agent"),
7976
resource.TestCheckResourceAttr(

0 commit comments

Comments
 (0)