Contribuire
I contributi all'Aruba Cloud Resource Operator sono benvenuti. Questo documento spiega come configurare un ambiente di sviluppo, aggiungere un nuovo controller e inviare una pull request.
Prima di iniziare
- Apri una issue per discutere la modifica che vuoi apportare (a meno che non sia già nella roadmap).
- Verifica che nessun altro stia già lavorando alla stessa funzionalità o correzione.
Configurazione dell'ambiente di sviluppo
Prerequisiti:
- Go 1.23+
- Docker (per i target devtools containerizzati)
- Un cluster Kubernetes attivo (opzionale —
envtestfornisce un API server simulato per i test unitari)
Elenca tutti i target make disponibili:
make help
Esegui lint e test con l'ambiente containerizzato (Go locale non necessario):
make lint-ctzd
make test-ctzd
Aggiungere un nuovo controller
1. Definire il tipo CRD
Aggiungi api/v1alpha1/<resource>_types.go seguendo una risorsa esistente come template (es. vpc_types.go). Poi rigenera i manifest e il codice deep-copy:
make manifests generate
2. Implementare il controller
Crea internal/controller/<resource>_controller.go. Segui la pipeline HandleReconcile a 8 stadi documentata in ai/ARCHITECTURE.md e il layout canonico a 14 sezioni in ai/CONVENTIONS.md.
3. Registrare il controller
Aggiungi il controller a cmd/main.go seguendo il pattern esistente.
4. Aggiungere la documentazione
Crea docs/website/docs/<Resource>.md e docs/website/i18n/it/docusaurus-plugin-content-docs/current/<Resource>.md usando il template delle pagine CRD in ai/DOCS.md. Aggiungi la nuova pagina a docs/website/sidebars.js.
5. Aggiungere i manifest di esempio
Aggiungi uno o più CR di esempio in config/samples/ per l'uso nei test di integrazione e nella pagina Esempi.
Stile del codice
- Formatta con
gofmt/goimportsprima di fare commit. - Segui le convenzioni di naming, gestione degli errori, logging e testing in
ai/CONVENTIONS.md. - Non inserire in modo fisso ID tenant, nomi di regione o nomi di zona nel codice di produzione — leggili sempre dallo spec del CRD.
- Tutte le scritture di status devono passare attraverso
retry.RetryOnConflictusando gli helper ininternal/reconciler/transition_actions.go.
Checklist per le pull request
-
make lint-ctzdpassa senza nuovi errori -
make test-ctzdpassa senza nuovi fallimenti -
make manifests generateè stato rieseguito se è cambiato un tipo inapi/v1alpha1/ - La documentazione in
docs/website/docs/è stata aggiornata se i campi CRD o il comportamento dell'operatore sono cambiati - La traduzione italiana in
docs/website/i18n/it/rispecchia le modifiche in inglese - La nuova pagina CRD è stata aggiunta a
docs/website/sidebars.js
Eseguire i docs in locale
make docs-install # installa le dipendenze npm (una volta sola)
make docs # avvia i docs in inglese su http://localhost:3000
make docs-serve-it # avvia i docs in italiano
make docs-build # build di produzione
make docs-test # build con validazione dei link