Seite 1 von 1
Gruppenzuordnung per RPC-Interface vornehmen?
Verfasst: 31 Jan 2024, 15:29
von PurifyPioneer
Moin!
Ich probiere aktuell mit der Methode "objectToGroup_updateObject" des RPC-Interface die HostGroup eines Clients zu aktualisieren.
Ich bin bei folgender Abfrage angelangt, die nun keine Fehlermeldung mehr wirft aber leider nicht zum gewünschten Ergebnis führt (Gruppe des Clients wird nicht aktualisiert):
Code: Alles auswählen
opsi-cli jsonrpc execute objectToGroup_updateObject '{"groupType":"HostGroup","type":"ObjectToGroup","groupId":"<ID>","objectId":"<FQDN>"}'
Die Ausgabe auf der Kommandozeile ist lediglich "null".
Was übersehe ich und gibt es ggf. irgendwo noch eine erweiterte Doku zu den RPC Methoden bzw. wie diese zu verwenden sind? Schön wäre z.B. beim Befehl opsi-cli --output-format table jsonrpc methods ein Feld description mit einer kurzen Beschreibung der Methode zu haben.
Mit freundlichem Gruß
Christian
Re: Gruppenzuordnung per RPC-Interface vornehmen?
Verfasst: 01 Feb 2024, 16:06
von j.schneider
Hallo Christian,
hier findest Du die Dokumentation der JSONRPC-API:
https://docs.opsi.org/opsi-docs-de/4.3/ ... c-api.html
updateObject würde das entsprechende
ObjectToGroup-Objekt aktualisieren, es erzeugt es aber nicht.
Du kannst an dieser Stelle
updateObjects (man beachte das
s am Ende) oder
insertObject verwenden.
Grüße
Jan Schneider
Re: Gruppenzuordnung per RPC-Interface vornehmen?
Verfasst: 05 Feb 2024, 11:54
von PurifyPioneer
Moin Jan,
danke für deine Antwort. Mit
insertObject hat das Hinzufügen des Objekts zu einer zweiten Gruppe geklappt. Jetzt könnte ich ja einfach die alte Zuordnung löschen. Ich meine irgendwo aber auch gelesen zu haben, dass ich als Administrator sorge zu tragen habe, dass es zu jeder Zeit nur ein
ObjectToGroup-Objekt für jedes Objekt gibt. Auch deswegen würde ich gerne die bestehende Zuweisung aktualisieren. Nur ist mir leider nach wie vor nicht ganz klar, wie dafür die
updateObject Methode zu verwenden ist. Ich kann als Parameter ja lediglich ein
ObjectToGroup-Objekt angeben. Wie würde ich also den zu ändernden Parameter (
groupID) angeben? Vorausgesetzt das Objekt existiert.
Zusammengefasst:
Ich möchte das Objekt
Code: Alles auswählen
'{"groupType":"HostGroup","type":"ObjectToGroup","groupId":"Gruppe-A","objectId":"pc.test.de"}'
aktualisieren zu
Code: Alles auswählen
'{"groupType":"HostGroup","type":"ObjectToGroup","groupId":"Gruppe-B","objectId":"pc.test.de"}'
Nach meinem Verständnis funktioniert das aber nicht, da
A: das Objekt zwar gefunden aber nicht modifiziert wird oder
B: das Objekt nicht gefunden und nicht angelegt wird
Wo habe ich noch einen Denkfehler?
Mit freundlichem Gruß
Christian
Re: Gruppenzuordnung per RPC-Interface vornehmen?
Verfasst: 05 Feb 2024, 13:23
von j.schneider
Hallo,
ein Host kann auch in mehreren Gruppen sein.
Also sind mehrere ObjectToGroup-Objekte mit der gleichen objectId zulässig.
Gruppenzugehörigkeiten können durch das Löschen eines ObjectToGroup-Objekts aufgehoben werden.
Dafür kann man objectToGroup_deleteObjects bzw. objectToGroup_delete verwenden.
Grüße
Jan Schneider
Re: Gruppenzuordnung per RPC-Interface vornehmen?
Verfasst: 05 Feb 2024, 14:44
von PurifyPioneer
Das ist gut zu wissen, dass das mit den mehreren Gruppen kein Problem darstellt.
Meine Frage ist aber nach wie vor offen und zwar wie würde ich den zu ändernden Parameter (z.B.
groupID) bei einem Aufruf der
ObjectToGroup_updateObject Methode angeben?
Laut Signatur nimmt die Methode ja nur ein
objectToGroup Objekt an:
(und wenn ich in diesem Objekt eine neue
groupID angebe wird das
objectToGroup Objekt ja nicht gefunden)
Code: Alles auswählen
│ name │ params │ deprecated │ alternative_method │
│ objectToGroup_updateObject │ objectToGroup │ false │ │
Gruß
Christian
Re: Gruppenzuordnung per RPC-Interface vornehmen?
Verfasst: 05 Feb 2024, 19:06
von j.schneider
Die aktuelle API ist aus historischen Gründen leider etwas ungewohnt und sperrig.
Die Objekte haben nicht unbedingt eine ID, sie haben aber immer einen "ident".
Dieser besteht aus mehreren Attributen.
In diesem Fall "groupType", "groupId" und "objectId".
Der Ident lässt sich über updates nicht verändern.
Daher kann das bestehende Objekt gelöscht und ein neues angelegt werden.
Re: Gruppenzuordnung per RPC-Interface vornehmen?
Verfasst: 06 Feb 2024, 13:16
von PurifyPioneer
Okay, alles klar. Danke nochmal für die ausführlichen Antworten.
Werde es dann so wie beschrieben handhaben mit dem Löschen und neu anlegen.
Gruß
Christian