From a4f087b7a1050ac1a7e6391faa8d8003824c68ac Mon Sep 17 00:00:00 2001
From: Victor Stinner <vstinner@redhat.com>
Date: Fri, 12 Jun 2015 14:55:37 +0200
Subject: [PATCH] Replace dict(obj.iteritems() with dict(obj)

Since oslo.db 1.10, it's possible to convert directly a SQLAlchemy
object to a dictionary using dict(obj) instead of having to write
dict(obj.iteritems()).

dict(obj) works also on regular dictionaries to duplicate a dictionary.

Blueprint cinder-python3
Change-Id: I868a055d5bbfe6646aad3e36e1bf6c7a1ad7b449
---
 cinder/api/contrib/backups.py               | 8 ++++----
 cinder/api/contrib/cgsnapshots.py           | 2 +-
 cinder/api/contrib/consistencygroups.py     | 4 ++--
 cinder/api/contrib/volume_image_metadata.py | 3 +--
 cinder/api/contrib/volume_manage.py         | 2 +-
 cinder/api/contrib/volume_transfer.py       | 4 ++--
 cinder/api/v1/volumes.py                    | 4 ++--
 cinder/api/v2/volumes.py                    | 4 ++--
 cinder/backup/api.py                        | 2 +-
 cinder/consistencygroup/api.py              | 4 ++--
 cinder/db/sqlalchemy/api.py                 | 2 +-
 cinder/scheduler/host_manager.py            | 4 ++--
 cinder/tests/unit/test_volume.py            | 2 +-
 cinder/transfer/api.py                      | 2 +-
 cinder/volume/api.py                        | 8 ++++----
 15 files changed, 27 insertions(+), 28 deletions(-)

diff --git a/cinder/api/contrib/backups.py b/cinder/api/contrib/backups.py
index 51d3fb496..1b68e1234 100644
--- a/cinder/api/contrib/backups.py
+++ b/cinder/api/contrib/backups.py
@@ -272,7 +272,7 @@ class BackupsController(wsgi.Controller):
         except exception.ServiceNotFound as error:
             raise exc.HTTPInternalServerError(explanation=error.msg)
 
-        retval = self._view_builder.summary(req, dict(new_backup.iteritems()))
+        retval = self._view_builder.summary(req, dict(new_backup))
         return retval
 
     @wsgi.response(202)
@@ -316,7 +316,7 @@ class BackupsController(wsgi.Controller):
                 explanation=error.msg, headers={'Retry-After': 0})
 
         retval = self._view_builder.restore_summary(
-            req, dict(new_restore.iteritems()))
+            req, dict(new_restore))
         return retval
 
     @wsgi.response(200)
@@ -334,7 +334,7 @@ class BackupsController(wsgi.Controller):
             raise exc.HTTPBadRequest(explanation=error.msg)
 
         retval = self._view_builder.export_summary(
-            req, dict(backup_info.iteritems()))
+            req, dict(backup_info))
         LOG.debug('export record output: %s.', retval)
         return retval
 
@@ -370,7 +370,7 @@ class BackupsController(wsgi.Controller):
         except exception.ServiceNotFound as error:
             raise exc.HTTPInternalServerError(explanation=error.msg)
 
-        retval = self._view_builder.summary(req, dict(new_backup.iteritems()))
+        retval = self._view_builder.summary(req, dict(new_backup))
         LOG.debug('import record output: %s.', retval)
         return retval
 
diff --git a/cinder/api/contrib/cgsnapshots.py b/cinder/api/contrib/cgsnapshots.py
index 77bd046b7..76aa38239 100644
--- a/cinder/api/contrib/cgsnapshots.py
+++ b/cinder/api/contrib/cgsnapshots.py
@@ -196,7 +196,7 @@ class CgsnapshotsController(wsgi.Controller):
 
         retval = self._view_builder.summary(
             req,
-            dict(new_cgsnapshot.iteritems()))
+            dict(new_cgsnapshot))
 
         return retval
 
diff --git a/cinder/api/contrib/consistencygroups.py b/cinder/api/contrib/consistencygroups.py
index 8e531f18a..9a147292a 100644
--- a/cinder/api/contrib/consistencygroups.py
+++ b/cinder/api/contrib/consistencygroups.py
@@ -248,7 +248,7 @@ class ConsistencyGroupsController(wsgi.Controller):
 
         retval = self._view_builder.summary(
             req,
-            dict(new_consistencygroup.iteritems()))
+            dict(new_consistencygroup))
         return retval
 
     @wsgi.response(202)
@@ -300,7 +300,7 @@ class ConsistencyGroupsController(wsgi.Controller):
 
         retval = self._view_builder.summary(
             req,
-            dict(new_consistencygroup.iteritems()))
+            dict(new_consistencygroup))
         return retval
 
     @wsgi.serializers(xml=ConsistencyGroupTemplate)
