)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"a6afb15b8243713a4ba6b09406f7c8459463e076","unresolved":false,"context_lines":[{"line_number":5446,"context_line":"                              {\u0027volume_id\u0027: bdm.volume_id,"},{"line_number":5447,"context_line":"                               \u0027mountpoint\u0027: bdm[\u0027mount_device\u0027]},"},{"line_number":5448,"context_line":"                              instance\u003dinstance)"},{"line_number":5449,"context_line":"                if bdm[\u0027attachment_id\u0027]:"},{"line_number":5450,"context_line":"                    try:"},{"line_number":5451,"context_line":"                        self.volume_api.attachment_delete("},{"line_number":5452,"context_line":"                            context, bdm[\u0027attachment_id\u0027])"},{"line_number":5453,"context_line":"                    except exception.VolumeAttachmentNotFound as exc:"},{"line_number":5454,"context_line":"                        LOG.debug(\u0027Ignoring VolumeAttachmentNotFound: %s\u0027,"},{"line_number":5455,"context_line":"                                  exc, instance\u003dinstance)"},{"line_number":5456,"context_line":"                else:"},{"line_number":5457,"context_line":"                    self.volume_api.unreserve_volume(context, bdm.volume_id)"},{"line_number":5458,"context_line":"                tb \u003d traceback.format_exc()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_f08c9e80","line":5455,"range":{"start_line":5449,"start_character":16,"end_line":5455,"end_character":57},"updated":"2019-01-23 09:56:29.000000000","message":"Hmm, shoulde we just get rid of this logic?","commit_id":"6225fa3a4cf89b7156ca7e2a4f2198ee57a9b1f6"},{"author":{"_account_id":25837,"name":"yenai","email":"yenai_yewu@cmss.chinamobile.com","username":"yenai2008"},"change_message_id":"0a33afa7c4e563f255c4c60b67ded375b4ff39c6","unresolved":false,"context_lines":[{"line_number":5446,"context_line":"                              {\u0027volume_id\u0027: bdm.volume_id,"},{"line_number":5447,"context_line":"                               \u0027mountpoint\u0027: bdm[\u0027mount_device\u0027]},"},{"line_number":5448,"context_line":"                              instance\u003dinstance)"},{"line_number":5449,"context_line":"                if bdm[\u0027attachment_id\u0027]:"},{"line_number":5450,"context_line":"                    try:"},{"line_number":5451,"context_line":"                        self.volume_api.attachment_delete("},{"line_number":5452,"context_line":"                            context, bdm[\u0027attachment_id\u0027])"},{"line_number":5453,"context_line":"                    except exception.VolumeAttachmentNotFound as exc:"},{"line_number":5454,"context_line":"                        LOG.debug(\u0027Ignoring VolumeAttachmentNotFound: %s\u0027,"},{"line_number":5455,"context_line":"                                  exc, instance\u003dinstance)"},{"line_number":5456,"context_line":"                else:"},{"line_number":5457,"context_line":"                    self.volume_api.unreserve_volume(context, bdm.volume_id)"},{"line_number":5458,"context_line":"                tb \u003d traceback.format_exc()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_eb246cb1","line":5455,"range":{"start_line":5449,"start_character":16,"end_line":5455,"end_character":57},"in_reply_to":"9fdfeff1_f08c9e80","updated":"2019-01-28 03:06:10.000000000","message":"At present, it cannot be","commit_id":"6225fa3a4cf89b7156ca7e2a4f2198ee57a9b1f6"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"6b7971ec71bb38d991456527c16ad3643a099da8","unresolved":false,"context_lines":[{"line_number":5448,"context_line":"                              instance\u003dinstance)"},{"line_number":5449,"context_line":"                if bdm[\u0027attachment_id\u0027]:"},{"line_number":5450,"context_line":"                    try:"},{"line_number":5451,"context_line":"                        self.volume_api.attachment_delete("},{"line_number":5452,"context_line":"                            context, bdm[\u0027attachment_id\u0027])"},{"line_number":5453,"context_line":"                    except exception.VolumeAttachmentNotFound as exc:"},{"line_number":5454,"context_line":"                        LOG.debug(\u0027Ignoring VolumeAttachmentNotFound: %s\u0027,"},{"line_number":5455,"context_line":"                                  exc, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_1e3ecc8b","line":5452,"range":{"start_line":5451,"start_character":24,"end_line":5452,"end_character":58},"updated":"2019-01-28 06:40:25.000000000","message":"so, could we just get rid of this? as we have two exception handling in the block_device.py","commit_id":"36a064ac7896b3483973060664e660888006fa0c"},{"author":{"_account_id":25837,"name":"yenai","email":"yenai_yewu@cmss.chinamobile.com","username":"yenai2008"},"change_message_id":"d2370b5b2ccbaaf9e2e65554ec9c7c973b2b3ae2","unresolved":false,"context_lines":[{"line_number":5448,"context_line":"                              instance\u003dinstance)"},{"line_number":5449,"context_line":"                if bdm[\u0027attachment_id\u0027]:"},{"line_number":5450,"context_line":"                    try:"},{"line_number":5451,"context_line":"                        self.volume_api.attachment_delete("},{"line_number":5452,"context_line":"                            context, bdm[\u0027attachment_id\u0027])"},{"line_number":5453,"context_line":"                    except exception.VolumeAttachmentNotFound as exc:"},{"line_number":5454,"context_line":"                        LOG.debug(\u0027Ignoring VolumeAttachmentNotFound: %s\u0027,"},{"line_number":5455,"context_line":"                                  exc, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_842c9802","line":5452,"range":{"start_line":5451,"start_character":24,"end_line":5452,"end_character":58},"in_reply_to":"9fdfeff1_1e3ecc8b","updated":"2019-01-29 10:01:00.000000000","message":"Two exception handling in the block_device.py?\nCan you point out these two?","commit_id":"36a064ac7896b3483973060664e660888006fa0c"},{"author":{"_account_id":25837,"name":"yenai","email":"yenai_yewu@cmss.chinamobile.com","username":"yenai2008"},"change_message_id":"7b1c72a37c36554358baa0d4bb5afa1b95c2701f","unresolved":false,"context_lines":[{"line_number":5448,"context_line":"                              instance\u003dinstance)"},{"line_number":5449,"context_line":"                if bdm[\u0027attachment_id\u0027]:"},{"line_number":5450,"context_line":"                    try:"},{"line_number":5451,"context_line":"                        self.volume_api.attachment_delete("},{"line_number":5452,"context_line":"                            context, bdm[\u0027attachment_id\u0027])"},{"line_number":5453,"context_line":"                    except exception.VolumeAttachmentNotFound as exc:"},{"line_number":5454,"context_line":"                        LOG.debug(\u0027Ignoring VolumeAttachmentNotFound: %s\u0027,"},{"line_number":5455,"context_line":"                                  exc, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_15980619","line":5452,"range":{"start_line":5451,"start_character":24,"end_line":5452,"end_character":58},"in_reply_to":"9fdfeff1_3f448173","updated":"2019-02-11 09:03:21.000000000","message":"Done","commit_id":"36a064ac7896b3483973060664e660888006fa0c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8a8676af76a820bd0671e49684626d745f90b1e","unresolved":false,"context_lines":[{"line_number":5448,"context_line":"                              instance\u003dinstance)"},{"line_number":5449,"context_line":"                if bdm[\u0027attachment_id\u0027]:"},{"line_number":5450,"context_line":"                    try:"},{"line_number":5451,"context_line":"                        self.volume_api.attachment_delete("},{"line_number":5452,"context_line":"                            context, bdm[\u0027attachment_id\u0027])"},{"line_number":5453,"context_line":"                    except exception.VolumeAttachmentNotFound as exc:"},{"line_number":5454,"context_line":"                        LOG.debug(\u0027Ignoring VolumeAttachmentNotFound: %s\u0027,"},{"line_number":5455,"context_line":"                                  exc, instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_3f448173","line":5452,"range":{"start_line":5451,"start_character":24,"end_line":5452,"end_character":58},"in_reply_to":"9fdfeff1_842c9802","updated":"2019-02-02 21:19:38.000000000","message":"@Kevin: do you mean remove the self.volume_api.attachment_delete call here in this exception block because we already delete the attachment if the driver attach fails in the block_device module? There could be other places outside of that code that fails in which case we\u0027d want to delete the attachment, so I think the try/except/ignore here is OK (generally if something is gone when we go to delete it, we don\u0027t care since we want it gone anyway).\n\nThe one thing I\u0027d ask for here is a simple unit test.","commit_id":"36a064ac7896b3483973060664e660888006fa0c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c6bebc2a3c874c3046fa9364ed6c6387190494c6","unresolved":false,"context_lines":[{"line_number":5447,"context_line":"                               \u0027mountpoint\u0027: bdm[\u0027mount_device\u0027]},"},{"line_number":5448,"context_line":"                              instance\u003dinstance)"},{"line_number":5449,"context_line":"                if bdm[\u0027attachment_id\u0027]:"},{"line_number":5450,"context_line":"                    try:"},{"line_number":5451,"context_line":"                        self.volume_api.attachment_delete("},{"line_number":5452,"context_line":"                            context, bdm[\u0027attachment_id\u0027])"},{"line_number":5453,"context_line":"                    except exception.VolumeAttachmentNotFound as exc:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_8fc61f49","line":5450,"updated":"2019-02-11 15:05:59.000000000","message":"A comment here would be good otherwise it\u0027s hard to know that this code is tightly coupled to the bdm.attach code that cleans up the attachment on failure (but only in some cases).","commit_id":"0db948f8bca4579d9e187d83250e6c5ddfbacfe7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"caca6053e281c5961c8a58f71000e5a627913c8a","unresolved":false,"context_lines":[{"line_number":5447,"context_line":"                               \u0027mountpoint\u0027: bdm[\u0027mount_device\u0027]},"},{"line_number":5448,"context_line":"                              instance\u003dinstance)"},{"line_number":5449,"context_line":"                if bdm[\u0027attachment_id\u0027]:"},{"line_number":5450,"context_line":"                    try:"},{"line_number":5451,"context_line":"                        self.volume_api.attachment_delete("},{"line_number":5452,"context_line":"                            context, bdm[\u0027attachment_id\u0027])"},{"line_number":5453,"context_line":"                    except exception.VolumeAttachmentNotFound as exc:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_efefab84","line":5450,"in_reply_to":"9fdfeff1_8fc61f49","updated":"2019-02-11 15:13:49.000000000","message":"Done","commit_id":"0db948f8bca4579d9e187d83250e6c5ddfbacfe7"},{"author":{"_account_id":25837,"name":"yenai","email":"yenai_yewu@cmss.chinamobile.com","username":"yenai2008"},"change_message_id":"5156d28d27e0929a89b91d1665ff8158a851adae","unresolved":false,"context_lines":[{"line_number":5502,"context_line":"                               \u0027mountpoint\u0027: bdm[\u0027mount_device\u0027]},"},{"line_number":5503,"context_line":"                              instance\u003dinstance)"},{"line_number":5504,"context_line":"                if bdm[\u0027attachment_id\u0027]:"},{"line_number":5505,"context_line":"                    # Try to delete the attachment to make the volume"},{"line_number":5506,"context_line":"                    # available again. Note that DriverVolumeBlockDevice"},{"line_number":5507,"context_line":"                    # may have already deleted the attachment so ignore"},{"line_number":5508,"context_line":"                    # VolumeAttachmentNotFound."},{"line_number":5509,"context_line":"                    try:"},{"line_number":5510,"context_line":"                        self.volume_api.attachment_delete("},{"line_number":5511,"context_line":"                            context, bdm[\u0027attachment_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_a8fc2f72","line":5508,"range":{"start_line":5505,"start_character":0,"end_line":5508,"end_character":47},"updated":"2019-02-12 01:33:39.000000000","message":"This looks nice!\nGet it.","commit_id":"595866eb62db56fbd4f965619031ac902f99441a"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"98b5993016de2cce94b4d6e8d081435766b3a505","unresolved":false,"context_lines":[{"line_number":518,"context_line":"            self.assertRaises("},{"line_number":519,"context_line":"                    test.TestingException, self.compute.attach_volume,"},{"line_number":520,"context_line":"                    self.context, instance, fake_bdm)"},{"line_number":521,"context_line":"            self.assertTrue(mock_destroy.called)"},{"line_number":522,"context_line":"            mock_notify.assert_has_calls(["},{"line_number":523,"context_line":"                mock.call(self.context, instance, \u0027fake-mini\u0027,"},{"line_number":524,"context_line":"                          action\u003d\u0027volume_attach\u0027, phase\u003d\u0027start\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_8ff37fe7","line":521,"range":{"start_line":521,"start_character":12,"end_line":521,"end_character":48},"updated":"2019-02-11 15:00:49.000000000","message":"nit: use mock_destroy.assert_called_once_with() for a cleaner assertion message if this fails","commit_id":"0db948f8bca4579d9e187d83250e6c5ddfbacfe7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"caca6053e281c5961c8a58f71000e5a627913c8a","unresolved":false,"context_lines":[{"line_number":518,"context_line":"            self.assertRaises("},{"line_number":519,"context_line":"                    test.TestingException, self.compute.attach_volume,"},{"line_number":520,"context_line":"                    self.context, instance, fake_bdm)"},{"line_number":521,"context_line":"            self.assertTrue(mock_destroy.called)"},{"line_number":522,"context_line":"            mock_notify.assert_has_calls(["},{"line_number":523,"context_line":"                mock.call(self.context, instance, \u0027fake-mini\u0027,"},{"line_number":524,"context_line":"                          action\u003d\u0027volume_attach\u0027, phase\u003d\u0027start\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_0ff30f75","line":521,"range":{"start_line":521,"start_character":12,"end_line":521,"end_character":48},"in_reply_to":"9fdfeff1_8ff37fe7","updated":"2019-02-11 15:13:49.000000000","message":"Done","commit_id":"0db948f8bca4579d9e187d83250e6c5ddfbacfe7"}]}
