)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"87134df0b3e04dd4d5806ec7f785f90c2a073e96","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Closes-bug: #1554781"},{"line_number":24,"context_line":"Closes-bug: #1554784"},{"line_number":25,"context_line":"Closes-bug: #1554787"},{"line_number":26,"context_line":"Closes-bug: #1594759"},{"line_number":27,"context_line":"Closes-bug: #1559913"},{"line_number":28,"context_line":"Closes-bug: #1560611"},{"line_number":29,"context_line":"Closes-bug: #1560613"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1aa78d24_d8711c78","line":26,"updated":"2016-07-06 06:25:14.000000000","message":"This is a different bug, please remove this line.","commit_id":"cdd4cf9d5cce3be7f2e44d575d02b155fea46df8"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"2e0a3a53b070c7ebdc77a8b4ccdaacb01cedf91a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"Closes-bug: #1554781"},{"line_number":24,"context_line":"Closes-bug: #1554784"},{"line_number":25,"context_line":"Closes-bug: #1554787"},{"line_number":26,"context_line":"Closes-bug: #1594759"},{"line_number":27,"context_line":"Closes-bug: #1559913"},{"line_number":28,"context_line":"Closes-bug: #1560611"},{"line_number":29,"context_line":"Closes-bug: #1560613"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1aa78d24_68fbe3c1","line":26,"in_reply_to":"1aa78d24_d8711c78","updated":"2016-07-06 13:31:25.000000000","message":"Done","commit_id":"cdd4cf9d5cce3be7f2e44d575d02b155fea46df8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"19977d3b6b5c2238949f58eae73f736b4119f445","unresolved":false,"context_lines":[{"line_number":85,"context_line":"- Virtuozzo Storage CI: SUCCESS but ONLY RUN 60 TESTS (http://bit.ly/VIRTUOZZO)"},{"line_number":86,"context_line":"- VMware NSX CI: PASSING (http://bit.ly/2aSQOJB)"},{"line_number":87,"context_line":"- XP Cinder CI: CI BROKEN (http://bit.ly/2aSPBSy)"},{"line_number":88,"context_line":"- ZadaraSt...VPSA CI: SUCESS (http://bit.ly/2aSPTsS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Closes-bug: #1554753"},{"line_number":91,"context_line":"Closes-bug: #1554760"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"da36d5c6_b80fee2c","line":88,"updated":"2017-02-22 16:37:42.000000000","message":"these should be removed from this commit message.   If there are CI\u0027s broken because of this patch, file a bug against that driver and contact them, and then WIP the patch until we get all of them working.","commit_id":"2746b953b74dc49195051c2aab47bdc2df055a0c"},{"author":{"_account_id":21144,"name":"Xinli Guan","email":"xinli@us.ibm.com","username":"xinli"},"change_message_id":"74ccbc4a15067d1f4a40e3ce478f626e005f4356","unresolved":false,"context_lines":[{"line_number":85,"context_line":"- Virtuozzo Storage CI: SUCCESS but ONLY RUN 60 TESTS (http://bit.ly/VIRTUOZZO)"},{"line_number":86,"context_line":"- VMware NSX CI: PASSING (http://bit.ly/2aSQOJB)"},{"line_number":87,"context_line":"- XP Cinder CI: CI BROKEN (http://bit.ly/2aSPBSy)"},{"line_number":88,"context_line":"- ZadaraSt...VPSA CI: SUCESS (http://bit.ly/2aSPTsS)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Closes-bug: #1554753"},{"line_number":91,"context_line":"Closes-bug: #1554760"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"da36d5c6_3566522a","line":88,"in_reply_to":"da36d5c6_b80fee2c","updated":"2017-02-24 17:37:05.000000000","message":"The CI status has been updated in the comments. I will remove these CI records from the commit message.","commit_id":"2746b953b74dc49195051c2aab47bdc2df055a0c"}],"cinder/volume/driver.py":[{"author":{"_account_id":22683,"name":"Arnon Yaari","email":"arnony@infinidat.com","username":"arnony"},"change_message_id":"1609ad21b045ac45eef45f49c41fd60a2176df43","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        return clone_func, src_size"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":591,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":592,"context_line":"    # If a driver does creates the volume with the apropriate size, it should"},{"line_number":593,"context_line":"    # overhide this method, and implements its own."},{"line_number":594,"context_line":"    def create_from_source(self, dst_vol, src):"}],"source_content_type":"text/x-python","patch_set":30,"id":"9a30ddce_fbdd1215","line":591,"range":{"start_line":591,"start_character":43,"end_line":591,"end_character":51},"updated":"2017-03-08 15:59:00.000000000","message":"The parameter name is dst_vol. The wrong name is also in the comments of the overriding methods in the drivers\u0027 code.","commit_id":"1bf3d0410845b481092eac9c73e7147c36c09199"},{"author":{"_account_id":21144,"name":"Xinli Guan","email":"xinli@us.ibm.com","username":"xinli"},"change_message_id":"e064d9c08fd078096f6547e846ab669db1f9ce2e","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        return clone_func, src_size"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":591,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":592,"context_line":"    # If a driver does creates the volume with the apropriate size, it should"},{"line_number":593,"context_line":"    # overhide this method, and implements its own."},{"line_number":594,"context_line":"    def create_from_source(self, dst_vol, src):"}],"source_content_type":"text/x-python","patch_set":30,"id":"9a30ddce_68d63af2","line":591,"range":{"start_line":591,"start_character":43,"end_line":591,"end_character":51},"in_reply_to":"9a30ddce_fbdd1215","updated":"2017-03-10 18:50:22.000000000","message":"done.","commit_id":"1bf3d0410845b481092eac9c73e7147c36c09199"},{"author":{"_account_id":22683,"name":"Arnon Yaari","email":"arnony@infinidat.com","username":"arnony"},"change_message_id":"1609ad21b045ac45eef45f49c41fd60a2176df43","unresolved":false,"context_lines":[{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":591,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":592,"context_line":"    # If a driver does creates the volume with the apropriate size, it should"},{"line_number":593,"context_line":"    # overhide this method, and implements its own."},{"line_number":594,"context_line":"    def create_from_source(self, dst_vol, src):"},{"line_number":595,"context_line":"        \"\"\"Creates a volume from a snapshot or volume source"}],"source_content_type":"text/x-python","patch_set":30,"id":"9a30ddce_3be88ab4","line":592,"range":{"start_line":592,"start_character":51,"end_line":592,"end_character":61},"updated":"2017-03-08 15:59:00.000000000","message":"typo: appropriate","commit_id":"1bf3d0410845b481092eac9c73e7147c36c09199"},{"author":{"_account_id":22683,"name":"Arnon Yaari","email":"arnony@infinidat.com","username":"arnony"},"change_message_id":"1609ad21b045ac45eef45f49c41fd60a2176df43","unresolved":false,"context_lines":[{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":591,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":592,"context_line":"    # If a driver does creates the volume with the apropriate size, it should"},{"line_number":593,"context_line":"    # overhide this method, and implements its own."},{"line_number":594,"context_line":"    def create_from_source(self, dst_vol, src):"},{"line_number":595,"context_line":"        \"\"\"Creates a volume from a snapshot or volume source"}],"source_content_type":"text/x-python","patch_set":30,"id":"9a30ddce_1be106d1","line":592,"range":{"start_line":592,"start_character":23,"end_line":592,"end_character":30},"updated":"2017-03-08 15:59:00.000000000","message":"typo: create","commit_id":"1bf3d0410845b481092eac9c73e7147c36c09199"},{"author":{"_account_id":21144,"name":"Xinli Guan","email":"xinli@us.ibm.com","username":"xinli"},"change_message_id":"e064d9c08fd078096f6547e846ab669db1f9ce2e","unresolved":false,"context_lines":[{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":591,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":592,"context_line":"    # If a driver does creates the volume with the apropriate size, it should"},{"line_number":593,"context_line":"    # overhide this method, and implements its own."},{"line_number":594,"context_line":"    def create_from_source(self, dst_vol, src):"},{"line_number":595,"context_line":"        \"\"\"Creates a volume from a snapshot or volume source"}],"source_content_type":"text/x-python","patch_set":30,"id":"9a30ddce_08fcde6e","line":592,"range":{"start_line":592,"start_character":23,"end_line":592,"end_character":30},"in_reply_to":"9a30ddce_1be106d1","updated":"2017-03-10 18:50:22.000000000","message":"done","commit_id":"1bf3d0410845b481092eac9c73e7147c36c09199"},{"author":{"_account_id":21144,"name":"Xinli Guan","email":"xinli@us.ibm.com","username":"xinli"},"change_message_id":"e064d9c08fd078096f6547e846ab669db1f9ce2e","unresolved":false,"context_lines":[{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":591,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":592,"context_line":"    # If a driver does creates the volume with the apropriate size, it should"},{"line_number":593,"context_line":"    # overhide this method, and implements its own."},{"line_number":594,"context_line":"    def create_from_source(self, dst_vol, src):"},{"line_number":595,"context_line":"        \"\"\"Creates a volume from a snapshot or volume source"}],"source_content_type":"text/x-python","patch_set":30,"id":"9a30ddce_28f7e28b","line":592,"range":{"start_line":592,"start_character":51,"end_line":592,"end_character":61},"in_reply_to":"9a30ddce_3be88ab4","updated":"2017-03-10 18:50:22.000000000","message":"done.","commit_id":"1bf3d0410845b481092eac9c73e7147c36c09199"},{"author":{"_account_id":22683,"name":"Arnon Yaari","email":"arnony@infinidat.com","username":"arnony"},"change_message_id":"1609ad21b045ac45eef45f49c41fd60a2176df43","unresolved":false,"context_lines":[{"line_number":590,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":591,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":592,"context_line":"    # If a driver does creates the volume with the apropriate size, it should"},{"line_number":593,"context_line":"    # overhide this method, and implements its own."},{"line_number":594,"context_line":"    def create_from_source(self, dst_vol, src):"},{"line_number":595,"context_line":"        \"\"\"Creates a volume from a snapshot or volume source"},{"line_number":596,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"9a30ddce_7bd20202","line":593,"range":{"start_line":593,"start_character":6,"end_line":593,"end_character":14},"updated":"2017-03-08 15:59:00.000000000","message":"typo: override. There is wrong spelling of this in the comments of the overriding methods in the drivers\u0027 code too (\"overide\")","commit_id":"1bf3d0410845b481092eac9c73e7147c36c09199"},{"author":{"_account_id":21144,"name":"Xinli Guan","email":"xinli@us.ibm.com","username":"xinli"},"change_message_id":"e064d9c08fd078096f6547e846ab669db1f9ce2e","unresolved":false,"context_lines":[{"line_number":590,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":591,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":592,"context_line":"    # If a driver does creates the volume with the apropriate size, it should"},{"line_number":593,"context_line":"    # overhide this method, and implements its own."},{"line_number":594,"context_line":"    def create_from_source(self, dst_vol, src):"},{"line_number":595,"context_line":"        \"\"\"Creates a volume from a snapshot or volume source"},{"line_number":596,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"9a30ddce_a831125c","line":593,"range":{"start_line":593,"start_character":6,"end_line":593,"end_character":14},"in_reply_to":"9a30ddce_7bd20202","updated":"2017-03-10 18:50:22.000000000","message":"done.","commit_id":"1bf3d0410845b481092eac9c73e7147c36c09199"}],"cinder/volume/drivers/dell_emc/vnx/driver.py":[{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"6cf8069563433ec2b3aeca85f865d1ce005e7704","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        \"\"\"Creates a volume.\"\"\""},{"line_number":103,"context_line":"        return self.adapter.create_volume(volume)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":106,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":107,"context_line":"    # This driver does not need this proceedure, so, let\u0027s overide the method."},{"line_number":108,"context_line":"    def create_from_source(self, dst_vol, src):"}],"source_content_type":"text/x-python","patch_set":30,"id":"9a30ddce_a4bf00fa","line":105,"updated":"2017-03-08 03:50:02.000000000","message":"VNX driver already supports creation of larger cloned volume.\n\nI think \"fix\" for VNX should not be included in this patch.\n\nThanks\nPeter","commit_id":"1bf3d0410845b481092eac9c73e7147c36c09199"}],"cinder/volume/drivers/drbdmanagedrv.py":[{"author":{"_account_id":14339,"name":"Philipp Marek","email":"philipp.marek@linbit.com","username":"pmarek"},"change_message_id":"8e8f52a4380ae8ff454f00b0170b3f3e9c433207","unresolved":false,"context_lines":[{"line_number":623,"context_line":"                       \u0027src_size\u0027: snapshot[\u0027volume_size\u0027],"},{"line_number":624,"context_line":"                       \u0027dst_size\u0027: volume[\u0027size\u0027]})"},{"line_number":625,"context_line":"            self.extend_volume(volume, volume[\u0027size\u0027])"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":628,"context_line":"        temp_id \u003d self._clean_uuid()"},{"line_number":629,"context_line":"        snapshot \u003d {\u0027id\u0027: temp_id}"}],"source_content_type":"text/x-python","patch_set":17,"id":"bacf61ea_e2ad809c","side":"PARENT","line":626,"updated":"2016-08-03 16:35:28.000000000","message":"This functionality is being rewritten right at the moment, see 347271.","commit_id":"39517e2350578de84641ffdbc8bdee2f39849b15"}],"cinder/volume/drivers/ibm/flashsystem_common.py":[{"author":{"_account_id":12514,"name":"YanLin Ren","email":"renylin@cn.ibm.com","username":"renylin"},"change_message_id":"e4d1b4b8de4ecea125d205b33a2b9c9a44ffe70a","unresolved":false,"context_lines":[{"line_number":1042,"context_line":"            \u0027enter: create_volume_from_snapshot: create %(vol)s from \u0027"},{"line_number":1043,"context_line":"            \u0027%(snap)s.\u0027, {\u0027vol\u0027: volume[\u0027name\u0027], \u0027snap\u0027: snapshot[\u0027name\u0027]})"},{"line_number":1044,"context_line":""},{"line_number":1045,"context_line":"        if volume[\u0027size\u0027] \u003c snapshot[\u0027volume_size\u0027]:"},{"line_number":1046,"context_line":"            msg \u003d _(\u0027create_volume_from_snapshot: Volume size is smaller than\u0027"},{"line_number":1047,"context_line":"                    \u0027the based volume.\u0027)"},{"line_number":1048,"context_line":"            LOG.error(msg)"},{"line_number":1049,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1050,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_9e4fb2bc","line":1047,"range":{"start_line":1045,"start_character":0,"end_line":1047,"end_character":40},"updated":"2016-07-05 10:01:17.000000000","message":"FlashSystem will create a volume with the snapshot[\u0027volume_size\u0027], not the volume[\u0027size\u0027].","commit_id":"bec6eb9daee4fdaa30fbbd074767179d92b9cc48"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"f4cbb276f4a15c2eceee4a5f419146c3c67341d1","unresolved":false,"context_lines":[{"line_number":1042,"context_line":"            \u0027enter: create_volume_from_snapshot: create %(vol)s from \u0027"},{"line_number":1043,"context_line":"            \u0027%(snap)s.\u0027, {\u0027vol\u0027: volume[\u0027name\u0027], \u0027snap\u0027: snapshot[\u0027name\u0027]})"},{"line_number":1044,"context_line":""},{"line_number":1045,"context_line":"        if volume[\u0027size\u0027] \u003c snapshot[\u0027volume_size\u0027]:"},{"line_number":1046,"context_line":"            msg \u003d _(\u0027create_volume_from_snapshot: Volume size is smaller than\u0027"},{"line_number":1047,"context_line":"                    \u0027the based volume.\u0027)"},{"line_number":1048,"context_line":"            LOG.error(msg)"},{"line_number":1049,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1050,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_884f74bc","line":1047,"range":{"start_line":1045,"start_character":0,"end_line":1047,"end_character":40},"in_reply_to":"1aa78d24_9e4fb2bc","updated":"2016-07-05 11:57:54.000000000","message":"Hi YanLin, this logic is being moved to the driver base class. It will apply the extend() to all drivers that need to do so.\nSee the volume/driver.py changes and flows/manager/create_volume.py.","commit_id":"bec6eb9daee4fdaa30fbbd074767179d92b9cc48"},{"author":{"_account_id":12514,"name":"YanLin Ren","email":"renylin@cn.ibm.com","username":"renylin"},"change_message_id":"e4d1b4b8de4ecea125d205b33a2b9c9a44ffe70a","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        LOG.debug(\u0027enter: create_cloned_volume: create %(vol)s from %(src)s.\u0027,"},{"line_number":1071,"context_line":"                  {\u0027src\u0027: src_volume[\u0027name\u0027], \u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        if src_volume[\u0027size\u0027] \u003c volume[\u0027size\u0027]:"},{"line_number":1074,"context_line":"            msg \u003d _(\u0027create_cloned_volume: Source and destination \u0027"},{"line_number":1075,"context_line":"                    \u0027size differ.\u0027)"},{"line_number":1076,"context_line":"            LOG.error(msg)"},{"line_number":1077,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1078,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_1ea0e242","line":1075,"range":{"start_line":1073,"start_character":0,"end_line":1075,"end_character":35},"updated":"2016-07-05 10:01:17.000000000","message":"It should be\nsrc_volume[\u0027size\u0027] \u003e volume[\u0027size\u0027]\nAnd FlashSystem will create a volume with the src_volume[\u0027size\u0027], not the volume[\u0027size\u0027].","commit_id":"bec6eb9daee4fdaa30fbbd074767179d92b9cc48"},{"author":{"_account_id":12514,"name":"YanLin Ren","email":"renylin@cn.ibm.com","username":"renylin"},"change_message_id":"16c1626306230db25e916b6b680f31a6fa0c0625","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        LOG.debug(\u0027enter: create_cloned_volume: create %(vol)s from %(src)s.\u0027,"},{"line_number":1071,"context_line":"                  {\u0027src\u0027: src_volume[\u0027name\u0027], \u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        if src_volume[\u0027size\u0027] \u003c volume[\u0027size\u0027]:"},{"line_number":1074,"context_line":"            msg \u003d _(\u0027create_cloned_volume: Source and destination \u0027"},{"line_number":1075,"context_line":"                    \u0027size differ.\u0027)"},{"line_number":1076,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_dcaa7484","line":1073,"range":{"start_line":1073,"start_character":0,"end_line":1073,"end_character":47},"updated":"2016-07-07 02:53:07.000000000","message":"It should be \nsrc_volume[\u0027size\u0027] \u003e volume[\u0027size\u0027]. \nIf use\nsrc_volume[\u0027size\u0027] \u003c volume[\u0027size\u0027],\nthe logic is incorrect.","commit_id":"090b78b0ad9d256fc5a6db0032d8e2866213da52"},{"author":{"_account_id":12514,"name":"YanLin Ren","email":"renylin@cn.ibm.com","username":"renylin"},"change_message_id":"104c1183f7a5c356197dbc6711c4b0576fbac7dd","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        LOG.debug(\u0027enter: create_cloned_volume: create %(vol)s from %(src)s.\u0027,"},{"line_number":1071,"context_line":"                  {\u0027src\u0027: src_volume[\u0027name\u0027], \u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        if src_volume[\u0027size\u0027] \u003c volume[\u0027size\u0027]:"},{"line_number":1074,"context_line":"            msg \u003d _(\u0027create_cloned_volume: Source and destination \u0027"},{"line_number":1075,"context_line":"                    \u0027size differ.\u0027)"},{"line_number":1076,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_4e1f0f08","line":1073,"range":{"start_line":1073,"start_character":8,"end_line":1073,"end_character":46},"updated":"2016-07-06 14:13:17.000000000","message":"It should be src_volume[\u0027size\u0027] \u003e volume[\u0027size\u0027]","commit_id":"090b78b0ad9d256fc5a6db0032d8e2866213da52"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"dfd293a8ff35023b5a5e4f6b8d9f1839ba7fe9c3","unresolved":false,"context_lines":[{"line_number":1070,"context_line":"        LOG.debug(\u0027enter: create_cloned_volume: create %(vol)s from %(src)s.\u0027,"},{"line_number":1071,"context_line":"                  {\u0027src\u0027: src_volume[\u0027name\u0027], \u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        if src_volume[\u0027size\u0027] \u003c volume[\u0027size\u0027]:"},{"line_number":1074,"context_line":"            msg \u003d _(\u0027create_cloned_volume: Source and destination \u0027"},{"line_number":1075,"context_line":"                    \u0027size differ.\u0027)"},{"line_number":1076,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_ebe684e6","line":1073,"range":{"start_line":1073,"start_character":0,"end_line":1073,"end_character":47},"in_reply_to":"1aa78d24_dcaa7484","updated":"2016-07-07 06:22:30.000000000","message":"YanLin Ren seems correct, though this check /should/ be unnecessary since this case should be caught much further up the stack, so it might be better to remove the check completely. Most other drivers don\u0027t do such a check.","commit_id":"090b78b0ad9d256fc5a6db0032d8e2866213da52"},{"author":{"_account_id":12514,"name":"YanLin Ren","email":"renylin@cn.ibm.com","username":"renylin"},"change_message_id":"104c1183f7a5c356197dbc6711c4b0576fbac7dd","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"                  {\u0027src\u0027: src_volume[\u0027name\u0027], \u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        if src_volume[\u0027size\u0027] \u003c volume[\u0027size\u0027]:"},{"line_number":1074,"context_line":"            msg \u003d _(\u0027create_cloned_volume: Source and destination \u0027"},{"line_number":1075,"context_line":"                    \u0027size differ.\u0027)"},{"line_number":1076,"context_line":"            LOG.error(msg)"},{"line_number":1077,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1078,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_0e850706","line":1075,"range":{"start_line":1074,"start_character":0,"end_line":1075,"end_character":35},"updated":"2016-07-06 14:13:17.000000000","message":"The message need to be modified to \u0027Destination size is smaller then source size.\u0027","commit_id":"090b78b0ad9d256fc5a6db0032d8e2866213da52"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"dfd293a8ff35023b5a5e4f6b8d9f1839ba7fe9c3","unresolved":false,"context_lines":[{"line_number":1071,"context_line":"                  {\u0027src\u0027: src_volume[\u0027name\u0027], \u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"        if src_volume[\u0027size\u0027] \u003c volume[\u0027size\u0027]:"},{"line_number":1074,"context_line":"            msg \u003d _(\u0027create_cloned_volume: Source and destination \u0027"},{"line_number":1075,"context_line":"                    \u0027size differ.\u0027)"},{"line_number":1076,"context_line":"            LOG.error(msg)"},{"line_number":1077,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"},{"line_number":1078,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1aa78d24_6bdbb41b","line":1075,"range":{"start_line":1074,"start_character":0,"end_line":1075,"end_character":35},"in_reply_to":"1aa78d24_0e850706","updated":"2016-07-07 06:22:30.000000000","message":"If we keep the check, then agreed.","commit_id":"090b78b0ad9d256fc5a6db0032d8e2866213da52"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3afd1b58e61f54d7752bbad53201877a1d3b7387","unresolved":false,"context_lines":[{"line_number":1102,"context_line":"            \u0027%(snap)s.\u0027, {\u0027vol\u0027: volume[\u0027name\u0027], \u0027snap\u0027: snapshot[\u0027name\u0027]})"},{"line_number":1103,"context_line":""},{"line_number":1104,"context_line":"        if volume[\u0027size\u0027] \u003c snapshot[\u0027volume_size\u0027]:"},{"line_number":1105,"context_line":"            msg \u003d _(\u0027create_volume_from_snapshot: Volume size is smaller than\u0027"},{"line_number":1106,"context_line":"                    \u0027the based volume.\u0027)"},{"line_number":1107,"context_line":"            LOG.error(msg)"},{"line_number":1108,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9a30ddce_fe7432d0","line":1105,"range":{"start_line":1105,"start_character":77,"end_line":1105,"end_character":78},"updated":"2017-03-07 20:53:41.000000000","message":"missing space at the end.","commit_id":"18ebe0607c9b0d6d789181d77b479330683af650"}],"cinder/volume/drivers/nexenta/ns5/iscsi.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edad9a5d37928ba1f2095a8fb885594d29da8d0c","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        self.nef.post(url, {\u0027targetPath\u0027: self._get_volume_path(volume)})"},{"line_number":272,"context_line":"        targetPath \u003d self._get_volume_path(volume)"},{"line_number":273,"context_line":"        self.nef.post(url, {\u0027targetPath\u0027: targetPath})"},{"line_number":274,"context_line":"        url \u003d (\u0027storage/pools/%(pool)s/volumeGroups/\u0027"},{"line_number":275,"context_line":"               \u0027%(group)s/volumes/%(name)s/promote\u0027) % {"},{"line_number":276,"context_line":"            \u0027pool\u0027: pool,"},{"line_number":277,"context_line":"            \u0027group\u0027: group,"},{"line_number":278,"context_line":"            \u0027name\u0027: volume[\u0027name\u0027],"},{"line_number":279,"context_line":"        }"},{"line_number":280,"context_line":"        self.nef.post(url)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def create_cloned_volume(self, volume, src_vref):"}],"source_content_type":"text/x-python","patch_set":29,"id":"9a30ddce_a999ab70","line":279,"range":{"start_line":274,"start_character":0,"end_line":279,"end_character":9},"updated":"2017-03-07 19:23:57.000000000","message":"Why do you need this promote?","commit_id":"18ebe0607c9b0d6d789181d77b479330683af650"},{"author":{"_account_id":21144,"name":"Xinli Guan","email":"xinli@us.ibm.com","username":"xinli"},"change_message_id":"5c584dcb80ac81d6c2e7edac6901b9dde02ba23a","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        self.nef.post(url, {\u0027targetPath\u0027: self._get_volume_path(volume)})"},{"line_number":272,"context_line":"        targetPath \u003d self._get_volume_path(volume)"},{"line_number":273,"context_line":"        self.nef.post(url, {\u0027targetPath\u0027: targetPath})"},{"line_number":274,"context_line":"        url \u003d (\u0027storage/pools/%(pool)s/volumeGroups/\u0027"},{"line_number":275,"context_line":"               \u0027%(group)s/volumes/%(name)s/promote\u0027) % {"},{"line_number":276,"context_line":"            \u0027pool\u0027: pool,"},{"line_number":277,"context_line":"            \u0027group\u0027: group,"},{"line_number":278,"context_line":"            \u0027name\u0027: volume[\u0027name\u0027],"},{"line_number":279,"context_line":"        }"},{"line_number":280,"context_line":"        self.nef.post(url)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def create_cloned_volume(self, volume, src_vref):"}],"source_content_type":"text/x-python","patch_set":29,"id":"9a30ddce_77cce535","line":279,"range":{"start_line":274,"start_character":0,"end_line":279,"end_character":9},"in_reply_to":"9a30ddce_a999ab70","updated":"2017-03-07 22:32:06.000000000","message":"erlon:\n\nThank you very much for the code review, I don\u0027t modify this code. And it seems that after creating the url, the function post it again.","commit_id":"18ebe0607c9b0d6d789181d77b479330683af650"}],"cinder/volume/drivers/windows/windows.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edad9a5d37928ba1f2095a8fb885594d29da8d0c","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        finally:"},{"line_number":263,"context_line":"            fileutils.delete_if_exists(temp_vhd_path)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":266,"context_line":"        \"\"\"Creates a clone of the specified volume.\"\"\""},{"line_number":267,"context_line":"        src_vol_name \u003d src_vref.name"},{"line_number":268,"context_line":"        vol_name \u003d volume.name"},{"line_number":269,"context_line":"        vol_size \u003d volume.size"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        new_vhd_path \u003d self.local_path(volume)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        with self._temporary_snapshot(src_vol_name) as tmp_snap_name:"},{"line_number":274,"context_line":"            self._tgt_utils.export_snapshot(tmp_snap_name, new_vhd_path)"},{"line_number":275,"context_line":"            self._vhdutils.resize_vhd(new_vhd_path, vol_size \u003c\u003c 30,"},{"line_number":276,"context_line":"                                      is_file_max_size\u003dFalse)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"            self._tgt_utils.import_wt_disk(new_vhd_path, vol_name)"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def _get_capacity_info(self):"},{"line_number":281,"context_line":"        drive \u003d os.path.splitdrive("}],"source_content_type":"text/x-python","patch_set":29,"id":"9a30ddce_2994dbe0","line":278,"range":{"start_line":265,"start_character":3,"end_line":278,"end_character":66},"updated":"2017-03-07 19:23:57.000000000","message":"This is one of the drivers that do the resizing automatically. So, this driver should bypass the generic function like the the VNX driver[1].\n\n\n[1] https://review.openstack.org/#/c/336092/29/cinder/volume/drivers/dell_emc/vnx/driver.py","commit_id":"18ebe0607c9b0d6d789181d77b479330683af650"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edad9a5d37928ba1f2095a8fb885594d29da8d0c","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                  {\u0027old_size\u0027: old_size, \u0027new_size\u0027: new_size})"},{"line_number":312,"context_line":"        additional_size_mb \u003d (new_size - old_size) * 1024"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        # If the resize operation is attempting to extend the volume of 0 MB,"},{"line_number":315,"context_line":"        # then this would be a failure case. The fix is that if the source and"},{"line_number":316,"context_line":"        # destination sizes are the same, extend does not need to be performed."},{"line_number":317,"context_line":"        if additional_size_mb \u003d\u003d 0:"},{"line_number":318,"context_line":"            pass"},{"line_number":319,"context_line":"        else:"},{"line_number":320,"context_line":"            self._tgt_utils.extend_wt_disk(volume.name, additional_size_mb)"}],"source_content_type":"text/x-python","patch_set":29,"id":"9a30ddce_49910ff0","line":319,"range":{"start_line":314,"start_character":0,"end_line":319,"end_character":13},"updated":"2017-03-07 19:23:57.000000000","message":"You shouldn\u0027t need this with the bypass.","commit_id":"18ebe0607c9b0d6d789181d77b479330683af650"}],"cinder/volume/drivers/zte/zte_ks.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3afd1b58e61f54d7752bbad53201877a1d3b7387","unresolved":false,"context_lines":[{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    # The default behaviour from driver\u0027s create_from_source() is to extend"},{"line_number":469,"context_line":"    # the volume after its creation if the dest_vol is bigger than the source."},{"line_number":470,"context_line":"    # This driver does not need this proceedure, so, let\u0027s overide the method."},{"line_number":471,"context_line":"    def create_from_source(self, dst_vol, src):"},{"line_number":472,"context_line":"        # If the source is a snapshot, _get_clone_func() returns the driver"},{"line_number":473,"context_line":"        # \u0027create from snapshot function\u0027, otherwhise, \u0027create from volume\u0027."}],"source_content_type":"text/x-python","patch_set":29,"id":"9a30ddce_fead1232","line":470,"updated":"2017-03-07 20:53:41.000000000","message":"s/proceedure/procedure/\ns/overide/override/","commit_id":"18ebe0607c9b0d6d789181d77b479330683af650"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3afd1b58e61f54d7752bbad53201877a1d3b7387","unresolved":false,"context_lines":[{"line_number":470,"context_line":"    # This driver does not need this proceedure, so, let\u0027s overide the method."},{"line_number":471,"context_line":"    def create_from_source(self, dst_vol, src):"},{"line_number":472,"context_line":"        # If the source is a snapshot, _get_clone_func() returns the driver"},{"line_number":473,"context_line":"        # \u0027create from snapshot function\u0027, otherwhise, \u0027create from volume\u0027."},{"line_number":474,"context_line":"        clone_func, src_size \u003d self._get_clone_func(src)"},{"line_number":475,"context_line":"        model_update \u003d clone_func(dst_vol, src)"},{"line_number":476,"context_line":"        return model_update"}],"source_content_type":"text/x-python","patch_set":29,"id":"9a30ddce_5e637e1a","line":473,"range":{"start_line":473,"start_character":43,"end_line":473,"end_character":53},"updated":"2017-03-07 20:53:41.000000000","message":"s/otherwhise/otherwise/","commit_id":"18ebe0607c9b0d6d789181d77b479330683af650"}],"cinder/volume/flows/manager/create_volume.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edad9a5d37928ba1f2095a8fb885594d29da8d0c","unresolved":false,"context_lines":[{"line_number":449,"context_line":"        model_update \u003d self.driver.create_from_source(volume, snapshot)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        self._cleanup_cg_in_volume(volume)"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        # NOTE(harlowja): Subtasks would be useful here since after this"},{"line_number":454,"context_line":"        # point the volume has already been created and further failures"},{"line_number":455,"context_line":"        # will not destroy the volume (although they could in the future)."}],"source_content_type":"text/x-python","patch_set":29,"id":"9a30ddce_69189385","line":452,"updated":"2017-03-07 19:23:57.000000000","message":"Nit: remove this line.","commit_id":"18ebe0607c9b0d6d789181d77b479330683af650"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"edad9a5d37928ba1f2095a8fb885594d29da8d0c","unresolved":false,"context_lines":[{"line_number":492,"context_line":"        srcvol_ref \u003d objects.Volume.get_by_id(context, source_volid)"},{"line_number":493,"context_line":"        model_update \u003d self.driver.create_from_source(volume, srcvol_ref)"},{"line_number":494,"context_line":"        self._cleanup_cg_in_volume(volume)"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        # NOTE(harlowja): Subtasks would be useful here since after this"},{"line_number":497,"context_line":"        # point the volume has already been created and further failures"},{"line_number":498,"context_line":"        # will not destroy the volume (although they could in the future)."}],"source_content_type":"text/x-python","patch_set":29,"id":"9a30ddce_891dc775","line":495,"updated":"2017-03-07 19:23:57.000000000","message":"same","commit_id":"18ebe0607c9b0d6d789181d77b479330683af650"}]}
