Today has been quite pleasant as I've been able to make some important progress with the new webservice.
I've implemented parameter passing for RPC calls as done in opsiconfd. Now I can hook up an Python 2 JSONRPCBackend to the service running with Python 3 and everything works as expected. This means the core functionality we need from the webservice is working properly.
We still want the new webservice to replace the old one without clients having to alter their behaviour.
Another step in this direction is the possibility to parse
opsiconfd.conf and use the given settings.
opsiconfd has some options for limiting access that haven't yet been implemented.
Prior to this I've made some changes in python-opsi that fixed authenticate through PAM which I sadly broke before. Along this way I learned that from the multiple Python PAM libraries you can find pam3 on PyPI does not have any releases. Bummer. The world of Python modules appears as a jungle to me once you go away from PyPI and try to find the matching package for your Linux distro. There are quite a few similar sounding packages but finding out what version is available with what name isn't a pleasant task.
However having the service this far means that it is time for me to create a proper OS package.
Other dependencies of
opsi-server have already been ported to Python 3 and are already packaged with the only missing package being the webservice.
Keep your fingers crossed that all dependencies are now matching the ones downloaded from PyPI during development!