Seite 1 von 1
[solved] No module named 'opsicommon'
Verfasst: 01 Jun 2026, 11:07
von jub
Hallo zusammen!
Ich habe fuer opsi-admin eigene Extensions geschrieben (https://git.o4i.org:jens.boettge/opsi_extensions.git).
Nach dem letzten Update der opsi-utils auf Version 4.3.29.2-1 am 29.05. funktionieren diese nicht mehr:
Code: Alles auswählen
RuntimeError: Failed to execute method custom_setupWhereOutdated false true: Opsi rpc error: No module named 'opsicommon'
Zwar habe ich den Mail'26-release-Notes entnommen:
Wichtiger Hinweis für Umgebungen mit eigenen Python-Skripten oder opsi-cli-Plugins: Das Python-Paket `opsicommon` wurde durch das neue Paket `opsi`
https://github.com/opsi-org/python-opsi ersetzt, das Funktionalitäten aus mehreren bisherigen Paketen zusammenführt. Die bisherige Funktionalität ist weiterhin enthalten, befindet sich jedoch in anderen Modulen. Wer eigene Skripte oder Plugins verwendet, muss die entsprechenden Imports anpassen.
...aber ich finde eben doch nicht mehr alles.
- opsicommon.objects –> opsi.service.model.object
- opsicommon.types –> ???
Mir fehlt damit nun aber
opsicommon.types (forceProductId, forceActionRequest, forceHostId,...)
Was mich ausserdem nun verwirrt: starte ich
opsi-python funktioniert z.B. ein
noch, nicht aber ein
Viele Gruesse,
Jens
Re: No module named 'opsicommon'
Verfasst: 01 Jun 2026, 11:52
von j.schneider
Hallo Jens,
der Austausch der Python-Pakete in opsi-python passiert mit dem nächsten Release.
Die neue Version der opsi-utils ist bereits in testing (4.3.30.2).
Statt opsi-python kann man aber auch opsi-cli python verwenden.
Die Funktionen aus opsicommon.types sind jetzt in opsi.service.model.type und heißen etwas anders:
forceProductId => to_product_id, forceActionRequest => to_action_request, etc.
Grüße
Jan
Re: No module named 'opsicommon'
Verfasst: 01 Jun 2026, 16:14
von jub
Hallo Jan,
vielen Dank!
Meine Extension habe ich angepasst.
Allerdings bekomme ich nun einen anderen Fehler:
Error during execution: Opsi service connection error: HTTPSConnectionPool(host='localhost', port=4447): Max retries exceeded with url: /rpc (Caused by NewConnectionError("HTTPSConnection(host='localhost', port=4447): Failed to establish a new connection: [Errno 111] Verbindungsaufbau abgelehnt"))
Viele Gruesse,
Jens
Re: No module named 'opsicommon'
Verfasst: 02 Jun 2026, 09:43
von j.schneider
Hallo Jens,
das sieht jetzt danach aus, als würde der opsiconfd einfach nicht laufen.
Grüße
Jan
Re: No module named 'opsicommon'
Verfasst: 02 Jun 2026, 12:28
von jub
Hallo Jan,
ja, dass dachte ich auch im ersten Moment. Das ist es aber nicht; der opsiconfd laeuft.
Code: Alles auswählen
opsi-admin -dc method custom_setupWhereOutdated o4i_notepadd false true
[3] [2026-06-02 12:22:39.029] [ ] Error during execution: Opsi service connection error: HTTPSConnectionPool(host='localhost', port=4447): Max retries exceeded with url: /rpc (Caused by NewConnectionError("HTTPSConnection(host='localhost', port=4447): Failed to establish a new connection: [Errno 111] Verbindungsaufbau abgelehnt")) (opsiadmin.py:1679)
Traceback (most recent call last):
File "urllib3/connection.py", line 204, in _new_conn
File "urllib3/util/connection.py", line 85, in create_connection
File "urllib3/util/connection.py", line 73, in create_connection
ConnectionRefusedError: [Errno 111] Verbindungsaufbau abgelehnt
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "urllib3/connectionpool.py", line 787, in urlopen
File "urllib3/connectionpool.py", line 488, in _make_request
File "urllib3/connectionpool.py", line 464, in _make_request
File "urllib3/connectionpool.py", line 1093, in _validate_conn
File "urllib3/connection.py", line 759, in connect
File "urllib3/connection.py", line 219, in _new_conn
urllib3.exceptions.NewConnectionError: HTTPSConnection(host='localhost', port=4447): Failed to establish a new connection: [Errno 111] Verbindungsaufbau abgelehnt
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "requests/adapters.py", line 645, in send
File "urllib3/connectionpool.py", line 841, in urlopen
File "urllib3/util/retry.py", line 535, in increment
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='localhost', port=4447): Max retries exceeded with url: /rpc (Caused by NewConnectionError("HTTPSConnection(host='localhost', port=4447): Failed to establish a new connection: [Errno 111] Verbindungsaufbau abgelehnt"))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "opsicommon/client/opsiservice.py", line 1349, in _request
File "requests/sessions.py", line 592, in request
File "requests/sessions.py", line 706, in send
File "requests/adapters.py", line 678, in send
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='localhost', port=4447): Max retries exceeded with url: /rpc (Caused by NewConnectionError("HTTPSConnection(host='localhost', port=4447): Failed to establish a new connection: [Errno 111] Verbindungsaufbau abgelehnt"))
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "opsiutils/opsiadmin.py", line 1672, in main
File "opsiutils/opsiadmin.py", line 317, in shell_main
File "opsicommon/client/opsiservice.py", line 2457, in get_service_client
File "opsicommon/client/opsiservice.py", line 1175, in connect
File "opsicommon/client/opsiservice.py", line 1405, in _request
opsicommon.exceptions.OpsiServiceConnectionError: Opsi service connection error: HTTPSConnectionPool(host='localhost', port=4447): Max retries exceeded with url: /rpc (Caused by NewConnectionError("HTTPSConnection(host='localhost', port=4447): Failed to establish a new connection: [Errno 111] Verbindungsaufbau abgelehnt"))
Re: No module named 'opsicommon'
Verfasst: 03 Jun 2026, 15:22
von n.doerrer
Moin,
in der Fehlermeldung steht jetzt aber wieder opsicommon. Wenn es um backend-extensions geht, ist die opsiconfd-Version entscheident. Wenn der halbwegs aktuell ist, sollte statt opsicommon opsi verwendet werden.
Was passiert beim Aufruf via
Code: Alles auswählen
opsi-cli jsonrpc execute custom_setupWhereOutdated o4i_notepadd false true
Sieht man etwas im server-log wenn der Fehler auftritt? (/var/log/opsi/opsiconfd/<ip>.log)
Und etwas Abseits vom Thema: was kann "custom_setupWhereOutdated", was "opsi-cli client-action set-action-request" nicht kann?
Re: No module named 'opsicommon'
Verfasst: 03 Jun 2026, 17:26
von jub
Hallo zusammen,
installiert sind die folgenden Versionen:
- opsiconfd 4.3.53.9-1
- opsi-utils 4.3.29.2-1
- opsi-server-full 4.3.5.3-1
Woher das
opsicommon im Traceback nun wieder kommt habe ich nicht untersucht. Aus meiner Backend-Extension stammt es jedenfalls nicht. Die habe ich bereinigt und verwende nur noch
opsi.
opsicommon kann ich dort gar nicht mehr verwenden, weil dort das Modul nicht mehr gefunden wird.
Der Aufruf von `opsi-cli` funktioniert wie erwartet.
Interessanterweise hat (ohne dass ich seit gestern etwas geaendert habe) der Aufruf von
Code: Alles auswählen
opsi-admin -dc method custom_setupWhereOutdated o4i_notepadpp false true
heute funktioniert. Offenbar war der opsiconfd nach einem Neustart noch nicht so weit.
Beim `NewConnectionError` von gestern wurde nichts geloggt.
Was kann "custom_setupWhereOutdated", was "opsi-cli client-action set-action-request" nicht kann?
Eigentlich nichts. Die Extension habe ich geschrieben als es opsi-cli noch nicht gab. Diese Funktion koennte ich also durchaus durch die Verwendung von opsi-cli ersetzen. Es ist halt so, dass ich den Aufruf in vielen Skripten drin habe.
Einen Ersatz fuer eine andere Funktion habe ich aber noch nicht gefunden (auch wenn ich irgendwie im Kopf habe, dass das mit opsi-cli auch gehen muesste):
Code: Alles auswählen
custom_hostCopyProperties(self, refHostId, targetHostOrGroupId, doSetup, dryRun=False)