Opsi Event abfangen / Dispatch Konfiguration

tb-killa
Beiträge: 33
Registriert: 22 Okt 2017, 16:59

Opsi Event abfangen / Dispatch Konfiguration

Beitragvon tb-killa » 30 Nov 2017, 19:35

Hallo wir haben mal eine Frage zum Thema Opsi-Python und der Zusammenarbeit mit der Dispatch Konfiguration.
Wir würden gerne Events (Bereich: "hostControl_XXXX" ) Abfangen und diese entsprechend weiterverarbeiten bzw. falls möglich auf ein Event selber reagieren und entsprechende Aktionen auslösen.

Vielleicht könnte man im Bereich: "Opsi Support - Deutsch" eine Unterkategorie "Development / Entwicklung" kreieren, um z.B. solche Fragen bzw. Scripte zu posten und zu diskutieren ??.

Benutzeravatar
ueluekmen
Beiträge: 1875
Registriert: 28 Mai 2008, 10:53

Re: Opsi Event abfangen / Dispatch Konfiguration

Beitragvon ueluekmen » 30 Nov 2017, 20:51

Hi,

es gibt zwei Methoden im Moment, wie man das macht.

1. Dispatch... Über den DIspatcher kann man diese Methoden an ein weiteres Backend weiterleiten. Dafür muss man aber ein eigenes Backend schreiben, dass zu erklären würde sogar einen bezahltes Supportticket übersteigen. :lol:
2. Über den Extender die Methode überschreiben. Auch das ist nicht trivial, aber VIEL einfacher als das erste, es überlebt auch Updates von uns (muss aber hier und da vielleicht angepasst werden nach dem Update) und es ist auch im Manual beschrieben wie man das macht. Man kann sich auch einfach die anderen Dinge anschauen, die es da schon gibt:

Code: Alles auswählen

/etc/opsi/backendManager/extend.d/


Hier mal ein aktuelles Beispiel, was die Sache schon ziemlich auf den Punkt bringt:

Folgendes als 99_opsirocks.conf ins obige Verzeichnis kopieren und an die Rechte denken:

Code: Alles auswählen

# -*- coding: utf-8 -*-
def hostControl_reachable(self, hostIds=[], timeout=None):
        result = self._backend.hostControl_reachable(hostIds=hostIds, timeout=timeout)
        result["Wichtig!"] = "SAFE THE DATE: 6./7. März 2018 opsi-Anwenderkonferenz in Mainz"
        result["Jetzt Registrieren unter"] = "https://opsiconf.org"
        return result


Erzeugt folgendes Ergebnis beim Test:

Code: Alles auswählen

opsi-admin -d method hostControl_reachable '["wanclient.vmnat.local"]'
{
    "wanclient.vmnat.local": false,
    "Wichtig!": "SAFE THE DATE: 6./7. März 2018 opsi-Anwenderkonferenz in Mainz",
    "Jetzt Registrieren unter": "https://opsiconf.org"
}


Über einen eigenen Dev-Bereich im Forum werden wir im Team Diskutieren. Fragen über die Entwicklung sind eher selten.
opsi support - uib gmbh
For productive opsi installations we recommend support contracts.
http://www.uib.de

tb-killa
Beiträge: 33
Registriert: 22 Okt 2017, 16:59

Re: Opsi Event abfangen / Dispatch Konfiguration

Beitragvon tb-killa » 30 Nov 2017, 22:10

Hi,

super vielen Dank für diese Klasse Unterstützung und der sagenhaft schnellen Hilfe :-).
Wir werden uns die entsprechenden Stellen anschauen, generell denke ich sollte das zuletzt aufgezeigte Beispiel in der entsprechenden Anpassung funktionieren.

Vielleicht kann man das Thema ja baldig in einem neuen Bereich des Forum weiter vertiefen ;)

Benutzeravatar
ueluekmen
Beiträge: 1875
Registriert: 28 Mai 2008, 10:53

Re: Opsi Event abfangen / Dispatch Konfiguration

Beitragvon ueluekmen » 01 Dez 2017, 22:02

Eine kleine Warnung muss ich aber noch loswerden: Das ist ein sehr mächtiges Feature, aber gleichzeitig auch sehr gefährlich. Jeder Fehler sorgt zum sofortigen Stop des Webservice und das Systemweit. Eine Entwicklungsumgebung ist Pflicht bei solchen Sachen und VIIIIEEEELLLL testen, besonders wenn vorhandene Methoden wie im obigen Beispiel Überladen und Manipuliert werden. Wir bauen sowas (auch in kompliziert) über unsere Supportverträge.
opsi support - uib gmbh
For productive opsi installations we recommend support contracts.
http://www.uib.de