)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a4b4ef0bfd73b6c6279b3375e020be83f9da2e97","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Should not skip volume_size check for bdm.image_id \u003d\u003d image_ref case"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The volume size should be checked in bdm.sourece_type\u003dimage,"},{"line_number":10,"context_line":"dest_type\u003dvolume case no matter what the image"},{"line_number":11,"context_line":"is, but we skipped the check if the bdm.image_id \u003d\u003d image_ref,"},{"line_number":12,"context_line":"we should not skipped the volume_size check."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5fc1f717_65c24a36","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":48},"updated":"2019-03-06 22:36:44.000000000","message":"source","commit_id":"bf7fccab6f021f96d008cc0be08d1777b9d824e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b9298260c2ba0df8a5332b95a81e0eee085d7fec","unresolved":false,"context_lines":[{"line_number":10,"context_line":"dest_type\u003dvolume case no matter what the image"},{"line_number":11,"context_line":"is, but we skipped the check if the bdm.image_id \u003d\u003d image_ref,"},{"line_number":12,"context_line":"we should not skipped the volume_size check."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ib10579280b63a4dd59ac76733aa0ff48fd2e024b"},{"line_number":15,"context_line":"closes-bug: 1818798"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5fc1f717_3c8dd87b","line":13,"updated":"2019-04-05 23:47:52.000000000","message":"I was wondering if there was some other reason why the logic was that way, so this information from the bug report would have been helpful in the commit message:\n\n\"it was meant to skip only the _get_image() check as it\nis already checked before, but it skipped the volume_size check too.\"","commit_id":"24fe74d126f23bea56c87524b1005a2aaacb870c"}],"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a994899c1c48603cf9f08e797cabfa2b5f307feb","unresolved":false,"context_lines":[{"line_number":1493,"context_line":"            snapshot_id \u003d bdm.snapshot_id"},{"line_number":1494,"context_line":"            volume_id \u003d bdm.volume_id"},{"line_number":1495,"context_line":"            image_id \u003d bdm.image_id"},{"line_number":1496,"context_line":"            if image_id is not None:"},{"line_number":1497,"context_line":"                if image_id !\u003d instance.get(\u0027image_ref\u0027):"},{"line_number":1498,"context_line":"                    try:"},{"line_number":1499,"context_line":"                        self._get_image(context, image_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_e2d702bf","line":1496,"updated":"2019-03-07 13:00:13.000000000","message":"it would be nice to have a unit test to prevent a regression in the future","commit_id":"bf7fccab6f021f96d008cc0be08d1777b9d824e1"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"8d3674481c19fa72874c5836957971b2ca5f9542","unresolved":false,"context_lines":[{"line_number":1493,"context_line":"            snapshot_id \u003d bdm.snapshot_id"},{"line_number":1494,"context_line":"            volume_id \u003d bdm.volume_id"},{"line_number":1495,"context_line":"            image_id \u003d bdm.image_id"},{"line_number":1496,"context_line":"            if image_id is not None:"},{"line_number":1497,"context_line":"                if image_id !\u003d instance.get(\u0027image_ref\u0027):"},{"line_number":1498,"context_line":"                    try:"},{"line_number":1499,"context_line":"                        self._get_image(context, image_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_59f35b0b","line":1496,"in_reply_to":"5fc1f717_e2d702bf","updated":"2019-03-08 03:10:49.000000000","message":"Sorry I don\u0027t quite get this, do you mean add a regeression test?","commit_id":"bf7fccab6f021f96d008cc0be08d1777b9d824e1"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"aa0fd944976f137f76846bab9fdd26503f9d7e84","unresolved":false,"context_lines":[{"line_number":4548,"context_line":"        bdms \u003d objects.BlockDeviceMappingList(objects\u003d["},{"line_number":4549,"context_line":"            objects.BlockDeviceMapping("},{"line_number":4550,"context_line":"                boot_index\u003d1, image_id\u003dinstance.image_ref,"},{"line_number":4551,"context_line":"                source_type\u003d\u0027image\u0027, destination_type\u003d\u0027volume\u0027)])"},{"line_number":4552,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4553,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4554,"context_line":"                          self.context, objects.Instance(), objects.Flavor(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_ae09d395","line":4551,"range":{"start_line":4551,"start_character":62,"end_line":4551,"end_character":63},"updated":"2019-03-08 02:24:37.000000000","message":"The following fields are not lazy-loadable. So they should be set (None).\n\nvolume_type\nsnapshot_id\nvolume_id\nvolume_size","commit_id":"e96f5ae68b8d297c31cc4fbd04e46d9f60db9427"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"aa0fd944976f137f76846bab9fdd26503f9d7e84","unresolved":false,"context_lines":[{"line_number":4551,"context_line":"                source_type\u003d\u0027image\u0027, destination_type\u003d\u0027volume\u0027)])"},{"line_number":4552,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4553,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4554,"context_line":"                          self.context, objects.Instance(), objects.Flavor(),"},{"line_number":4555,"context_line":"                          bdms)"},{"line_number":4556,"context_line":"        # then we test the case of instance.image_ref !\u003d bdm.image_id"},{"line_number":4557,"context_line":"        bdms \u003d objects.BlockDeviceMappingList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_8e2bb7e9","line":4554,"range":{"start_line":4554,"start_character":60,"end_line":4554,"end_character":76},"updated":"2019-03-08 02:24:37.000000000","message":"Use self._create_flavor().","commit_id":"e96f5ae68b8d297c31cc4fbd04e46d9f60db9427"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"aa0fd944976f137f76846bab9fdd26503f9d7e84","unresolved":false,"context_lines":[{"line_number":4551,"context_line":"                source_type\u003d\u0027image\u0027, destination_type\u003d\u0027volume\u0027)])"},{"line_number":4552,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4553,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4554,"context_line":"                          self.context, objects.Instance(), objects.Flavor(),"},{"line_number":4555,"context_line":"                          bdms)"},{"line_number":4556,"context_line":"        # then we test the case of instance.image_ref !\u003d bdm.image_id"},{"line_number":4557,"context_line":"        bdms \u003d objects.BlockDeviceMappingList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_6e03eb74","line":4554,"range":{"start_line":4554,"start_character":40,"end_line":4554,"end_character":58},"updated":"2019-03-08 02:24:37.000000000","message":"instance (line 4546)","commit_id":"e96f5ae68b8d297c31cc4fbd04e46d9f60db9427"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"c0e57cef64e9f9901fd86ad4bc2a60863338bad7","unresolved":false,"context_lines":[{"line_number":4552,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4553,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4554,"context_line":"                          self.context, objects.Instance(), objects.Flavor(),"},{"line_number":4555,"context_line":"                          bdms)"},{"line_number":4556,"context_line":"        # then we test the case of instance.image_ref !\u003d bdm.image_id"},{"line_number":4557,"context_line":"        bdms \u003d objects.BlockDeviceMappingList(objects\u003d["},{"line_number":4558,"context_line":"            objects.BlockDeviceMapping("}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_cb48d1cd","line":4555,"updated":"2019-03-08 01:18:20.000000000","message":"Assert that _get_image method is *not* called.","commit_id":"e96f5ae68b8d297c31cc4fbd04e46d9f60db9427"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"aa0fd944976f137f76846bab9fdd26503f9d7e84","unresolved":false,"context_lines":[{"line_number":4557,"context_line":"        bdms \u003d objects.BlockDeviceMappingList(objects\u003d["},{"line_number":4558,"context_line":"            objects.BlockDeviceMapping("},{"line_number":4559,"context_line":"                boot_index\u003d1, image_id\u003duuids.image_id,"},{"line_number":4560,"context_line":"                source_type\u003d\u0027image\u0027, destination_type\u003d\u0027volume\u0027)])"},{"line_number":4561,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4562,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4563,"context_line":"                          self.context, objects.Instance(), objects.Flavor(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_4e006f68","line":4560,"range":{"start_line":4560,"start_character":61,"end_line":4560,"end_character":63},"updated":"2019-03-08 02:24:37.000000000","message":"ditto","commit_id":"e96f5ae68b8d297c31cc4fbd04e46d9f60db9427"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"aa0fd944976f137f76846bab9fdd26503f9d7e84","unresolved":false,"context_lines":[{"line_number":4560,"context_line":"                source_type\u003d\u0027image\u0027, destination_type\u003d\u0027volume\u0027)])"},{"line_number":4561,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4562,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4563,"context_line":"                          self.context, objects.Instance(), objects.Flavor(),"},{"line_number":4564,"context_line":"                          bdms)"},{"line_number":4565,"context_line":""},{"line_number":4566,"context_line":"    @mock.patch.object(objects.service, \u0027get_minimum_version_all_cells\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_2ef5e383","line":4563,"range":{"start_line":4563,"start_character":40,"end_line":4563,"end_character":58},"updated":"2019-03-08 02:24:37.000000000","message":"ditto","commit_id":"e96f5ae68b8d297c31cc4fbd04e46d9f60db9427"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"aa0fd944976f137f76846bab9fdd26503f9d7e84","unresolved":false,"context_lines":[{"line_number":4560,"context_line":"                source_type\u003d\u0027image\u0027, destination_type\u003d\u0027volume\u0027)])"},{"line_number":4561,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4562,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4563,"context_line":"                          self.context, objects.Instance(), objects.Flavor(),"},{"line_number":4564,"context_line":"                          bdms)"},{"line_number":4565,"context_line":""},{"line_number":4566,"context_line":"    @mock.patch.object(objects.service, \u0027get_minimum_version_all_cells\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_ae2eb3f7","line":4563,"range":{"start_line":4563,"start_character":60,"end_line":4563,"end_character":76},"updated":"2019-03-08 02:24:37.000000000","message":"ditto","commit_id":"e96f5ae68b8d297c31cc4fbd04e46d9f60db9427"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"c0e57cef64e9f9901fd86ad4bc2a60863338bad7","unresolved":false,"context_lines":[{"line_number":4561,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4562,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4563,"context_line":"                          self.context, objects.Instance(), objects.Flavor(),"},{"line_number":4564,"context_line":"                          bdms)"},{"line_number":4565,"context_line":""},{"line_number":4566,"context_line":"    @mock.patch.object(objects.service, \u0027get_minimum_version_all_cells\u0027,"},{"line_number":4567,"context_line":"                       return_value\u003dcompute_api.MIN_COMPUTE_VOLUME_TYPE)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5fc1f717_0b3fb925","line":4564,"updated":"2019-03-08 01:18:20.000000000","message":"Assert that _get_image method is called.","commit_id":"e96f5ae68b8d297c31cc4fbd04e46d9f60db9427"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b9298260c2ba0df8a5332b95a81e0eee085d7fec","unresolved":false,"context_lines":[{"line_number":4552,"context_line":"                source_type\u003d\u0027image\u0027, destination_type\u003d\u0027volume\u0027,"},{"line_number":4553,"context_line":"                volume_type\u003dNone, snapshot_id\u003dNone, volume_id\u003dNone,"},{"line_number":4554,"context_line":"                volume_size\u003dNone)])"},{"line_number":4555,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4556,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4557,"context_line":"                          self.context, instance, objects.Flavor(),"},{"line_number":4558,"context_line":"                          bdms)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_bceea81e","line":4555,"updated":"2019-04-05 23:47:52.000000000","message":"nit: I\u0027d prefer to assert this is the case we expect by checking the error message:\n\nex \u003d self.assertRaises(...)\nself.assertIn(\u0027need to have a non-zero size\u0027, six.text_type(ex))","commit_id":"24fe74d126f23bea56c87524b1005a2aaacb870c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b9298260c2ba0df8a5332b95a81e0eee085d7fec","unresolved":false,"context_lines":[{"line_number":4565,"context_line":"                source_type\u003d\u0027image\u0027, destination_type\u003d\u0027volume\u0027,"},{"line_number":4566,"context_line":"                volume_type\u003dNone, snapshot_id\u003dNone, volume_id\u003dNone,"},{"line_number":4567,"context_line":"                volume_size\u003dNone)])"},{"line_number":4568,"context_line":"        self.assertRaises(exception.InvalidBDM,"},{"line_number":4569,"context_line":"                          self.compute_api._validate_bdm,"},{"line_number":4570,"context_line":"                          self.context, instance, objects.Flavor(),"},{"line_number":4571,"context_line":"                          bdms)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5fc1f717_9cd96c84","line":4568,"updated":"2019-04-05 23:47:52.000000000","message":"same","commit_id":"24fe74d126f23bea56c87524b1005a2aaacb870c"}]}
