)]}'
{"cinder/tests/unit/test_block_device.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"112297fc6acfca0433c444bba23c4562fa2a4caf","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        with mock.patch.object(self.drv, \u0027find_appropriate_size_device\u0027,"},{"line_number":322,"context_line":"                               return_value\u003d\u0027/dev/loop2\u0027) as fasd_mocked:"},{"line_number":323,"context_line":"            with mock.patch.object(self.drv, \u0027_get_devices_sizes\u0027,"},{"line_number":324,"context_line":"                                   return_value\u003d{\u0027/dev/loop2\u0027: 1024}) as \\"},{"line_number":325,"context_line":"                    gds_mocked:"},{"line_number":326,"context_line":"                with mock.patch.object(obj_volume.Volume, \u0027save\u0027) as \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_02aa2f19","line":323,"updated":"2015-12-08 15:45:45.000000000","message":"Can we use decorators instead of nesting?","commit_id":"48395993f08722310426c9a628aea8286840612a"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"769f7a381e8cc570c4ba5a6643a1a14d6bcace6c","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        with mock.patch.object(self.drv, \u0027find_appropriate_size_device\u0027,"},{"line_number":322,"context_line":"                               return_value\u003d\u0027/dev/loop2\u0027) as fasd_mocked:"},{"line_number":323,"context_line":"            with mock.patch.object(self.drv, \u0027_get_devices_sizes\u0027,"},{"line_number":324,"context_line":"                                   return_value\u003d{\u0027/dev/loop2\u0027: 1024}) as \\"},{"line_number":325,"context_line":"                    gds_mocked:"},{"line_number":326,"context_line":"                with mock.patch.object(obj_volume.Volume, \u0027save\u0027) as \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_8ad95559","line":323,"in_reply_to":"7a740942_02aa2f19","updated":"2015-12-08 16:21:03.000000000","message":"In that case, self.drv won\u0027t be defined.","commit_id":"48395993f08722310426c9a628aea8286840612a"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"a9e7b52a9474bd06188246c8b441e13146d06967","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        with mock.patch.object(self.drv, \u0027find_appropriate_size_device\u0027,"},{"line_number":322,"context_line":"                               return_value\u003d\u0027/dev/loop2\u0027) as fasd_mocked:"},{"line_number":323,"context_line":"            with mock.patch.object(self.drv, \u0027_get_devices_sizes\u0027,"},{"line_number":324,"context_line":"                                   return_value\u003d{\u0027/dev/loop2\u0027: 1024}) as \\"},{"line_number":325,"context_line":"                    gds_mocked:"},{"line_number":326,"context_line":"                with mock.patch.object(obj_volume.Volume, \u0027save\u0027) as \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_f765401d","line":323,"in_reply_to":"7a740942_8ad95559","updated":"2015-12-09 07:29:06.000000000","message":"I think mock.patch(\u0027cinder.volume.drivers.BlockDeviceDriver._get_devices_sizes\u0027) will work.","commit_id":"48395993f08722310426c9a628aea8286840612a"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"112297fc6acfca0433c444bba23c4562fa2a4caf","unresolved":false,"context_lines":[{"line_number":323,"context_line":"            with mock.patch.object(self.drv, \u0027_get_devices_sizes\u0027,"},{"line_number":324,"context_line":"                                   return_value\u003d{\u0027/dev/loop2\u0027: 1024}) as \\"},{"line_number":325,"context_line":"                    gds_mocked:"},{"line_number":326,"context_line":"                with mock.patch.object(obj_volume.Volume, \u0027save\u0027) as \\"},{"line_number":327,"context_line":"                        save_mocked:"},{"line_number":328,"context_line":"                    volutils.copy_volume(\u0027/dev/loop1\u0027, fasd_mocked, 1024,"},{"line_number":329,"context_line":"                                         mock.sentinel,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_22e08b95","line":326,"updated":"2015-12-08 15:45:45.000000000","message":"Why do we need to mock this? I think you should mock _update_provider_location.","commit_id":"48395993f08722310426c9a628aea8286840612a"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"769f7a381e8cc570c4ba5a6643a1a14d6bcace6c","unresolved":false,"context_lines":[{"line_number":323,"context_line":"            with mock.patch.object(self.drv, \u0027_get_devices_sizes\u0027,"},{"line_number":324,"context_line":"                                   return_value\u003d{\u0027/dev/loop2\u0027: 1024}) as \\"},{"line_number":325,"context_line":"                    gds_mocked:"},{"line_number":326,"context_line":"                with mock.patch.object(obj_volume.Volume, \u0027save\u0027) as \\"},{"line_number":327,"context_line":"                        save_mocked:"},{"line_number":328,"context_line":"                    volutils.copy_volume(\u0027/dev/loop1\u0027, fasd_mocked, 1024,"},{"line_number":329,"context_line":"                                         mock.sentinel,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_4adfed39","line":326,"in_reply_to":"7a740942_22e08b95","updated":"2015-12-08 16:21:03.000000000","message":"Done","commit_id":"48395993f08722310426c9a628aea8286840612a"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"112297fc6acfca0433c444bba23c4562fa2a4caf","unresolved":false,"context_lines":[{"line_number":349,"context_line":"            with mock.patch.object(self.drv, \u0027_get_devices_sizes\u0027,"},{"line_number":350,"context_line":"                                   return_value\u003d{\u0027/dev/loop2\u0027: 1024}) as \\"},{"line_number":351,"context_line":"                    gds_mocked:"},{"line_number":352,"context_line":"                with mock.patch.object(obj_volume.Volume, \u0027save\u0027) as \\"},{"line_number":353,"context_line":"                        save_mocked:"},{"line_number":354,"context_line":"                    volutils.copy_volume(\u0027/dev/loop1\u0027, fasd_mocked, 1024,"},{"line_number":355,"context_line":"                                         mock.sentinel,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_227c0bb4","line":352,"updated":"2015-12-08 15:45:45.000000000","message":"Same comment.","commit_id":"48395993f08722310426c9a628aea8286840612a"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"769f7a381e8cc570c4ba5a6643a1a14d6bcace6c","unresolved":false,"context_lines":[{"line_number":349,"context_line":"            with mock.patch.object(self.drv, \u0027_get_devices_sizes\u0027,"},{"line_number":350,"context_line":"                                   return_value\u003d{\u0027/dev/loop2\u0027: 1024}) as \\"},{"line_number":351,"context_line":"                    gds_mocked:"},{"line_number":352,"context_line":"                with mock.patch.object(obj_volume.Volume, \u0027save\u0027) as \\"},{"line_number":353,"context_line":"                        save_mocked:"},{"line_number":354,"context_line":"                    volutils.copy_volume(\u0027/dev/loop1\u0027, fasd_mocked, 1024,"},{"line_number":355,"context_line":"                                         mock.sentinel,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_0ae6c514","line":352,"in_reply_to":"7a740942_227c0bb4","updated":"2015-12-08 16:21:03.000000000","message":"Done","commit_id":"48395993f08722310426c9a628aea8286840612a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"806c54658330a8151c27d0cec125a61e751b3560","unresolved":false,"context_lines":[{"line_number":314,"context_line":"                                        size\u003d1,"},{"line_number":315,"context_line":"                                        display_name\u003d\u0027vol1\u0027,"},{"line_number":316,"context_line":"                                        status\u003d\u0027available\u0027,"},{"line_number":317,"context_line":"                                        provider_location\u003d\u00271 2 3 /dev/loop1\u0027)"},{"line_number":318,"context_line":"        TEST_SNAP \u003d obj_snap.Snapshot(id\u003d1,"},{"line_number":319,"context_line":"                                      volume_id\u003d1,"},{"line_number":320,"context_line":"                                      volume_size\u003d1024,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_23fb7849","line":317,"updated":"2015-12-09 13:31:36.000000000","message":"What is \u00271 2 3\u0027 in the provider_location?","commit_id":"1cc17537544ddd04e289cabeba4018d5058dc3b5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"806c54658330a8151c27d0cec125a61e751b3560","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                      provider_location\u003d\u00271 2 3 /dev/loop2\u0027,"},{"line_number":322,"context_line":"                                      volume\u003dTEST_VOLUME)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        with mock.patch.object(self.drv, \u0027find_appropriate_size_device\u0027,"},{"line_number":325,"context_line":"                               return_value\u003d\u0027/dev/loop2\u0027) as fasd_mocked:"},{"line_number":326,"context_line":"            with mock.patch.object(self.drv, \u0027_get_devices_sizes\u0027,"},{"line_number":327,"context_line":"                                   return_value\u003d{\u0027/dev/loop2\u0027: 1024}) as \\"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_e377b006","line":324,"updated":"2015-12-09 13:31:36.000000000","message":"Instead of this 2 mocks, you need to mock only self.drv._execute method","commit_id":"1cc17537544ddd04e289cabeba4018d5058dc3b5"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"4fb536436748cdd7310f464cbbcf77898114b7f2","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                      provider_location\u003d\u00271 2 3 /dev/loop2\u0027,"},{"line_number":322,"context_line":"                                      volume\u003dTEST_VOLUME)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        with mock.patch.object(self.drv, \u0027find_appropriate_size_device\u0027,"},{"line_number":325,"context_line":"                               return_value\u003d\u0027/dev/loop2\u0027) as fasd_mocked:"},{"line_number":326,"context_line":"            with mock.patch.object(self.drv, \u0027_get_devices_sizes\u0027,"},{"line_number":327,"context_line":"                                   return_value\u003d{\u0027/dev/loop2\u0027: 1024}) as \\"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_95ace336","line":324,"in_reply_to":"7a740942_e377b006","updated":"2015-12-09 13:45:38.000000000","message":"create_snapshot is calling these 2 methods, so I think it should be mocked.","commit_id":"1cc17537544ddd04e289cabeba4018d5058dc3b5"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"806c54658330a8151c27d0cec125a61e751b3560","unresolved":false,"context_lines":[{"line_number":328,"context_line":"                    gds_mocked:"},{"line_number":329,"context_line":"                with mock.patch.object(self.drv,"},{"line_number":330,"context_line":"                                       \u0027_update_provider_location\u0027) as \\"},{"line_number":331,"context_line":"                        save_mocked:"},{"line_number":332,"context_line":"                    volutils.copy_volume(\u0027/dev/loop1\u0027, fasd_mocked, 1024,"},{"line_number":333,"context_line":"                                         mock.sentinel,"},{"line_number":334,"context_line":"                                         execute\u003dself.drv._execute)"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a740942_a358c88b","line":331,"updated":"2015-12-09 13:31:36.000000000","message":"The name of the variable doesn\u0027t match what it actually is","commit_id":"1cc17537544ddd04e289cabeba4018d5058dc3b5"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0d954f99581d7d3f63156293ff3f66b1d49c9932","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        with mock.patch.object(self.drv, \u0027find_appropriate_size_device\u0027,"},{"line_number":135,"context_line":"                               return_value\u003d\u0027dev_path\u0027) as fasd_mocked:"},{"line_number":136,"context_line":"            with mock.patch.object(self.drv, \u0027_update_provider_location\u0027) as \\"},{"line_number":137,"context_line":"                    upl_mocked:"},{"line_number":138,"context_line":"                self.drv.create_volume(TEST_VOLUME)"},{"line_number":139,"context_line":"                fasd_mocked.assert_called_once_with(TEST_VOLUME.size)"},{"line_number":140,"context_line":"                upl_mocked.assert_called_once_with(TEST_VOLUME, \u0027dev_path\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a740942_e8a9b691","line":137,"updated":"2015-12-09 20:41:24.000000000","message":"nit: This should be done in parent patch, so please move it if you\u0027ll have a chance.","commit_id":"4d8b38b323a00184955a408d53eb4dc7fcd15df9"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"6282cfadc5facb5702c82248031e711cf37d112b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        with mock.patch.object(self.drv, \u0027find_appropriate_size_device\u0027,"},{"line_number":135,"context_line":"                               return_value\u003d\u0027dev_path\u0027) as fasd_mocked:"},{"line_number":136,"context_line":"            with mock.patch.object(self.drv, \u0027_update_provider_location\u0027) as \\"},{"line_number":137,"context_line":"                    upl_mocked:"},{"line_number":138,"context_line":"                self.drv.create_volume(TEST_VOLUME)"},{"line_number":139,"context_line":"                fasd_mocked.assert_called_once_with(TEST_VOLUME.size)"},{"line_number":140,"context_line":"                upl_mocked.assert_called_once_with(TEST_VOLUME, \u0027dev_path\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a740942_e033f1f4","line":137,"in_reply_to":"7a740942_e8a9b691","updated":"2015-12-10 09:34:27.000000000","message":"Done.","commit_id":"4d8b38b323a00184955a408d53eb4dc7fcd15df9"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0d954f99581d7d3f63156293ff3f66b1d49c9932","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                    upl_mocked:"},{"line_number":138,"context_line":"                self.drv.create_volume(TEST_VOLUME)"},{"line_number":139,"context_line":"                fasd_mocked.assert_called_once_with(TEST_VOLUME.size)"},{"line_number":140,"context_line":"                upl_mocked.assert_called_once_with(TEST_VOLUME, \u0027dev_path\u0027)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    def test_update_volume_stats(self):"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"7a740942_a8940e44","line":140,"updated":"2015-12-09 20:41:24.000000000","message":"ditto","commit_id":"4d8b38b323a00184955a408d53eb4dc7fcd15df9"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0d954f99581d7d3f63156293ff3f66b1d49c9932","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                        lp_mocked:"},{"line_number":183,"context_line":"                    with mock.patch.object(self.drv,"},{"line_number":184,"context_line":"                                           \u0027_update_provider_location\u0027) as \\"},{"line_number":185,"context_line":"                            upl_mocked:"},{"line_number":186,"context_line":"                        volutils.copy_volume(\u0027/dev/loop1\u0027, fasd_mocked, 2,"},{"line_number":187,"context_line":"                                             mock.sentinel,"},{"line_number":188,"context_line":"                                             execute\u003dself.drv._execute)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a740942_2887be13","line":185,"updated":"2015-12-09 20:41:24.000000000","message":"ditto","commit_id":"4d8b38b323a00184955a408d53eb4dc7fcd15df9"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"0d954f99581d7d3f63156293ff3f66b1d49c9932","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                        fasd_mocked.assert_called_once_with(TEST_SRC.size)"},{"line_number":191,"context_line":"                        lp_mocked.assert_called_once_with(TEST_SRC)"},{"line_number":192,"context_line":"                        gds_mocked.assert_called_once_with([\u0027/dev/loop2\u0027])"},{"line_number":193,"context_line":"                        upl_mocked.assert_called_once_with("},{"line_number":194,"context_line":"                            TEST_VOLUME, \u0027/dev/loop2\u0027)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    @mock.patch.object(cinder.image.image_utils, \u0027fetch_to_raw\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"7a740942_88727248","line":193,"updated":"2015-12-09 20:41:24.000000000","message":"ditto","commit_id":"4d8b38b323a00184955a408d53eb4dc7fcd15df9"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5b0b75a9dd9525587d20108ed676d482fa735e54","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                        TEST_SNAP.volume_size)"},{"line_number":395,"context_line":"                    gds_mocked.assert_called_once_with([\u0027/dev/loop2\u0027])"},{"line_number":396,"context_line":"                    upl_mocked.assert_called_once_with("},{"line_number":397,"context_line":"                        TEST_VOLUME, \u0027/dev/loop2\u0027)"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a740942_bab7b838","line":397,"updated":"2015-12-14 13:20:51.000000000","message":"Don\u0027t we also need a test for delete_snapshot?","commit_id":"b8fd8429e92b6975902b7381e77d39297f20b6b6"}],"cinder/volume/drivers/block_device.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e9294e82ffdac55ebca790792eae53ce86115103","unresolved":false,"context_lines":[{"line_number":251,"context_line":"            dev_size[device],"},{"line_number":252,"context_line":"            self.configuration.volume_dd_blocksize,"},{"line_number":253,"context_line":"            execute\u003dself._execute)"},{"line_number":254,"context_line":"        return self._update_provider_location(volume, device)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    @utils.synchronized(\u0027block_device\u0027, external\u003dTrue)"},{"line_number":257,"context_line":"    def delete_snapshot(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_9f4455b7","line":254,"updated":"2015-12-08 08:12:27.000000000","message":"Returning updates to manager will trigger unnecessary DB update as I\u0027ve remarked on dependency patch.","commit_id":"7d58c52e3633ce9238003b58332dc207359d189c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e9294e82ffdac55ebca790792eae53ce86115103","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            dev_size[device],"},{"line_number":268,"context_line":"            self.configuration.volume_dd_blocksize,"},{"line_number":269,"context_line":"            execute\u003dself._execute)"},{"line_number":270,"context_line":"        return self._update_provider_location(volume, device)"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    # #######  Interface methods for DataPath (Target Driver) ########"},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_ff09d984","line":270,"updated":"2015-12-08 08:12:27.000000000","message":"Ditto.","commit_id":"7d58c52e3633ce9238003b58332dc207359d189c"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"4563a3d069d932226d94d0d16c12ac9aa30854bd","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    @utils.synchronized(\u0027block_device\u0027, external\u003dTrue)"},{"line_number":234,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":235,"context_line":"        volume \u003d self.db.volume_get(context.get_admin_context(),"},{"line_number":236,"context_line":"                                    snapshot[\u0027volume_id\u0027])"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        if volume[\u0027status\u0027] !\u003d \u0027available\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_b0793bca","line":235,"updated":"2015-12-08 10:14:33.000000000","message":"You should rather use objects here. And as snapshot is an object you should be able to just do snapshot.volume to fetch volume.","commit_id":"d8b8d2977d9c02bd0d970c9d995bb4a2f3c93c56"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"4563a3d069d932226d94d0d16c12ac9aa30854bd","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        volume \u003d self.db.volume_get(context.get_admin_context(),"},{"line_number":236,"context_line":"                                    snapshot[\u0027volume_id\u0027])"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        if volume[\u0027status\u0027] !\u003d \u0027available\u0027:"},{"line_number":239,"context_line":"            msg \u003d _(\"Volume is not available.\")"},{"line_number":240,"context_line":"            LOG.error(msg, resource\u003dvolume)"},{"line_number":241,"context_line":"            raise exception.CinderException(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_1047ef77","line":238,"updated":"2015-12-08 10:14:33.000000000","message":"We should use object notation instead of dict notation once volume will be an object.","commit_id":"d8b8d2977d9c02bd0d970c9d995bb4a2f3c93c56"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"4563a3d069d932226d94d0d16c12ac9aa30854bd","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            LOG.error(msg, resource\u003dvolume)"},{"line_number":241,"context_line":"            raise exception.CinderException(msg)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        LOG.info(_LI(\u0027Creating volume snapshot: %s.\u0027), snapshot[\u0027id\u0027])"},{"line_number":244,"context_line":"        device \u003d self.find_appropriate_size_device(snapshot[\u0027volume_size\u0027])"},{"line_number":245,"context_line":"        dev_size \u003d self._get_devices_sizes([device])"},{"line_number":246,"context_line":"        volutils.copy_volume("}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_d02407c6","line":243,"updated":"2015-12-08 10:14:33.000000000","message":"ditto","commit_id":"d8b8d2977d9c02bd0d970c9d995bb4a2f3c93c56"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"4563a3d069d932226d94d0d16c12ac9aa30854bd","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            raise exception.CinderException(msg)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        LOG.info(_LI(\u0027Creating volume snapshot: %s.\u0027), snapshot[\u0027id\u0027])"},{"line_number":244,"context_line":"        device \u003d self.find_appropriate_size_device(snapshot[\u0027volume_size\u0027])"},{"line_number":245,"context_line":"        dev_size \u003d self._get_devices_sizes([device])"},{"line_number":246,"context_line":"        volutils.copy_volume("},{"line_number":247,"context_line":"            self.local_path(volume), device,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_702d13a7","line":244,"updated":"2015-12-08 10:14:33.000000000","message":"ditto","commit_id":"d8b8d2977d9c02bd0d970c9d995bb4a2f3c93c56"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"4563a3d069d932226d94d0d16c12ac9aa30854bd","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            dev_size[device],"},{"line_number":249,"context_line":"            self.configuration.volume_dd_blocksize,"},{"line_number":250,"context_line":"            execute\u003dself._execute)"},{"line_number":251,"context_line":"        return self._update_provider_location(volume, device)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    @utils.synchronized(\u0027block_device\u0027, external\u003dTrue)"},{"line_number":254,"context_line":"    def delete_snapshot(self, snapshot):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a740942_cb121857","line":251,"updated":"2015-12-08 10:14:33.000000000","message":"Oh, this even won\u0027t work if volume is a SQLAlchemy model instead of versioned object.","commit_id":"d8b8d2977d9c02bd0d970c9d995bb4a2f3c93c56"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"112297fc6acfca0433c444bba23c4562fa2a4caf","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        if volume.status !\u003d \u0027available\u0027:"},{"line_number":236,"context_line":"            msg \u003d _(\"Volume is not available.\")"},{"line_number":237,"context_line":"            LOG.error(msg, resource\u003dvolume)"},{"line_number":238,"context_line":"            raise exception.CinderException(msg)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        LOG.info(_LI(\u0027Creating volume snapshot: %s.\u0027), snapshot.id)"},{"line_number":241,"context_line":"        device \u003d self.find_appropriate_size_device(snapshot.volume_size)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_e26923fa","line":238,"updated":"2015-12-08 15:45:45.000000000","message":"This case is not covered by unit tests.","commit_id":"48395993f08722310426c9a628aea8286840612a"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"769f7a381e8cc570c4ba5a6643a1a14d6bcace6c","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        if volume.status !\u003d \u0027available\u0027:"},{"line_number":236,"context_line":"            msg \u003d _(\"Volume is not available.\")"},{"line_number":237,"context_line":"            LOG.error(msg, resource\u003dvolume)"},{"line_number":238,"context_line":"            raise exception.CinderException(msg)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        LOG.info(_LI(\u0027Creating volume snapshot: %s.\u0027), snapshot.id)"},{"line_number":241,"context_line":"        device \u003d self.find_appropriate_size_device(snapshot.volume_size)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_4ab60dfa","line":238,"in_reply_to":"7a740942_e26923fa","updated":"2015-12-08 16:21:03.000000000","message":"Done","commit_id":"48395993f08722310426c9a628aea8286840612a"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"5b0b75a9dd9525587d20108ed676d482fa735e54","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            execute\u003dself._execute)"},{"line_number":249,"context_line":"        self._update_provider_location(snapshot, device)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    @utils.synchronized(\u0027block_device\u0027, external\u003dTrue)"},{"line_number":252,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":253,"context_line":"        self._clear_block_device(snapshot)"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"7a740942_5a6fb4c3","line":251,"updated":"2015-12-14 13:20:51.000000000","message":"Do you need to synchronize that method? You\u0027re not using find_appropriate_size_device, so why is it necessary?","commit_id":"b8fd8429e92b6975902b7381e77d39297f20b6b6"}]}
