[gelöst] Python: OPSI.Backend.BackendManager remote?

The place for development of / with / for opsi.
Post your API questions here!
Antworten
fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

[gelöst] Python: OPSI.Backend.BackendManager remote?

Beitrag von fredfanatics »

Hallo Forum,

Ich möchte gerne von meiner lokalen Maschine, meine OPSI-Server per Python ansprechen.
Das Paket python-opsi habe ich installiert, Die Klasse BackendManager fragt allerdings nach einer dispatch.conf, die natürlich auf dem entfernten Configserver liegt.
Hat jemand einen Ansatz, wie ich den BackendManager instanzieren muss, damit ich remote arbeiten kann?

Code: Alles auswählen

from OPSI.Backend import BackendManager
bm = BackendManager.BackendManager() #Parameter für den Remoteserver?
bm.getClientIds_list()

Code: Alles auswählen

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    bm = BackendManager.BackendManager()
  File "/usr/lib/python2.7/dist-packages/OPSI/Backend/BackendManager.py", line 227, in __init__
    self._backend = BackendDispatcher(context=self, **kwargs)
  File "/usr/lib/python2.7/dist-packages/OPSI/Backend/BackendManager.py", line 324, in __init__
    self.__loadDispatchConfig()
  File "/usr/lib/python2.7/dist-packages/OPSI/Backend/BackendManager.py", line 356, in __loadDispatchConfig
    raise BackendConfigurationError(u"Dispatch config file '%s' not found" % self._dispatchConfigFile)
OPSI.Exceptions.BackendConfigurationError: <BackendConfigurationError(u"Dispatch config file '/etc/opsi/backendManager/dispatch.conf' not found")>
Vielen Dank
Zuletzt geändert von fredfanatics am 19 Feb 2019, 07:55, insgesamt 1-mal geändert.
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Python: OPSI.Backend.BackendManager remote?

Beitrag von n.wenselowski »

Hi,

du kannst in so einem Fall direkt ein JSONRPCBackend verwenden:

Code: Alles auswählen

from OPSI.Backend.JSONRPC import JSONRPCBackend
b = JSONRPCBackend(address="https://deinserver:4447/rpc", username="deinuser", password="deinpw")
print(b.host_getObjects())
Gruß

Niko

PS: Thema verschoben.

Code: Alles auswählen

import OPSI
fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

Re: Python: OPSI.Backend.BackendManager remote?

Beitrag von fredfanatics »

Prima! Dankeschön, das klappt schon mal...

Gibt's evtl 'ne Möglichkeit, python-opsi per pip3 zu installieren? Ich habe ein virtualenv für meine jupyter-Umgebung eingerichtet und möchte dort ein Notebook für OPSI Dinge entwickeln. Dazu müsste ich python-opsi in die Umgebung bekommen.

Grüße
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Python: OPSI.Backend.BackendManager remote?

Beitrag von n.wenselowski »

Hi,
fredfanatics hat geschrieben:Gibt's evtl 'ne Möglichkeit, python-opsi per pip3 zu installieren? Ich habe ein virtualenv für meine jupyter-Umgebung eingerichtet und möchte dort ein Notebook für OPSI Dinge entwickeln. Dazu müsste ich python-opsi in die Umgebung bekommen.
Aktuell setzt opsi noch auf Python 2.7.
An Support für Python 3 wird gearbeitet, aber eine entsprechende Version ist noch nicht veröffentlicht - also klappt ein pip3 install ... noch nicht.
Über den Fortschritt berichten wir gelegentlich im Entwickler-Blog.


Gruß

Niko

Code: Alles auswählen

import OPSI
fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

Re: Python: OPSI.Backend.BackendManager remote?

Beitrag von fredfanatics »

Ok, eine Umgebung mit Python2.7 ist ja auch kein Problem, leider knallt

Code: Alles auswählen

jupyter_opsi/bin/pip install -r requirements.txt
mit einer Fehlermeldung bzgl. mysql

Code: Alles auswählen

Collecting mysql-python
  Using cached https://files.pythonhosted.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip
    Complete output from command python setup.py egg_info:
    sh: 1: mysql_config: not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-OBmKBq/mysql-python/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "setup_posix.py", line 43, in get_config
        libs = mysql_config("libs_r")
      File "setup_posix.py", line 25, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    EnvironmentError: mysql_config not found
und beim Aufruf des Codes für das Backend kommt (im jupyter-Notebook)

Code: Alles auswählen

ImportError                               Traceback (most recent call last)
<ipython-input-1-a53884a2a661> in <module>()
----> 1 from OPSI.Backend.JSONRPC import JSONRPCBackend
      2 b = JSONRPCBackend(address="https://deinserver:4447/rpc", username="deinuser", password="deinpw")
      3 print(b.host_getObjects())

/home/a_rschreiner/jupyter_opsi/local/lib/python2.7/site-packages/OPSI/Backend/JSONRPC.py in <module>()
     39 from Queue import Queue, Empty
     40 from sys import version_info
---> 41 from twisted.conch.ssh import keys
     42 
     43 from OPSI import __version__

ImportError: No module named twisted.conch.ssh
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: Python: OPSI.Backend.BackendManager remote?

Beitrag von n.wenselowski »

Hi,

MySQL-python braucht die Headerfiles für den Bau des Moduls.
Wenn du sowieso nur JSONRPC auf deinem Rechner machen willst, kannst du mal versuchen, ob es nicht ausreichend sein könnte die entsprechende Zeile in der requirements.txt auszukommentieren. Weitere allgemeine Informationen finden sich auch in der Readme.

Wenn die Installation der Requirements durch ist sollte der nächste Fehler auch kein Problem mehr darstellen.


Gruß

Niko

Code: Alles auswählen

import OPSI
fredfanatics
Beiträge: 39
Registriert: 10 Nov 2016, 09:33

Re: Python: OPSI.Backend.BackendManager remote?

Beitrag von fredfanatics »

Hat geklappt, danke! :D
Antworten