Skip to content

Commit 5b6feda

Browse files
fix(object): keep project_id optional
1 parent c8b3330 commit 5b6feda

10 files changed

Lines changed: 152 additions & 13 deletions

cmd/scw/testdata/test-all-usage-object-config-get-usage.golden

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ EXAMPLES:
1818
ARGS:
1919
type Type of S3 tool you want to generate a config for (rclone | s3cmd | mc)
2020
[name=scaleway] Name of the s3 remote you want to generate
21+
[project-id] Scaleway project ID to use with IAM Access Key syntax
2122
[region=fr-par] Region to target. If none is passed will use default region from the config (fr-par | nl-ams)
2223

2324
FLAGS:
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
version: 1
3+
interactions:
4+
- request:
5+
body: '{"access_key":"SCWW672KA1GMSPSVFRFN","secret_key":null,"description":"my-key","created_at":"2026-04-01T16:22:34.237139Z","updated_at":"2026-04-01T16:22:34.237139Z","expires_at":"2026-04-01T17:22:34.084Z","default_project_id":"986b6f8e-795e-4de3-8a2a-a4170d8ed258","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.145","user_id":"0b8cc93b-dfd2-4427-b674-8d27affb0334"}'
6+
form: {}
7+
headers:
8+
User-Agent:
9+
- scaleway-sdk-go/v1.0.0-beta.7+dev (go1.26.1; linux; amd64) cli-e2e-test
10+
url: https://api.scaleway.com/iam/v1alpha1/api-keys/SCWW672KA1GMSPSVFRFN
11+
method: GET
12+
response:
13+
body: '{"access_key":"SCWW672KA1GMSPSVFRFN","secret_key":null,"description":"my-key","created_at":"2026-04-01T16:22:34.237139Z","updated_at":"2026-04-01T16:22:34.237139Z","expires_at":"2026-04-01T17:22:34.084Z","default_project_id":"986b6f8e-795e-4de3-8a2a-a4170d8ed258","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.145","user_id":"0b8cc93b-dfd2-4427-b674-8d27affb0334"}'
14+
headers:
15+
Content-Length:
16+
- "392"
17+
Content-Security-Policy:
18+
- default-src 'none'; frame-ancestors 'none'
19+
Content-Type:
20+
- application/json
21+
Date:
22+
- Wed, 01 Apr 2026 16:23:40 GMT
23+
Server:
24+
- Scaleway API Gateway (fr-par-1;edge03)
25+
Strict-Transport-Security:
26+
- max-age=63072000
27+
X-Content-Type-Options:
28+
- nosniff
29+
X-Frame-Options:
30+
- DENY
31+
X-Request-Id:
32+
- 2bc3c93b-9977-401a-8956-ce269d70fa4d
33+
status: 200 OK
34+
code: 200
35+
duration: ""
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
version: 1
3+
interactions:
4+
- request:
5+
body: '{"access_key":"SCWW672KA1GMSPSVFRFN","secret_key":null,"description":"my-key","created_at":"2026-04-01T16:22:34.237139Z","updated_at":"2026-04-01T16:22:34.237139Z","expires_at":"2026-04-01T17:22:34.084Z","default_project_id":"986b6f8e-795e-4de3-8a2a-a4170d8ed258","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.145","user_id":"0b8cc93b-dfd2-4427-b674-8d27affb0334"}'
6+
form: {}
7+
headers:
8+
User-Agent:
9+
- scaleway-sdk-go/v1.0.0-beta.7+dev (go1.26.1; linux; amd64) cli-e2e-test
10+
url: https://api.scaleway.com/iam/v1alpha1/api-keys/SCWW672KA1GMSPSVFRFN
11+
method: GET
12+
response:
13+
body: '{"access_key":"SCWW672KA1GMSPSVFRFN","secret_key":null,"description":"my-key","created_at":"2026-04-01T16:22:34.237139Z","updated_at":"2026-04-01T16:22:34.237139Z","expires_at":"2026-04-01T17:22:34.084Z","default_project_id":"986b6f8e-795e-4de3-8a2a-a4170d8ed258","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.145","user_id":"0b8cc93b-dfd2-4427-b674-8d27affb0334"}'
14+
headers:
15+
Content-Length:
16+
- "392"
17+
Content-Security-Policy:
18+
- default-src 'none'; frame-ancestors 'none'
19+
Content-Type:
20+
- application/json
21+
Date:
22+
- Wed, 01 Apr 2026 16:23:40 GMT
23+
Server:
24+
- Scaleway API Gateway (fr-par-1;edge03)
25+
Strict-Transport-Security:
26+
- max-age=63072000
27+
X-Content-Type-Options:
28+
- nosniff
29+
X-Frame-Options:
30+
- DENY
31+
X-Request-Id:
32+
- fbc4af69-c88d-48f2-bdfb-038b8a995bb0
33+
status: 200 OK
34+
code: 200
35+
duration: ""
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
version: 1
3+
interactions:
4+
- request:
5+
body: '{"access_key":"SCWW672KA1GMSPSVFRFN","secret_key":null,"description":"my-key","created_at":"2026-04-01T16:22:34.237139Z","updated_at":"2026-04-01T16:22:34.237139Z","expires_at":"2026-04-01T17:22:34.084Z","default_project_id":"986b6f8e-795e-4de3-8a2a-a4170d8ed258","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.145","user_id":"0b8cc93b-dfd2-4427-b674-8d27affb0334"}'
6+
form: {}
7+
headers:
8+
User-Agent:
9+
- scaleway-sdk-go/v1.0.0-beta.7+dev (go1.26.1; linux; amd64) cli-e2e-test
10+
url: https://api.scaleway.com/iam/v1alpha1/api-keys/SCWW672KA1GMSPSVFRFN
11+
method: GET
12+
response:
13+
body: '{"access_key":"SCWW672KA1GMSPSVFRFN","secret_key":null,"description":"my-key","created_at":"2026-04-01T16:22:34.237139Z","updated_at":"2026-04-01T16:22:34.237139Z","expires_at":"2026-04-01T17:22:34.084Z","default_project_id":"986b6f8e-795e-4de3-8a2a-a4170d8ed258","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.145","user_id":"0b8cc93b-dfd2-4427-b674-8d27affb0334"}'
14+
headers:
15+
Content-Length:
16+
- "392"
17+
Content-Security-Policy:
18+
- default-src 'none'; frame-ancestors 'none'
19+
Content-Type:
20+
- application/json
21+
Date:
22+
- Wed, 01 Apr 2026 16:23:40 GMT
23+
Server:
24+
- Scaleway API Gateway (fr-par-1;edge03)
25+
Strict-Transport-Security:
26+
- max-age=63072000
27+
X-Content-Type-Options:
28+
- nosniff
29+
X-Frame-Options:
30+
- DENY
31+
X-Request-Id:
32+
- a078ccce-9ee3-4be5-9b01-3c6d1611e622
33+
status: 200 OK
34+
code: 200
35+
duration: ""
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
version: 1
3+
interactions:
4+
- request:
5+
body: '{"access_key":"SCWW672KA1GMSPSVFRFN","secret_key":null,"description":"my-key","created_at":"2026-04-01T16:22:34.237139Z","updated_at":"2026-04-01T16:22:34.237139Z","expires_at":"2026-04-01T17:22:34.084Z","default_project_id":"986b6f8e-795e-4de3-8a2a-a4170d8ed258","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.145","user_id":"0b8cc93b-dfd2-4427-b674-8d27affb0334"}'
6+
form: {}
7+
headers:
8+
User-Agent:
9+
- scaleway-sdk-go/v1.0.0-beta.7+dev (go1.26.1; linux; amd64) cli-e2e-test
10+
url: https://api.scaleway.com/iam/v1alpha1/api-keys/SCWW672KA1GMSPSVFRFN
11+
method: GET
12+
response:
13+
body: '{"access_key":"SCWW672KA1GMSPSVFRFN","secret_key":null,"description":"my-key","created_at":"2026-04-01T16:22:34.237139Z","updated_at":"2026-04-01T16:22:34.237139Z","expires_at":"2026-04-01T17:22:34.084Z","default_project_id":"986b6f8e-795e-4de3-8a2a-a4170d8ed258","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.145","user_id":"0b8cc93b-dfd2-4427-b674-8d27affb0334"}'
14+
headers:
15+
Content-Length:
16+
- "392"
17+
Content-Security-Policy:
18+
- default-src 'none'; frame-ancestors 'none'
19+
Content-Type:
20+
- application/json
21+
Date:
22+
- Wed, 01 Apr 2026 16:23:40 GMT
23+
Server:
24+
- Scaleway API Gateway (fr-par-1;edge03)
25+
Strict-Transport-Security:
26+
- max-age=63072000
27+
X-Content-Type-Options:
28+
- nosniff
29+
X-Frame-Options:
30+
- DENY
31+
X-Request-Id:
32+
- 41edb901-cf0a-441c-a1ac-b8802c0c0fb7
33+
status: 200 OK
34+
code: 200
35+
duration: ""

internal/namespaces/object/v1/s3configfile.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,11 @@ func newS3Config(ctx context.Context, region scw.Region, name string) (s3config,
9595
}
9696

9797
projectID, exists := client.GetDefaultProjectID()
98-
if !exists {
99-
return s3config{}, errors.New("no project ID found")
98+
99+
if exists {
100+
accessKey += "@" + projectID
100101
}
101102

102-
if projectID != "" {
103-
accessKey+="@"+projectID
104-
}
105103
config := s3config{
106104
AccessKey: accessKey,
107105
SecretKey: secretKey,
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
🎲🎲🎲 EXIT CODE: 0 🎲🎲🎲
22
🟩🟩🟩 STDOUT️ 🟩🟩🟩️
3-
{"version":"9","hosts":{"scaleway":{"url":"https://s3.fr-par.scw.cloud","accessKey":"SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111","secretKey":"11111111-1111-1111-1111-111111111111","api":"S3v4","projectID":""}}}
3+
{"version":"9","hosts":{"scaleway":{"url":"https://s3.fr-par.scw.cloud","accessKey":"SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111@","secretKey":"11111111-1111-1111-1111-111111111111","api":"S3v4","projectID":""}}}
44
🟩🟩🟩 JSON STDOUT 🟩🟩🟩
5-
{"version":"9","hosts":{"scaleway":{"url":"https://s3.fr-par.scw.cloud","accessKey":"SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111","secretKey":"11111111-1111-1111-1111-111111111111","api":"S3v4","projectID":""}}}
5+
{"version":"9","hosts":{"scaleway":{"url":"https://s3.fr-par.scw.cloud","accessKey":"SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111@","secretKey":"11111111-1111-1111-1111-111111111111","api":"S3v4","projectID":""}}}

internal/namespaces/object/v1/testdata/test-config-get-default-rclone.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ type = s3
88
provider = Scaleway
99
env_auth = false
1010
endpoint = s3.fr-par.scw.cloud
11-
access_key_id = SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111
11+
access_key_id = SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111@
1212
secret_access_key = 11111111-1111-1111-1111-111111111111
1313
region = fr-par
1414
location_constraint =
@@ -25,7 +25,7 @@ type = s3
2525
provider = Scaleway
2626
env_auth = false
2727
endpoint = s3.fr-par.scw.cloud
28-
access_key_id = SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111
28+
access_key_id = SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111@
2929
secret_access_key = 11111111-1111-1111-1111-111111111111
3030
region = fr-par
3131
location_constraint =
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
🎲🎲🎲 EXIT CODE: 0 🎲🎲🎲
22
🟩🟩🟩 STDOUT️ 🟩🟩🟩️
3-
{"version":"9","hosts":{"scaleway":{"url":"https://s3.nl-ams.scw.cloud","accessKey":"SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111","secretKey":"11111111-1111-1111-1111-111111111111","api":"S3v4","projectID":""}}}
3+
{"version":"9","hosts":{"scaleway":{"url":"https://s3.nl-ams.scw.cloud","accessKey":"SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111@","secretKey":"11111111-1111-1111-1111-111111111111","api":"S3v4","projectID":""}}}
44
🟩🟩🟩 JSON STDOUT 🟩🟩🟩
5-
{"version":"9","hosts":{"scaleway":{"url":"https://s3.nl-ams.scw.cloud","accessKey":"SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111","secretKey":"11111111-1111-1111-1111-111111111111","api":"S3v4","projectID":""}}}
5+
{"version":"9","hosts":{"scaleway":{"url":"https://s3.nl-ams.scw.cloud","accessKey":"SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111@","secretKey":"11111111-1111-1111-1111-111111111111","api":"S3v4","projectID":""}}}

internal/namespaces/object/v1/testdata/test-config-get-with-region-rclone.golden

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ type = s3
88
provider = Scaleway
99
env_auth = false
1010
endpoint = s3.nl-ams.scw.cloud
11-
access_key_id = SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111
11+
access_key_id = SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111@
1212
secret_access_key = 11111111-1111-1111-1111-111111111111
1313
region = nl-ams
1414
location_constraint =
@@ -25,7 +25,7 @@ type = s3
2525
provider = Scaleway
2626
env_auth = false
2727
endpoint = s3.nl-ams.scw.cloud
28-
access_key_id = SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111
28+
access_key_id = SCWXXXXXXXXXXXXXXXXX@11111111-1111-1111-1111-111111111111@
2929
secret_access_key = 11111111-1111-1111-1111-111111111111
3030
region = nl-ams
3131
location_constraint =

0 commit comments

Comments
 (0)