From d12d7a73ff6a1de482bcdb978e0fb7afd8cfe648 Mon Sep 17 00:00:00 2001
From: Chuck Short <chuck.short@canonical.com>
Date: Tue, 11 Jun 2013 13:22:56 -0500
Subject: [PATCH] python3: compatibility for iteritems and iterkeys

Use six to allow python2/pyton3 for iteritems and
iterkeys.

six.iteriems() replaces dictionary.iteritems() (python2)
and dictionary.iterms() (python3)

six.iterkeys() replaces dictionary.iterkeys (python2)
and dictionary.keys() (python3)

Change-Id: I26c80b78a7dedf3aa32eedf01a83ff6d1e592ba7
Signed-off-by: Chuck Short <chuck.short@canonical.com>
---
 cinderclient/base.py                | 5 ++++-
 cinderclient/utils.py               | 3 ++-
 cinderclient/v1/volume_snapshots.py | 3 ++-
 cinderclient/v1/volumes.py          | 3 ++-
 cinderclient/v2/volume_snapshots.py | 3 ++-
 cinderclient/v2/volumes.py          | 3 ++-
 requirements.txt                    | 1 +
 tools/colorizer.py                  | 3 ++-
 8 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/cinderclient/base.py b/cinderclient/base.py
index 6024f59c3..7577773a6 100644
--- a/cinderclient/base.py
+++ b/cinderclient/base.py
@@ -22,6 +22,9 @@ import abc
 import contextlib
 import hashlib
 import os
+
+import six
+
 from cinderclient import exceptions
 from cinderclient import utils
 
@@ -248,7 +251,7 @@ class Resource(object):
         return None
 
     def _add_details(self, info):
-        for (k, v) in info.iteritems():
+        for (k, v) in six.iteritems(info):
             try:
                 setattr(self, k, v)
             except AttributeError:
diff --git a/cinderclient/utils.py b/cinderclient/utils.py
index 1a0034a41..44522e08e 100644
--- a/cinderclient/utils.py
+++ b/cinderclient/utils.py
@@ -18,6 +18,7 @@ import re
 import sys
 import uuid
 
+import six
 import prettytable
 
 from cinderclient import exceptions
@@ -165,7 +166,7 @@ def print_list(objs, fields, formatters={}):
 def print_dict(d, property="Property"):
     pt = prettytable.PrettyTable([property, 'Value'], caching=False)
     pt.aligns = ['l', 'l']
-    [pt.add_row(list(r)) for r in d.iteritems()]
+    [pt.add_row(list(r)) for r in six.iteritems(d)]
     print strutils.safe_encode(pt.get_string(sortby=property))
 
 
diff --git a/cinderclient/v1/volume_snapshots.py b/cinderclient/v1/volume_snapshots.py
index 50fa56645..be1ae5200 100644
--- a/cinderclient/v1/volume_snapshots.py
+++ b/cinderclient/v1/volume_snapshots.py
@@ -19,6 +19,7 @@ Volume snapshot interface (1.1 extension).
 
 import urllib
 from cinderclient import base
+import six
 
 
 class Snapshot(base.Resource):
@@ -95,7 +96,7 @@ class SnapshotManager(base.ManagerWithFind):
 
         qparams = {}
 
-        for opt, val in search_opts.iteritems():
+        for opt, val in six.iteritems(search_opts):
             if val:
                 qparams[opt] = val
 
diff --git a/cinderclient/v1/volumes.py b/cinderclient/v1/volumes.py
index 7ab7e3c22..9903f10fa 100644
--- a/cinderclient/v1/volumes.py
+++ b/cinderclient/v1/volumes.py
@@ -18,6 +18,7 @@ Volume interface (1.1 extension).
 """
 
 import urllib
+import six
 from cinderclient import base
 
 
@@ -167,7 +168,7 @@ class VolumeManager(base.ManagerWithFind):
 
         qparams = {}
 
-        for opt, val in search_opts.iteritems():
+        for opt, val in six.iteritems(search_opts):
             if val:
                 qparams[opt] = val
 
diff --git a/cinderclient/v2/volume_snapshots.py b/cinderclient/v2/volume_snapshots.py
index d3ae632f9..240bdc662 100644
--- a/cinderclient/v2/volume_snapshots.py
+++ b/cinderclient/v2/volume_snapshots.py
@@ -15,6 +15,7 @@
 
 """Volume snapshot interface (1.1 extension)."""
 
+import six
 import urllib
 
 from cinderclient import base
@@ -83,7 +84,7 @@ class SnapshotManager(base.ManagerWithFind):
 
         qparams = {}
 
-        for opt, val in search_opts.iteritems():
+        for opt, val in six.iteritems(search_opts):
             if val:
                 qparams[opt] = val
 
diff --git a/cinderclient/v2/volumes.py b/cinderclient/v2/volumes.py
index cf9f9acf2..a9b69ab1c 100644
--- a/cinderclient/v2/volumes.py
+++ b/cinderclient/v2/volumes.py
@@ -15,6 +15,7 @@
 
 """Volume interface (v2 extension)."""
 
+import six
 import urllib
 
 from cinderclient import base
@@ -161,7 +162,7 @@ class VolumeManager(base.ManagerWithFind):
 
         qparams = {}
 
-        for opt, val in search_opts.iteritems():
+        for opt, val in six.iteritems(search_opts):
             if val:
                 qparams[opt] = val
 
diff --git a/requirements.txt b/requirements.txt
index d677ca2d9..27c12b9cf 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,3 +4,4 @@ argparse
 prettytable>=0.6,<0.8
 requests>=0.8
 simplejson>=2.0.9
+six
diff --git a/tools/colorizer.py b/tools/colorizer.py
index a49abb141..9547802b8 100755
--- a/tools/colorizer.py
+++ b/tools/colorizer.py
@@ -47,6 +47,7 @@ import subunit
 import sys
 import unittest
 
+import six
 import testtools
 
 
@@ -277,7 +278,7 @@ class NovaTestResult(testtools.TestResult):
         self.stopTestRun()
 
     def stopTestRun(self):
-        for cls in list(self.results.iterkeys()):
+        for cls in list(six.iterkeys(self.results)):
             self.writeTestCase(cls)
         self.stream.writeln()
         self.writeSlowTests()