diff --git a/cinder/api/contrib/volume_image_metadata.py b/cinder/api/contrib/volume_image_metadata.py
index 454bc5092..729d577f8 100644
--- a/cinder/api/contrib/volume_image_metadata.py
+++ b/cinder/api/contrib/volume_image_metadata.py
@@ -62,8 +62,7 @@ class VolumeImageMetadataController(wsgi.Controller):
             except Exception:
                 return
         if image_meta:
-            resp_volume['volume_image_metadata'] = dict(
-                image_meta.iteritems())
+            resp_volume['volume_image_metadata'] = dict(image_meta)
 
     @wsgi.extends
     def show(self, req, resp_obj, id):
diff --git a/cinder/api/contrib/volume_manage.py b/cinder/api/contrib/volume_manage.py
index ca9c3b174..55e681f84 100644
--- a/cinder/api/contrib/volume_manage.py
+++ b/cinder/api/contrib/volume_manage.py
@@ -145,7 +145,7 @@ class VolumeManageController(wsgi.Controller):
             msg = _("Service not found.")
             raise exc.HTTPNotFound(explanation=msg)
 
-        new_volume = dict(new_volume.iteritems())
+        new_volume = dict(new_volume)
         utils.add_visible_admin_metadata(new_volume)
 
         return self._view_builder.detail(req, new_volume)
diff --git a/cinder/api/contrib/volume_transfer.py b/cinder/api/contrib/volume_transfer.py
index 132e122af..469f591ea 100644
--- a/cinder/api/contrib/volume_transfer.py
+++ b/cinder/api/contrib/volume_transfer.py
@@ -175,7 +175,7 @@ class VolumeTransferController(wsgi.Controller):
             raise exc.HTTPNotFound(explanation=error.msg)
 
         transfer = self._view_builder.create(req,
-                                             dict(new_transfer.iteritems()))
+                                             dict(new_transfer))
         return transfer
 
     @wsgi.response(202)
@@ -211,7 +211,7 @@ class VolumeTransferController(wsgi.Controller):
 
         transfer = \
             self._view_builder.summary(req,
-                                       dict(accepted_transfer.iteritems()))
+                                       dict(accepted_transfer))
         return transfer
 
     def delete(self, req, id):
diff --git a/cinder/api/v1/volumes.py b/cinder/api/v1/volumes.py
index 781acb157..ba9fdf396 100644
--- a/cinder/api/v1/volumes.py
+++ b/cinder/api/v1/volumes.py
@@ -292,7 +292,7 @@ class VolumeController(wsgi.Controller):
                                           filters=search_opts,
                                           viewable_admin_meta=True)
 
-        volumes = [dict(vol.iteritems()) for vol in volumes]
+        volumes = [dict(vol) for vol in volumes]
 
         for volume in volumes:
             utils.add_visible_admin_metadata(volume)
@@ -401,7 +401,7 @@ class VolumeController(wsgi.Controller):
         # TODO(vish): Instance should be None at db layer instead of
         #             trying to lazy load, but for now we turn it into
         #             a dict to avoid an error.
-        new_volume = dict(new_volume.iteritems())
+        new_volume = dict(new_volume)
 
         retval = _translate_volume_detail_view(context, new_volume, image_uuid)
 
diff --git a/cinder/api/v2/volumes.py b/cinder/api/v2/volumes.py
index 6c8c47ffc..4be05fed1 100644
--- a/cinder/api/v2/volumes.py
+++ b/cinder/api/v2/volumes.py
@@ -256,7 +256,7 @@ class VolumeController(wsgi.Controller):
                                           filters=filters,
                                           viewable_admin_meta=True)
 
-        volumes = [dict(vol.iteritems()) for vol in volumes]
+        volumes = [dict(vol) for vol in volumes]
 
         for volume in volumes:
             utils.add_visible_admin_metadata(volume)
@@ -442,7 +442,7 @@ class VolumeController(wsgi.Controller):
         # TODO(vish): Instance should be None at db layer instead of
         #             trying to lazy load, but for now we turn it into
         #             a dict to avoid an error.
-        new_volume = dict(new_volume.iteritems())
+        new_volume = dict(new_volume)
         retval = self._view_builder.detail(req, new_volume)
 
         return retval
diff --git a/cinder/backup/api.py b/cinder/backup/api.py
index 1c94dd059..06918174d 100644
--- a/cinder/backup/api.py
+++ b/cinder/backup/api.py
@@ -61,7 +61,7 @@ class API(base.Base):
     def get(self, context, backup_id):
         check_policy(context, 'get')
         rv = self.db.backup_get(context, backup_id)
-        return dict(rv.iteritems())
+        return dict(rv)
 
     def delete(self, context, backup_id):
         """Make the RPC call to delete a volume backup."""
diff --git a/cinder/consistencygroup/api.py b/cinder/consistencygroup/api.py
index 75506c475..6d7c5e036 100644
--- a/cinder/consistencygroup/api.py
+++ b/cinder/consistencygroup/api.py
@@ -580,7 +580,7 @@ class API(base.Base):
 
     def get(self, context, group_id):
         rv = self.db.consistencygroup_get(context, group_id)
