)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7438dab903d1029fc72db8cd96daa5b0f19eab6f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"function to help to clone this image. Normally sheepdog can clone"},{"line_number":11,"context_line":"only from snapshot."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch set is derived from abandoned change: Ibd355082e7c3215c00f6576404566577f7a2601c"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I6f6834ff5443f2d1a21d4ae10e26e1cab3664a01"},{"line_number":16,"context_line":"Closes-Bug: #1140177"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba7be1f8_5f178151","line":13,"updated":"2015-02-27 17:35:59.000000000","message":"This line should be wrapped before the commit hash.","commit_id":"a908d5ea3cc27251e746ead8ff840330539b3b48"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f742cf0b331b59fdfc4986130b192ef0507f96b3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix missing clone_image API support for sheepdog driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"if image is backend by sheepdog, it will use create_cloned_volume"},{"line_number":10,"context_line":"function to help to clone this image. Normally sheepdog can clone"},{"line_number":11,"context_line":"only from snapshot."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba7be1f8_9806361f","line":9,"updated":"2015-03-02 14:42:27.000000000","message":"I should have mentioned this before, but if you do another update please start this sentence with an uppercase I.","commit_id":"d5fda58cecec7d40a784616a680fb6bd42d887aa"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"046aece616f536217ceca0f52f53c8bdbdf75f20","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix missing clone_image API support for sheepdog driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"if image is backend by sheepdog, it will use create_cloned_volume"},{"line_number":10,"context_line":"function to help to clone this image. Normally sheepdog can clone"},{"line_number":11,"context_line":"only from snapshot."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba7be1f8_553f0bb4","line":9,"in_reply_to":"ba7be1f8_9806361f","updated":"2015-03-02 23:49:35.000000000","message":"Agree","commit_id":"d5fda58cecec7d40a784616a680fb6bd42d887aa"}],"cinder/tests/test_sheepdog.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"efa7ce4ee2f2542daf9ca77a429ac0e93f4d9225","unresolved":false,"context_lines":[{"line_number":231,"context_line":"            context, fake_vol, image_location, image_meta, image_service)"},{"line_number":232,"context_line":"        self.assertTrue(cloned)"},{"line_number":233,"context_line":"        self.assertEqual("},{"line_number":234,"context_line":"            model_updated[\u0027provider_location\u0027], \"sheepdog:%s\" % fake_name)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def test_clone_image_failure(self):"},{"line_number":237,"context_line":"        context \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_0e716877","line":234,"updated":"2015-02-27 14:28:09.000000000","message":"assertEqual order should be (EXPECTED, ACTUAL).","commit_id":"fcd589133c4687e07ba12f02a19524713ab9b076"},{"author":{"_account_id":15101,"name":"YAMADA Hideki","email":"yamada.hideki@lab.ntt.co.jp","username":"yamada-h"},"change_message_id":"54559a95161d6160a60e2fdfd0a2262f08f0fd4d","unresolved":false,"context_lines":[{"line_number":231,"context_line":"            context, fake_vol, image_location, image_meta, image_service)"},{"line_number":232,"context_line":"        self.assertTrue(cloned)"},{"line_number":233,"context_line":"        self.assertEqual("},{"line_number":234,"context_line":"            model_updated[\u0027provider_location\u0027], \"sheepdog:%s\" % fake_name)"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"    def test_clone_image_failure(self):"},{"line_number":237,"context_line":"        context \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_bf03240c","line":234,"in_reply_to":"ba7be1f8_0e716877","updated":"2015-02-27 15:24:13.000000000","message":"Done","commit_id":"fcd589133c4687e07ba12f02a19524713ab9b076"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"046aece616f536217ceca0f52f53c8bdbdf75f20","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                       \u0027delete_snapshot\u0027,"},{"line_number":189,"context_line":"                       fake_delete_snapshot)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        fake_name \u003d u\u0027volume-00000001\u0027"},{"line_number":192,"context_line":"        fake_size \u003d \u002720\u0027"},{"line_number":193,"context_line":"        fake_vol \u003d {\u0027project_id\u0027: \u0027testprjid\u0027, \u0027name\u0027: fake_name,"},{"line_number":194,"context_line":"                    \u0027size\u0027: fake_size,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_b54e876d","line":191,"updated":"2015-03-02 23:49:35.000000000","message":"Please, do not use unicode directly. You should use six.text_type instead","commit_id":"d5fda58cecec7d40a784616a680fb6bd42d887aa"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e830a03144414af7558a4bb3e5899c84e8d5e23f","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                context, fake_vol, image_location, image_meta, image_service)"},{"line_number":248,"context_line":"            self.assertEqual(({}, False), result)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def test_is_cloneable_failure(self):"},{"line_number":251,"context_line":"        location \u003d \"sheepdog:ip:port:caa4ffd0-fake-fake-fake-f8631a807f5a\""},{"line_number":252,"context_line":"        image_meta \u003d {\u0027disk_format\u0027: \u0027iso\u0027, \u0027size\u0027: 2}"},{"line_number":253,"context_line":"        result \u003d self.driver._is_cloneable(location, image_meta)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_d4822b52","line":250,"updated":"2015-03-30 19:29:09.000000000","message":"Please, add more test cases for \u0027_is_cloneable\u0027 method","commit_id":"fd79bd5e18ffa1e0d9591d8cc4b12bea230eda4c"},{"author":{"_account_id":15556,"name":"luyingxi","email":"luyingxi@huawei.com","username":"lu"},"change_message_id":"32bb27c4b2d00ee27c4a9c980d89d98ded17dc76","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            \u0027size\u0027: \u002720\u0027,"},{"line_number":151,"context_line":"            \u0027id\u0027: \u0027582a1efa-be6a-11e4-a73b-0aa186c60fe0\u0027"},{"line_number":152,"context_line":"        }"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        with mock.patch.object(sheepdog.SheepdogDriver,"},{"line_number":155,"context_line":"                               \u0027_try_execute\u0027) as mock_exe:"},{"line_number":156,"context_line":"            self.driver.create_cloned_volume(target_vol, src_vol)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_03407355","line":153,"updated":"2015-04-02 06:11:36.000000000","message":"The last item in the dictionary should have a trailing comma.\nhttp://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"0f925f5ab3d0e5c6596e4b71e8ca01b20a19cc16"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"f4d17158a07837ea81eb4abeb481b29637aac538","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            ]"},{"line_number":171,"context_line":"            mock_exe.assert_has_calls(calls)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def test_create_cloned_volume_failure(self):"},{"line_number":174,"context_line":"        def fake_try_execute(obj, *command, **kwargs):"},{"line_number":175,"context_line":"            raise processutils.ProcessExecutionError()"},{"line_number":176,"context_line":"        self.stubs.Set(sheepdog.SheepdogDriver,"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_23b017dd","line":173,"updated":"2015-04-02 05:55:25.000000000","message":"Please change it to the style of  mock.patch.object, since the stubs are decided to be abandoned in new codes.","commit_id":"0f925f5ab3d0e5c6596e4b71e8ca01b20a19cc16"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"f4d17158a07837ea81eb4abeb481b29637aac538","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":200,"context_line":"                          self.driver.create_cloned_volume, fake_vol, src_vol)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"    def test_clone_image_success(self):"},{"line_number":203,"context_line":"        def fake_try_execute(obj, *command, **kwargs):"},{"line_number":204,"context_line":"            return True"},{"line_number":205,"context_line":"        self.stubs.Set(sheepdog.SheepdogDriver,"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_e3ca2f4f","line":202,"updated":"2015-04-02 05:55:25.000000000","message":"The same to the above test case.","commit_id":"0f925f5ab3d0e5c6596e4b71e8ca01b20a19cc16"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"f4d17158a07837ea81eb4abeb481b29637aac538","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                context, fake_vol, image_location, image_meta, image_service)"},{"line_number":248,"context_line":"            self.assertEqual(({}, False), result)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def test_is_cloneable(self):"},{"line_number":251,"context_line":"        uuid \u003d \u002787f1b01c-f46c-4537-bd5d-23962f5f4316\u0027"},{"line_number":252,"context_line":"        location \u003d \u0027sheepdog:ip:port:%s\u0027 % uuid"},{"line_number":253,"context_line":"        image_meta \u003d {\u0027id\u0027: uuid, \u0027size\u0027: 1, \u0027disk_format\u0027: \u0027raw\u0027}"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_83c12331","line":250,"updated":"2015-04-02 05:55:25.000000000","message":"The same comment to the above.","commit_id":"0f925f5ab3d0e5c6596e4b71e8ca01b20a19cc16"}],"cinder/volume/drivers/sheepdog.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"efa7ce4ee2f2542daf9ca77a429ac0e93f4d9225","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if image_meta[\u0027disk_format\u0027] !\u003d \u0027raw\u0027:"},{"line_number":77,"context_line":"            LOG.debug(\"Image clone requires image format to be\""},{"line_number":78,"context_line":"                      \"\u0027raw\u0027 but image %s is \u0027%s\u0027.\" %"},{"line_number":79,"context_line":"                      (image_location, image_meta[\u0027disk_format\u0027]))"},{"line_number":80,"context_line":"            return False"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_8ee8f817","line":78,"updated":"2015-02-27 14:28:09.000000000","message":"Please change % to , and remove parentheses around arguments.","commit_id":"fcd589133c4687e07ba12f02a19524713ab9b076"},{"author":{"_account_id":15101,"name":"YAMADA Hideki","email":"yamada.hideki@lab.ntt.co.jp","username":"yamada-h"},"change_message_id":"54559a95161d6160a60e2fdfd0a2262f08f0fd4d","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if image_meta[\u0027disk_format\u0027] !\u003d \u0027raw\u0027:"},{"line_number":77,"context_line":"            LOG.debug(\"Image clone requires image format to be\""},{"line_number":78,"context_line":"                      \"\u0027raw\u0027 but image %s is \u0027%s\u0027.\" %"},{"line_number":79,"context_line":"                      (image_location, image_meta[\u0027disk_format\u0027]))"},{"line_number":80,"context_line":"            return False"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_5f1ce86a","line":78,"in_reply_to":"ba7be1f8_8ee8f817","updated":"2015-02-27 15:24:13.000000000","message":"Done","commit_id":"fcd589133c4687e07ba12f02a19524713ab9b076"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"efa7ce4ee2f2542daf9ca77a429ac0e93f4d9225","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            # Create volume"},{"line_number":130,"context_line":"            self.create_volume_from_snapshot(volume, snapshot)"},{"line_number":131,"context_line":"        except Exception:"},{"line_number":132,"context_line":"            msg \u003d (_(\u0027Failed to create cloned volume %s.\u0027), volume[\u0027name\u0027])"},{"line_number":133,"context_line":"            LOG.error(msg)"},{"line_number":134,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":135,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_aed4dc47","line":132,"updated":"2015-02-27 14:28:09.000000000","message":"% needed here because you are actually formatting a string.","commit_id":"fcd589133c4687e07ba12f02a19524713ab9b076"},{"author":{"_account_id":15101,"name":"YAMADA Hideki","email":"yamada.hideki@lab.ntt.co.jp","username":"yamada-h"},"change_message_id":"54559a95161d6160a60e2fdfd0a2262f08f0fd4d","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            # Create volume"},{"line_number":130,"context_line":"            self.create_volume_from_snapshot(volume, snapshot)"},{"line_number":131,"context_line":"        except Exception:"},{"line_number":132,"context_line":"            msg \u003d (_(\u0027Failed to create cloned volume %s.\u0027), volume[\u0027name\u0027])"},{"line_number":133,"context_line":"            LOG.error(msg)"},{"line_number":134,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":135,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_ff24bcb0","line":132,"in_reply_to":"ba7be1f8_aed4dc47","updated":"2015-02-27 15:24:13.000000000","message":"Done","commit_id":"fcd589133c4687e07ba12f02a19524713ab9b076"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b335c0cf4c35b5bd7631a5fd24046ad5e6b4f27c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            return False"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        if not image_location.startswith(\"sheepdog:\"):"},{"line_number":73,"context_line":"            LOG.debug(\"Image not stored in sheepdog.\")"},{"line_number":74,"context_line":"            return False"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if image_meta[\u0027disk_format\u0027] !\u003d \u0027raw\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_5ce22f04","line":73,"updated":"2015-02-27 17:12:03.000000000","message":"\"Image is not stored in sheepdog.\"","commit_id":"a908d5ea3cc27251e746ead8ff840330539b3b48"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7438dab903d1029fc72db8cd96daa5b0f19eab6f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            return False"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if image_meta[\u0027disk_format\u0027] !\u003d \u0027raw\u0027:"},{"line_number":77,"context_line":"            LOG.debug(\"Image clone requires image format to be\""},{"line_number":78,"context_line":"                      \"\u0027raw\u0027 but image %s is \u0027%s\u0027.\","},{"line_number":79,"context_line":"                      image_location, image_meta[\u0027disk_format\u0027])"},{"line_number":80,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_8a0ff92d","line":77,"updated":"2015-02-27 17:35:59.000000000","message":"missing space at EOL","commit_id":"a908d5ea3cc27251e746ead8ff840330539b3b48"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b335c0cf4c35b5bd7631a5fd24046ad5e6b4f27c","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        cloneable \u003d False"},{"line_number":83,"context_line":"        # check whether volume is stored in sheepdog"},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            # The image location would like be"},{"line_number":86,"context_line":"            # \"sheepdog:192.168.10.2:7000:Alice\""},{"line_number":87,"context_line":"            (label, ip, port, name) \u003d image_location.split(\":\", 3)"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_bcac0b8e","line":85,"updated":"2015-02-27 17:12:03.000000000","message":"Seems should be \"would be like\", but I\u0027m not sure for it","commit_id":"a908d5ea3cc27251e746ead8ff840330539b3b48"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b335c0cf4c35b5bd7631a5fd24046ad5e6b4f27c","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            self._try_execute(\u0027collie\u0027, \u0027vdi\u0027, \u0027list\u0027, \u0027--address\u0027, ip,"},{"line_number":90,"context_line":"                              \u0027--port\u0027, port, name)"},{"line_number":91,"context_line":"            cloneable \u003d True"},{"line_number":92,"context_line":"        except Exception as e:"},{"line_number":93,"context_line":"            LOG.debug(\"Can not find vdi %(image)s: %(err)s\","},{"line_number":94,"context_line":"                      {\u0027image\u0027: name, \u0027err\u0027: e})"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_9ccae76c","line":92,"updated":"2015-02-27 17:12:03.000000000","message":"Could we handle less general exception here and below?","commit_id":"a908d5ea3cc27251e746ead8ff840330539b3b48"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7438dab903d1029fc72db8cd96daa5b0f19eab6f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        if not self._is_cloneable(image_location, image_meta):"},{"line_number":104,"context_line":"            return {}, False"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        # The image location would like be"},{"line_number":107,"context_line":"        # \"sheepdog:192.168.10.2:7000:Alice\""},{"line_number":108,"context_line":"        (label, ip, port, name) \u003d image_location.split(\":\", 3)"},{"line_number":109,"context_line":"        volume_ref \u003d {\u0027name\u0027: name, \u0027size\u0027: image_meta[\u0027size\u0027]}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_aa33ddf4","line":106,"updated":"2015-02-27 17:35:59.000000000","message":"would be like","commit_id":"a908d5ea3cc27251e746ead8ff840330539b3b48"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"b335c0cf4c35b5bd7631a5fd24046ad5e6b4f27c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            # Create volume"},{"line_number":130,"context_line":"            self.create_volume_from_snapshot(volume, snapshot)"},{"line_number":131,"context_line":"        except Exception:"},{"line_number":132,"context_line":"            msg \u003d (_(\u0027Failed to create cloned volume %s.\u0027) % volume[\u0027name\u0027])"},{"line_number":133,"context_line":"            LOG.error(msg)"},{"line_number":134,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":135,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_fceda38f","line":132,"updated":"2015-02-27 17:12:03.000000000","message":"Please, add volume id to a log message","commit_id":"a908d5ea3cc27251e746ead8ff840330539b3b48"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e830a03144414af7558a4bb3e5899c84e8d5e23f","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        if image_meta[\u0027disk_format\u0027] !\u003d \u0027raw\u0027:"},{"line_number":77,"context_line":"            LOG.debug(\"Image clone requires image format to be \""},{"line_number":78,"context_line":"                      \"\u0027raw\u0027 but image %s is \u0027%s\u0027.\","},{"line_number":79,"context_line":"                      image_location, image_meta[\u0027disk_format\u0027])"},{"line_number":80,"context_line":"            return False"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_f41acf6d","line":78,"updated":"2015-03-30 19:29:09.000000000","message":"Could we add image id to a debug message?","commit_id":"fd79bd5e18ffa1e0d9591d8cc4b12bea230eda4c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e830a03144414af7558a4bb3e5899c84e8d5e23f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            # Create volume"},{"line_number":130,"context_line":"            self.create_volume_from_snapshot(volume, snapshot)"},{"line_number":131,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":132,"context_line":"            msg \u003d (_(\u0027Failed to create cloned volume %s.\u0027) % volume[\u0027id\u0027])"},{"line_number":133,"context_line":"            LOG.error(msg)"},{"line_number":134,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":135,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":6,"id":"da9b358b_2059125b","line":132,"updated":"2015-03-30 19:29:09.000000000","message":"Should be:\nmsg \u003d _(\u0027Failed to create cloned volume %s.\u0027) % volume[\u0027id\u0027]","commit_id":"fd79bd5e18ffa1e0d9591d8cc4b12bea230eda4c"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"f4d17158a07837ea81eb4abeb481b29637aac538","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            # Create volume"},{"line_number":132,"context_line":"            self.create_volume_from_snapshot(volume, snapshot)"},{"line_number":133,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":134,"context_line":"            msg \u003d _(\u0027Failed to create cloned volume %s.\u0027) % volume[\u0027id\u0027]"},{"line_number":135,"context_line":"            LOG.error(msg)"},{"line_number":136,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":137,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_a376673c","line":134,"updated":"2015-04-02 05:55:25.000000000","message":"please add _LE in front of it.","commit_id":"0f925f5ab3d0e5c6596e4b71e8ca01b20a19cc16"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"da468c1b2c002f35e8b332966059af76c22fea8d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            # Create volume"},{"line_number":132,"context_line":"            self.create_volume_from_snapshot(volume, snapshot)"},{"line_number":133,"context_line":"        except processutils.ProcessExecutionError:"},{"line_number":134,"context_line":"            msg \u003d _LE(\u0027Failed to create cloned volume %s.\u0027) % volume[\u0027id\u0027]"},{"line_number":135,"context_line":"            LOG.error(msg)"},{"line_number":136,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":137,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":9,"id":"baa041b7_e6a0f392","line":134,"updated":"2015-04-02 11:52:04.000000000","message":"This needs to be _() since msg is also used in the VolumeBackendAPIException initialization.","commit_id":"824aac9921f87e8f4092ec825b90e793304498bb"}]}
