Steps to reproduce:
1) Use the dummy driver (or any driver that supports mountable snapshots and optimized migration)
2) Create a share, create a snapshot
3) Start and complete a migration
Failure in the share manager:
Driver assisted migration does not care about snapshot instance export locations, and hence fails in the share manager:
2017-02-01 22:25:02.186 ERROR manila.share.manager [req-0d397a30-f364-438b-9006-29ce7c5966fc e51196923a8d48d588076bca322844ef 392e88f75e8b4ac7bb66bf3a8e263569] Driver migration completion failed for share 2ccdb1b2-99a6-4552-9630-858a9cf79ce3.
2017-02-01 22:25:02.186 TRACE manila.share.manager Traceback (most recent call last):
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/share/manager.py", line 1277, in migration_complete
2017-02-01 22:25:02.186 TRACE manila.share.manager dest_share_instance)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/share/manager.py", line 1215, in _migration_complete_driver
2017-02-01 22:25:02.186 TRACE manila.share.manager context, dest_snap_ins['id'], model_update)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/db/api.py", line 462, in share_snapshot_instance_update
2017-02-01 22:25:02.186 TRACE manila.share.manager return IMPL.share_snapshot_instance_update(context, instance_id, values)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 164, in wrapper
2017-02-01 22:25:02.186 TRACE manila.share.manager return f(*args, **kwargs)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 1964, in share_snapshot_instance_update
2017-02-01 22:25:02.186 TRACE manila.share.manager instance_ref.update(values)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/models.py", line 96, in update
2017-02-01 22:25:02.186 TRACE manila.share.manager setattr(self, k, v)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 224, in __set__
2017-02-01 22:25:02.186 TRACE manila.share.manager instance_dict(instance), value, None)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 1027, in set
2017-02-01 22:25:02.186 TRACE manila.share.manager lambda adapter, i: adapter.adapt_like_to_iterable(i))
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 1062, in _set_iterable
2017-02-01 22:25:02.186 TRACE manila.share.manager collections.bulk_replace(new_values, old_collection, new_collection)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/collections.py", line 785, in bulk_replace
2017-02-01 22:25:02.186 TRACE manila.share.manager constants = existing_idset.intersection(values or ())
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/_collections.py", line 612, in intersection
2017-02-01 22:25:02.186 TRACE manila.share.manager result._members.update(self._working_set(members).intersection(other))
2017-02-01 22:25:02.186 TRACE manila.share.manager TypeError: unhashable type: 'dict'
2017-02-01 22:25:02.186 TRACE manila.share.manager
2017-02-01 22:25:02.637 ERROR oslo_messaging.rpc.server [req-0d397a30-f364-438b-9006-29ce7c5966fc e51196923a8d48d588076bca322844ef 392e88f75e8b4ac7bb66bf3a8e263569] Exception during message handling
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server Traceback (most recent call last):
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/server.py", line 155, in _process_incoming
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server res = self.dispatcher.dispatch(message)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 222, in dispatch
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server return self._do_dispatch(endpoint, method, ctxt, args)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 192, in _do_dispatch
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server result = func(ctxt, **new_args)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/opt/stack/manila/manila/utils.py", line 519, in wrapper
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server return func(self, *args, **kwargs)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/opt/stack/manila/manila/share/manager.py", line 1303, in migration_complete
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server raise exception.ShareMigrationFailed(reason=msg)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server ShareMigrationFailed: Share migration failed: Driver migration completion failed for share 2ccdb1b2-99a6-4552-9630-858a9cf79ce3.
Fix proposed to branch: master /review. openstack. org/428526
Review: https:/