)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"21f5568cbcc4b7082282639d003c5d91328f8b85","unresolved":false,"context_lines":[{"line_number":20,"context_line":"subsequent patches."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I21fe68193c934a7ef3688274ab35f664a08cac7e"},{"line_number":23,"context_line":"Partial-Implements: blueprint cinder-objects"},{"line_number":24,"context_line":"Closes-Bug: #1521085"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7a740942_29ab2f76","line":23,"updated":"2015-12-04 11:02:11.000000000","message":"https://blueprints.launchpad.net/openstack/?searchtext\u003dcinder+objects\n\nThis does not return any blueprint. Did you mean https://blueprints.launchpad.net/cinder/+spec/rpc-object-compatibility ?","commit_id":"12e4d9236d3ed74c8062abd11ce4fc834e5a8404"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"88524632a07a50ea9f9e363687415af22ebe6971","unresolved":false,"context_lines":[{"line_number":20,"context_line":"subsequent patches."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I21fe68193c934a7ef3688274ab35f664a08cac7e"},{"line_number":23,"context_line":"Partial-Implements: blueprint cinder-objects"},{"line_number":24,"context_line":"Closes-Bug: #1521085"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"7a740942_3ae84fe2","line":23,"in_reply_to":"7a740942_29ab2f76","updated":"2015-12-04 12:05:52.000000000","message":"Nope. This is this one: https://blueprints.launchpad.net/cinder/+spec/cinder-objects\n\nIn Vancouver we\u0027ve decided to keep using this tag for ovo patches even though it is marked as implemented. So this is totally correct.","commit_id":"12e4d9236d3ed74c8062abd11ce4fc834e5a8404"}],"cinder/scheduler/manager.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"42cc039673ba851f611d52cc8f1d5f4bda02147f","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            volume \u003d objects.Volume.get_by_id(context, volume_id)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        def _migrate_volume_set_error(self, context, ex, request_spec):"},{"line_number":163,"context_line":"            volume \u003d objects.Volume.get_by_id(context,"},{"line_number":164,"context_line":"                                              request_spec[\u0027volume_id\u0027])"},{"line_number":165,"context_line":"            if volume.status \u003d\u003d \u0027maintenance\u0027:"},{"line_number":166,"context_line":"                previous_status \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_17d4361e","line":163,"updated":"2015-11-17 12:14:05.000000000","message":"nit: We don\u0027t need to retrieve the object again, it is already in variable volume since volume.id \u003d\u003d request_spec[\u0027volume_id\u0027]","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"eba21e8bea7bd175a38da483430a928a1e3a7237","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            volume \u003d objects.Volume.get_by_id(context, volume_id)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        def _migrate_volume_set_error(self, context, ex, request_spec):"},{"line_number":163,"context_line":"            volume \u003d objects.Volume.get_by_id(context,"},{"line_number":164,"context_line":"                                              request_spec[\u0027volume_id\u0027])"},{"line_number":165,"context_line":"            if volume.status \u003d\u003d \u0027maintenance\u0027:"},{"line_number":166,"context_line":"                previous_status \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_6351410e","line":163,"in_reply_to":"ba8a016a_17d4361e","updated":"2015-11-17 13:33:14.000000000","message":"Ok.  I thought it was done to refresh the volume.","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c15d929644f3614274532fccd63dfa57e2839722","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            volume \u003d objects.Volume.get_by_id(context, volume_id)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        def _migrate_volume_set_error(self, context, ex, request_spec):"},{"line_number":163,"context_line":"            volume \u003d objects.Volume.get_by_id(context,"},{"line_number":164,"context_line":"                                              request_spec[\u0027volume_id\u0027])"},{"line_number":165,"context_line":"            if volume.status \u003d\u003d \u0027maintenance\u0027:"},{"line_number":166,"context_line":"                previous_status \u003d ("}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_21f24770","line":163,"in_reply_to":"ba8a016a_6351410e","updated":"2015-11-17 17:00:54.000000000","message":"I believe it was done because we didn\u0027t have the ORM object until L179 in old code.","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"21f5568cbcc4b7082282639d003c5d91328f8b85","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":182,"context_line":"                _migrate_volume_set_error(self, context, ex, request_spec)"},{"line_number":183,"context_line":"        else:"},{"line_number":184,"context_line":"            volume_rpcapi.VolumeAPI().migrate_volume(context, volume,"},{"line_number":185,"context_line":"                                                     tgt_host,"},{"line_number":186,"context_line":"                                                     force_host_copy)"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7a740942_2949ef5f","line":184,"updated":"2015-12-04 11:02:11.000000000","message":"Was migrate_volume() incorrectly called up until now, or was the variable name (volume_ref) misleading?","commit_id":"12e4d9236d3ed74c8062abd11ce4fc834e5a8404"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"88524632a07a50ea9f9e363687415af22ebe6971","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":182,"context_line":"                _migrate_volume_set_error(self, context, ex, request_spec)"},{"line_number":183,"context_line":"        else:"},{"line_number":184,"context_line":"            volume_rpcapi.VolumeAPI().migrate_volume(context, volume,"},{"line_number":185,"context_line":"                                                     tgt_host,"},{"line_number":186,"context_line":"                                                     force_host_copy)"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7a740942_7add7741","line":184,"in_reply_to":"7a740942_2949ef5f","updated":"2015-12-04 12:05:52.000000000","message":"volume_ref was SQLAlchemy object got from DB. Now we send same info through RPC as volume variable. This isn\u0027t a keyword argument change, so your remark is invalid.","commit_id":"12e4d9236d3ed74c8062abd11ce4fc834e5a8404"}],"cinder/scheduler/rpcapi.py":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"b53c3a90f380734080e34598a115556e9e919673","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                                  version\u003dself.RPC_API_VERSION)"},{"line_number":57,"context_line":"        serializer \u003d objects_base.CinderObjectSerializer()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # NOTE(thangp): Until version pinning is impletemented, set the client"},{"line_number":60,"context_line":"        # version_cap to None"},{"line_number":61,"context_line":"        self.client \u003d rpc.get_client(target, version_cap\u003dNone,"},{"line_number":62,"context_line":"                                     serializer\u003dserializer)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a8ffd7b_1bd68c27","line":59,"updated":"2015-12-01 19:58:34.000000000","message":"impletemented -\u003e implemented","commit_id":"8175d986fbd7fbc3090abac51eb752245aa88974"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"7c7fb3647d65317ef62a5c349b4c187e7677058a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                                  version\u003dself.RPC_API_VERSION)"},{"line_number":57,"context_line":"        serializer \u003d objects_base.CinderObjectSerializer()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # NOTE(thangp): Until version pinning is impletemented, set the client"},{"line_number":60,"context_line":"        # version_cap to None"},{"line_number":61,"context_line":"        self.client \u003d rpc.get_client(target, version_cap\u003dNone,"},{"line_number":62,"context_line":"                                     serializer\u003dserializer)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a8ffd7b_83970939","line":59,"updated":"2015-12-03 12:03:42.000000000","message":"nit: In this new patch it \"impletemented\" should have been fixed as Kendall suggested in previous patch.  :-(","commit_id":"ca5f68528333a762982b6a5b7074481e4385772b"}],"cinder/volume/api.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6b02a081002e2d5c120dd04423b133621323e4ae","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"            # and \u0027detaching\u0027 state"},{"line_number":1410,"context_line":"            attachments \u003d volume.volume_attachment"},{"line_number":1411,"context_line":"            for attachment in attachments:"},{"line_number":1412,"context_line":"                self.detach(context, volume, attachment[\u0027id\u0027])"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"                self.attach(context, new_volume,"},{"line_number":1415,"context_line":"                            attachment[\u0027instance_uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_85d6adef","line":1412,"updated":"2015-11-23 11:00:19.000000000","message":"-1: Attachment should be a VolumeAttachment object, so we shouldn\u0027t be used key indexing: `attachment.id`","commit_id":"40686ba5f254e774e3b7cf4c258817fa34a82019"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"4833e6c39d779704492ec8701061fd1324d94aad","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"            # and \u0027detaching\u0027 state"},{"line_number":1410,"context_line":"            attachments \u003d volume.volume_attachment"},{"line_number":1411,"context_line":"            for attachment in attachments:"},{"line_number":1412,"context_line":"                self.detach(context, volume, attachment[\u0027id\u0027])"},{"line_number":1413,"context_line":""},{"line_number":1414,"context_line":"                self.attach(context, new_volume,"},{"line_number":1415,"context_line":"                            attachment[\u0027instance_uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_d446a120","line":1412,"in_reply_to":"ba8a016a_85d6adef","updated":"2015-11-23 12:48:06.000000000","message":"Done","commit_id":"40686ba5f254e774e3b7cf4c258817fa34a82019"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6b02a081002e2d5c120dd04423b133621323e4ae","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"                self.attach(context, new_volume,"},{"line_number":1415,"context_line":"                            attachment[\u0027instance_uuid\u0027],"},{"line_number":1416,"context_line":"                            attachment[\u0027attached_host\u0027],"},{"line_number":1417,"context_line":"                            attachment[\u0027mountpoint\u0027],"},{"line_number":1418,"context_line":"                            \u0027rw\u0027)"},{"line_number":1419,"context_line":""},{"line_number":1420,"context_line":"            return new_volume.id"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_e5fd396f","line":1417,"updated":"2015-11-23 11:00:19.000000000","message":"-1: Same in these 3 uses.","commit_id":"40686ba5f254e774e3b7cf4c258817fa34a82019"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"4833e6c39d779704492ec8701061fd1324d94aad","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"                self.attach(context, new_volume,"},{"line_number":1415,"context_line":"                            attachment[\u0027instance_uuid\u0027],"},{"line_number":1416,"context_line":"                            attachment[\u0027attached_host\u0027],"},{"line_number":1417,"context_line":"                            attachment[\u0027mountpoint\u0027],"},{"line_number":1418,"context_line":"                            \u0027rw\u0027)"},{"line_number":1419,"context_line":""},{"line_number":1420,"context_line":"            return new_volume.id"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba8a016a_b44bdd2a","line":1417,"in_reply_to":"ba8a016a_e5fd396f","updated":"2015-11-23 12:48:06.000000000","message":"Done","commit_id":"40686ba5f254e774e3b7cf4c258817fa34a82019"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"dc051bf1e61c5d1c9fd23026be41347b1243dec1","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"                                                       volume.volume_type_id)"},{"line_number":1389,"context_line":"        request_spec \u003d {\u0027volume_properties\u0027: volume,"},{"line_number":1390,"context_line":"                        \u0027volume_type\u0027: volume_type,"},{"line_number":1391,"context_line":"                        \u0027volume_id\u0027: volume[\u0027id\u0027]}"},{"line_number":1392,"context_line":"        self.scheduler_rpcapi.migrate_volume_to_host(context,"},{"line_number":1393,"context_line":"                                                     CONF.volume_topic,"},{"line_number":1394,"context_line":"                                                     volume.id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_bec62066","line":1391,"updated":"2015-11-26 12:32:15.000000000","message":"It should be volume.id","commit_id":"5d48145eb856c3bfc0311f169c101d53b9f6ecaa"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"c37cb1fcd9ce9431c5e311132e9507bf9ea307f0","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"                                                       volume.volume_type_id)"},{"line_number":1389,"context_line":"        request_spec \u003d {\u0027volume_properties\u0027: volume,"},{"line_number":1390,"context_line":"                        \u0027volume_type\u0027: volume_type,"},{"line_number":1391,"context_line":"                        \u0027volume_id\u0027: volume[\u0027id\u0027]}"},{"line_number":1392,"context_line":"        self.scheduler_rpcapi.migrate_volume_to_host(context,"},{"line_number":1393,"context_line":"                                                     CONF.volume_topic,"},{"line_number":1394,"context_line":"                                                     volume.id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"9a8ffd7b_57db574f","line":1391,"in_reply_to":"9a8ffd7b_bec62066","updated":"2015-11-26 13:21:07.000000000","message":"Done","commit_id":"5d48145eb856c3bfc0311f169c101d53b9f6ecaa"}],"cinder/volume/manager.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"42cc039673ba851f611d52cc8f1d5f4bda02147f","unresolved":false,"context_lines":[{"line_number":1710,"context_line":"    def migrate_volume_completion(self, ctxt, volume_id, new_volume_id,"},{"line_number":1711,"context_line":"                                  error\u003dFalse, volume\u003dNone, new_volume\u003dNone):"},{"line_number":1712,"context_line":"        # FIXME(thangp): Remove this in v2.0 of RPC API."},{"line_number":1713,"context_line":"        if volume is None:"},{"line_number":1714,"context_line":"            # For older clients, mimic the old behavior and look up the volume"},{"line_number":1715,"context_line":"            # by its volume_id."},{"line_number":1716,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_bde3cb04","line":1713,"updated":"2015-11-17 12:14:05.000000000","message":"nit: We don\u0027t need 2 if clauses, it\u0027s either old behavior (no volume or new_volume) or new (volume and new_volume are provided).","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"3869052c681e9d7676559beebe095466ca05fad6","unresolved":false,"context_lines":[{"line_number":1710,"context_line":"    def migrate_volume_completion(self, ctxt, volume_id, new_volume_id,"},{"line_number":1711,"context_line":"                                  error\u003dFalse, volume\u003dNone, new_volume\u003dNone):"},{"line_number":1712,"context_line":"        # FIXME(thangp): Remove this in v2.0 of RPC API."},{"line_number":1713,"context_line":"        if volume is None:"},{"line_number":1714,"context_line":"            # For older clients, mimic the old behavior and look up the volume"},{"line_number":1715,"context_line":"            # by its volume_id."},{"line_number":1716,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_836d459a","line":1713,"in_reply_to":"ba8a016a_48a53cb3","updated":"2015-11-17 13:36:59.000000000","message":"Reading it again, I think I got confused earlier.  I will put the new_volume and volume object lookups into one if statement.","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c15d929644f3614274532fccd63dfa57e2839722","unresolved":false,"context_lines":[{"line_number":1710,"context_line":"    def migrate_volume_completion(self, ctxt, volume_id, new_volume_id,"},{"line_number":1711,"context_line":"                                  error\u003dFalse, volume\u003dNone, new_volume\u003dNone):"},{"line_number":1712,"context_line":"        # FIXME(thangp): Remove this in v2.0 of RPC API."},{"line_number":1713,"context_line":"        if volume is None:"},{"line_number":1714,"context_line":"            # For older clients, mimic the old behavior and look up the volume"},{"line_number":1715,"context_line":"            # by its volume_id."},{"line_number":1716,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_41abcb1d","line":1713,"in_reply_to":"ba8a016a_836d459a","updated":"2015-11-17 17:00:54.000000000","message":"That\u0027s what I was trying to say.  :-)","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"eba21e8bea7bd175a38da483430a928a1e3a7237","unresolved":false,"context_lines":[{"line_number":1710,"context_line":"    def migrate_volume_completion(self, ctxt, volume_id, new_volume_id,"},{"line_number":1711,"context_line":"                                  error\u003dFalse, volume\u003dNone, new_volume\u003dNone):"},{"line_number":1712,"context_line":"        # FIXME(thangp): Remove this in v2.0 of RPC API."},{"line_number":1713,"context_line":"        if volume is None:"},{"line_number":1714,"context_line":"            # For older clients, mimic the old behavior and look up the volume"},{"line_number":1715,"context_line":"            # by its volume_id."},{"line_number":1716,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_48a53cb3","line":1713,"in_reply_to":"ba8a016a_bde3cb04","updated":"2015-11-17 13:33:14.000000000","message":"We do need it because volume and new_volume could be None.  This would happen when you have older clients just sending the ids.","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"42cc039673ba851f611d52cc8f1d5f4bda02147f","unresolved":false,"context_lines":[{"line_number":3064,"context_line":"                               volume_status):"},{"line_number":3065,"context_line":"        \"\"\"Finalize migration process on backend device.\"\"\""},{"line_number":3066,"context_line":"        model_update \u003d None"},{"line_number":3067,"context_line":"        model_update_default \u003d {\u0027_name_id\u0027: new_volume._name_id or"},{"line_number":3068,"context_line":"                                new_volume.id,"},{"line_number":3069,"context_line":"                                \u0027provider_location\u0027:"},{"line_number":3070,"context_line":"                                new_volume.provider_location}"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_1d83f757","line":3067,"updated":"2015-11-17 12:14:05.000000000","message":"-1: Doesn\u0027t this break backward compatibility?  volume and new_volume could be dictionaries.\n\n-1: If we have an object we should use\n\n \u0027_name_id\u0027: new_volume.name_id,","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"eba21e8bea7bd175a38da483430a928a1e3a7237","unresolved":false,"context_lines":[{"line_number":3064,"context_line":"                               volume_status):"},{"line_number":3065,"context_line":"        \"\"\"Finalize migration process on backend device.\"\"\""},{"line_number":3066,"context_line":"        model_update \u003d None"},{"line_number":3067,"context_line":"        model_update_default \u003d {\u0027_name_id\u0027: new_volume._name_id or"},{"line_number":3068,"context_line":"                                new_volume.id,"},{"line_number":3069,"context_line":"                                \u0027provider_location\u0027:"},{"line_number":3070,"context_line":"                                new_volume.provider_location}"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_6807e01c","line":3067,"in_reply_to":"ba8a016a_1d83f757","updated":"2015-11-17 13:33:14.000000000","message":"I should check if volume and new_volume are an instance of CinderObject.  If not, I should do an object lookup.","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"c15d929644f3614274532fccd63dfa57e2839722","unresolved":false,"context_lines":[{"line_number":3064,"context_line":"                               volume_status):"},{"line_number":3065,"context_line":"        \"\"\"Finalize migration process on backend device.\"\"\""},{"line_number":3066,"context_line":"        model_update \u003d None"},{"line_number":3067,"context_line":"        model_update_default \u003d {\u0027_name_id\u0027: new_volume._name_id or"},{"line_number":3068,"context_line":"                                new_volume.id,"},{"line_number":3069,"context_line":"                                \u0027provider_location\u0027:"},{"line_number":3070,"context_line":"                                new_volume.provider_location}"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_a43645e5","line":3067,"in_reply_to":"ba8a016a_6807e01c","updated":"2015-11-17 17:00:54.000000000","message":"Why not check if they are an instance of objects.Volume instead?  It\u0027s more specific.","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"bc437661c32cb6088b9c996907f77e28c5c457dc","unresolved":false,"context_lines":[{"line_number":3064,"context_line":"                               volume_status):"},{"line_number":3065,"context_line":"        \"\"\"Finalize migration process on backend device.\"\"\""},{"line_number":3066,"context_line":"        model_update \u003d None"},{"line_number":3067,"context_line":"        model_update_default \u003d {\u0027_name_id\u0027: new_volume._name_id or"},{"line_number":3068,"context_line":"                                new_volume.id,"},{"line_number":3069,"context_line":"                                \u0027provider_location\u0027:"},{"line_number":3070,"context_line":"                                new_volume.provider_location}"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_ba0f3ce0","line":3067,"in_reply_to":"ba8a016a_a43645e5","updated":"2015-11-17 17:37:37.000000000","message":"Done","commit_id":"9fd65d4ccad605149f3f75b557ccb182014700ba"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"1ec4e818a329a423d46586c75cf638309dd3522f","unresolved":false,"context_lines":[{"line_number":3064,"context_line":"            new_volume \u003d objects.Volume.get_by_id(ctxt, new_volume[\u0027id\u0027])"},{"line_number":3065,"context_line":""},{"line_number":3066,"context_line":"        model_update \u003d None"},{"line_number":3067,"context_line":"        model_update_default \u003d {\u0027_name_id\u0027: new_volume._name_id or"},{"line_number":3068,"context_line":"                                new_volume.id,"},{"line_number":3069,"context_line":"                                \u0027provider_location\u0027:"},{"line_number":3070,"context_line":"                                new_volume.provider_location}"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_e7bdc402","line":3067,"updated":"2015-11-19 12:27:51.000000000","message":"-1: We should use `new_volume.name_id` instead of repeating the logic in here.","commit_id":"de89d9c82b5b6764bf6d6510bf4e00cad38a23d8"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"f482fb7f812a7b3b0dfd1fe5b469c9a1430647b3","unresolved":false,"context_lines":[{"line_number":3064,"context_line":"            new_volume \u003d objects.Volume.get_by_id(ctxt, new_volume[\u0027id\u0027])"},{"line_number":3065,"context_line":""},{"line_number":3066,"context_line":"        model_update \u003d None"},{"line_number":3067,"context_line":"        model_update_default \u003d {\u0027_name_id\u0027: new_volume._name_id or"},{"line_number":3068,"context_line":"                                new_volume.id,"},{"line_number":3069,"context_line":"                                \u0027provider_location\u0027:"},{"line_number":3070,"context_line":"                                new_volume.provider_location}"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba8a016a_2ddc0345","line":3067,"in_reply_to":"ba8a016a_e7bdc402","updated":"2015-11-19 15:10:44.000000000","message":"Right.  I forgot we had the same logic in the name_id property of the volume object.","commit_id":"de89d9c82b5b6764bf6d6510bf4e00cad38a23d8"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"460d196deea084cb86f30deaebdf51e54aba1350","unresolved":false,"context_lines":[{"line_number":3102,"context_line":"    def update_migrated_volume(self, ctxt, volume, new_volume,"},{"line_number":3103,"context_line":"                               volume_status):"},{"line_number":3104,"context_line":"        \"\"\"Finalize migration process on backend device.\"\"\""},{"line_number":3105,"context_line":"        if (not isinstance(volume, objects.Volume) or"},{"line_number":3106,"context_line":"                not isinstance(new_volume, objects.Volume)):"},{"line_number":3107,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume[\u0027id\u0027])"},{"line_number":3108,"context_line":"            new_volume \u003d objects.Volume.get_by_id(ctxt, new_volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a8ffd7b_0ea1a794","line":3105,"updated":"2015-11-24 19:46:49.000000000","message":"You should add a TODO/FIXME item to remove that in N.","commit_id":"d0d498736c7236df2a79fd02c0d5d489a6ce1381"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"5b3df9c9442fc6be3bba9447a24f18841cafa0db","unresolved":false,"context_lines":[{"line_number":1672,"context_line":"                          {\u0027vol1\u0027: volume[\u0027id\u0027], \u0027vol2\u0027: new_volume[\u0027id\u0027]})"},{"line_number":1673,"context_line":"                self._clean_temporary_volume(ctxt, volume[\u0027id\u0027],"},{"line_number":1674,"context_line":"                                             new_volume[\u0027id\u0027])"},{"line_number":1675,"context_line":""},{"line_number":1676,"context_line":"    def _clean_temporary_volume(self, ctxt, volume_id, new_volume_id,"},{"line_number":1677,"context_line":"                                clean_db_only\u003dFalse):"},{"line_number":1678,"context_line":"        volume \u003d self.db.volume_get(ctxt, volume_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a8ffd7b_9255dafb","line":1675,"updated":"2015-11-30 13:23:16.000000000","message":"I think we need to update this method to use version object too because this method only called from _migrate_volume_generic().","commit_id":"ac43a531ed5ff648f6aeec53ab7128fadd75930c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"af8690ddd76171345dc2092a7cc84b7adc4fd490","unresolved":false,"context_lines":[{"line_number":1687,"context_line":"                else:"},{"line_number":1688,"context_line":"                    # The temporary volume is already created"},{"line_number":1689,"context_line":"                    rpcapi \u003d volume_rpcapi.VolumeAPI()"},{"line_number":1690,"context_line":"                    volume \u003d self.db.volume_get(ctxt, new_volume_id)"},{"line_number":1691,"context_line":"                    rpcapi.delete_volume(ctxt, volume)"},{"line_number":1692,"context_line":"            except exception.VolumeNotFound:"},{"line_number":1693,"context_line":"                LOG.info(_LI(\"Couldn\u0027t find the temporary volume \""}],"source_content_type":"text/x-python","patch_set":14,"id":"9a8ffd7b_d54b4c5e","line":1690,"updated":"2015-11-30 13:34:16.000000000","message":"Ah, right, this requires OVO and not a DB object.","commit_id":"ac43a531ed5ff648f6aeec53ab7128fadd75930c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"09be9d8c6898a28b08968e93805c8ac6b39c4cd8","unresolved":false,"context_lines":[{"line_number":1744,"context_line":"            LOG.info(_LI(\"migrate_volume_completion is cleaning up an error \""},{"line_number":1745,"context_line":"                         \"for volume %(vol1)s (temporary volume %(vol2)s\"),"},{"line_number":1746,"context_line":"                     {\u0027vol1\u0027: volume[\u0027id\u0027], \u0027vol2\u0027: new_volume.id})"},{"line_number":1747,"context_line":"            rpcapi.delete_volume(ctxt, new_volume)"},{"line_number":1748,"context_line":"            updates \u003d {\u0027migration_status\u0027: \u0027error\u0027,"},{"line_number":1749,"context_line":"                       \u0027status\u0027: orig_volume_status}"},{"line_number":1750,"context_line":"            volume.update(updates)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a8ffd7b_eb832301","line":1747,"updated":"2015-11-30 08:57:51.000000000","message":"This fixes https://bugs.launchpad.net/cinder/+bug/1521085, so you may want to add Closes-Bug to the commit message if you\u0027ll do another patchset.","commit_id":"ac43a531ed5ff648f6aeec53ab7128fadd75930c"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"5b3df9c9442fc6be3bba9447a24f18841cafa0db","unresolved":false,"context_lines":[{"line_number":1744,"context_line":"            LOG.info(_LI(\"migrate_volume_completion is cleaning up an error \""},{"line_number":1745,"context_line":"                         \"for volume %(vol1)s (temporary volume %(vol2)s\"),"},{"line_number":1746,"context_line":"                     {\u0027vol1\u0027: volume[\u0027id\u0027], \u0027vol2\u0027: new_volume.id})"},{"line_number":1747,"context_line":"            rpcapi.delete_volume(ctxt, new_volume)"},{"line_number":1748,"context_line":"            updates \u003d {\u0027migration_status\u0027: \u0027error\u0027,"},{"line_number":1749,"context_line":"                       \u0027status\u0027: orig_volume_status}"},{"line_number":1750,"context_line":"            volume.update(updates)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a8ffd7b_b3834502","line":1747,"in_reply_to":"9a8ffd7b_eb832301","updated":"2015-11-30 13:23:16.000000000","message":"I agree on this.","commit_id":"ac43a531ed5ff648f6aeec53ab7128fadd75930c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"57ec3aea9436aa3fdd8e3a66bd233834c3e7c012","unresolved":false,"context_lines":[{"line_number":3102,"context_line":"    def update_migrated_volume(self, ctxt, volume, new_volume,"},{"line_number":3103,"context_line":"                               volume_status):"},{"line_number":3104,"context_line":"        \"\"\"Finalize migration process on backend device.\"\"\""},{"line_number":3105,"context_line":"        if (not isinstance(volume, objects.Volume) or"},{"line_number":3106,"context_line":"                not isinstance(new_volume, objects.Volume)):"},{"line_number":3107,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume[\u0027id\u0027])"},{"line_number":3108,"context_line":"            new_volume \u003d objects.Volume.get_by_id(ctxt, new_volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a8ffd7b_3429ece6","line":3105,"updated":"2015-11-26 14:19:47.000000000","message":"I still believe that there should be a FIXME comment to get that check removed in early N.","commit_id":"ac43a531ed5ff648f6aeec53ab7128fadd75930c"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"5a18743da9251df82874db2663135d9a893b0140","unresolved":false,"context_lines":[{"line_number":3102,"context_line":"    def update_migrated_volume(self, ctxt, volume, new_volume,"},{"line_number":3103,"context_line":"                               volume_status):"},{"line_number":3104,"context_line":"        \"\"\"Finalize migration process on backend device.\"\"\""},{"line_number":3105,"context_line":"        if (not isinstance(volume, objects.Volume) or"},{"line_number":3106,"context_line":"                not isinstance(new_volume, objects.Volume)):"},{"line_number":3107,"context_line":"            volume \u003d objects.Volume.get_by_id(ctxt, volume[\u0027id\u0027])"},{"line_number":3108,"context_line":"            new_volume \u003d objects.Volume.get_by_id(ctxt, new_volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"9a8ffd7b_e69df666","line":3105,"in_reply_to":"9a8ffd7b_3429ece6","updated":"2015-11-26 15:32:25.000000000","message":"Yeah, that\u0027s a good idea.","commit_id":"ac43a531ed5ff648f6aeec53ab7128fadd75930c"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"b53c3a90f380734080e34598a115556e9e919673","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                                  version\u003dself.BASE_RPC_API_VERSION)"},{"line_number":96,"context_line":"        serializer \u003d objects_base.CinderObjectSerializer()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # NOTE(thangp): Until version pinning is impletemented, set the client"},{"line_number":99,"context_line":"        # version_cap to None"},{"line_number":100,"context_line":"        self.client \u003d rpc.get_client(target, version_cap\u003dNone,"},{"line_number":101,"context_line":"                                     serializer\u003dserializer)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a8ffd7b_d6469b7a","line":98,"updated":"2015-12-01 19:58:34.000000000","message":"impletemented -\u003e implemented","commit_id":"8175d986fbd7fbc3090abac51eb752245aa88974"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"7c7fb3647d65317ef62a5c349b4c187e7677058a","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                                  version\u003dself.BASE_RPC_API_VERSION)"},{"line_number":96,"context_line":"        serializer \u003d objects_base.CinderObjectSerializer()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        # NOTE(thangp): Until version pinning is impletemented, set the client"},{"line_number":99,"context_line":"        # version_cap to None"},{"line_number":100,"context_line":"        self.client \u003d rpc.get_client(target, version_cap\u003dNone,"},{"line_number":101,"context_line":"                                     serializer\u003dserializer)"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a8ffd7b_b6eb6912","line":98,"updated":"2015-12-03 12:03:42.000000000","message":"nit: In this new patch it \"impletemented\" should have been fixed as Kendall suggested in previous patch.  :-(","commit_id":"ca5f68528333a762982b6a5b7074481e4385772b"}]}
