)]}'
{"nova/tests/virt/test_block_device.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"0e0eb4fed7eb18cd93068d22ab5ad16af3c09993","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        self.volume_api.get(self.context,"},{"line_number":296,"context_line":"                            fake_volume[\u0027id\u0027]).AndReturn(fake_volume)"},{"line_number":297,"context_line":"        if check_attach:"},{"line_number":298,"context_line":"            self.volume_api.check_attach(self.context, fake_volume,"},{"line_number":299,"context_line":"                                instance\u003dinstance).AndReturn(None)"},{"line_number":300,"context_line":"        self.virt_driver.get_volume_connector(instance).AndReturn(connector)"},{"line_number":301,"context_line":"        self.volume_api.initialize_connection("}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUX%2F%2Fqng%3D","line":298,"updated":"2014-02-11 16:42:29.000000000","message":"there should be a test for check_attach failing (ensuring nothing afterwards gets called)","commit_id":"d983b1ad459de6b5e0d9be64733b8b945cfb55d1"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"90d4ace39da3e9556b54288c475a87c37e0904d0","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        self.volume_api.get(self.context,"},{"line_number":296,"context_line":"                            fake_volume[\u0027id\u0027]).AndReturn(fake_volume)"},{"line_number":297,"context_line":"        if check_attach:"},{"line_number":298,"context_line":"            self.volume_api.check_attach(self.context, fake_volume,"},{"line_number":299,"context_line":"                                instance\u003dinstance).AndReturn(None)"},{"line_number":300,"context_line":"        self.virt_driver.get_volume_connector(instance).AndReturn(connector)"},{"line_number":301,"context_line":"        self.volume_api.initialize_connection("}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUX%2F%2Fp0M%3D","line":298,"in_reply_to":"AAAAUX%2F%2Fqng%3D","updated":"2014-02-11 18:33:51.000000000","message":"Fair enough - will add it.","commit_id":"d983b1ad459de6b5e0d9be64733b8b945cfb55d1"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"0e0eb4fed7eb18cd93068d22ab5ad16af3c09993","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            encryptors.get_encryption_metadata("},{"line_number":306,"context_line":"                    elevated_context, self.volume_api, fake_volume[\u0027id\u0027],"},{"line_number":307,"context_line":"                    connection_info).AndReturn(enc_data)"},{"line_number":308,"context_line":"            self.virt_driver.attach_volume("},{"line_number":309,"context_line":"                    elevated_context, expected_conn_info, instance,"},{"line_number":310,"context_line":"                    bdm_dict[\u0027device_name\u0027],"},{"line_number":311,"context_line":"                    encryption\u003denc_data).AndReturn(None)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUX%2F%2FqnQ%3D","line":308,"updated":"2014-02-11 16:42:29.000000000","message":"There needs to be a test for attach_volume() raising an exception.","commit_id":"d983b1ad459de6b5e0d9be64733b8b945cfb55d1"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"90d4ace39da3e9556b54288c475a87c37e0904d0","unresolved":false,"context_lines":[{"line_number":305,"context_line":"            encryptors.get_encryption_metadata("},{"line_number":306,"context_line":"                    elevated_context, self.volume_api, fake_volume[\u0027id\u0027],"},{"line_number":307,"context_line":"                    connection_info).AndReturn(enc_data)"},{"line_number":308,"context_line":"            self.virt_driver.attach_volume("},{"line_number":309,"context_line":"                    elevated_context, expected_conn_info, instance,"},{"line_number":310,"context_line":"                    bdm_dict[\u0027device_name\u0027],"},{"line_number":311,"context_line":"                    encryption\u003denc_data).AndReturn(None)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUX%2F%2Fp0I%3D","line":308,"in_reply_to":"AAAAUX%2F%2FqnQ%3D","updated":"2014-02-11 18:33:51.000000000","message":"This too.","commit_id":"d983b1ad459de6b5e0d9be64733b8b945cfb55d1"}],"nova/virt/block_device.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"52291367026c5a6cbd78f6cdd9d47d6c5a18f50a","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                virt_driver.attach_volume("},{"line_number":239,"context_line":"                        context, connection_info, instance,"},{"line_number":240,"context_line":"                        self[\u0027mount_device\u0027], encryption\u003dencryption)"},{"line_number":241,"context_line":"            except Exception:  # pylint: disable\u003dW0702"},{"line_number":242,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":243,"context_line":"                    LOG.exception(_(\"Driver failed to attach volume \""},{"line_number":244,"context_line":"                                    \"%(volume_id)s at %(mountpoint)s\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FfO8%3D","line":241,"updated":"2014-01-13 12:03:16.000000000","message":"can you please explain the comment here please. not sure i understand","commit_id":"4236d9bd2e1705bd1df5ce4dfae85b3e216e3c2f"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d3d411d6a405b443e039bd0302ed539cc0f1599e","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                virt_driver.attach_volume("},{"line_number":239,"context_line":"                        context, connection_info, instance,"},{"line_number":240,"context_line":"                        self[\u0027mount_device\u0027], encryption\u003dencryption)"},{"line_number":241,"context_line":"            except Exception:  # pylint: disable\u003dW0702"},{"line_number":242,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":243,"context_line":"                    LOG.exception(_(\"Driver failed to attach volume \""},{"line_number":244,"context_line":"                                    \"%(volume_id)s at %(mountpoint)s\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FeBI%3D","line":241,"in_reply_to":"AAAAUH%2F%2FfO8%3D","updated":"2014-01-13 16:02:17.000000000","message":"http://docs.pylint.org/message-control","commit_id":"4236d9bd2e1705bd1df5ce4dfae85b3e216e3c2f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"52291367026c5a6cbd78f6cdd9d47d6c5a18f50a","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            except Exception:  # pylint: disable\u003dW0702"},{"line_number":242,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":243,"context_line":"                    LOG.exception(_(\"Driver failed to attach volume \""},{"line_number":244,"context_line":"                                    \"%(volume_id)s at %(mountpoint)s\") %"},{"line_number":245,"context_line":"                                  {\u0027volume_id\u0027: volume_id,"},{"line_number":246,"context_line":"                                   \u0027mountpoint\u0027: self[\u0027mount_device\u0027]},"},{"line_number":247,"context_line":"                                  context\u003dcontext, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FfO0%3D","line":244,"updated":"2014-01-13 12:03:16.000000000","message":"please use a , instead of the %","commit_id":"4236d9bd2e1705bd1df5ce4dfae85b3e216e3c2f"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"d3d411d6a405b443e039bd0302ed539cc0f1599e","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            except Exception:  # pylint: disable\u003dW0702"},{"line_number":242,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":243,"context_line":"                    LOG.exception(_(\"Driver failed to attach volume \""},{"line_number":244,"context_line":"                                    \"%(volume_id)s at %(mountpoint)s\") %"},{"line_number":245,"context_line":"                                  {\u0027volume_id\u0027: volume_id,"},{"line_number":246,"context_line":"                                   \u0027mountpoint\u0027: self[\u0027mount_device\u0027]},"},{"line_number":247,"context_line":"                                  context\u003dcontext, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FeCQ%3D","line":244,"in_reply_to":"AAAAUH%2F%2FfO0%3D","updated":"2014-01-13 16:02:17.000000000","message":"not sure I get this comment.","commit_id":"4236d9bd2e1705bd1df5ce4dfae85b3e216e3c2f"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"822f81340308e2a7ebcd598d7b1430a8140a5036","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    volume_api.terminate_connection(context, volume_id,"},{"line_number":247,"context_line":"                                                    connector)"},{"line_number":248,"context_line":"        if \u0027serial\u0027 not in connection_info:"},{"line_number":249,"context_line":"            connection_info[\u0027serial\u0027] \u003d self.volume_id"},{"line_number":250,"context_line":"        self[\u0027connection_info\u0027] \u003d connection_info"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        volume_api.attach(context, volume_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUX%2F%2F1WM%3D","line":249,"updated":"2014-02-10 14:28:15.000000000","message":"Don\u0027t we need to be setting this value before we call virt_driver.attach_volume. The \u0027serial\u0027 attribute is used to set the unique disk ID visible to the guest OS.","commit_id":"5dd8cd72716b54c82d5132d57521d2e072ab9c80"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"84b65a5ee304f22c571f4d93c344699f890ce314","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    volume_api.terminate_connection(context, volume_id,"},{"line_number":247,"context_line":"                                                    connector)"},{"line_number":248,"context_line":"        if \u0027serial\u0027 not in connection_info:"},{"line_number":249,"context_line":"            connection_info[\u0027serial\u0027] \u003d self.volume_id"},{"line_number":250,"context_line":"        self[\u0027connection_info\u0027] \u003d connection_info"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        volume_api.attach(context, volume_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAAUX%2F%2FyV4%3D","line":249,"in_reply_to":"AAAAUX%2F%2F1WM%3D","updated":"2014-02-10 20:27:18.000000000","message":"Yeah! (facepalm) Good catch!","commit_id":"5dd8cd72716b54c82d5132d57521d2e072ab9c80"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"0e0eb4fed7eb18cd93068d22ab5ad16af3c09993","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                                                           connector)"},{"line_number":229,"context_line":"        if \u0027serial\u0027 not in connection_info:"},{"line_number":230,"context_line":"            connection_info[\u0027serial\u0027] \u003d self.volume_id"},{"line_number":231,"context_line":"        self[\u0027connection_info\u0027] \u003d connection_info"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        # If do_driver_attach is False, we will attach a volume to an instance"},{"line_number":234,"context_line":"        # at boot time. So actual attach is done by instance creation code."}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUX%2F%2Fqqo%3D","line":231,"updated":"2014-02-11 16:42:29.000000000","message":"Do we want to set this information before attempting the attach()? If the attach fails, will this be wrong state?","commit_id":"d983b1ad459de6b5e0d9be64733b8b945cfb55d1"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"90d4ace39da3e9556b54288c475a87c37e0904d0","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                                                           connector)"},{"line_number":229,"context_line":"        if \u0027serial\u0027 not in connection_info:"},{"line_number":230,"context_line":"            connection_info[\u0027serial\u0027] \u003d self.volume_id"},{"line_number":231,"context_line":"        self[\u0027connection_info\u0027] \u003d connection_info"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        # If do_driver_attach is False, we will attach a volume to an instance"},{"line_number":234,"context_line":"        # at boot time. So actual attach is done by instance creation code."}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAUX%2F%2FpsI%3D","line":231,"in_reply_to":"AAAAUX%2F%2Fqqo%3D","updated":"2014-02-11 18:33:51.000000000","message":"Hmmm that is a good question. \n\nWe need this info in driver\u0027s attach method so that\u0027s why it\u0027s assigned before, but we do not need to set it on the object - so I can move it to afterwords, although If this fails - the exception will bubble up and the bdm will get cleaned up from the db - but yeah - you are right - better to be safe.","commit_id":"d983b1ad459de6b5e0d9be64733b8b945cfb55d1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a2d966e809df67cad6d81b5c48d36e2ebb79de76","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        if do_check_attach:"},{"line_number":218,"context_line":"            volume_api.check_attach(context, volume, instance\u003dinstance)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        instance_id \u003d instance[\u0027id\u0027]"},{"line_number":221,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":222,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":223,"context_line":"        context \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUX%2F%2FEzg%3D","line":220,"updated":"2014-02-17 09:49:53.000000000","message":"this variable is not used","commit_id":"8d7c2cd5334f953e68c0bc11f67e937348eaddd2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"a7d6a565f11b93e1ac3a43691f89ae0dbc03b33c","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        if do_check_attach:"},{"line_number":218,"context_line":"            volume_api.check_attach(context, volume, instance\u003dinstance)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        instance_id \u003d instance[\u0027id\u0027]"},{"line_number":221,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":222,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":223,"context_line":"        context \u003d context.elevated()"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUX%2F%2FC%2F4%3D","line":220,"in_reply_to":"AAAAUX%2F%2FEzg%3D","updated":"2014-02-17 13:10:22.000000000","message":"Done","commit_id":"8d7c2cd5334f953e68c0bc11f67e937348eaddd2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a2d966e809df67cad6d81b5c48d36e2ebb79de76","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            volume_api.check_attach(context, volume, instance\u003dinstance)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        instance_id \u003d instance[\u0027id\u0027]"},{"line_number":221,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":222,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":223,"context_line":"        context \u003d context.elevated()"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUX%2F%2FEzY%3D","line":221,"updated":"2014-02-17 09:49:53.000000000","message":"minor nit - but maybe we should move this line to 251 - there may be a flow where is does not need to be set","commit_id":"8d7c2cd5334f953e68c0bc11f67e937348eaddd2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"a7d6a565f11b93e1ac3a43691f89ae0dbc03b33c","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            volume_api.check_attach(context, volume, instance\u003dinstance)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        instance_id \u003d instance[\u0027id\u0027]"},{"line_number":221,"context_line":"        instance_uuid \u003d instance[\u0027uuid\u0027]"},{"line_number":222,"context_line":"        volume_id \u003d volume[\u0027id\u0027]"},{"line_number":223,"context_line":"        context \u003d context.elevated()"},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUX%2F%2FC%2F0%3D","line":221,"in_reply_to":"AAAAUX%2F%2FEzY%3D","updated":"2014-02-17 13:10:22.000000000","message":"Done","commit_id":"8d7c2cd5334f953e68c0bc11f67e937348eaddd2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a2d966e809df67cad6d81b5c48d36e2ebb79de76","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            except Exception:  # pylint: disable\u003dW0702"},{"line_number":243,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":244,"context_line":"                    LOG.exception(_(\"Driver failed to attach volume \""},{"line_number":245,"context_line":"                                    \"%(volume_id)s at %(mountpoint)s\") %"},{"line_number":246,"context_line":"                                  {\u0027volume_id\u0027: volume_id,"},{"line_number":247,"context_line":"                                   \u0027mountpoint\u0027: self[\u0027mount_device\u0027]},"},{"line_number":248,"context_line":"                                  context\u003dcontext, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUX%2F%2FE0A%3D","line":245,"updated":"2014-02-17 09:49:53.000000000","message":"please use a , instead of the %","commit_id":"8d7c2cd5334f953e68c0bc11f67e937348eaddd2"},{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"a7d6a565f11b93e1ac3a43691f89ae0dbc03b33c","unresolved":false,"context_lines":[{"line_number":242,"context_line":"            except Exception:  # pylint: disable\u003dW0702"},{"line_number":243,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":244,"context_line":"                    LOG.exception(_(\"Driver failed to attach volume \""},{"line_number":245,"context_line":"                                    \"%(volume_id)s at %(mountpoint)s\") %"},{"line_number":246,"context_line":"                                  {\u0027volume_id\u0027: volume_id,"},{"line_number":247,"context_line":"                                   \u0027mountpoint\u0027: self[\u0027mount_device\u0027]},"},{"line_number":248,"context_line":"                                  context\u003dcontext, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":23,"id":"AAAAUX%2F%2FC%2Fk%3D","line":245,"in_reply_to":"AAAAUX%2F%2FE0A%3D","updated":"2014-02-17 13:10:22.000000000","message":"Done","commit_id":"8d7c2cd5334f953e68c0bc11f67e937348eaddd2"}]}
