Lewati ke isi

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:

python3 -m pytest tests/unit

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

  1. Skema (cidr/schema.py): tambahkan Container, Tag, atau Leaf dengan tipe dari cidr/vtypes.py dan teks bantuan. Completion, ?, parser, dan display set langsung ikut.
  2. Validasi (cidr/validate.py): aturan lintas-node, misalnya referensi ke interface.
  3. Backend (cidr/backend.py, plan()): ubah diff old → new menjadi Action (vppctl, perintah, tulis file, fungsi). Hanya yang berubah; urutannya penting (hapus dulu, tambah kemudian).
  4. Test (tests/unit/): rencana aksi untuk konfigurasi baru, perubahan, dan penghapusan. Tambahkan ke tests/qemu/*.cmds dan cmd_test kalau perlu dibuktikan di VPP.
  5. Dokumentasi: halaman Panduan dan Pohon konfigurasi.

Dokumentasi

Situs ini dibuat dengan MkDocs Material:

pip install -r requirements-docs.txt
mkdocs serve        # http://127.0.0.1:8000, reload otomatis
mkdocs build --strict

Versi offline bisa dibuka langsung dari folder (tanpa server, pencarian tetap jalan) dan cocok dibagikan sebagai zip:

mkdocs build -f mkdocs-offline.yml     # hasil di site-offline/

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:

  1. test: unit test (pytest tests/unit, Python 3.11 seperti Debian 12).
  2. docs: mkdocs build --strict, untuk memastikan tidak ada link atau gambar yang rusak.
  3. publish-html (hanya push ke main): HTML versi offline di-commit ke branch docs-html. Isinya hanya HTML, tanpa kode.
  4. pages (opsional): terbit ke GitHub Pages kalau variabel repository DEPLOY_PAGES bernilai true.

Memasang docs di server web sendiri:

git clone -b docs-html --depth 1 https://github.com/computingid/router.git /var/www/cid-router-docs

Memperbarui (misalnya lewat cron):

git -C /var/www/cid-router-docs pull --ff-only

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 vppctl dideteksi dari teks output, karena exit code-nya selalu 0.
  • Semua yang ditulis ke sistem harus idempoten, karena boot dan restart cidr-config menjalankannya ulang.