Project

General

Profile

Bug #24779

Python bindings use iteritems method which is not Python 3 compatible

Added by Nathan Cutler about 2 years ago. Updated almost 2 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
mimic,luminous
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature:

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

Copied to Ceph - Backport #24803: mimic: Python bindings use iteritems method which is not Python 3 compatible Resolved
Copied to Ceph - Backport #24804: luminous: Python bindings use iteritems method which is not Python 3 compatible Resolved

History

#1 Updated by Nathan Cutler about 2 years ago

  • Description updated (diff)

#2 Updated by Nathan Cutler about 2 years ago

  • Status changed from In Progress to Fix Under Review

#3 Updated by Nathan Cutler about 2 years ago

  • Description updated (diff)

#4 Updated by Sage Weil about 2 years ago

  • Status changed from Fix Under Review to Pending Backport

#5 Updated by Nathan Cutler about 2 years ago

  • Copied to Backport #24803: mimic: Python bindings use iteritems method which is not Python 3 compatible added

#6 Updated by Nathan Cutler about 2 years ago

  • Copied to Backport #24804: luminous: Python bindings use iteritems method which is not Python 3 compatible added

#7 Updated by Nathan Cutler almost 2 years ago

  • Status changed from Pending Backport to Resolved

Also available in: Atom PDF