)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"05e856b9b7e88dd4354e04a7911058c2919e73b0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mitsuhiro Tanino \u003cmitsuhiro.tanino@hds.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-06-09 10:10:31 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"LVM: Support a volume-gorup on shared storage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently LVM driver uses software iSCSI target to export a"},{"line_number":10,"context_line":"volume-group. This patch adds a feature to support a volume-group on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ae5cdf2_bf136663","line":7,"updated":"2014-06-13 21:48:56.000000000","message":"s/volume-gorup/volume-group/","commit_id":"17c9fd81caa9c678d14b0b015dfc4495c443da55"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"c8df64b821023ec2c163dab8419b3ec353426de8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mitsuhiro Tanino \u003cmitsuhiro.tanino@hds.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-06-09 10:10:31 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"LVM: Support a volume-gorup on shared storage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently LVM driver uses software iSCSI target to export a"},{"line_number":10,"context_line":"volume-group. This patch adds a feature to support a volume-group on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ae5cdf2_ee4b1daf","line":7,"in_reply_to":"1ae5cdf2_bf136663","updated":"2014-06-24 22:45:32.000000000","message":"Thank you. Fixed at patch v3.","commit_id":"17c9fd81caa9c678d14b0b015dfc4495c443da55"}],"cinder/brick/initiator/connector.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"05e856b9b7e88dd4354e04a7911058c2919e73b0","unresolved":false,"context_lines":[{"line_number":950,"context_line":"                     \"no volume_path attribute\"))"},{"line_number":951,"context_line":"            raise ValueError(msg)"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"        LOG.debug(_(\u0027connection_properties[volume_path]:%s\u0027) %"},{"line_number":954,"context_line":"                  connection_properties[\u0027volume_path\u0027])"},{"line_number":955,"context_line":"        device_info \u003d {\u0027type\u0027: \u0027lvm\u0027,"},{"line_number":956,"context_line":"                       \u0027path\u0027: connection_properties[\u0027volume_path\u0027]}"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_3a168449","line":953,"updated":"2014-06-13 21:48:56.000000000","message":"debug messages to not need to be translated.","commit_id":"17c9fd81caa9c678d14b0b015dfc4495c443da55"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"c8df64b821023ec2c163dab8419b3ec353426de8","unresolved":false,"context_lines":[{"line_number":950,"context_line":"                     \"no volume_path attribute\"))"},{"line_number":951,"context_line":"            raise ValueError(msg)"},{"line_number":952,"context_line":""},{"line_number":953,"context_line":"        LOG.debug(_(\u0027connection_properties[volume_path]:%s\u0027) %"},{"line_number":954,"context_line":"                  connection_properties[\u0027volume_path\u0027])"},{"line_number":955,"context_line":"        device_info \u003d {\u0027type\u0027: \u0027lvm\u0027,"},{"line_number":956,"context_line":"                       \u0027path\u0027: connection_properties[\u0027volume_path\u0027]}"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_eef95d4f","line":953,"in_reply_to":"1ae5cdf2_3a168449","updated":"2014-06-24 22:45:32.000000000","message":"Removed i18n function from my all debug messages.","commit_id":"17c9fd81caa9c678d14b0b015dfc4495c443da55"}],"cinder/tests/test_volume.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"05e856b9b7e88dd4354e04a7911058c2919e73b0","unresolved":false,"context_lines":[{"line_number":3101,"context_line":"                          vol, ref)"},{"line_number":3102,"context_line":""},{"line_number":3103,"context_line":""},{"line_number":3104,"context_line":"class SharedLVMDriverTestCase(DriverTestCase):"},{"line_number":3105,"context_line":"    \"\"\"Test case for VolumeDriver\"\"\""},{"line_number":3106,"context_line":"    driver_name \u003d \"cinder.volume.drivers.lvm.SharedLVMDriver\""},{"line_number":3107,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_7a2bac81","line":3104,"updated":"2014-06-13 21:48:56.000000000","message":"All new unit tests are to be written in python-mock.  Please see: https://github.com/openstack/cinder/blob/master/cinder/testing/README.rst","commit_id":"17c9fd81caa9c678d14b0b015dfc4495c443da55"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"c8df64b821023ec2c163dab8419b3ec353426de8","unresolved":false,"context_lines":[{"line_number":3101,"context_line":"                          vol, ref)"},{"line_number":3102,"context_line":""},{"line_number":3103,"context_line":""},{"line_number":3104,"context_line":"class SharedLVMDriverTestCase(DriverTestCase):"},{"line_number":3105,"context_line":"    \"\"\"Test case for VolumeDriver\"\"\""},{"line_number":3106,"context_line":"    driver_name \u003d \"cinder.volume.drivers.lvm.SharedLVMDriver\""},{"line_number":3107,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_8eb7f984","line":3104,"in_reply_to":"1ae5cdf2_7a2bac81","updated":"2014-06-24 22:45:32.000000000","message":"Use python-mock for all unit test. Thank you for your indication.","commit_id":"17c9fd81caa9c678d14b0b015dfc4495c443da55"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"7283cc1e02a739246108ee27e042a8dfb834f0af","unresolved":false,"context_lines":[{"line_number":3372,"context_line":"                                             None,"},{"line_number":3373,"context_line":"                                             \u0027default\u0027)"},{"line_number":3374,"context_line":""},{"line_number":3375,"context_line":"        mock.patch.object(volutils, \u0027get_all_volume_groups\u0027,"},{"line_number":3376,"context_line":"                          return_value\u003d[{\u0027name\u0027: \u0027cinder-volumes-2\u0027}])"},{"line_number":3377,"context_line":"        moved, model_update \u003d\\"},{"line_number":3378,"context_line":"            self.volume.driver.migrate_volume(self.context, vol, host)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ae5cdf2_0adf3a0d","line":3375,"updated":"2014-06-25 14:37:56.000000000","message":"\"with\" statement is necessary here to patch migrate_volume() call.","commit_id":"975e4f159e652d0b03b5a9f5fd5f7e615a73045d"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"b1d91cde55d80e13bead60f4080294da01a8e9ca","unresolved":false,"context_lines":[{"line_number":3919,"context_line":"                                             False,"},{"line_number":3920,"context_line":"                                             None,"},{"line_number":3921,"context_line":"                                             \u0027default\u0027)"},{"line_number":3922,"context_line":"        with contextlib.nested("},{"line_number":3923,"context_line":"            mock.patch.object(self.volume.driver, \u0027_volume_not_present\u0027,"},{"line_number":3924,"context_line":"                              return_value\u003dFalse),"},{"line_number":3925,"context_line":"            mock.patch.object(self.volume.driver, \u0027_delete_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_7f9d3766","line":3922,"updated":"2014-12-29 09:53:05.000000000","message":"contextlib.nested is deprecated in Python 2.7 (https://docs.python.org/2.7/library/contextlib.html). But if we need Python 2.6 compability, it is ok.","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff743f1173cd307a3b49cc3a836f1c1820bd3d4d","unresolved":false,"context_lines":[{"line_number":3919,"context_line":"                                             False,"},{"line_number":3920,"context_line":"                                             None,"},{"line_number":3921,"context_line":"                                             \u0027default\u0027)"},{"line_number":3922,"context_line":"        with contextlib.nested("},{"line_number":3923,"context_line":"            mock.patch.object(self.volume.driver, \u0027_volume_not_present\u0027,"},{"line_number":3924,"context_line":"                              return_value\u003dFalse),"},{"line_number":3925,"context_line":"            mock.patch.object(self.volume.driver, \u0027_delete_volume\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_cde5a2dd","line":3922,"in_reply_to":"3a961159_7f9d3766","updated":"2014-12-29 14:32:53.000000000","message":"Python 2.6 support was dropped for Kilo, so this definitely needs to be fixed.","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"}],"cinder/volume/drivers/lvm.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"05e856b9b7e88dd4354e04a7911058c2919e73b0","unresolved":false,"context_lines":[{"line_number":665,"context_line":"            }"},{"line_number":666,"context_line":"        \"\"\""},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        LOG.debug(_(\u0027Initialize_connection\u0027))"},{"line_number":669,"context_line":"        lvm_properties \u003d self._get_lvm_properties(volume)"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"        LOG.debug(_(\"volume_id:   %s\") % lvm_properties[\u0027volume_id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_fa36dce5","line":668,"updated":"2014-06-13 21:48:56.000000000","message":"Debug messages do not need to be translated.","commit_id":"17c9fd81caa9c678d14b0b015dfc4495c443da55"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"c8df64b821023ec2c163dab8419b3ec353426de8","unresolved":false,"context_lines":[{"line_number":665,"context_line":"            }"},{"line_number":666,"context_line":"        \"\"\""},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"        LOG.debug(_(\u0027Initialize_connection\u0027))"},{"line_number":669,"context_line":"        lvm_properties \u003d self._get_lvm_properties(volume)"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"        LOG.debug(_(\"volume_id:   %s\") % lvm_properties[\u0027volume_id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"1ae5cdf2_eea79d4e","line":668,"in_reply_to":"1ae5cdf2_fa36dce5","updated":"2014-06-24 22:45:32.000000000","message":"Removed i18n function from my all debug messages.","commit_id":"17c9fd81caa9c678d14b0b015dfc4495c443da55"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"f40ab454b513067bf9538260a99938672ebc389d","unresolved":false,"context_lines":[{"line_number":607,"context_line":"        return \"%s %s %s\" % (chap, name, password)"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"class SharedLVMDriver(LVMVolumeDriver, driver.VolumeDriver):"},{"line_number":611,"context_line":"    \"\"\"Executes commands relating to LVM on shared storage."},{"line_number":612,"context_line":"    \"\"\""},{"line_number":613,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_fc2745b4","line":610,"updated":"2014-07-02 16:08:43.000000000","message":"I\u0027d rather see this split out into its own file, there\u0027s already enough bits in this file IMO","commit_id":"1e406a968df8d2a19cc65c00969cf6b6c81c33f5"}],"cinder/volume/drivers/sharedlvm.py":[{"author":{"_account_id":170,"name":"Mike Perez","email":"thingee@gmail.com","username":"thingee"},"change_message_id":"bac7bd2fb870a3fa7ef827832b76919f808d9b7d","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        seconds_elapsed \u003d 0"},{"line_number":269,"context_line":"        increment \u003d 1"},{"line_number":270,"context_line":"        timeout \u003d 600"},{"line_number":271,"context_line":"        while True:"},{"line_number":272,"context_line":"            s \u003d db.snapshot_get(context, snapshot[\u0027id\u0027])"},{"line_number":273,"context_line":"            if s[\u0027status\u0027] \u003d\u003d \u0027creating\u0027:"},{"line_number":274,"context_line":"                if s[\u0027progress\u0027] \u003d\u003d \u002790%\u0027:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_a1d96686","line":271,"updated":"2014-12-05 05:36:00.000000000","message":"This is a bad idea. Look into loopingcall.FixedIntervalLoopingCall from the cinder.openstack.common.loopingcall lib.","commit_id":"90222d0526b58ea73f53904df812cb7b43e20328"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"ead0d16c62119a713e22f662af69765ae854f07a","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        seconds_elapsed \u003d 0"},{"line_number":269,"context_line":"        increment \u003d 1"},{"line_number":270,"context_line":"        timeout \u003d 600"},{"line_number":271,"context_line":"        while True:"},{"line_number":272,"context_line":"            s \u003d db.snapshot_get(context, snapshot[\u0027id\u0027])"},{"line_number":273,"context_line":"            if s[\u0027status\u0027] \u003d\u003d \u0027creating\u0027:"},{"line_number":274,"context_line":"                if s[\u0027progress\u0027] \u003d\u003d \u002790%\u0027:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5a890539_61da1e4d","line":271,"in_reply_to":"5a890539_a1d96686","updated":"2014-12-05 05:48:39.000000000","message":"I will look the library. Thank you.\n\nAlso this logic will be updated after Eric\u0027s assisted snapshot improvement is merged.\n\nhttps://review.openstack.org/#/c/134298/\n- create_snapshot_assisted_begin(snapshot_ref)\n- create_snapshot_assisted_complete(snapshot_ref)","commit_id":"90222d0526b58ea73f53904df812cb7b43e20328"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"b1d91cde55d80e13bead60f4080294da01a8e9ca","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        LOG.debug(\"migrate_volume dest_type\u003d%(type)s,\""},{"line_number":250,"context_line":"                  \"dest_hostname\u003d%(host)s, dest_vg\u003d%(vg)s\" %"},{"line_number":251,"context_line":"                  {\u0027type\u0027: dest_type, \u0027host\u0027: dest_hostname, \u0027vg\u0027: dest_vg})"},{"line_number":252,"context_line":"        if (dest_type !\u003d \u0027LVMVolumeDriver\u0027):"},{"line_number":253,"context_line":"            return false_ret"},{"line_number":254,"context_line":"        if (dest_hostname !\u003d self.hostname):"},{"line_number":255,"context_line":"            msg \u003d (_(\"Destination host[%(dest)s] must be the same as \""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_bf35dfa9","line":252,"updated":"2014-12-29 09:53:05.000000000","message":"Looks like the parentheses are not needed here.","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"b1d91cde55d80e13bead60f4080294da01a8e9ca","unresolved":false,"context_lines":[{"line_number":251,"context_line":"                  {\u0027type\u0027: dest_type, \u0027host\u0027: dest_hostname, \u0027vg\u0027: dest_vg})"},{"line_number":252,"context_line":"        if (dest_type !\u003d \u0027LVMVolumeDriver\u0027):"},{"line_number":253,"context_line":"            return false_ret"},{"line_number":254,"context_line":"        if (dest_hostname !\u003d self.hostname):"},{"line_number":255,"context_line":"            msg \u003d (_(\"Destination host[%(dest)s] must be the same as \""},{"line_number":256,"context_line":"                     \"current host[%(host)s].\")"},{"line_number":257,"context_line":"                   % {\u0027dest\u0027: dest_hostname, \u0027host\u0027: self.hostname})"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_df3aab97","line":254,"updated":"2014-12-29 09:53:05.000000000","message":"Looks like the parentheses are not needed here.","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"b1d91cde55d80e13bead60f4080294da01a8e9ca","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                             self.configuration.volume_dd_blocksize,"},{"line_number":289,"context_line":"                             execute\u003dself._execute)"},{"line_number":290,"context_line":"        self._delete_volume(volume)"},{"line_number":291,"context_line":"        model_update \u003d self._create_export(ctxt, volume, vg\u003ddest_vg)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        return (True, model_update)"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_df61cba9","line":291,"updated":"2014-12-29 09:53:05.000000000","message":"The _create_export doesn\u0027t return anything yet. Is the \u0027pass\u0027 means not finished?","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0db5a9e56f014b07ecd7e07d208bc0dab367073e","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                snapshot[\u0027volume_id\u0027],"},{"line_number":312,"context_line":"                connection_info)"},{"line_number":313,"context_line":"            LOG.debug(\u0027nova call result: %s\u0027 % result)"},{"line_number":314,"context_line":"        except Exception as e:"},{"line_number":315,"context_line":"            msg \u003d _(\u0027Call to Nova create snapshot failed\u0027)"},{"line_number":316,"context_line":"            LOG.error(msg)"},{"line_number":317,"context_line":"            LOG.exception(e)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_31e80d16","line":314,"updated":"2015-01-02 11:18:44.000000000","message":"Could we handle more specific exception here?","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0db5a9e56f014b07ecd7e07d208bc0dab367073e","unresolved":false,"context_lines":[{"line_number":313,"context_line":"            LOG.debug(\u0027nova call result: %s\u0027 % result)"},{"line_number":314,"context_line":"        except Exception as e:"},{"line_number":315,"context_line":"            msg \u003d _(\u0027Call to Nova create snapshot failed\u0027)"},{"line_number":316,"context_line":"            LOG.error(msg)"},{"line_number":317,"context_line":"            LOG.exception(e)"},{"line_number":318,"context_line":"            raise exception.RemoteFSException(msg)"},{"line_number":319,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_71f29507","line":316,"updated":"2015-01-02 11:18:44.000000000","message":"Please, add snapshot id to the error message","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0db5a9e56f014b07ecd7e07d208bc0dab367073e","unresolved":false,"context_lines":[{"line_number":349,"context_line":"                context,"},{"line_number":350,"context_line":"                snapshot[\u0027id\u0027],"},{"line_number":351,"context_line":"                delete_info)"},{"line_number":352,"context_line":"        except Exception as e:"},{"line_number":353,"context_line":"            msg \u003d _(\u0027Call to Nova delete snapshot failed\u0027)"},{"line_number":354,"context_line":"            LOG.error(msg)"},{"line_number":355,"context_line":"            LOG.exception(e)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_51ebd911","line":352,"updated":"2015-01-02 11:18:44.000000000","message":"Same as abow","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"b1d91cde55d80e13bead60f4080294da01a8e9ca","unresolved":false,"context_lines":[{"line_number":370,"context_line":"            snapshot, expected_status, timeout_msg)"},{"line_number":371,"context_line":"        timer.start(interval\u003dinterval).wait()"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"    def _wait_for_snapsthot_progress(self, start, timeout, context, snapshot,"},{"line_number":374,"context_line":"                                     status, timeout_msg):"},{"line_number":375,"context_line":"        s \u003d db.snapshot_get(context, snapshot[\u0027id\u0027])"},{"line_number":376,"context_line":"        self.retries +\u003d 1"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_df08ebdb","line":373,"updated":"2014-12-29 09:53:05.000000000","message":"\u0027snapsthot\u0027 a typo?","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0db5a9e56f014b07ecd7e07d208bc0dab367073e","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        self.retries +\u003d 1"},{"line_number":377,"context_line":"        if s[\u0027status\u0027] \u003d\u003d status:"},{"line_number":378,"context_line":"            if s[\u0027progress\u0027] \u003d\u003d \u002790%\u0027:"},{"line_number":379,"context_line":"                # Nova tasks completed successfully"},{"line_number":380,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":381,"context_line":"            else:"},{"line_number":382,"context_line":"                if (self.retries % 10) \u003d\u003d 0:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_f1e5a538","line":379,"updated":"2015-01-02 11:18:44.000000000","message":"Please, add a note why 90% is used here","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"0db5a9e56f014b07ecd7e07d208bc0dab367073e","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                # Nova tasks completed successfully"},{"line_number":380,"context_line":"                raise loopingcall.LoopingCallDone()"},{"line_number":381,"context_line":"            else:"},{"line_number":382,"context_line":"                if (self.retries % 10) \u003d\u003d 0:"},{"line_number":383,"context_line":"                    wait_msg \u003d (\u0027Status of snapshot %(id)s is now %(status)s\u0027"},{"line_number":384,"context_line":"                                \u0027[%(prog)s]\u0027) % {\u0027id\u0027: snapshot[\u0027id\u0027],"},{"line_number":385,"context_line":"                                                 \u0027status\u0027: s[\u0027status\u0027],"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_b1db1d7c","line":382,"updated":"2015-01-02 11:18:44.000000000","message":"\u0027(\u0027 and \u0027)\u0027 aren\u0027t needed here","commit_id":"60c4365b4a7abe6b2a04d1624cc0eb7ef2f23be8"}]}
