calling ceph command from a crush_location_hook - fails to find sys.stdin.isatty()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[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@xxxxxxx
To unsubscribe send an email to ceph-users-leave@xxxxxxx



[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Ceph Dev]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux