Pengembangan¶
Struktur repository¶
router/
├── bin/ cidr-cli, cidr-apply, cidr-dataplane (pembungkus)
├── cidr/ kode Python (lihat Arsitektur → Kode program)
├── etc/ config.boot.default
├── systemd/ unit dan drop-in
├── install.sh installer
├── docs/ dokumentasi ini (MkDocs Material)
├── mkdocs.yml
└── tests/
├── unit/ pytest + fixtures output VPP asli
└── qemu/ lab.sh, r1.cmds, r2.cmds
Unit test¶
Unit test tidak butuh VPP:
Parser statistik diuji dengan output asli VPP 26.10 (tests/unit/fixtures/), dan topologi CPU diuji dengan sysfs tiruan (hyper-threading, multi-die, cpuset).
Mencoba CLI tanpa VPP¶
CIDR_DRY_RUN=1 CIDR_CONFIG_DIR=/tmp/cidr CIDR_RUN_DIR=/tmp/cidr/run CIDR_ETC_DIR=/tmp/cidr/etc ./bin/cidr-cli
commit hanya mencetak aksi yang akan dijalankan.
Menambah fitur konfigurasi¶
- Skema (
cidr/schema.py): tambahkanContainer,Tag, atauLeafdengan tipe daricidr/vtypes.pydan teks bantuan. Completion,?, parser, dandisplay setlangsung ikut. - Validasi (
cidr/validate.py): aturan lintas-node, misalnya referensi ke interface. - Backend (
cidr/backend.py,plan()): ubah diffold → newmenjadiAction(vppctl, perintah, tulis file, fungsi). Hanya yang berubah; urutannya penting (hapus dulu, tambah kemudian). - Test (
tests/unit/): rencana aksi untuk konfigurasi baru, perubahan, dan penghapusan. Tambahkan ketests/qemu/*.cmdsdancmd_testkalau perlu dibuktikan di VPP. - Dokumentasi: halaman Panduan dan Pohon konfigurasi.
Dokumentasi¶
Situs ini dibuat dengan MkDocs Material:
Versi offline bisa dibuka langsung dari folder (tanpa server, pencarian tetap jalan) dan cocok dibagikan sebagai zip:
Diagram ada di docs/assets/diagrams/ (SVG, bisa diedit di editor teks atau Inkscape), dan screenshot ada di docs/assets/img/ (lab.sh screenshot).
CI dan HTML siap pakai¶
Workflow .github/workflows/ci.yml berjalan di setiap push dan pull request:
- test: unit test (
pytest tests/unit, Python 3.11 seperti Debian 12). - docs:
mkdocs build --strict, untuk memastikan tidak ada link atau gambar yang rusak. - publish-html (hanya push ke
main): HTML versi offline di-commit ke branchdocs-html. Isinya hanya HTML, tanpa kode. - pages (opsional): terbit ke GitHub Pages kalau variabel repository
DEPLOY_PAGESbernilaitrue.
Memasang docs di server web sendiri:
Memperbarui (misalnya lewat cron):
Arahkan web server (nginx/Apache) ke folder itu. Link-nya berupa file .html biasa, jadi bisa dipasang di path mana pun (misalnya /docs/) tanpa konfigurasi tambahan, dan juga bisa dibuka langsung dari disk.
Pedoman kode¶
- Kode dan pesan CLI dalam bahasa Inggris; dokumentasi dalam bahasa Indonesia.
- Perintah VPP dicek terhadap VPP sungguhan (container atau lab) sebelum dipakai, karena sintaksnya berubah antar versi.
- Error
vppctldideteksi dari teks output, karena exit code-nya selalu 0. - Semua yang ditulis ke sistem harus idempoten, karena boot dan restart
cidr-configmenjalankannya ulang.