reddwarf/Cargo.toml
Till Wegmueller 8d9ae6ac62
Add pod controller, status subresource, node agent, and main binary
Implement the core reconciliation loop that connects Pod events to zone
lifecycle. Status subresource endpoints allow updating pod/node status
without triggering spec-level changes. The main binary now provides
`serve` (API server only) and `agent` (full node: API + scheduler +
controller + heartbeat) subcommands via clap.

- Status subresource: generic update_status in common.rs, PUT endpoints
  for /pods/{name}/status and /nodes/{name}/status
- Pod controller: polls pods assigned to this node, provisions zones via
  ZoneRuntime, updates status to Running/Failed, monitors zone health
- Node agent: registers host as a Node, sends periodic heartbeats with
  Ready condition
- API client: lightweight reqwest-based HTTP client for controller and
  node agent to talk to the API server
- Main binary: clap CLI with serve/agent commands, wires all components
  together with graceful shutdown via ctrl-c

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 22:53:18 +01:00

88 lines
2.1 KiB
TOML

[workspace]
resolver = "2"
members = [
"crates/reddwarf-core",
"crates/reddwarf-storage",
"crates/reddwarf-versioning",
"crates/reddwarf-apiserver",
"crates/reddwarf-scheduler",
"crates/reddwarf-runtime",
"crates/reddwarf",
]
[workspace.package]
version = "0.1.0"
edition = "2021"
authors = ["Reddwarf Contributors"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/yourusername/reddwarf"
rust-version = "1.84"
[workspace.dependencies]
# Core dependencies
reddwarf-core = { path = "crates/reddwarf-core" }
reddwarf-storage = { path = "crates/reddwarf-storage" }
reddwarf-versioning = { path = "crates/reddwarf-versioning" }
reddwarf-apiserver = { path = "crates/reddwarf-apiserver" }
reddwarf-scheduler = { path = "crates/reddwarf-scheduler" }
reddwarf-runtime = { path = "crates/reddwarf-runtime" }
# Kubernetes types
k8s-openapi = { version = "0.23", features = ["v1_31"] }
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
# Error handling
thiserror = "2.0"
miette = { version = "7.0", features = ["fancy"] }
anyhow = "1.0"
# Async runtime
tokio = { version = "1.40", features = ["full"] }
tokio-stream = { version = "0.1", features = ["sync"] }
futures-util = "0.3"
async-trait = "0.1"
# HTTP client
reqwest = { version = "0.12", features = ["json"] }
# Web framework
axum = { version = "0.8", features = ["ws", "macros"] }
tower = { version = "0.5", features = ["full"] }
tower-http = { version = "0.6", features = ["cors", "compression-gzip", "trace"] }
hyper = { version = "1.0", features = ["full"] }
# Storage
redb = "2.1"
# Versioning
jj-lib = "0.23"
# Utilities
chrono = { version = "0.4", features = ["serde"] }
uuid = { version = "1.0", features = ["v4", "serde"] }
bytes = "1.0"
# Logging and tracing
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
# CLI
clap = { version = "4.5", features = ["derive", "env"] }
# TLS
rcgen = "0.13"
rustls = "0.23"
rustls-pemfile = "2.0"
# Testing
tempfile = "3.0"
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true