)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d3a87df20e52cd7ffd8b3d6ad91e95c96d032473","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"3PAR: Fix performance issue with volume cloning"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If size of source and target volume mismatch"},{"line_number":10,"context_line":"  - create a destination volume of size equivalent to source volume"},{"line_number":11,"context_line":"  - copy the contents of source volume to destination volume"},{"line_number":12,"context_line":"  - Grow the destination volume equivalent to requested size"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a74a57a_04f49758","line":9,"range":{"start_line":9,"start_character":3,"end_line":9,"end_character":44},"updated":"2016-11-29 10:55:55.000000000","message":"\"If the target volume size is bigger than the source ...\" (this is the only possibility if they are not equal).","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d3a87df20e52cd7ffd8b3d6ad91e95c96d032473","unresolved":false,"context_lines":[{"line_number":15,"context_line":"rather than doing these following operations"},{"line_number":16,"context_line":"  - creating destination volume equivalent to the requested size"},{"line_number":17,"context_line":"  - copy the contents of source volume to destination volume"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Iccdd4108d519b8bc0d6bb5bc691241e51b0d4264"},{"line_number":20,"context_line":"Closes-Bug: #1645136"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a74a57a_e4623b3d","line":18,"updated":"2016-11-29 10:55:55.000000000","message":"Not sure if I got what you mean in the other patch[1], but if I got it right, you should add a depends-on here.\n\n[1] https://review.openstack.org/#/c/403452/","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"}],"cinder/tests/unit/volume/drivers/hpe/test_hpe3par.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d3a87df20e52cd7ffd8b3d6ad91e95c96d032473","unresolved":false,"context_lines":[{"line_number":2034,"context_line":"                        \u0027name\u0027: HPE3PARBaseDriver.VOLUME_NAME,"},{"line_number":2035,"context_line":"                        \u0027size\u0027: 2, \u0027status\u0027: \u0027available\u0027}"},{"line_number":2036,"context_line":"            model_update \u003d self.driver.create_cloned_volume(volume, src_vref)"},{"line_number":2037,"context_line":"            assert \u0027size\u0027 in model_update"},{"line_number":2038,"context_line":""},{"line_number":2039,"context_line":"            common \u003d hpecommon.HPE3PARCommon(None)"},{"line_number":2040,"context_line":"            vol_name \u003d common._get_3par_vol_name(volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_c47b7fbc","line":2037,"range":{"start_line":2037,"start_character":12,"end_line":2037,"end_character":41},"updated":"2016-11-29 10:55:55.000000000","message":"Should use self.assert*. E.g. self.assertIn()","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"335b5124b409e7dc9baa1e960a5799f8dede75bf","unresolved":false,"context_lines":[{"line_number":2034,"context_line":"                        \u0027name\u0027: HPE3PARBaseDriver.VOLUME_NAME,"},{"line_number":2035,"context_line":"                        \u0027size\u0027: 2, \u0027status\u0027: \u0027available\u0027}"},{"line_number":2036,"context_line":"            model_update \u003d self.driver.create_cloned_volume(volume, src_vref)"},{"line_number":2037,"context_line":"            assert \u0027size\u0027 in model_update"},{"line_number":2038,"context_line":""},{"line_number":2039,"context_line":"            common \u003d hpecommon.HPE3PARCommon(None)"},{"line_number":2040,"context_line":"            vol_name \u003d common._get_3par_vol_name(volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_28473878","line":2037,"range":{"start_line":2037,"start_character":12,"end_line":2037,"end_character":41},"in_reply_to":"5a74a57a_c47b7fbc","updated":"2016-12-01 07:28:36.000000000","message":"Used self.assertTrue() instead","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"dae664f507a857e8d021bb0107e5956710d917e9","unresolved":false,"context_lines":[{"line_number":2034,"context_line":"                        \u0027name\u0027: HPE3PARBaseDriver.VOLUME_NAME,"},{"line_number":2035,"context_line":"                        \u0027size\u0027: 2, \u0027status\u0027: \u0027available\u0027}"},{"line_number":2036,"context_line":"            model_update \u003d self.driver.create_cloned_volume(volume, src_vref)"},{"line_number":2037,"context_line":"            self.assertTrue(\u0027size\u0027 in model_update)"},{"line_number":2038,"context_line":""},{"line_number":2039,"context_line":"            common \u003d hpecommon.HPE3PARCommon(None)"},{"line_number":2040,"context_line":"            vol_name \u003d common._get_3par_vol_name(volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_a85f2374","line":2037,"range":{"start_line":2037,"start_character":0,"end_line":2037,"end_character":12},"updated":"2016-12-01 09:13:32.000000000","message":"Can you Just add assertEqual for the size come from model_update and target volume, so your extend function for   target volume is also gets checked here.","commit_id":"6c77a73aaa2b26c8c5350e342e7e55583f50607e"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"1c4943c48261f1aef266aae3fd6710cfb2a59d46","unresolved":false,"context_lines":[{"line_number":2034,"context_line":"                        \u0027name\u0027: HPE3PARBaseDriver.VOLUME_NAME,"},{"line_number":2035,"context_line":"                        \u0027size\u0027: 2, \u0027status\u0027: \u0027available\u0027}"},{"line_number":2036,"context_line":"            model_update \u003d self.driver.create_cloned_volume(volume, src_vref)"},{"line_number":2037,"context_line":"            self.assertTrue(\u0027size\u0027 in model_update)"},{"line_number":2038,"context_line":""},{"line_number":2039,"context_line":"            common \u003d hpecommon.HPE3PARCommon(None)"},{"line_number":2040,"context_line":"            vol_name \u003d common._get_3par_vol_name(volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a71b18c_ce1c677a","line":2037,"range":{"start_line":2037,"start_character":0,"end_line":2037,"end_character":12},"in_reply_to":"3a71b18c_a85f2374","updated":"2016-12-01 09:46:35.000000000","message":"that\u0027s a good suggestion. Incorporated in patchset #4. Thanks Kushal.","commit_id":"6c77a73aaa2b26c8c5350e342e7e55583f50607e"}],"cinder/volume/drivers/hpe/hpe_3par_common.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d3a87df20e52cd7ffd8b3d6ad91e95c96d032473","unresolved":false,"context_lines":[{"line_number":2016,"context_line":"            # we can do an online copy, which is a background process"},{"line_number":2017,"context_line":"            # on the 3PAR that makes the volume instantly available."},{"line_number":2018,"context_line":"            # We can\u0027t resize a volume, while it\u0027s being copied."},{"line_number":2019,"context_line":"            LOG.debug(\u0027Volume size is %d and source size is %d\u0027 %"},{"line_number":2020,"context_line":"                      (volume[\u0027size\u0027], src_vref[\u0027size\u0027]))"},{"line_number":2021,"context_line":"            if volume[\u0027size\u0027] \u003d\u003d src_vref[\u0027size\u0027] and not ("},{"line_number":2022,"context_line":"               back_up_process and vol_chap_enabled):"},{"line_number":2023,"context_line":"                LOG.debug(\"Creating a clone of volume, using online copy.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_7f115651","line":2020,"range":{"start_line":2019,"start_character":11,"end_line":2020,"end_character":57},"updated":"2016-11-29 10:55:55.000000000","message":"Nit: this is something good to be logged in the top of the function, so you always print it (if you don\u0027t the flow can finish in the exception above.).","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"335b5124b409e7dc9baa1e960a5799f8dede75bf","unresolved":false,"context_lines":[{"line_number":2016,"context_line":"            # we can do an online copy, which is a background process"},{"line_number":2017,"context_line":"            # on the 3PAR that makes the volume instantly available."},{"line_number":2018,"context_line":"            # We can\u0027t resize a volume, while it\u0027s being copied."},{"line_number":2019,"context_line":"            LOG.debug(\u0027Volume size is %d and source size is %d\u0027 %"},{"line_number":2020,"context_line":"                      (volume[\u0027size\u0027], src_vref[\u0027size\u0027]))"},{"line_number":2021,"context_line":"            if volume[\u0027size\u0027] \u003d\u003d src_vref[\u0027size\u0027] and not ("},{"line_number":2022,"context_line":"               back_up_process and vol_chap_enabled):"},{"line_number":2023,"context_line":"                LOG.debug(\"Creating a clone of volume, using online copy.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_4d89e6c9","line":2020,"range":{"start_line":2019,"start_character":11,"end_line":2020,"end_character":57},"in_reply_to":"5a74a57a_7f115651","updated":"2016-12-01 07:28:36.000000000","message":"Done","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":23113,"name":"Hariprasad S Venkatasubramanian","email":"hari.venkat@hpe.com","username":"hari.venkat"},"change_message_id":"a65fca11cffbcdb613a077eeb970886e637efe80","unresolved":false,"context_lines":[{"line_number":2024,"context_line":"                # create a temporary snapshot"},{"line_number":2025,"context_line":"                snapshot \u003d self._create_temp_snapshot(src_vref)"},{"line_number":2026,"context_line":""},{"line_number":2027,"context_line":"                type_info \u003d self.get_volume_settings_from_type(volume)"},{"line_number":2028,"context_line":"                cpg \u003d type_info[\u0027cpg\u0027]"},{"line_number":2029,"context_line":""},{"line_number":2030,"context_line":"                # make the 3PAR copy the contents."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_1a407806","line":2027,"range":{"start_line":2027,"start_character":16,"end_line":2027,"end_character":25},"updated":"2016-11-29 08:55:40.000000000","message":"what is the need for creating temporary snapshot? \nPlease add a line of comment stating the purpose. \n\nAlso, if this is temporary, the snapshot should be deleted suitably in order to preserve state consistency on the array.","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"335b5124b409e7dc9baa1e960a5799f8dede75bf","unresolved":false,"context_lines":[{"line_number":2024,"context_line":"                # create a temporary snapshot"},{"line_number":2025,"context_line":"                snapshot \u003d self._create_temp_snapshot(src_vref)"},{"line_number":2026,"context_line":""},{"line_number":2027,"context_line":"                type_info \u003d self.get_volume_settings_from_type(volume)"},{"line_number":2028,"context_line":"                cpg \u003d type_info[\u0027cpg\u0027]"},{"line_number":2029,"context_line":""},{"line_number":2030,"context_line":"                # make the 3PAR copy the contents."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_ad8efacd","line":2027,"range":{"start_line":2027,"start_character":16,"end_line":2027,"end_character":25},"in_reply_to":"5a74a57a_1a407806","updated":"2016-12-01 07:28:36.000000000","message":"this needs some further investigation. I havent found the reason yet.","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d3a87df20e52cd7ffd8b3d6ad91e95c96d032473","unresolved":false,"context_lines":[{"line_number":2059,"context_line":"                # source volume size. Copy operation time proportionately"},{"line_number":2060,"context_line":"                # increases with the increase in size of target volume."},{"line_number":2061,"context_line":"                target_vol_size \u003d volume[\u0027size\u0027]"},{"line_number":2062,"context_line":"                volume[\u0027size\u0027] \u003d src_vref[\u0027size\u0027]"},{"line_number":2063,"context_line":"                model_update \u003d self.create_volume(volume)"},{"line_number":2064,"context_line":""},{"line_number":2065,"context_line":"                optional \u003d {\u0027priority\u0027: 1}"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_bf5cce19","line":2062,"range":{"start_line":2062,"start_character":16,"end_line":2062,"end_character":30},"updated":"2016-11-29 10:55:55.000000000","message":"This seems so wrong. You shouldn\u0027t touch the volume size property.","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"335b5124b409e7dc9baa1e960a5799f8dede75bf","unresolved":false,"context_lines":[{"line_number":2059,"context_line":"                # source volume size. Copy operation time proportionately"},{"line_number":2060,"context_line":"                # increases with the increase in size of target volume."},{"line_number":2061,"context_line":"                target_vol_size \u003d volume[\u0027size\u0027]"},{"line_number":2062,"context_line":"                volume[\u0027size\u0027] \u003d src_vref[\u0027size\u0027]"},{"line_number":2063,"context_line":"                model_update \u003d self.create_volume(volume)"},{"line_number":2064,"context_line":""},{"line_number":2065,"context_line":"                optional \u003d {\u0027priority\u0027: 1}"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_ed9712e9","line":2062,"range":{"start_line":2062,"start_character":16,"end_line":2062,"end_character":30},"in_reply_to":"5a74a57a_bf5cce19","updated":"2016-12-01 07:28:36.000000000","message":"this fix is based on \n1) creating a target vol based on src vol size. \n2) then extend the target volume to the actual required size , so this is kind of un-avoidable. \n\nif there are any other options, I would like to know","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d3a87df20e52cd7ffd8b3d6ad91e95c96d032473","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"                model_update \u003d self.create_volume(volume)"},{"line_number":2064,"context_line":""},{"line_number":2065,"context_line":"                optional \u003d {\u0027priority\u0027: 1}"},{"line_number":2066,"context_line":"                LOG.debug(\u0027Start of volume creation operation %s\u0027, vol_name)"},{"line_number":2067,"context_line":"                body \u003d self.client.copyVolume(src_vol_name, vol_name, None,"},{"line_number":2068,"context_line":"                                              optional\u003doptional)"},{"line_number":2069,"context_line":"                task_id \u003d body[\u0027taskid\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_ff31e6a2","line":2066,"range":{"start_line":2066,"start_character":16,"end_line":2066,"end_character":76},"updated":"2016-11-29 10:55:55.000000000","message":"You should log this in _wait_for_task_completion()","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"335b5124b409e7dc9baa1e960a5799f8dede75bf","unresolved":false,"context_lines":[{"line_number":2063,"context_line":"                model_update \u003d self.create_volume(volume)"},{"line_number":2064,"context_line":""},{"line_number":2065,"context_line":"                optional \u003d {\u0027priority\u0027: 1}"},{"line_number":2066,"context_line":"                LOG.debug(\u0027Start of volume creation operation %s\u0027, vol_name)"},{"line_number":2067,"context_line":"                body \u003d self.client.copyVolume(src_vol_name, vol_name, None,"},{"line_number":2068,"context_line":"                                              optional\u003doptional)"},{"line_number":2069,"context_line":"                task_id \u003d body[\u0027taskid\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_0dd1aecd","line":2066,"range":{"start_line":2066,"start_character":16,"end_line":2066,"end_character":76},"in_reply_to":"5a74a57a_ff31e6a2","updated":"2016-12-01 07:28:36.000000000","message":"_wait_for_task_completion() is a very generic piece of code where volume copy operation logging can\u0027t be specifically. One more issue is that the task_name param is not there as part of this function definition.","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d3a87df20e52cd7ffd8b3d6ad91e95c96d032473","unresolved":false,"context_lines":[{"line_number":2069,"context_line":"                task_id \u003d body[\u0027taskid\u0027]"},{"line_number":2070,"context_line":""},{"line_number":2071,"context_line":"                task_status \u003d self._wait_for_task_completion(task_id)"},{"line_number":2072,"context_line":"                LOG.debug(\u0027End volume creation operation task_id %d\u0027,"},{"line_number":2073,"context_line":"                          task_id)"},{"line_number":2074,"context_line":"                if task_status[\u0027status\u0027] is not self.client.TASK_DONE:"},{"line_number":2075,"context_line":"                    dbg \u003d {\u0027status\u0027: task_status, \u0027id\u0027: volume[\u0027id\u0027]}"},{"line_number":2076,"context_line":"                    msg \u003d _(\u0027Copy volume task failed: create_cloned_volume \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_9f19d224","line":2073,"range":{"start_line":2072,"start_character":16,"end_line":2073,"end_character":34},"updated":"2016-11-29 10:55:55.000000000","message":"Same.","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"335b5124b409e7dc9baa1e960a5799f8dede75bf","unresolved":false,"context_lines":[{"line_number":2069,"context_line":"                task_id \u003d body[\u0027taskid\u0027]"},{"line_number":2070,"context_line":""},{"line_number":2071,"context_line":"                task_status \u003d self._wait_for_task_completion(task_id)"},{"line_number":2072,"context_line":"                LOG.debug(\u0027End volume creation operation task_id %d\u0027,"},{"line_number":2073,"context_line":"                          task_id)"},{"line_number":2074,"context_line":"                if task_status[\u0027status\u0027] is not self.client.TASK_DONE:"},{"line_number":2075,"context_line":"                    dbg \u003d {\u0027status\u0027: task_status, \u0027id\u0027: volume[\u0027id\u0027]}"},{"line_number":2076,"context_line":"                    msg \u003d _(\u0027Copy volume task failed: create_cloned_volume \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_2da2ea4b","line":2073,"range":{"start_line":2072,"start_character":16,"end_line":2073,"end_character":34},"in_reply_to":"5a74a57a_9f19d224","updated":"2016-12-01 07:28:36.000000000","message":"please refer the earlier description","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"d3a87df20e52cd7ffd8b3d6ad91e95c96d032473","unresolved":false,"context_lines":[{"line_number":2082,"context_line":"                    # on a successful volume copy modify the volume size"},{"line_number":2083,"context_line":"                    # back to the original size"},{"line_number":2084,"context_line":"                    if (target_vol_size - src_vref[\u0027size\u0027]) \u003e 0:"},{"line_number":2085,"context_line":"                        LOG.debug(\u0027Start of extend volume operation\u0027)"},{"line_number":2086,"context_line":"                        model_update \u003d self.extend_volume(volume,"},{"line_number":2087,"context_line":"                                                          target_vol_size)"},{"line_number":2088,"context_line":"                        LOG.debug(\u0027End of extend volume\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_7fccf688","line":2085,"range":{"start_line":2085,"start_character":24,"end_line":2085,"end_character":69},"updated":"2016-11-29 10:55:55.000000000","message":"Already logged in extend_volume","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"335b5124b409e7dc9baa1e960a5799f8dede75bf","unresolved":false,"context_lines":[{"line_number":2082,"context_line":"                    # on a successful volume copy modify the volume size"},{"line_number":2083,"context_line":"                    # back to the original size"},{"line_number":2084,"context_line":"                    if (target_vol_size - src_vref[\u0027size\u0027]) \u003e 0:"},{"line_number":2085,"context_line":"                        LOG.debug(\u0027Start of extend volume operation\u0027)"},{"line_number":2086,"context_line":"                        model_update \u003d self.extend_volume(volume,"},{"line_number":2087,"context_line":"                                                          target_vol_size)"},{"line_number":2088,"context_line":"                        LOG.debug(\u0027End of extend volume\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_4d264617","line":2085,"range":{"start_line":2085,"start_character":24,"end_line":2085,"end_character":69},"in_reply_to":"5a74a57a_7fccf688","updated":"2016-12-01 07:28:36.000000000","message":"removed this logging","commit_id":"957bda370116d2dac8d713133b32017156ec4eb5"}]}
