Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
a8493a4
feat: add Scaleway BYOC provider foundation
raphaeltm May 8, 2026
4cfbec0
feat(scaleway): add Scaleway cloud SDK wrappers
raphaeltm May 8, 2026
78d617f
feat(scaleway): implement core BYOC methods
raphaeltm May 8, 2026
9343ded
feat(scaleway): implement log streaming, events, and domain delegation
raphaeltm May 8, 2026
d34a309
feat(scaleway): fix CD entry point and add deployment work log
raphaeltm May 9, 2026
0b619d9
fix(scaleway): convert S3 URLs to s3:// format for Kaniko build contexts
raphaeltm May 9, 2026
f4af7d6
fix(scaleway): add S3_ENDPOINT to CD env and fix secret name format
raphaeltm May 9, 2026
659b33e
docs: update Scaleway deploy log with blocker 10 fix
raphaeltm May 9, 2026
9f0866b
docs: update Scaleway deploy log with session 5 progress
raphaeltm May 9, 2026
b0cc200
fix(scaleway): handle empty CDImage and duplicate secret names
raphaeltm May 9, 2026
1a20528
fix(scaleway): pass CD command via job run command override
raphaeltm May 9, 2026
3e20186
docs: update Scaleway deploy log with session 7 - fixed Kaniko adduse…
raphaeltm May 10, 2026
4c924ad
docs: full Scaleway deployment cycle verified end-to-end
raphaeltm May 10, 2026
8488765
feat(scaleway): add LLM/Managed Inference support via LiteLLM
raphaeltm May 10, 2026
f9e0259
feat(scaleway): deploy LLM chat sample directly to Scaleway API
raphaeltm May 10, 2026
1d388dc
docs: update Scaleway deploy log with LLM chat deployment results
raphaeltm May 10, 2026
1c6b75d
feat(scaleway): handle model services and REDIS_PASSWORD for Scaleway
raphaeltm May 10, 2026
a64015d
docs(scaleway): update deploy log with resolved build and LLM approach
raphaeltm May 10, 2026
671df54
chore(scaleway): remove internal work log and sample directory
raphaeltm May 11, 2026
1f14aea
fix(scaleway): retrieve existing job definition ID on conflict in Set…
raphaeltm May 11, 2026
0ab47a4
fix(scaleway): implement client-side prefix filtering in ListSecrets
raphaeltm May 11, 2026
9fc121f
refactor(scaleway): add TODO for wireScalewayDependentServices dedupl…
raphaeltm May 11, 2026
0d1044c
fix(scaleway): gate convertScalewayS3URL behind provider URL check
raphaeltm May 11, 2026
0aa6509
fix(scaleway): revert cosmetic alignment changes to GCP constants
raphaeltm May 11, 2026
fb1994f
Merge branch 'main' into feat/scaleway-byoc
raphaeltm May 11, 2026
1a73796
feat(scaleway): use job secret references
raphaeltm May 11, 2026
5609cef
fix(scaleway): stabilize cd jobs and logs
raphaeltm May 11, 2026
57a26eb
fix(scaleway): finish provider surface integration
raphaeltm May 11, 2026
f694398
fix(scaleway): update generated provider proto
raphaeltm May 11, 2026
8544c2d
test(scaleway): cover cd client flows
raphaeltm May 11, 2026
3bdc22b
docs(scaleway): add deployment validation screenshots
raphaeltm May 11, 2026
69239be
test(scaleway): add log smoke sample
raphaeltm May 11, 2026
e727f3c
test(scaleway): check in log smoke ignore files
raphaeltm May 11, 2026
b06422d
fix(scaleway): parse cockpit log payloads
raphaeltm May 11, 2026
160f435
fix(scaleway): make log smoke validation image based
raphaeltm May 11, 2026
bab4b1d
fix(scaleway): skip metadata-only log payloads
raphaeltm May 11, 2026
62d05ae
fix(scaleway): query runtime logs by container resource
raphaeltm May 11, 2026
c96d540
fix(scaleway): tolerate cockpit token delete races
raphaeltm May 11, 2026
07f5dcd
feat: make config set --random provider-dependent
raphaeltm May 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/cmd/cli/command/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ var configSetCmd = &cobra.Command{
// 1c. Handle --random flag: generate random values for specified configs
envMap = make(map[string]string)
for _, name := range args {
envMap[name] = cli.CreateRandomConfigValue()
envMap[name] = cli.CreateRandomConfigValue(session.Stack.Provider)
}
} else if envFile != "" {
// 1d. Handle --env-file flag: read all or specified configs from the file
Expand Down
2 changes: 1 addition & 1 deletion src/pkg/agent/tools/estimate.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
type EstimateParams struct {
common.LoaderParams
DeploymentMode string `json:"deployment_mode,omitempty" jsonschema:"default=affordable,enum=affordable,enum=balanced,enum=high_availability,description=The deployment mode for which to estimate costs (e.g., AFFORDABLE, BALANCED, HIGH_AVAILABILITY)."`
Provider string `json:"provider" jsonschema:"required,enum=aws,enum=gcp description=The cloud provider for which to estimate costs."`
Provider string `json:"provider" jsonschema:"required,enum=aws,enum=gcp,enum=scaleway description=The cloud provider for which to estimate costs."`
Region string `json:"region,omitempty" jsonschema:"description=The region in which to estimate costs."`
}

Expand Down
2 changes: 1 addition & 1 deletion src/pkg/agent/tools/estimate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ func TestHandleEstimateTool(t *testing.T) {
setupMock: func(m *MockEstimateCLI) {
m.Project = &compose.Project{Name: "test-project"}
},
expectedError: "invalid provider: \"invalid-provider\", not one of [auto defang aws digitalocean gcp azure]",
expectedError: "invalid provider: \"invalid-provider\", not one of [auto defang aws digitalocean gcp azure scaleway]",
},
{
name: "run_estimate_error",
Expand Down
2 changes: 1 addition & 1 deletion src/pkg/agent/tools/setConfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func HandleSetConfig(ctx context.Context, loader client.Loader, params SetConfig
if params.Value != "" {
return "", errors.New("Both 'random' and 'value' parameters provided; please provide only one")
}
value = cli.CreateRandomConfigValue()
value = cli.CreateRandomConfigValue(sc.Stack.Provider)
term.Debug("Generated random value for config")
}

Expand Down
29 changes: 29 additions & 0 deletions src/pkg/cli/client/byoc/scaleway/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Scaleway BYOC Integration Notes

This package is still a preview provider path. When adding or changing
Scaleway behavior, check the surfaces below so provider support does not stop
at the deploy path.

## Cross-Surface Checklist

- Provider ID parsing, display names, protobuf mapping, and default regions.
- Stack wizard provider choices and stack-name defaults.
- Agent tool JSON schemas and tests that enumerate provider choices.
- Compose fixups for managed services, models, ports, and config references.
- CD setup, run, status, subscribe, logs, teardown, and state readback.
- Docs pages, provider tables, managed LLM tables, and sample prerequisites.

## Current Preview Constraints

- CD runs on Scaleway Serverless Jobs and uses Object Storage for Pulumi state
and `project.pb` readback.
- CD job definitions must be scoped per stack to avoid concurrent deployments
deleting or replacing each other's job definition.
- Scaleway managed LLM support bypasses LiteLLM and injects OpenAI-compatible
environment variables that point at `https://api.scaleway.ai/v1/`.
- Serverless Containers do not support host-mode ports; public HTTP services
must use ingress ports.
- Portless workers use a temporary health shim in the Pulumi provider because
Serverless Containers require an HTTP listener.
- Managed Redis currently requires `REDIS_PASSWORD` Defang config.
- Managed PostgreSQL passwords must satisfy Scaleway's password policy.
Loading
Loading