Package: salt-api
Version: 2018.3.4+dfsg1-6+deb10u1

Debian ships 3 patches from Benjamin Drung to make salt use the
python3-tornado4 package:
 0001-Import-tornado.gen-as-tornado_gen.patch
 0002-Explicitly-import-attributes-from-tornado.patch
 0003-Use-renamed-python3-tornado4.patch

The 3rd patch is incomplete, and as a result the rest_tornado netapi
module is totally broken.  If one configures rest_tornado[1] and tries
to start salt-api, the result is:

Process salt.loaded.int.netapi.rest_tornado.start:
Traceback (most recent call last):
  File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
    self.run()
  File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3/dist-packages/salt/netapi/rest_tornado/__init__.py", 
line 127, in start
    from tornado.httpserver import HTTPServer
ModuleNotFoundError: No module named 'tornado'

If you make the unfortunate detour of installing python3-tornado, or
already have it installed for other reasons, salt-api will start, but
it won't work at all, connections to the configured port simply hang.

The fix is straightforward; here it is in the form of a direct patch
against the offending source file:

--- /usr/lib/python3/dist-packages/salt/netapi/rest_tornado/__init__.py.orig   
2020-08-18 07:06:32.922033000 +0000
+++ /usr/lib/python3/dist-packages/salt/netapi/rest_tornado/__init__.py 
2020-08-18 06:45:28.007820241 +0000
@@ -124,7 +124,10 @@
             ssl_opts.update({'keyfile': mod_opts['ssl_key']})
         kwargs['ssl_options'] = ssl_opts
 
-    from tornado.httpserver import HTTPServer
+    try:
+        from tornado4.httpserver import HTTPServer
+    except ImportError:
+        from tornado.httpserver import HTTPServer
     http_server = HTTPServer(get_application(__opts__), **kwargs)
     try:
         http_server.bind(mod_opts['port'],

or you could just append the same hunk to the
salt/netapi/rest_tornado/__init__.py section of
debian/patches/0003-Use-renamed-python3-tornado4.patch


-- 
Jamie Heilman                     http://audible.transient.net/~jamie/

[1] 
https://docs.saltstack.com/en/latest/ref/netapi/all/salt.netapi.rest_tornado.html#module-salt.netapi.rest_tornado

Reply via email to