[feature] Allow performing config changes in draft mode, changes can be confirmed & applied or rejected & discarded
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 15/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Ambito
- backend, devops, networking
Direzione di ricerca
Non vengono indicati file o test. Inizia tracciando il flusso delle modifiche alla configurazione e il segnale config_modified nei percorsi Admin e REST API, quindi mappa gli oggetti interessati, come dispositivi, configurazioni, template, gruppi e organizzazioni. Il lavoro è completato quando le bozze possono essere salvate, applicate con un'unica distribuzione per dispositivo oppure scartate con un ripristino completo, preservando il comportamento del salvataggio immediato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
⚠️ Not suited for beginners. Follow up of https://github.com/openwisp/openwisp-controller/issues/1128.
In the current implementation, OpenWISP immediately applies every configuration change, even if the user is still editing related templates.
This prevents batching logically related changes, and can result in deploying incomplete configurations which can be potentially broken.
We need to redesign the configuration change mechanism to introduce a staging and apply model similar to OpenWrt’s “Save & Apply” concept.
Key Goals
- Prevent multiple SSH push operations when several configuration objects or templates are updated in sequence.
- Allow users to make and review several related changes before deployment.
- Ensure that when configurations are applied, the system performs exactly one consolidated deployment per device.
- Allow to discard changes, discarding must allow reverting every detail to the previous version of the object.
Functional Proposal
-
Draft Mode
- Each configuration or template change is saved as a draft by default.
- Draft changes do not trigger the
config_modifiedsignal or any SSH connection. - The UI shall indicate which configurations have un-applied drafts.
-
Apply Changes
- A dedicated “Apply” action triggers a single deployment for all pending drafts related to a device.
- This action sends one
config_modifiedsignal, ensuring only one SSH connection.
-
Discard Drafts
- Users can discard pending drafts to revert to the last applied configuration.
-
Change Tracking
- Track which configuration objects or templates have pending drafts.
-
Concurrency Handling
- If a deployment is ongoing, further “Apply” actions should be queued or disabled until completion.
Constraints
- Ensure feature parity between Admin and REST API
- Allow saving and applying changes right away (current behavior)
- Ensure only 1
config_modifiedsignal is sent for each device, regardless of the amount of objects changed - Any object which can impact the configuration checksum of a device needs to be part of this design, eg:
- devices
- configs
- templates
- device groups
- organizations
- I hope I am not forgetting anything!
- Maybe VPN servers too?
- What about subnets and IP addresses?
Benefits
- Eliminates redundant SSH connections.
- Prevents partial deployments when multiple dependent objects are being changed (eg: configuration variables, group variables, group templates, templates, etc).
- Improves user experience by aligning with OpenWrt’s familiar configuration workflow.
Next Steps
- Prototype UI changes for “Save Draft”, “Apply”, and “Discard” actions.
- Outline code changes required to support the goals stated in this issue.
- Discuss backward compatibility and migration strategy for existing configurations.
- Lingua principale
- Python
- Stelle
- 779
- Fork
- 328
- Merge medio
- 2g 19h
- PR unite (30g)
- 7
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di openwisp/openwisp-controller
-
[fix] Recent Commands row uses "created" timestamp for the "Modified" fieldForse già presa @xovishnukosuri l’ha presa 217 giorni fa. Apertabug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
openwisp/openwisp-controller#1263 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[feature] Emit a signal when a device operating system changesForse già presa @Vara715 l’ha presa 1 giorno fa. Apertaenhancement
Difficoltà 3/5 Mezza giornata Idoneità per principianti 65/100
openwisp/openwisp-controller#1506 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[feature] Add board_name field to Device model for DTB board identificationForse di nuovo libera @atif09 l’ha presa 29 giorni fa e non c’è nessuna pull request aperta. Apertaenhancement gsoc
openwisp/openwisp-controller#1491 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
[bug:gsoc26] Mass command wizards started in two browser tabs overwrite each otherForse già presa @dee077 l’ha presa 31 giorni fa. Apertabug
openwisp/openwisp-controller#1489 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
openwisp/openwisp-controller#1484 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di openwisp/openwisp-controller
Issue simili
-
docs: the dev-setup table and AGENTS.md name the reviewed_by guard that CI's Changelog job runsApertaarea: tools documentation good first issue ready for a contributor
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
eyalgolan/statecraft-israel#873 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Add cover art to song rowsApertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 5 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno