)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"4a5bacfc44d74769d1a853a15624e99f227e282d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"case the destination volume is requested to be larger than the"},{"line_number":12,"context_line":"source vol. Added new testcase to cover the issue."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1559913"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I4b2af6c28c04335be1bc7ec53055c43485c8cde3"},{"line_number":17,"context_line":"Signed-off-by: Danny Al-Gaaf \u003cdanny.al-gaaf@bisect.de\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3aaa91ec_5fb554ec","line":14,"updated":"2016-06-22 18:01:37.000000000","message":"Depends-on: I829c0e6f99fff0ec0bd5366c9d2e79b1b073f0a3\n\nTempest currently does not cover the path touched by this fix. So, we should run this extend test as dependency so we can assure they work for all backends after CIs runs.","commit_id":"6967ae1ee2088452c7c9d3036dc6faff2a96bd2b"}],"cinder/tests/unit/test_rbd.py":[{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"ccc9ff8ca3b1c95d83118a573978c3e31411913a","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                self.volume_b.size \u003d 20"},{"line_number":609,"context_line":"                self.driver.create_cloned_volume(self.volume_b, self.volume_a)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"                self.assertEqual(1, mock_resize.call_count)"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"    @common_mocks"},{"line_number":614,"context_line":"    def test_create_cloned_volume_w_flatten(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_cb7c0075","line":611,"updated":"2016-03-21 20:58:34.000000000","message":"Might be good to verify we pass the correct value to resize() as well.","commit_id":"16a99a9b03d83ca8c463d07f5591af320e78d058"}],"cinder/volume/drivers/rbd.py":[{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"ab8e9baee97d60288ede6c8a3b3644119564d1d6","unresolved":false,"context_lines":[{"line_number":520,"context_line":"                raise"},{"line_number":521,"context_line":"            finally:"},{"line_number":522,"context_line":"                src_volume.close()"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        if volume.size !\u003d src_vref.size:"},{"line_number":525,"context_line":"            LOG.debug(\"resize volume \u0027%(dst_vol)s\u0027 from %(src_size)d to \""},{"line_number":526,"context_line":"                      \"%(dst_size)d\","}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_cb09a02e","side":"PARENT","line":523,"updated":"2016-03-21 20:55:53.000000000","message":"Instead of increasing the nesting level further, why not write a function self._extend_if_needed() and call that at the end of both blocks?  It seems logical to go in that direction rather than making this function harder to read.","commit_id":"545b8c4435469c72920d54e4a3ca3c74cbc66b95"},{"author":{"_account_id":9064,"name":"Danny Al-Gaaf","email":"danny.al-gaaf@bisect.de","username":"dalgaaf"},"change_message_id":"fc7fca5cb223a21997374c457482790b829473eb","unresolved":false,"context_lines":[{"line_number":520,"context_line":"                raise"},{"line_number":521,"context_line":"            finally:"},{"line_number":522,"context_line":"                src_volume.close()"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        if volume.size !\u003d src_vref.size:"},{"line_number":525,"context_line":"            LOG.debug(\"resize volume \u0027%(dst_vol)s\u0027 from %(src_size)d to \""},{"line_number":526,"context_line":"                      \"%(dst_size)d\","}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_125f120f","side":"PARENT","line":523,"in_reply_to":"fa0719c6_cb09a02e","updated":"2016-03-22 20:12:23.000000000","message":"Done","commit_id":"545b8c4435469c72920d54e4a3ca3c74cbc66b95"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"3dcd9a9de4403540d425ee8d1ae85f36ebb168f8","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        if self.configuration.rbd_max_clone_depth \u003c\u003d 0:"},{"line_number":464,"context_line":"            with RBDVolumeProxy(self, src_name, read_only\u003dTrue) as vol:"},{"line_number":465,"context_line":"                vol.copy(vol.ioctx, dest_name)"},{"line_number":466,"context_line":"        else:"},{"line_number":467,"context_line":"            # Otherwise do COW clone."},{"line_number":468,"context_line":"            with RADOSClient(self) as client:"},{"line_number":469,"context_line":"                depth \u003d self._get_clone_depth(client, src_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_bf18cd85","line":466,"updated":"2016-03-22 12:47:18.000000000","message":"IMO, without this else statement code looks better","commit_id":"16a99a9b03d83ca8c463d07f5591af320e78d058"},{"author":{"_account_id":9064,"name":"Danny Al-Gaaf","email":"danny.al-gaaf@bisect.de","username":"dalgaaf"},"change_message_id":"fc7fca5cb223a21997374c457482790b829473eb","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        if self.configuration.rbd_max_clone_depth \u003c\u003d 0:"},{"line_number":464,"context_line":"            with RBDVolumeProxy(self, src_name, read_only\u003dTrue) as vol:"},{"line_number":465,"context_line":"                vol.copy(vol.ioctx, dest_name)"},{"line_number":466,"context_line":"        else:"},{"line_number":467,"context_line":"            # Otherwise do COW clone."},{"line_number":468,"context_line":"            with RADOSClient(self) as client:"},{"line_number":469,"context_line":"                depth \u003d self._get_clone_depth(client, src_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_3264d6e2","line":466,"in_reply_to":"fa0719c6_bf18cd85","updated":"2016-03-22 20:12:23.000000000","message":"Done","commit_id":"16a99a9b03d83ca8c463d07f5591af320e78d058"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"cf9cd2c7a10d17c189cf0ad25144c1495131dfd6","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        if self.configuration.rbd_max_clone_depth \u003c\u003d 0:"},{"line_number":477,"context_line":"            with RBDVolumeProxy(self, src_name, read_only\u003dTrue) as vol:"},{"line_number":478,"context_line":"                vol.copy(vol.ioctx, dest_name)"},{"line_number":479,"context_line":"                self._extend_if_required(volume, src_vref)"},{"line_number":480,"context_line":"            return"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        # Otherwise do COW clone."}],"source_content_type":"text/x-python","patch_set":2,"id":"fa0719c6_a10a4e1f","line":479,"updated":"2016-03-22 22:07:29.000000000","message":"Should we call extend before copy?","commit_id":"6967ae1ee2088452c7c9d3036dc6faff2a96bd2b"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"ba91634f7c467e420a5c5b9fc687e1b798fd4909","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        if self.configuration.rbd_max_clone_depth \u003c\u003d 0:"},{"line_number":477,"context_line":"            with RBDVolumeProxy(self, src_name, read_only\u003dTrue) as vol:"},{"line_number":478,"context_line":"                vol.copy(vol.ioctx, dest_name)"},{"line_number":479,"context_line":"                self._extend_if_required(volume, src_vref)"},{"line_number":480,"context_line":"            return"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        # Otherwise do COW clone."}],"source_content_type":"text/x-python","patch_set":2,"id":"fa0719c6_6c0dca36","line":479,"in_reply_to":"fa0719c6_a10a4e1f","updated":"2016-03-23 01:03:50.000000000","message":"If the target is equal to or larger, it won\u0027t matter.  If the target is smaller, extending first may cause the copy operation to fail (it would for RBD).  It could be argued that this validatation should happen (and probably does) in the manager or API, but I think that\u0027s beyond the scope of this particular patch.  I think the logic as it is here is consistent with both the expected behaviour and with the other drivers, so personally I think this is okay.","commit_id":"6967ae1ee2088452c7c9d3036dc6faff2a96bd2b"}]}
