Bug #24779
Python bindings use iteritems method which is not Python 3 compatible
% Done:
0%
Source:
Tags:
Backport:
mimic,luminous
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):
Description
In a number of places, the Ceph Python bindings use the iteritems
method, which in Python 3 gives errors like:
g1:/var/log/ceph # ceph balancer status Error EIO: Module 'balancer' has experienced an error and cannot handle commands: 'dict' object has no attribute 'iteritems'
In order to make the code compatible with Python 3, these instances of iteritems
need to be changed to items
, subject to the caveat that, in Python 2, items
does not produce an iterator. If the code demands an iterator, the iteritems function from six could be used since ceph-mgr already brings in six as a dependency (indirectly via bcrypt).
Backporting note: include https://github.com/ceph/ceph/commit/5f892430462 in the backport
Related issues
History
#1 Updated by Nathan Cutler over 5 years ago
- Description updated (diff)
#2 Updated by Nathan Cutler over 5 years ago
- Status changed from In Progress to Fix Under Review
#3 Updated by Nathan Cutler over 5 years ago
- Description updated (diff)
#4 Updated by Sage Weil over 5 years ago
- Status changed from Fix Under Review to Pending Backport
#5 Updated by Nathan Cutler over 5 years ago
- Copied to Backport #24803: mimic: Python bindings use iteritems method which is not Python 3 compatible added
#6 Updated by Nathan Cutler over 5 years ago
- Copied to Backport #24804: luminous: Python bindings use iteritems method which is not Python 3 compatible added
#7 Updated by Nathan Cutler over 5 years ago
- Status changed from Pending Backport to Resolved