Skip to content

feat: introducing declarative config for volcano#35

Merged
subnetmarco merged 5 commits into
mainfrom
feat/volcano-yaml
Jul 8, 2026
Merged

feat: introducing declarative config for volcano#35
subnetmarco merged 5 commits into
mainfrom
feat/volcano-yaml

Conversation

@subnetmarco

@subnetmarco subnetmarco commented Jul 7, 2026

Copy link
Copy Markdown
Member

Copilot AI review requested due to automatic review settings July 7, 2026 08:29
@subnetmarco subnetmarco requested a review from a team as a code owner July 7, 2026 08:29

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new declarative “project configuration” workflow centered around volcano-config.yaml, shifting reconciliation/validation to the server while the CLI becomes a thin client that parses/interpolates manifests, uploads them for apply (optionally dry-run), and can pull a canonical server-rendered YAML export.

Changes:

  • Add volcano config deploy (with ${ENV_VAR} interpolation and --dry-run) and volcano config pull (with --force) backed by new API endpoints and report rendering.
  • Expand the config manifest schema (project, databases, variables, buckets/policies, realtime, auth, functions/schedulers, frontends) and adjust tests/docs/starters to match the new semantics.
  • Update generated API client models and various log/runtime types to match API shape changes (notably timestamps as RFC3339/time.Time).

Reviewed changes

Copilot reviewed 37 out of 39 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/e2e/localmode/localmode_test.go Extends local-mode E2E smoke to cover config deploy/pull and variable sync behavior.
tests/e2e/api/helpers_fixtures_test.go Removes a now-obsolete helper for writing a limited config manifest.
tests/e2e/api/config_test.go Replaces prior config E2E with a broader declarative-config workflow test matrix (deploy/pull/dry-run/gating/warnings).
README.md Updates user-facing documentation for declarative config semantics, interpolation, dry-run, and pull behavior.
internal/projectinit/starters/README.md Clarifies why empty declared sections can be harmful under “fully synced” semantics.
internal/projectinit/starters/javascript/volcano/volcano-config.yaml Adds starter guidance comments for the new deploy semantics.
internal/projectinit/starters/javascript-hello-world/volcano/volcano-config.yaml Adds starter guidance comments for the new deploy semantics.
internal/projectconfig/service.go Adds a thin service that applies/pulls config via authenticated sessions/API.
internal/projectconfig/manifest.go Expands manifest schema, adds strict parsing + ${ENV} interpolation, and minimizes local validation.
internal/projectconfig/manifest_test.go Reworks tests to validate parsing/interpolation/JSON shape and new default pull-path behavior.
internal/projectconfig/interpolate.go Implements YAML-node interpolation for string scalar values (${ENV}, $$ escape).
internal/projectconfig/deploy.go Removes legacy client-side reconciliation implementation (now server-owned).
internal/projectconfig/deploy_test.go Removes tests for legacy client-side reconciliation logic.
internal/output/projectconfig.go Adds rendering for server apply reports and 422 validation error lists.
internal/output/logs.go Switches skipped-log filtering to common API types after log model changes.
internal/output/functions.go Updates log rendering to use time.Time timestamps and common API types.
internal/logfollow/follow_test.go Updates log stream test fixtures to use RFC3339 timestamp strings.
internal/function/scanner.go Switches runtime catalog types to common API types.
internal/function/scanner_test.go Updates scanner tests for common API runtime option types.
internal/function/packager_test.go Updates packager tests for common API runtime option types.
internal/function/function.go Updates runtime listing and deployment resolution types to common API types.
internal/frontend/frontend.go Updates frontend deployment resolution types to common API types.
internal/cmd/functions/logs.go Updates terminal-deployment detection to common API deployment type.
internal/cmd/functions/logs_test.go Updates log fixtures to RFC3339 timestamps / updated log schema.
internal/cmd/functions/deploy.go Updates batch failure type to common API type.
internal/cmd/frontends/logs.go Updates terminal-deployment detection to common API deployment type.
internal/cmd/frontends/logs_test.go Updates log fixtures to RFC3339 timestamps / updated log schema.
internal/cmd/config/config.go Reworks config command group: adds deploy --dry-run, adds pull --force, and new error handling/reporting.
internal/cmd/config/config_test.go Replaces legacy config command tests with new apply/pull/dry-run/validation/conflict/old-server coverage.
internal/apiclient/common/common.gen.go Regenerates common API models/enums for new config endpoints and log timestamp changes.
internal/apiclient/client.gen.go Regenerates API client for new config endpoints and related schema changes.
internal/api/project_config.go Adds API wrappers for apply (JSON body) and pull (verbatim YAML) with 422 validation error type.
internal/api/log_stream.go Switches streamed log event type to common API model.
internal/api/log_stream_test.go Updates stream fixtures to RFC3339 timestamps.
internal/api/functions.go Switches runtime/scheduler schedule types to common API models.
internal/api/frontends.go Switches TLS config type to common API model.
internal/api/client_test.go Updates log fixtures to RFC3339 timestamps.
go.mod Promotes go.yaml.in/yaml/v3 to a direct dependency (needed by generated client).
.golangci.yml Configures misspell to ignore API field spelling (signins).
Files not reviewed (2)
  • internal/apiclient/client.gen.go: Generated file
  • internal/apiclient/common/common.gen.go: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread internal/apiclient/client.gen.go Outdated

@swkeever swkeever left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found one issue.

Comment thread internal/cmd/config/config.go Outdated

@swkeever swkeever left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Found one issue.

Comment thread internal/projectconfig/manifest.go
@subnetmarco subnetmarco merged commit c0d2e58 into main Jul 8, 2026
8 checks passed
@subnetmarco subnetmarco deleted the feat/volcano-yaml branch July 8, 2026 08:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants