No module named 'opsicommon'

Antworten
Benutzeravatar
jub
Beiträge: 72
Registriert: 25 Nov 2010, 12:40

No module named 'opsicommon'

Beitrag 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

Code: Alles auswählen

import opsicommon
noch, nicht aber ein

Code: Alles auswählen

import opsi

Viele Gruesse,
Jens
Benutzeravatar
j.schneider
uib-Team
Beiträge: 2198
Registriert: 29 Mai 2008, 15:14

Re: No module named 'opsicommon'

Beitrag 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


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


Benutzeravatar
jub
Beiträge: 72
Registriert: 25 Nov 2010, 12:40

Re: No module named 'opsicommon'

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

Re: No module named 'opsicommon'

Beitrag von j.schneider »

Hallo Jens,

das sieht jetzt danach aus, als würde der opsiconfd einfach nicht laufen.

Grüße
Jan


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


Benutzeravatar
jub
Beiträge: 72
Registriert: 25 Nov 2010, 12:40

Re: No module named 'opsicommon'

Beitrag 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"))
Benutzeravatar
n.doerrer
uib-Team
Beiträge: 544
Registriert: 23 Okt 2020, 16:11

Re: No module named 'opsicommon'

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


Vielen Dank für die Nutzung von opsi. Im Forum ist unser Support begrenzt.

Für den professionellen Einsatz und individuelle Beratung empfehlen wir einen Support-Vertrag und eine Schulung.
Gerne informieren wir Sie zu unserem Angebot.

uib GmbH
Telefon: +49 6131 27561 0
E-Mail: sales@uib.de


Benutzeravatar
jub
Beiträge: 72
Registriert: 25 Nov 2010, 12:40

Re: No module named 'opsicommon'

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