syntheses:vps-monorepo-structure
This is an old revision of the document!
Table of Contents
VPS Monorepo - Structure Overview
Notes
Summary
VPS Monorepo - Structure Overview
Repository
- URL:
https://git.mammoth.com.au/vps/vps(project ID: 1) - Namespace:
vpsgroup - Default branch:
main - Description: All first-party software for BinaryLane / Mammoth Cloud services
- Access: Requires Mammoth WireGuard VPN + GitLab PAT
- API base:
https://git.mammoth.com.au/api/v4/(use–resolve git.mammoth.com.au:443:10.240.0.211from this host)
Monorepo Layout
The repo follows a two-level category/component/ structure:
vps/vps/ ├── facility/ — Satellite services (per-datacentre, not core VPS) │ ├── backupproxy — .NET backup download proxy │ ├── looking-glass — PHP BGP/traceroute tool (modified third-party) │ └── rescueproxy — .NET VNC access proxy ├── infrastructure/ — Physical device software (compute hosts, routers, switches) │ ├── backup — SSH-invoked backup scripts (called by HostDaemon) │ ├── compute — Programs deployed to compute host nodes │ ├── dynamic-routing — Rust routing application │ ├── gbmt — ECC memory stress testing (memtester + geekbench) │ ├── isobuilder — ISO build tooling │ ├── neigh-proxy — NDP/ARP proxy │ ├── qemu — QEMU configuration/tooling │ └── third-party — Third-party integration code ├── ops/ — Service maintenance and operations │ ├── ansible — Ansible playbooks │ ├── bitwarden-backup — Bitwarden backup automation │ ├── butler — Butler bot │ ├── cicd — CI/CD tooling │ ├── icinga — Monitoring │ ├── morbo — ??? │ ├── scripts — Ops scripts │ ├── tinydns2bind — DNS conversion │ ├── trello2gitlab — Migration tool │ └── tron — IPMI host interaction (Python) ├── product/ — Core customer-facing functionality │ ├── base-image-test │ ├── cli-based-tests — E2E tests against WebAPI │ ├── e2e-tests │ ├── forks — Third-party forks with modifications │ ├── guest-agent │ ├── history │ ├── mentos │ ├── rat │ ├── unused-code-remover │ ├── vmbuilder — VM image builder │ └── website/ — Main .NET panel/API solution (see below) ├── team/ — Staff-only tools └── scripts/ — General-purpose scripts
Separate Repo: `vps/compute` (project ID: 22)
A separate repository for compute host-side programs:
vps/compute/ ├── hostdaemon/ — Daemon on compute hosts ├── ovmf/ — UEFI firmware ├── power-limiter/ — Power management ├── qemu-network/ — iptables/netns firewall (see also vps/qemu-network) ├── routed/ — Routing daemon ├── scripts/ — Compute host scripts ├── services/ — Host services ├── smtbalance/ — SMTP balancing ├── xm/ — Xen configuration ├── xmconfig/ — Xen config tools └── xm-for-kvm/ — Xen-to-KVM migration tools
Subgroup: `vps/ops` (group ID: 67)
Additional ops projects not in the main monorepo:
| Project | Path | Description |
|---|---|---|
| 65 | vps/ops/ops | Internal ops tooling |
| 64 | vps/ops/live-rescue | Live rescue operations |
| 57 | vps/ops/ubuntu-preseed | Ubuntu preseed configs |
| 54 | vps/ops/tinydns | TinyDNS configuration |
| 52 | vps/ops/icinga | Host monitoring scripts |
| 51 | vps/ops/tasks | Task management |
| 47 | vps/ops/tron | IPMI host interaction (Python) |
| 46 | vps/ops/gbmt | Memory fault testing |
| 2 | vps/ops/ansible | Ansible playbooks |
Subgroup: `vps/forks` (group ID: 70)
Third-party forks with modifications:
| Project | Path | Description |
|---|---|---|
| 70 | vps/forks/ext-typescript-generator | TypeScript code generator |
| 67 | vps/forks/castle-1.0.3-mono | Castle .NET on Mono |
| 49 | vps/forks/openapi-python-client | OpenAPI Python client |
| 42 | vps/forks/moin2gitwiki | Wiki migration tool |
| 17 | vps/forks/maxmind.minfraud | PayPal MinFraud client |
| 14 | vps/forks/cassette | .NET web app cassette manager |
| 12 | vps/forks/sdk-core-dotnet | PayPal Core Library for .NET |
All VPS Group Projects
| ID | Path | Description |
|---|---|---|
| 73 | vps/binarylane-cli-dotnet | .NET CLI |
| 71 | vps/bladmin-cli | Admin CLI |
| 61 | vps/dynamic_rs | Dynamic reservation logic |
| 58 | vps/cicd | CI/CD |
| 72 | vps/ndp-responder-rs | NDP responder (Rust) |
| 55 | vps/cli-based-tests | E2E tests against WebAPI |
| 50 | vps/butler | Butler bot |
| 53 | vps/website-format | Website formatting |
| 41 | vps/python-binarylane | Python API client |
| 69 | vps/python-blcli | Python CLI |
| 34 | vps/bootstrap | Linux desktop for VPS dev |
| 33 | vps/backup | Backup host programs |
| 25 | vps/vmbuilder | Image builder |
| 31 | vps/router | Router configs/scripts |
| 30 | vps/panel-visual-regression-tests | Visual regression tests |
| 22 | vps/compute | Compute host programs |
| 20 | vps/qemu-network | iptables/netns firewall |
| 63 | vps/birdpeers | BIRD peer management |
| 9 | vps/mpay | Payment processing |
| 6 | vps/rescue-proxy | Rescue proxy |
| 5 | vps/looking-glass | Network looking glass |
| 4 | vps/backupproxy | Backup download proxy |
| 1 | vps/vps | Main VPS monorepo |
API Access Pattern
PAT=$(/root/.secrets/bw-get-secret.sh "Mammoth GitLab PAT" "pat") # List group projects curl -sk --resolve git.mammoth.com.au:443:10.240.0.211 \ -H "PRIVATE-TOKEN: $PAT" \ "https://git.mammoth.com.au/api/v4/groups/vps/projects?per_page=100" # Read a file (base64-encoded content) curl -sk --resolve git.mammoth.com.au:443:10.240.0.211 \ -H "PRIVATE-TOKEN: $PAT" \ "https://git.mammoth.com.au/api/v4/projects/22/repository/files/product%2Fwebsite%2FDomain%2FEntities%2FGuestFirewallRule.cs?ref=main" # List directory tree curl -sk --resolve git.mammoth.com.au:443:10.240.0.211 \ -H "PRIVATE-TOKEN: $PAT" \ "https://git.mammoth.com.au/api/v4/projects/22/repository/tree?path=&per_page=100"
Key Notes
- Monorepo migration is still a work-in-progress — some projects live in separate repos
product/website/is the main .NET solution (MammothVps.slnx)infrastructure/computeandvps/computeboth contain compute host softwarevps/qemu-network(project 20) is separate frominfrastructure/qemuandvps/compute/qemu-network- Several projects are Rust-based (
vps/ndp-responder-rs,vps/dynamic_rs) - The
vps/opsandvps/forkssubgroups have their own GitLab groups with separate project IDs
Related
Related Pages
syntheses/vps-monorepo-structure.1784174059.txt.gz · Last modified: by 127.0.0.1
