Skip to content

Commit 27729cb

Browse files
fix(object): add missing project_id to commands, remove redundant templating
1 parent f6171c7 commit 27729cb

11 files changed

Lines changed: 60 additions & 49 deletions

internal/namespaces/config/testdata/test-config-get-command-profile.cassette.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,34 @@
22
version: 1
33
interactions:
44
- 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"}'
5+
body: '{"access_key":"SCW2RRD4GEWP546QJ71C","secret_key":null,"description":"my-key","created_at":"2026-04-02T14:31:06.008718Z","updated_at":"2026-04-02T14:31:06.008718Z","expires_at":"2026-04-02T15:31:05.899Z","default_project_id":"5ebc0159-7cb7-406c-9521-9347d1987fb2","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.9","user_id":"fe7ad43d-91bc-4206-a4b9-f9d4150eafef"}'
66
form: {}
77
headers:
88
User-Agent:
99
- 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
10+
url: https://api.scaleway.com/iam/v1alpha1/api-keys/SCW2RRD4GEWP546QJ71C
1111
method: GET
1212
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"}'
13+
body: '{"access_key":"SCW2RRD4GEWP546QJ71C","secret_key":null,"description":"my-key","created_at":"2026-04-02T14:31:06.008718Z","updated_at":"2026-04-02T14:31:06.008718Z","expires_at":"2026-04-02T15:31:05.899Z","default_project_id":"5ebc0159-7cb7-406c-9521-9347d1987fb2","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.9","user_id":"fe7ad43d-91bc-4206-a4b9-f9d4150eafef"}'
1414
headers:
1515
Content-Length:
16-
- "392"
16+
- "390"
1717
Content-Security-Policy:
1818
- default-src 'none'; frame-ancestors 'none'
1919
Content-Type:
2020
- application/json
2121
Date:
22-
- Wed, 01 Apr 2026 16:23:40 GMT
22+
- Thu, 02 Apr 2026 14:31:23 GMT
2323
Server:
24-
- Scaleway API Gateway (fr-par-1;edge03)
24+
- Scaleway API Gateway (fr-par-1;edge02)
2525
Strict-Transport-Security:
2626
- max-age=63072000
2727
X-Content-Type-Options:
2828
- nosniff
2929
X-Frame-Options:
3030
- DENY
3131
X-Request-Id:
32-
- 2bc3c93b-9977-401a-8956-ce269d70fa4d
32+
- c6a06de4-d669-4faf-92de-9ae304c7228d
3333
status: 200 OK
3434
code: 200
3535
duration: ""

internal/namespaces/config/testdata/test-config-get-command-simple.cassette.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,34 @@
22
version: 1
33
interactions:
44
- 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"}'
5+
body: '{"access_key":"SCW2RRD4GEWP546QJ71C","secret_key":null,"description":"my-key","created_at":"2026-04-02T14:31:06.008718Z","updated_at":"2026-04-02T14:31:06.008718Z","expires_at":"2026-04-02T15:31:05.899Z","default_project_id":"5ebc0159-7cb7-406c-9521-9347d1987fb2","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.9","user_id":"fe7ad43d-91bc-4206-a4b9-f9d4150eafef"}'
66
form: {}
77
headers:
88
User-Agent:
99
- 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
10+
url: https://api.scaleway.com/iam/v1alpha1/api-keys/SCW2RRD4GEWP546QJ71C
1111
method: GET
1212
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"}'
13+
body: '{"access_key":"SCW2RRD4GEWP546QJ71C","secret_key":null,"description":"my-key","created_at":"2026-04-02T14:31:06.008718Z","updated_at":"2026-04-02T14:31:06.008718Z","expires_at":"2026-04-02T15:31:05.899Z","default_project_id":"5ebc0159-7cb7-406c-9521-9347d1987fb2","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.9","user_id":"fe7ad43d-91bc-4206-a4b9-f9d4150eafef"}'
1414
headers:
1515
Content-Length:
16-
- "392"
16+
- "390"
1717
Content-Security-Policy:
1818
- default-src 'none'; frame-ancestors 'none'
1919
Content-Type:
2020
- application/json
2121
Date:
22-
- Wed, 01 Apr 2026 16:23:40 GMT
22+
- Thu, 02 Apr 2026 14:31:23 GMT
2323
Server:
24-
- Scaleway API Gateway (fr-par-1;edge03)
24+
- Scaleway API Gateway (fr-par-1;edge02)
2525
Strict-Transport-Security:
2626
- max-age=63072000
2727
X-Content-Type-Options:
2828
- nosniff
2929
X-Frame-Options:
3030
- DENY
3131
X-Request-Id:
32-
- fbc4af69-c88d-48f2-bdfb-038b8a995bb0
32+
- 57113c83-37d3-443c-ae55-df2a61401fce
3333
status: 200 OK
3434
code: 200
3535
duration: ""

