Gruppenzuordnung per RPC-Interface vornehmen?

Antworten
PurifyPioneer
Beiträge: 4
Registriert: 31 Jan 2024, 15:15

Gruppenzuordnung per RPC-Interface vornehmen?

Beitrag 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
Benutzeravatar
j.schneider
uib-Team
Beiträge: 1819
Registriert: 29 Mai 2008, 15:14

Re: Gruppenzuordnung per RPC-Interface vornehmen?

Beitrag 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
PurifyPioneer
Beiträge: 4
Registriert: 31 Jan 2024, 15:15

Re: Gruppenzuordnung per RPC-Interface vornehmen?

Beitrag 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
Benutzeravatar
j.schneider
uib-Team
Beiträge: 1819
Registriert: 29 Mai 2008, 15:14

Re: Gruppenzuordnung per RPC-Interface vornehmen?

Beitrag 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
PurifyPioneer
Beiträge: 4
Registriert: 31 Jan 2024, 15:15

Re: Gruppenzuordnung per RPC-Interface vornehmen?

Beitrag 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
Benutzeravatar
j.schneider
uib-Team
Beiträge: 1819
Registriert: 29 Mai 2008, 15:14

Re: Gruppenzuordnung per RPC-Interface vornehmen?

Beitrag 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.
PurifyPioneer
Beiträge: 4
Registriert: 31 Jan 2024, 15:15

Re: Gruppenzuordnung per RPC-Interface vornehmen?

Beitrag 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
Antworten