Skip to content

feat(setup): port Kibana setup wizard to the deepfreeze-server web UI - #16

Merged
wortmanb merged 1 commit into
elastic:mainfrom
wortmanb:pr/setup-wizard
Jul 13, 2026
Merged

feat(setup): port Kibana setup wizard to the deepfreeze-server web UI#16
wortmanb merged 1 commit into
elastic:mainfrom
wortmanb:pr/setup-wizard

Conversation

@wortmanb

Copy link
Copy Markdown
Collaborator

Summary

Ports the Kibana plugin's setup wizard into the standalone deepfreeze-server web UI, backed by the FastAPI/Python stack. The wizard is gated on the Overview page and appears whenever the cluster is uninitialized (status.initialized === false); it disappears once setup completes.

Bucket modes (both supported)

  • Core Setup gains a create_bucket flag. Default True preserves existing CLI behavior (creates the bucket, errors if it already exists). False reuses an existing bucket — the precondition is inverted (the bucket must exist) and no bucket is created or rolled back.
  • Setup now populates self._results with step records, so the server surfaces dry-run steps and a completion summary through CommandResult.details.

Server

  • Expanded SetupRequest to the full wizard config (provider, style, year/month, base path, ACL, storage class, rotate_by, create_bucket), threaded through orchestrator.setup().
  • New orchestrator.get_setup_options() and GET /api/setup/options route, returning buckets / ILM policies / index templates / s3 client names already in use on the cluster.
  • Precondition failures come back as CommandResult{success: false, errors: [...]} (HTTP 200), which the wizard renders as a callout.

Frontend

  • SetupWizard.tsx — 5-step EUI wizard with a Step-2 reuse-vs-create bucket toggle.
  • SetupConfig/SetupOptions types and getSetupOptions / setup / setupDryRun client methods.
  • Overview gate that renders the wizard when status.initialized is false.

Testing

  • Core + server modules compile; 23/23 Setup unit tests pass.
  • Frontend npm run build green; deployed and verified on the AWS/GCP/Azure test boxes.

🤖 Generated with Claude Code

Adds a 5-step setup wizard to the standalone server UI, gated on Overview
when the cluster is uninitialized. Supports both bucket modes:

- core Setup gains a create_bucket flag: default True keeps CLI behavior
  (creates the bucket, errors if it exists); False reuses an existing
  bucket (precondition requires it to exist, no create/rollback). Setup
  now populates self._results so the server surfaces dry-run steps and a
  completion summary via CommandResult.details.
- server: expanded SetupRequest with the full wizard config, threaded it
  through orchestrator.setup(), added get_setup_options() and a new
  GET /api/setup/options route (buckets, ILM policies, index templates,
  and s3 client names already in use on the cluster).
- frontend: SetupWizard.tsx (reuse-vs-create bucket toggle), setup API
  client methods/types, and an Overview gate that renders the wizard when
  status.initialized is false.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@wortmanb
wortmanb merged commit a42ce6a into elastic:main Jul 13, 2026
2 checks passed
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.

1 participant