]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mgr/PyModule: put mgr_module_path first in sys.path 26623/head
authorTim Serong <tserong@suse.com>
Mon, 25 Feb 2019 03:47:12 +0000 (14:47 +1100)
committerTim Serong <tserong@suse.com>
Mon, 25 Feb 2019 08:05:14 +0000 (19:05 +1100)
commit7e34b27676e12c1333c5f34ef1b561c8713cddbd
tree721a1c73ac20b7a9dbc5e5eda11bc165e2072cb2
parentd7a279f7599e6917977f4770432fe3da7cfc47ed
mgr/PyModule: put mgr_module_path first in sys.path

If the various python site packages appear first in sys.path, and there
happens to be a package whose name is the same as an mgr module, mgr will
try to load that thing instead of the expected mgr module.  This results
in a very terse couple of errors:

  mgr[py] Class not found in module 'deepsea'
  mgr[py] Error loading module 'deepsea': (22) Invalid argument

Before this commit, sys.path on my SLE 11 SP1 dev system is:

  /usr/lib/python36.zip
  /usr/lib64/python3.6
  /usr/lib64/python3.6
  /usr/lib64/python3.6/lib-dynload
  /usr/lib64/python3.6/site-packages
  /usr/lib/python3.6/site-packages
  /usr/local/lib64/python3.6/site-packages
  /usr/local/lib/python3.6/site-packages
  /usr/lib64/ceph/mgr

After this commit, /usr/share/ceph/mgr comes before python's site-packages,
and everything works properly:

  /usr/lib/python36.zip
  /usr/lib64/python3.6
  /usr/lib64/python3.6
  /usr/lib64/python3.6/lib-dynload
  /usr/share/ceph/mgr
  /usr/lib64/python3.6/site-packages
  /usr/lib/python3.6/site-packages
  /usr/local/lib64/python3.6/site-packages
  /usr/local/lib/python3.6/site-packages

(If you're interested in seeing what's in sys.path, turn "debug mgr" up
to at least 10, then grep the logs for "Computed sys.path")

Fixes: https://tracker.ceph.com/issues/38469
Signed-off-by: Tim Serong <tserong@suse.com>
src/mgr/PyModule.cc