[ceph pacific 16.2.9]

I have a crush_location_hook script which is a small python3 script that 
figures out the correct root/chassis/host location for a particular OSD.  Our 
map has 2 roots, one for an all-SSD, and another for HDDs, thus the need for 
the location hook. Without it, the SSD devices end up in the wrong crush 
location.  Prior to 16.2.9 release, they weren't being used because of a bug 
that was causing the OSDs to crash with the hook.  Now that we've upgraded to 
16.2.9 we want to use our location hook script again, but it fails in a 
different way.

The script works correctly when testing it standalone with the right 
parameters, but when it is called by the OSD process, it fails because when the 
ceph command references 'sys.stdin.isatty()' (at line 538 in /usr/bin/ceph), it 
isn't found because sys.stdin is NoneType.  I suspect this is because of how 
the OSD spawns the crush hook script, which then forks the ceph command.  
Somehow python (3.8) is not initializing the stdin, stdout, stderr members in 
the 'sys' module object.

Looking for guidance on how to get my location hook script to successfully use 
the "ceph" command to get the output of "ceph osd tree --format json"

thanks,
   Wyllys Ingersoll


_______________________________________________
ceph-users mailing list -- ceph-users@ceph.io
To unsubscribe send an email to ceph-users-le...@ceph.io

Reply via email to