From: Tim Serong Date: Mon, 10 Sep 2018 10:27:11 +0000 (+1000) Subject: ceph-disk: compatibility fix for python 3 X-Git-Tag: v13.2.2~5^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F24008%2Fhead;p=ceph.git ceph-disk: compatibility fix for python 3 In python 3, dev is a string, but mounts_dev is bytes (because /proc/mounts was opened with mode 'rb') so they can't compare equal, resulting in is_mounted() returning None for mounted OSDs. The safest fix for this we could come up with was to normalize dev to a str using _bytes2str() (just in case), and open /proc/mounts in mode 'r', so its lines are interpreted as strs. Fixes: https://tracker.ceph.com/issues/35906 Signed-off-by: Tim Serong --- diff --git a/src/ceph-disk/ceph_disk/main.py b/src/ceph-disk/ceph_disk/main.py index 8f32ce4d5145..639c49e7e10e 100644 --- a/src/ceph-disk/ceph_disk/main.py +++ b/src/ceph-disk/ceph_disk/main.py @@ -909,8 +909,8 @@ def is_mounted(dev): """ Check if the given device is mounted. """ - dev = os.path.realpath(dev) - with open(PROCDIR + '/mounts', 'rb') as proc_mounts: + dev = os.path.realpath(_bytes2str(dev)) + with open(PROCDIR + '/mounts', 'r') as proc_mounts: for line in proc_mounts: fields = line.split() if len(fields) < 3: