Skip to content

Commit a968a21

Browse files
fix: arguments handling
1 parent 8ee2168 commit a968a21

File tree

6 files changed

+561
-812
lines changed

6 files changed

+561
-812
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: 1 addition & 14 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"
@@ -105,21 +104,11 @@ func TestAccDataSourceEvent_Basic(t *testing.T) {
105104
status = 200
106105
}
107106
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-
118107
data "scaleway_audit_trail_event" "order_by" {
119108
project_id = scaleway_secret.main.project_id
120109
order_by = "recorded_at_asc"
121110
}
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)),
111+
`, secretName, project.ID, resourceType, productName, serviceName, methodCreate),
123112
Check: resource.ComposeTestCheckFunc(
124113
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_project", orgID),
125114
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_type", orgID),
@@ -131,8 +120,6 @@ func TestAccDataSourceEvent_Basic(t *testing.T) {
131120
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_principal", orgID),
132121
createEventDataSourceChecks("data.scaleway_audit_trail_event.by_ip", orgID),
133122
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"),
136123
resource.TestCheckResourceAttrSet("data.scaleway_audit_trail_event.order_by", "events.#"),
137124
),
138125
},

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
}

0 commit comments

Comments
 (0)