internal/namespaces/config/testdata/test-config-get-command-telemetry.cassette.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,34 @@
22
version: 1
33
interactions:
44
- 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"}'
5+
body: '{"access_key":"SCW2RRD4GEWP546QJ71C","secret_key":null,"description":"my-key","created_at":"2026-04-02T14:31:06.008718Z","updated_at":"2026-04-02T14:31:06.008718Z","expires_at":"2026-04-02T15:31:05.899Z","default_project_id":"5ebc0159-7cb7-406c-9521-9347d1987fb2","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.9","user_id":"fe7ad43d-91bc-4206-a4b9-f9d4150eafef"}'
66
form: {}
77
headers:
88
User-Agent:
99
- 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
10+
url: https://api.scaleway.com/iam/v1alpha1/api-keys/SCW2RRD4GEWP546QJ71C
1111
method: GET
1212
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"}'
13+
body: '{"access_key":"SCW2RRD4GEWP546QJ71C","secret_key":null,"description":"my-key","created_at":"2026-04-02T14:31:06.008718Z","updated_at":"2026-04-02T14:31:06.008718Z","expires_at":"2026-04-02T15:31:05.899Z","default_project_id":"5ebc0159-7cb7-406c-9521-9347d1987fb2","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.9","user_id":"fe7ad43d-91bc-4206-a4b9-f9d4150eafef"}'
1414
headers:
1515
Content-Length:
16-
- "392"
16+
- "390"
1717
Content-Security-Policy:
1818
- default-src 'none'; frame-ancestors 'none'
1919
Content-Type:
2020
- application/json
2121
Date:
22-
- Wed, 01 Apr 2026 16:23:40 GMT
22+
- Thu, 02 Apr 2026 14:31:23 GMT
2323
Server:
24-
- Scaleway API Gateway (fr-par-1;edge03)
24+
- Scaleway API Gateway (fr-par-1;edge02)
2525
Strict-Transport-Security:
2626
- max-age=63072000
2727
X-Content-Type-Options:
2828
- nosniff
2929
X-Frame-Options:
3030
- DENY
3131
X-Request-Id:
32-
- a078ccce-9ee3-4be5-9b01-3c6d1611e622
32+
- 37aaafb3-027a-4deb-9fce-52f668750686
3333
status: 200 OK
3434
code: 200
3535
duration: ""

internal/namespaces/config/testdata/test-config-get-command-unknown-profile.cassette.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,34 @@
22
version: 1
33
interactions:
44
- 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"}'
5+
body: '{"access_key":"SCW2RRD4GEWP546QJ71C","secret_key":null,"description":"my-key","created_at":"2026-04-02T14:31:06.008718Z","updated_at":"2026-04-02T14:31:06.008718Z","expires_at":"2026-04-02T15:31:05.899Z","default_project_id":"5ebc0159-7cb7-406c-9521-9347d1987fb2","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.9","user_id":"fe7ad43d-91bc-4206-a4b9-f9d4150eafef"}'
66
form: {}
77
headers:
88
User-Agent:
99
- 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
10+
url: https://api.scaleway.com/iam/v1alpha1/api-keys/SCW2RRD4GEWP546QJ71C
1111
method: GET
1212
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"}'
13+
body: '{"access_key":"SCW2RRD4GEWP546QJ71C","secret_key":null,"description":"my-key","created_at":"2026-04-02T14:31:06.008718Z","updated_at":"2026-04-02T14:31:06.008718Z","expires_at":"2026-04-02T15:31:05.899Z","default_project_id":"5ebc0159-7cb7-406c-9521-9347d1987fb2","editable":true,"deletable":true,"managed":false,"creation_ip":"51.159.73.9","user_id":"fe7ad43d-91bc-4206-a4b9-f9d4150eafef"}'
1414
headers:
1515
Content-Length:
16-
- "392"
16+
- "390"
1717
Content-Security-Policy:
1818
- default-src 'none'; frame-ancestors 'none'
1919
Content-Type:
2020
- application/json
2121
Date:
22-
- Wed, 01 Apr 2026 16:23:40 GMT
22+
- Thu, 02 Apr 2026 14:31:23 GMT
2323
Server:
24-
- Scaleway API Gateway (fr-par-1;edge03)
24+
- Scaleway API Gateway (fr-par-1;edge02)
2525
Strict-Transport-Security:
2626
- max-age=63072000
2727
X-Content-Type-Options:
2828
- nosniff
2929
X-Frame-Options:
3030
- DENY
3131
X-Request-Id:
32-
- 41edb901-cf0a-441c-a1ac-b8802c0c0fb7
32+
- 6a824b28-e70e-4df3-a171-2b264bc8c9d7
3333
status: 200 OK
3434
code: 200
3535
duration: ""

