Hi,
zunächst vielen Dank für das Lob
Wir sind fleißig an der Webgui am arbeiten. Allerdings ist uns die Qualität der Anwendung wichtiger als ein schnelles Release.
- Deswegen kann momentan keine Aussage zur Verfügbarkeit getroffen werden.
- Nach derzeitigem Stand soll die Webgui kostenfrei bereitgestellt werden
- und, wie der Code jeder unserer Anwendungen soll auch der der Webgui auf github verfügbar sein.
Nun zu den Technischen Fragen:
Die Webgui ist abgekoppelt vom opsi-backend. Das heißt, sie kann auf einer anderen Maschine (kein opsiserver) gehostet werden. Somit ist Django lediglich ein "ZwischenBackend", welches mit dem opsiserver über JSONRPC kommuniziert. Dafür ist es notwendig, dass der Benutzer sich beim opsi-server erfolgreich authentifiziert. Der derzeitige Stand ist, dass der Benutzer mit dem man sich anmeldet nicht der ist, der die Anfragen an das Backend sendet. Allerdings müssen beide Benutzer opsi-admin Rechte besitzen. Für die Rechteverwaltung innerhalb von opsi werden dann die user-roles verwendet (Eingeschränkter Zugriff auf Depots /Clientgruppen). Für die Authentifizierung über andere Provider, wie ldap, soll dann der Service zuständig sein, damit nicht alles doppelt/dreifach/.. implementiert werden muss.
Bezüglich der Datenbank: Das ist ein interessante Vorgehensweise. Allerdings sehe ich da Probleme bezüglich der Verwendung der python-opsi-Methoden. Momentan wird eine python-opsi Instanz benötigt, über die die Kommunikation zum opsiserver stattfindet (Verwendung von host_getObjects etc.. innerhalb von Django). Zusätzlich liefern (extra für die webgui) neue Backend Methoden der Gui lediglich die Daten, die auch benötigt werden. Für den Fall, dass man zwei (im besten Fall immer identische) Datenbanken hat, also "Djangodb" und "opsiserverdb" müsste man praktisch einen python-opsi Wrapper bauen, der bestimmt, welche Methoden auf die lokalen und welche auf die "echten" Daten zugreift (lesen / schreiben). Und ohne python-opsi würde man die gleichen Methoden ggf erneut implementieren müssen. Außerdem bin ich mir nicht sicher, ob sich die Performance-Einsparung durch die stetige Synchronisation der Datenbanken wieder ausgeglichen werden würde.
Bezüglich der Django Apps ist derzeit kein Plugin System geplant. Das Problem ist da eher, dass wir Django wirklich nur als Zwischenbackend verwenden um das echte Backend nach Daten zu Fragen (Die Django-Templates verwenden wir nicht) . Denkbar wäre auch die Konstellation, dass Django vollständig entfällt und das Frontend direkt das Backend nach Daten fragt. Frontend-seitig und eigentlich komplett getrennt von Django verwenden wir VueJS. Hier findet die meiste Logik/Arbeit/.. statt. Aber ich behalte mir die Idee im Hinterkopf, dass beispielsweise eigene Seiten/Komponenten o.ä. "customiziert" bzw. selbst entwickelt werden können.
Ich hoffe das beantwortet jetzt alle Fragen
