Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
98667f8
feat(storage): add raft block correctness prototype
kleopasevan Apr 29, 2026
f7b9e1f
feat(storage): scaffold raft spdk backend
kleopasevan Apr 29, 2026
346cfdb
feat(storage): persist raft block replica state
kleopasevan Apr 29, 2026
6234935
feat(storage): add raft block snapshot routes
kleopasevan Apr 29, 2026
1fcfdb6
feat(storage): add openraft block type boundary
kleopasevan Apr 29, 2026
3f16ca2
test(storage): model raft leader fencing
kleopasevan Apr 29, 2026
ba82658
feat(storage): start raft block group on attach
kleopasevan Apr 29, 2026
3ef1852
fix(storage): reject raft follower attach
kleopasevan Apr 30, 2026
48c1ed8
feat(storage): add raft block local read path
kleopasevan Apr 30, 2026
142a817
feat(storage): expand raft block status
kleopasevan Apr 30, 2026
e0b132e
feat(storage): stop raft block group on detach
kleopasevan Apr 30, 2026
7a4ef48
feat(storage): apply openraft block entries
kleopasevan Apr 30, 2026
499db02
feat(storage): route agent appends through openraft entries
kleopasevan Apr 30, 2026
7758675
fix(storage): validate raft group reopen metadata
kleopasevan Apr 30, 2026
e8b4ed0
feat(storage): report raft block heartbeat status
kleopasevan Apr 30, 2026
353839d
docs(storage): update raft block prototype status
kleopasevan Apr 30, 2026
69981c5
feat(storage): add openraft block storage harness
kleopasevan Apr 30, 2026
8650581
chore(storage): update raft block dev dependency lockfile
kleopasevan Apr 30, 2026
36ee4d7
docs(storage): note openraft storage harness
kleopasevan Apr 30, 2026
30adb76
feat(storage): use openraft store for agent raft groups
kleopasevan Apr 30, 2026
9d524b5
feat(storage): add raft block append entries route
kleopasevan Apr 30, 2026
fa9cbcf
docs(storage): update raft append entries status
kleopasevan Apr 30, 2026
df4acd5
feat(storage): handle local raft block votes
kleopasevan Apr 30, 2026
4222839
feat(storage): discover raft block groups on agent startup
kleopasevan Apr 30, 2026
1456834
feat(storage): stream raft spdk snapshot bytes
kleopasevan Apr 30, 2026
07d827a
docs(storage): update raft block lifecycle status
kleopasevan Apr 30, 2026
0a11d6c
feat(storage): populate raft spdk through raft block
kleopasevan Apr 30, 2026
4341658
docs(storage): note raft spdk populate path
kleopasevan Apr 30, 2026
711d853
feat(storage): add raft block http transport client
kleopasevan Apr 30, 2026
0098845
feat(storage): bootstrap raft spdk prototype groups
kleopasevan Apr 30, 2026
d5bbad3
test(storage): run openraft storage suite
kleopasevan Apr 30, 2026
a5d3e74
feat(storage): add openraft native raft block routes
kleopasevan Apr 30, 2026
8f5150d
feat(storage): wire real Openraft runtime + RaftNetworkFactory adapter
kleopasevan Apr 30, 2026
cb188b0
feat(storage): migrate openraft routes to Raft runtime + 3-node integ…
kleopasevan Apr 30, 2026
d469cc3
feat(storage): raftblk-vhost crate + daemon binary scaffold (B-II ite…
kleopasevan Apr 30, 2026
5321199
feat(storage): manager production provisioning bootstraps real Raft g…
kleopasevan Apr 30, 2026
46581f6
docs(storage): B-II runbook + plan status update
kleopasevan Apr 30, 2026
769c26f
Merge remote-tracking branch 'origin/main' into feature/raft-block-pr…
kleopasevan Apr 30, 2026
8c0e53b
fix(agent): balloon test AppState picks up raft_block_state field
kleopasevan Apr 30, 2026
31cb86c
feat(storage): vhost-user-blk daemon trait skeleton + binary wires Vh…
kleopasevan Apr 30, 2026
7e10c5e
feat(storage): pluggable ReplicaStoreImpl + SpdkLvolReplicaStore (B-I…
kleopasevan Apr 30, 2026
849a6fd
docs(storage): runbook + plan reflect daemon skeleton + ReplicaStore …
kleopasevan Apr 30, 2026
2ad010b
feat(storage): real handle_event descriptor-chain processing — daemon…
kleopasevan Apr 30, 2026
d141696
feat(storage): wire SpdkLvolReplicaStore into RaftBlockState via env var
kleopasevan Apr 30, 2026
2db2f0c
docs(storage): plan reflects items 3 + 4 done in code; only #7 needs …
kleopasevan Apr 30, 2026
76c131d
feat(storage): real microVM smoke verified end-to-end (B-II item 7 cl…
kleopasevan Apr 30, 2026
9c375b1
feat(storage): KubeVirt-hosted microVM smoke for B-II
kleopasevan Apr 30, 2026
e4919e4
fix(vms): defer volume_attachment INSERT until after vm row exists
kleopasevan Apr 30, 2026
49c3fdd
feat(agent): RaftSpdkHostBackend auto-spawns raftblk-vhost daemon on …
kleopasevan Apr 30, 2026
0924b36
feat(storage): stabilize raft spdk smoke path
kleopasevan May 1, 2026
d9f9174
fix(storage): compact raft spdk NBD persistence
kleopasevan May 1, 2026
765f528
fix(storage): close raft spdk lifecycle gaps
kleopasevan May 1, 2026
3981328
fix(storage): harden raft spdk destroy and reload
kleopasevan May 1, 2026
d289bd3
fix(storage): type raft block store mode
kleopasevan May 1, 2026
7634bc0
fix(storage): normalize raft block agent urls
kleopasevan May 1, 2026
4d029c2
fix(storage): destroy_group reads node_id from manifest when groups m…
kleopasevan May 1, 2026
4594375
feat(storage): replicate populate through openraft, bump raft body limit
kleopasevan May 1, 2026
754a475
fix(volumes): standalone volume create drives backend.provision
kleopasevan May 1, 2026
79d936b
fix(volumes): DELETE drives backend.destroy and refuses on backend fa…
kleopasevan May 1, 2026
1420778
docs(storage): B-III implementation plan
kleopasevan May 1, 2026
e370e02
feat(storage): expose raft spdk group status
kleopasevan May 2, 2026
40738a9
fix(manager): protect storage backend routes
kleopasevan May 2, 2026
02955a8
feat(storage): add raft repair queue foundation
kleopasevan May 2, 2026
7035513
feat(storage): add raft replica repair endpoint
kleopasevan May 2, 2026
20ed532
feat(storage): wait for raft replica repair catchup
kleopasevan May 2, 2026
b5c31ab
feat(storage): expose raft repair progress
kleopasevan May 2, 2026
7487085
feat(agent): expose raft membership change route
kleopasevan May 2, 2026
689a418
feat(storage): add raft replica add orchestration
kleopasevan May 2, 2026
407cdca
feat(storage): add raft replica remove orchestration
kleopasevan May 2, 2026
525a934
feat(storage): B-III Task 9 retry reconciler + Task 5 host hot-spare/…
kleopasevan May 2, 2026
7d28469
feat(storage): B-III Tasks 6/7/8 placement planner + plan endpoints
kleopasevan May 2, 2026
bde7782
feat(nqvm-cli): B-III Task 10 operator CLI
kleopasevan May 2, 2026
fd51369
feat(storage): B-III Task 3 manager-restart membership audit
kleopasevan May 2, 2026
a5d79b4
style: cargo fmt for B-III code-side slice
kleopasevan May 2, 2026
f9c995e
feat(storage): per-host spdk_backend_id config + planner wiring
kleopasevan May 2, 2026
5e32e0e
feat(storage): B-III plan executor + execute_plan endpoint + CLI
kleopasevan May 2, 2026
4d222cc
feat(storage): B-III auto-reconciler — drain hosts + promote hot-spares
kleopasevan May 2, 2026
3386ba4
docs(storage): B-III plan reflects complete code slice
kleopasevan May 2, 2026
e4c2e67
feat(ui): B-III Task 1 replication panel
kleopasevan May 2, 2026
6832b6f
docs(storage): B-III complete code-side; only live validation deferred
kleopasevan May 2, 2026
cc2e57d
docs(storage): B-III live smoke runbook
kleopasevan May 2, 2026
a7d14ca
feat(storage): B-III add-replica + decommission + hot-spare wiring
kleopasevan May 3, 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
536 changes: 535 additions & 1 deletion Cargo.lock

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,13 @@ members = [
"apps/agent", "apps/guest-agent",
"apps/manager",
"apps/installer",
"apps/raftblk-vhost",
"crates/nexus-backup",
"crates/nexus-raft-block",
"crates/nexus-storage",
"crates/nexus-types",
"crates/nqvm-cli",
"crates/raftblk-vhost",
]
resolver = "2"

Expand Down
2 changes: 2 additions & 0 deletions apps/agent/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ uuid = { workspace = true }
futures = { workspace = true }
libc = "0.2"
nexus-backup = { path = "../../crates/nexus-backup" }
nexus-raft-block = { path = "../../crates/nexus-raft-block" }
openraft = { version = "=0.9.24", features = ["serde"] }
aws-sdk-s3 = { version = "1", default-features = false, features = ["rustls", "rt-tokio"] }
aws-credential-types = "1"
aws-config = { version = "1", default-features = false, features = ["rustls", "rt-tokio"] }
Expand Down
5 changes: 5 additions & 0 deletions apps/agent/src/features/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ use std::sync::Arc;
pub mod health;
pub mod inventory;
pub mod networks;
pub mod raft_block;
pub mod storage;
pub mod tap;
pub mod vm;
Expand All @@ -18,6 +19,10 @@ pub fn router(state: AppState) -> Router {
.merge(inventory::router())
.nest("/agent/v1/vms", vm::router().merge(tap::router()))
.nest("/agent/v1/networks", networks::router())
.nest(
"/v1/raft_block",
raft_block::router(state.raft_block_state.clone()),
)
.nest("/v1/storage", storage::routes::router(storage_state))
.layer(Extension(state))
}
Loading
Loading