internal/namespaces/object/v1/custom_config_get.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ import (
1212

1313
func configGetCommand() *core.Command {
1414
type getArgs struct {
15-
Region scw.Region
16-
Type s3tool
17-
Name string
15+
Region scw.Region
16+
Type s3tool
17+
Name string
18+
ProjectID string
1819
}
1920

2021
return &core.Command{
@@ -68,7 +69,7 @@ func configGetCommand() *core.Command {
6869
Run: func(ctx context.Context, argsI any) (any, error) {
6970
args := argsI.(*getArgs)
7071

71-
config, err := newS3Config(ctx, args.Region, args.Name)
72+
config, err := newS3Config(ctx, args.Region, args.Name, args.ProjectID)
7273
if err != nil {
7374
return "", err
7475
}

internal/namespaces/object/v1/custom_config_install.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ import (
1616

1717
func configInstallCommand() *core.Command {
1818
type installArgs struct {
19-
Region scw.Region
20-
Type s3tool
21-
Name string
19+
Region scw.Region
20+
Type s3tool
21+
Name string
22+
ProjectID string
2223
}
2324

2425
return &core.Command{
@@ -73,7 +74,7 @@ func configInstallCommand() *core.Command {
7374
Run: func(ctx context.Context, argsI any) (any, error) {
7475
args := argsI.(*installArgs)
7576

76-
config, err := newS3Config(ctx, args.Region, args.Name)
77+
config, err := newS3Config(ctx, args.Region, args.Name, args.ProjectID)
7778
if err != nil {
7879
return "", err
7980
}

internal/namespaces/object/v1/s3configfile.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ type = s3
7272
provider = Scaleway
7373
env_auth = false
7474
endpoint = s3.{{ .Region }}.scw.cloud
75-
access_key_id = {{ .AccessKey }}@{{ .ProjectID }}
75+
access_key_id = {{ .AccessKey }}
7676
secret_access_key = {{ .SecretKey }}
7777
region = {{ .Region }}
7878
location_constraint =
@@ -82,7 +82,12 @@ server_side_encryption =
8282
storage_class =
8383
`
8484

85-
func newS3Config(ctx context.Context, region scw.Region, name string) (s3config, error) {
85+
func newS3Config(
86+
ctx context.Context,
87+
region scw.Region,
88+
name string,
89+
projectID string,
90+
) (s3config, error) {
8691
client := core.ExtractClient(ctx)
8792
accessKey, accessExists := client.GetAccessKey()
8893
if !accessExists {
@@ -94,9 +99,12 @@ func newS3Config(ctx context.Context, region scw.Region, name string) (s3config,
9499
return s3config{}, errors.New("no secret key found")
95100
}
96101

97-
projectID, exists := client.GetDefaultProjectID()
102+
// Use provided projectID if available, otherwise fall back to client's default project ID
103+
if projectID == "" {
104+
projectID, _ = client.GetDefaultProjectID()
105+
}
98106

99-
if exists {
107+
if projectID != "" {
100108
accessKey += "@" + projectID
101109
}
102110

@@ -106,6 +114,7 @@ func newS3Config(ctx context.Context, region scw.Region, name string) (s3config,
106114
Region: region,
107115
Name: name,
108116
ctx: ctx,
117+
ProjectID: projectID,
109118
}
110119

111120
return config, nil
@@ -163,7 +172,7 @@ func (c s3config) getConfigFile(tool s3tool) (core.RawResult, error) {
163172
Hosts: map[string]hostconfig{
164173
c.Name: {
165174
URL: "https://s3." + c.Region.String() + ".scw.cloud",
166-
AccessKey: c.AccessKey + "@" + c.ProjectID,
175+
AccessKey: c.AccessKey,
167176
SecretKey: c.SecretKey,
168177
API: "S3v4",
169178
},
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":""}}}

0 commit comments

Comments
 (0)