-        group = dict(rv.iteritems())
+        group = dict(rv)
         check_policy(context, 'get', group)
         return group
 
@@ -676,7 +676,7 @@ class API(base.Base):
     def get_cgsnapshot(self, context, cgsnapshot_id):
         check_policy(context, 'get_cgsnapshot')
         rv = self.db.cgsnapshot_get(context, cgsnapshot_id)
-        return dict(rv.iteritems())
+        return dict(rv)
 
     def get_all_cgsnapshots(self, context, search_opts=None):
         check_policy(context, 'get_all_cgsnapshots')
diff --git a/cinder/db/sqlalchemy/api.py b/cinder/db/sqlalchemy/api.py
index 2a5bf2ac1..12206516a 100644
--- a/cinder/db/sqlalchemy/api.py
+++ b/cinder/db/sqlalchemy/api.py
@@ -69,7 +69,7 @@ def _create_facade_lazily():
         if _FACADE is None:
             _FACADE = db_session.EngineFacade(
                 CONF.database.connection,
-                **dict(CONF.database.iteritems())
+                **dict(CONF.database)
             )
 
             if CONF.profiler.profiler_enabled:
diff --git a/cinder/scheduler/host_manager.py b/cinder/scheduler/host_manager.py
index 77faf1d2c..0964048b1 100644
--- a/cinder/scheduler/host_manager.py
+++ b/cinder/scheduler/host_manager.py
@@ -495,12 +495,12 @@ class HostManager(object):
                 host_state = self.host_state_cls(host,
                                                  capabilities=capabilities,
                                                  service=
-                                                 dict(service.iteritems()))
+                                                 dict(service))
                 self.host_state_map[host] = host_state
             # update capabilities and attributes in host_state
             host_state.update_from_volume_capability(capabilities,
                                                      service=
-                                                     dict(service.iteritems()))
+                                                     dict(service))
             active_hosts.add(host)
 
         self._no_capabilities_hosts = no_capabilities_hosts
diff --git a/cinder/tests/unit/test_volume.py b/cinder/tests/unit/test_volume.py
index 82b482fb0..9f64045a6 100644
--- a/cinder/tests/unit/test_volume.py
+++ b/cinder/tests/unit/test_volume.py
@@ -2883,7 +2883,7 @@ class VolumeTestCase(BaseVolumeTestCase):
         snapshot_obj = objects.Snapshot.get_by_id(self.context, snapshot_id)
 
         snap = db.snapshot_get(context.get_admin_context(), snapshot_id)
-        result_dict = dict(snap.iteritems())
+        result_dict = dict(snap)
         result_meta = {
             result_dict['snapshot_metadata'][0].key:
             result_dict['snapshot_metadata'][0].value}
diff --git a/cinder/transfer/api.py b/cinder/transfer/api.py
index d17328013..0ad3fccf3 100644
--- a/cinder/transfer/api.py
+++ b/cinder/transfer/api.py
@@ -56,7 +56,7 @@ class API(base.Base):
 
     def get(self, context, transfer_id):
         rv = self.db.transfer_get(context, transfer_id)
-        return dict(rv.iteritems())
+        return dict(rv)
 
     def delete(self, context, transfer_id):
         """Make the RPC call to delete a volume transfer."""
diff --git a/cinder/volume/api.py b/cinder/volume/api.py
index ecfcbfa90..e62144f8c 100644
--- a/cinder/volume/api.py
+++ b/cinder/volume/api.py
@@ -408,7 +408,7 @@ class API(base.Base):
         else:
             ctxt = context
         rv = self.db.volume_get(ctxt, volume_id)
-        volume = dict(rv.iteritems())
+        volume = dict(rv)
         try:
             check_policy(context, 'get', volume)
         except exception.PolicyNotAuthorized:
@@ -501,7 +501,7 @@ class API(base.Base):
         check_policy(context, 'get_volume')
         vref = self.db.volume_get(context, volume_id)
         LOG.info(_LI("Volume retrieved successfully."), resource=vref)
-        return dict(vref.iteritems())
+        return dict(vref)
 
     def get_all_snapshots(self, context, search_opts=None):
         check_policy(context, 'get_all_snapshots')
@@ -941,7 +941,7 @@ class API(base.Base):
         rv = self.db.volume_metadata_get(context, volume['id'])
         LOG.info(_LI("Get volume metadata completed successfully."),
                  resource=volume)
-        return dict(rv.iteritems())
+        return dict(rv)
 
     @wrap_check_policy
     def delete_volume_metadata(self, context, volume, key):
@@ -1011,7 +1011,7 @@ class API(base.Base):
         rv = self.db.volume_admin_metadata_get(context, volume['id'])
         LOG.info(_LI("Get volume admin metadata completed successfully."),
                  resource=volume)
-        return dict(rv.iteritems())
+        return dict(rv)
 
     @wrap_check_policy
     def delete_volume_admin_metadata(self, context, volume, key):
-- 
2.45.2