From b38b3a3c134d888ff73dd8756df4e6998c0d5a78 Mon Sep 17 00:00:00 2001
From: Chang Bo Guo <guochbo@cn.ibm.com>
Date: Tue, 3 Dec 2013 15:41:59 +0000
Subject: [PATCH] Replace data structures' attribute with six module

In Python 3, some data structures' attribute is different in Python 2.
See http://pythonhosted.org/six/#object-model-compatibility
This is change mapping:

   six               Python 2           Python 3
six.next(it)         it.next()          next(it)
six.iterkeys(dict)   dict.iterkeys()    dict.keys()
six.itervalues(dict) dict.itervalues()  dict.values()

Implements: blueprint make-python3-compatible
Change-Id: Ida48f39ff230860feee7305b93b134c625a21663
---
 oslo/messaging/_drivers/common.py      | 2 +-
 oslo/messaging/_drivers/impl_qpid.py   | 5 +++--
 oslo/messaging/_drivers/impl_rabbit.py | 5 +++--
 oslo/messaging/_drivers/impl_zmq.py    | 5 +++--
 4 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/oslo/messaging/_drivers/common.py b/oslo/messaging/_drivers/common.py
index 8c2d57c95..ebec95098 100644
--- a/oslo/messaging/_drivers/common.py
+++ b/oslo/messaging/_drivers/common.py
@@ -275,7 +275,7 @@ def _safe_log(log_func, msg, msg_data):
 
     def _fix_passwords(d):
         """Sanitizes the password fields in the dictionary."""
-        for k in d.iterkeys():
+        for k in six.iterkeys(d):
             if k.lower().find('password') != -1:
                 d[k] = '<SANITIZED>'
             elif k.lower() in SANITIZE:
diff --git a/oslo/messaging/_drivers/impl_qpid.py b/oslo/messaging/_drivers/impl_qpid.py
index baa040374..4df454c91 100644
--- a/oslo/messaging/_drivers/impl_qpid.py
+++ b/oslo/messaging/_drivers/impl_qpid.py
@@ -21,6 +21,7 @@ import time
 import eventlet
 import greenlet
 from oslo.config import cfg
+import six
 
 from oslo.messaging._drivers import amqp as rpc_amqp
 from oslo.messaging._drivers import amqpdriver
@@ -523,7 +524,7 @@ class Connection(object):
             consumers = self.consumers
             self.consumers = {}
 
-            for consumer in consumers.itervalues():
+            for consumer in six.itervalues(consumers):
                 consumer.reconnect(self.session)
                 self._register_consumer(consumer)
 
@@ -681,7 +682,7 @@ class Connection(object):
         it = self.iterconsume(limit=limit, timeout=timeout)
         while True:
             try:
-                it.next()
+                six.next(it)
             except StopIteration:
                 return
 
diff --git a/oslo/messaging/_drivers/impl_rabbit.py b/oslo/messaging/_drivers/impl_rabbit.py
index dccde7e2b..6f4c9904f 100644
--- a/oslo/messaging/_drivers/impl_rabbit.py
+++ b/oslo/messaging/_drivers/impl_rabbit.py
@@ -27,6 +27,7 @@ import kombu.connection
 import kombu.entity
 import kombu.messaging
 from oslo.config import cfg
+import six
 
 from oslo.messaging._drivers import amqp as rpc_amqp
 from oslo.messaging._drivers import amqpdriver
@@ -620,7 +621,7 @@ class Connection(object):
 
         def _declare_consumer():
             consumer = consumer_cls(self.conf, self.channel, topic, callback,
-                                    self.consumer_num.next())
+                                    six.next(self.consumer_num))
             self.consumers.append(consumer)
             return consumer
 
@@ -724,7 +725,7 @@ class Connection(object):
         it = self.iterconsume(limit=limit, timeout=timeout)
         while True:
             try:
-                it.next()
+                six.next(it)
             except StopIteration:
                 return
 
diff --git a/oslo/messaging/_drivers/impl_zmq.py b/oslo/messaging/_drivers/impl_zmq.py
index 6f5ef9c46..30f0ec2cc 100644
--- a/oslo/messaging/_drivers/impl_zmq.py
+++ b/oslo/messaging/_drivers/impl_zmq.py
@@ -27,6 +27,7 @@ import uuid
 import eventlet
 import greenlet
 from oslo.config import cfg
+import six
 from six import moves
 
 from oslo.messaging._drivers import base
@@ -532,8 +533,8 @@ def unflatten_envelope(packenv):
     h = {}
     try:
         while True:
-            k = i.next()
-            h[k] = i.next()
+            k = six.next(i)
+            h[k] = six.next(i)
     except StopIteration:
         return h