update documents
This commit is contained in:
parent
c705cadadc
commit
d70bf6a402
51 changed files with 995 additions and 1997 deletions
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## Organization Philosophy
|
||||
|
||||
**Layered monorepo, component-per-directory.** Each major subsystem lives under `src/<component>/` with its own Meson build file and CLAUDE.md. The Go frontend is isolated in `src/frontend/` as two independent Go modules. All C daemons share `src/lib/` (libxce) and public headers from `src/include/xce/`.
|
||||
**Layered monorepo, component-per-directory.** Each major subsystem lives under `src/<component>/` with its own Meson build file and CLAUDE.md. The Go frontend is isolated in `src/frontend/` as two independent Go modules. All C daemons share `src/lib/` (libxce) and public headers from `src/include/`.
|
||||
|
||||
```
|
||||
src/
|
||||
|
|
@ -14,14 +14,16 @@ src/
|
|||
├── scheduler/ C — job scheduling engine (plugin architecture)
|
||||
├── autoscaler/ C — autoscaling engine (provider plugins)
|
||||
├── frontend/ Go — apiserver (Gin REST) + xcecli (Cobra CLI)
|
||||
├── include/xce/ C — public shared headers consumed across all daemons
|
||||
├── xceadmin/ Python — admin CLI tool
|
||||
├── include/ C — public shared headers consumed across all daemons
|
||||
│ └── xce/ C — subset of public headers under the xce/ prefix
|
||||
├── schema/ Cap'n Proto schema files (c.capnp, controller.capnp)
|
||||
└── docs/ Project-wide documentation (markdown)
|
||||
```
|
||||
|
||||
## C Daemon Layout Pattern
|
||||
|
||||
Each C daemon (`controller/`, `worker/`, `scheduler/`, `autoscaler/`) follows:
|
||||
`worker/` and `scheduler/` follow:
|
||||
|
||||
```
|
||||
src/<component>/
|
||||
|
|
@ -32,7 +34,10 @@ src/<component>/
|
|||
testsuite/ — test programs (test_*.c)
|
||||
```
|
||||
|
||||
**Exception**: `controller/` keeps its `.c` files flat in the component root (not in a nested `src/`). All other C daemons use `src/<component>/src/`.
|
||||
**Exceptions**:
|
||||
- `controller/` keeps its `.c` files flat in the component root (not in a nested `src/`), and does have its own `testsuite/`.
|
||||
- `worker/` has no `testsuite/` — no `test_*.c` files exist anywhere in the component.
|
||||
- `autoscaler/` does not follow this pattern at all: it has no CLAUDE.md, and its daemon code lives two levels deeper in `src/autoscaler/scaler/` (flat `.c` files plus its own `include/` and `testsuite/`), alongside `src/autoscaler/providers/`.
|
||||
|
||||
Plugin-based components add their own subdirectory:
|
||||
- `scheduler/` — plugins in `src/plugins/`
|
||||
|
|
@ -62,7 +67,7 @@ Plugin-based components add their own subdirectory:
|
|||
### C
|
||||
|
||||
- **Files**: `snake_case.c` / `snake_case.h` — one domain per file
|
||||
- **Public headers**: `src/include/xce/<name>.h` — the libxce API boundary
|
||||
- **Public headers**: `src/include/<name>.h` (e.g. `persist.h`, `netio.h`, `resreq.h`) — the libxce API boundary; a small subset (`client_failover.h`, `cluster.h`, `cluster_def.h`, `errnox.h`, `types.h`) lives under `src/include/xce/` and is included as `xce/<name>.h`
|
||||
- **Component headers**: `src/<component>/include/<name>.h`
|
||||
- **Test files**: `test_<unit>.c` (e.g., `test_ha_cluster.c`, `test_persist_wal.c`)
|
||||
- **Functions**: `snake_case` with component prefix — `ha_*`, `cluster_*`, `xcecd_*`, `xce_*`
|
||||
|
|
@ -74,8 +79,8 @@ Plugin-based components add their own subdirectory:
|
|||
|
||||
- **Files**: one file per resource — `jobs.go`, `queues.go`, `hosts.go`
|
||||
- **Tests**: `*_test.go` co-located; integration tests as `integration_test.go`, `<resource>_control_test.go`
|
||||
- **Controller structs**: `{Resource}Controller`
|
||||
- **Handler methods**: `{Action}{Resource}` (e.g., `SubmitJob`, `ListJobs`)
|
||||
- **Controller structs**: `{Resource}Controller` (e.g., `JobController`, `ClusterController`, `QueueController`); one exception — `hosts.go` uses `HostHandler`
|
||||
- **Handler methods**: `{Action}{Resource}` (e.g., `CreateJob`, `GetJobsInfo`, `ControlJobByID`)
|
||||
- **Permission strings**: `"action:scope"` (e.g., `"job:view:self"`)
|
||||
- **JSON tags**: `snake_case`
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue