User Tools

Site Tools


syntheses:vps-monorepo-structure

This is an old revision of the document!


VPS Monorepo - Structure Overview

Notes

Summary

VPS Monorepo - Structure Overview

Repository

  • Namespace: vps group
  • 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.211 from 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/compute and vps/compute both contain compute host software
  • vps/qemu-network (project 20) is separate from infrastructure/qemu and vps/compute/qemu-network
  • Several projects are Rust-based (vps/ndp-responder-rs, vps/dynamic_rs)
  • The vps/ops and vps/forks subgroups have their own GitLab groups with separate project IDs
syntheses/vps-monorepo-structure.1784174059.txt.gz · Last modified: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki