Seite 1 von 1

[geloest] RPC-Methoden funktionieren nach 4.3-Upgrade nicht mehr

Verfasst: 15 Feb 2024, 13:42
von jub
Hallo allerseits,

nach dem Upgrade auf OPSI 4.3 ist eines meiner Monitoring-Scripte aus dem Tritt geraten.

Der erste Stolperer war den Imports geschuldet. Aus

Code: Alles auswählen

from OPSI.Backend.BackendManager import BackendManager
backend = BackendManager()
ist

Code: Alles auswählen

from opsicommon.client.opsiservice import get_service_client
backend = get_service_client()
geworden. – Soweit kein Problem.

Allerdings scheitert nun der Aufruf von

Code: Alles auswählen

backend.getProducts_hash(DepotServer)
bzw.

Code: Alles auswählen

backend.getProducts_listOfHashes(DepotServer) 
mit der Fehlermeldung:
opsicommon.exceptions.OpsiRpcError: Opsi rpc error: Bad object id: ''
Alle anderen verwendeten Methoden funktionieren.

Gerade bin ich noch auf die Idee gekommen getProducts_hash und getProducts_listOfHashes mit opsi-admin zu testen. Aber auch hier erhalte ich den gleichen Fehler.


Viele Gruesse,
Jens

Re: RPC-Methoden funktionieren nach 4.3-Upgrade nicht mehr

Verfasst: 16 Feb 2024, 07:05
von j.schneider
Hallo,

auf dem Admin-Interface https://<opsi-server>:4447/admin/#rpc-interface kann man sich die verfügbaren Methoden gut anschauen.
Bei den deprecated-Methoden befindet sich in der Regel auch ein Hinweis auf eine alternative Methode.
Je nachdem was benötigt wird kann man verwenden:

Code: Alles auswählen

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "productOnDepot_getObjects",
  "params": [
    [],
    {
      "depotId": "<depot-id>"
    }
  ]
}
Und z.B.:

Code: Alles auswählen

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "product_getObjects",
  "params": [
    [],
    {
      "id": [
        "hwaudit",
        "swaudit",
        ...
      ]
    }
  ]
}
Grüße
Jan Schneider

Re: RPC-Methoden funktionieren nach 4.3-Upgrade nicht mehr

Verfasst: 16 Feb 2024, 07:49
von jub
Hallo Jan,

danke!

Dass die Methoden deprecated sein koennten hatte ich zwar schon in Betracht gezogen, bin dann aber davon ausgegangen, dass sie zumindest noch funktionieren.
Gesucht habe ich dann umstaendlicher im Git-Repo (https://github.com/opsi-org/python-opsi-common).
Die Exceptions in Python und die Meldungen im opsi-admin (sind ja die gleichen) sind da wenig aussagekraetftig.

Da die Methoden ja bisher nur deprecated und noch nicht entfernt sind, wuerde ich die nun gerne (bis ich die Scripte komplett umgestellt habe) nochmal fuer meine Scripte aktivieren.


Viele Gruesse,
Jens

Re: RPC-Methoden funktionieren nach 4.3-Upgrade nicht mehr

Verfasst: 16 Feb 2024, 08:04
von jub
Okay, ich sehe gerade, dass die Methoden so deprecated sind, dass auch das Admin-Interface sagt:

Code: Alles auswählen

{
  "id": 1,
  "error": {
    "message": "Bad object id: ''",
    "code": 0,
    "data": {
      "class": "ValueError",
      "details": "..."
    }
  },
  "jsonrpc": "2.0"
}
:?

Re: RPC-Methoden funktionieren nach 4.3-Upgrade nicht mehr

Verfasst: 16 Feb 2024, 09:41
von Rzpertt
gibt es dann einen Ersatz für "getClientsWithOutdatedProduct" ?

Re: RPC-Methoden funktionieren nach 4.3-Upgrade nicht mehr

Verfasst: 16 Feb 2024, 16:31
von j.schneider
Eine Methode die deprecated ist, sollte normalerweise noch funktionieren.
Sie wird aber in Zukunft entfernt werden.
Die deprecated-Methoden werden nicht mehr automatisch getestet, daher kann es hier eher zu Fehlern kommen.

In opsiconfd 4.3.7.2 sind die beiden Methoden gefixt.
Die Version liegt aktuell im experimental-Repo:
https://software.opensuse.org//download ... =opsiconfd

Generell kann man alle deprecated-Methoden durch andere Methoden ersetzen.
Manchmal sind dafür jedoch mehrere Methoden-Aufrufe notwendig.

Wir planen eine insgesamt verbesserte API für das nächste opsi Major-Release.

Grüße
Jan Schneider

Re: [geloest] RPC-Methoden funktionieren nach 4.3-Upgrade nicht mehr

Verfasst: 14 Mär 2024, 14:26
von jub
Etwas verspaetet, aber: Vielen Dank!