)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"ce53e053db59e4e250665ec6d2db2357c281c75d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Shrink the exception handling range"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"On evacuate action API, the exception handling for getting API"},{"line_number":10,"context_line":"parameters is wild. This patch shrinks it to necessary range for"},{"line_number":11,"context_line":"code cleanup."},{"line_number":12,"context_line":"In addition, this patch adds some negative tests for the lack of"},{"line_number":13,"context_line":"\"onSharedStorage\" parameter."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F%2F7n0%3D","line":10,"updated":"2013-10-25 01:34:58.000000000","message":"wild -\u003e wide ?","commit_id":"59f478c0c5548ded51bff86171337ab9db966f3e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"24cb15bca3230b3b39ded9ada82834da30e5e184","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Shrink the exception handling range"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"On evacuate action API, the exception handling for getting API"},{"line_number":10,"context_line":"parameters is wild. This patch shrinks it to necessary range for"},{"line_number":11,"context_line":"code cleanup."},{"line_number":12,"context_line":"In addition, this patch adds some negative tests for the lack of"},{"line_number":13,"context_line":"\"onSharedStorage\" parameter."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F%2F7mw%3D","line":10,"in_reply_to":"AAAATn%2F%2F7n0%3D","updated":"2013-10-25 01:47:30.000000000","message":"oops, you\u0027re right. Thanks.\n\nI will fix this.","commit_id":"59f478c0c5548ded51bff86171337ab9db966f3e"}],"nova/api/openstack/compute/contrib/evacuate.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"ce53e053db59e4e250665ec6d2db2357c281c75d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            raise exc.HTTPBadRequest(_(\"Malformed request body\"))"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"},{"line_number":52,"context_line":"            host \u003d evacuate_body[\"host\"]"},{"line_number":53,"context_line":"            on_shared_storage \u003d strutils.bool_from_string("},{"line_number":54,"context_line":"                                            evacuate_body[\"onSharedStorage\"])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7nY%3D","line":51,"updated":"2013-10-25 01:34:58.000000000","message":"using self.is_valid_body would clean things up a bit too I think","commit_id":"59f478c0c5548ded51bff86171337ab9db966f3e"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"24cb15bca3230b3b39ded9ada82834da30e5e184","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            raise exc.HTTPBadRequest(_(\"Malformed request body\"))"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        try:"},{"line_number":51,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"},{"line_number":52,"context_line":"            host \u003d evacuate_body[\"host\"]"},{"line_number":53,"context_line":"            on_shared_storage \u003d strutils.bool_from_string("},{"line_number":54,"context_line":"                                            evacuate_body[\"onSharedStorage\"])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7mk%3D","line":51,"in_reply_to":"AAAATn%2F%2F7nY%3D","updated":"2013-10-25 01:47:30.000000000","message":"I agree with you, I will change here.","commit_id":"59f478c0c5548ded51bff86171337ab9db966f3e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"49eb41fda5e6ddf550a057b4adada32661dbd09e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            msg \u003d _(\"host and onSharedStorage must be specified.\")"},{"line_number":57,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        password \u003d None"},{"line_number":60,"context_line":"        if \u0027adminPass\u0027 in evacuate_body:"},{"line_number":61,"context_line":"            # check that if requested to evacuate server on shared storage"},{"line_number":62,"context_line":"            # password not specified"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F3E0%3D","line":59,"updated":"2013-10-26 16:28:28.000000000","message":"Consider:\npassword \u003d evacuate_body.get(\u0027adminPass\u0027)\nif password:\n   if on_shared_storage ...","commit_id":"7c855d8f8b7a58bd572fb857d499a7a6a61d2406"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"494771ff7b33b67d31bc8e7d4e458758cd56c536","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            msg \u003d _(\"host and onSharedStorage must be specified.\")"},{"line_number":57,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        password \u003d None"},{"line_number":60,"context_line":"        if \u0027adminPass\u0027 in evacuate_body:"},{"line_number":61,"context_line":"            # check that if requested to evacuate server on shared storage"},{"line_number":62,"context_line":"            # password not specified"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F2C0%3D","line":59,"in_reply_to":"AAAATn%2F%2F3E0%3D","updated":"2013-10-28 00:28:07.000000000","message":"I like it. I will change here.","commit_id":"7c855d8f8b7a58bd572fb857d499a7a6a61d2406"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"51ab2022bc686c27e7cd9317db976feaaea11980","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        password \u003d evacuate_body.get(\u0027adminPass\u0027)"},{"line_number":60,"context_line":"        if password:"},{"line_number":61,"context_line":"            # check that if requested to evacuate server on shared storage"},{"line_number":62,"context_line":"            # password not specified"},{"line_number":63,"context_line":"            if on_shared_storage:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F0xs%3D","line":60,"updated":"2013-10-28 12:51:39.000000000","message":"What if they want to set the password to the empty string?","commit_id":"37652610962376ffd49fba14e0682835885f14b2"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c0b7bb32e09cae1d73a6edd4c5b0866bfd46d34e","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        password \u003d evacuate_body.get(\u0027adminPass\u0027)"},{"line_number":60,"context_line":"        if password:"},{"line_number":61,"context_line":"            # check that if requested to evacuate server on shared storage"},{"line_number":62,"context_line":"            # password not specified"},{"line_number":63,"context_line":"            if on_shared_storage:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2F0vg%3D","line":60,"in_reply_to":"AAAATn%2F%2F0xs%3D","updated":"2013-10-28 12:58:37.000000000","message":"oops, you are right. my bad.\n\nI will update my previous patch again.","commit_id":"37652610962376ffd49fba14e0682835885f14b2"}],"nova/api/openstack/compute/plugins/v3/evacuate.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"24cb15bca3230b3b39ded9ada82834da30e5e184","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            raise exc.HTTPBadRequest(_(\"Malformed request body\"))"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        try:"},{"line_number":53,"context_line":"            evacuate_body \u003d body[\"evacuate\"]"},{"line_number":54,"context_line":"            host \u003d evacuate_body[\"host\"]"},{"line_number":55,"context_line":"            on_shared_storage \u003d strutils.bool_from_string("},{"line_number":56,"context_line":"                                            evacuate_body[\"on_shared_storage\"])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2F7mE%3D","line":53,"updated":"2013-10-25 01:47:30.000000000","message":"I will change here also by is_valid_body().","commit_id":"59f478c0c5548ded51bff86171337ab9db966f3e"}],"nova/tests/api/openstack/compute/plugins/v3/test_evacuate.py":[{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"310b86df4fa715ffd305a31b5a5276dbf96e630e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027my_host\u0027,"},{"line_number":94,"context_line":"                                               \u0027admin_password\u0027: \u0027MyNewPass\u0027})"},{"line_number":95,"context_line":"        res \u003d req.get_response(app)"},{"line_number":96,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_evacuate_instance_with_bad_host(self):"},{"line_number":99,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027bad_host\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F7eM%3D","line":96,"updated":"2013-10-25 03:14:11.000000000","message":"I think we need to honor on_shared_storage and valid the password as well","commit_id":"7c855d8f8b7a58bd572fb857d499a7a6a61d2406"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"6bebadcd69f08735b797cfc7acabd8bca8de568f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027my_host\u0027,"},{"line_number":94,"context_line":"                                               \u0027admin_password\u0027: \u0027MyNewPass\u0027})"},{"line_number":95,"context_line":"        res \u003d req.get_response(app)"},{"line_number":96,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_evacuate_instance_with_bad_host(self):"},{"line_number":99,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027bad_host\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F7Qs%3D","line":96,"in_reply_to":"AAAATn%2F%2F7RM%3D","updated":"2013-10-25 05:58:23.000000000","message":"My bad, I haven\u0027t check the original codes carefully, this should be fine.","commit_id":"7c855d8f8b7a58bd572fb857d499a7a6a61d2406"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"92af47f5cf5ae4b5060da7c11c681db9ba04f819","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027my_host\u0027,"},{"line_number":94,"context_line":"                                               \u0027admin_password\u0027: \u0027MyNewPass\u0027})"},{"line_number":95,"context_line":"        res \u003d req.get_response(app)"},{"line_number":96,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_evacuate_instance_with_bad_host(self):"},{"line_number":99,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027bad_host\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F7RM%3D","line":96,"in_reply_to":"AAAATn%2F%2F7SQ%3D","updated":"2013-10-25 05:49:22.000000000","message":"This patch does not change the validation of the *value* of on_shared_storage, changes the validation of the existence only.\n\nIn addition, now nova does not validate the value, because of not passing \"True\" to strutils.bool_from_string().\nso we cannot add a negative test of invalid value of on_shared_storage.\n\nI think the additional validation is out of scope of this patch, because the purpose is clean-up.\n\nI\u0027m sorry if I misunderstand your comment.","commit_id":"7c855d8f8b7a58bd572fb857d499a7a6a61d2406"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"9c90b00f660da07d864e8077a99294e88e70fc50","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027my_host\u0027,"},{"line_number":94,"context_line":"                                               \u0027admin_password\u0027: \u0027MyNewPass\u0027})"},{"line_number":95,"context_line":"        res \u003d req.get_response(app)"},{"line_number":96,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_evacuate_instance_with_bad_host(self):"},{"line_number":99,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027bad_host\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F7SQ%3D","line":96,"in_reply_to":"AAAATn%2F%2F7bg%3D","updated":"2013-10-25 05:34:32.000000000","message":"Since the change which being made depends on the on_shared_storage, so we\u0027d better to adds unit test to cover it as well, thanks.","commit_id":"7c855d8f8b7a58bd572fb857d499a7a6a61d2406"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"425a91681deeb49392b2350b69ea5ca0d2e0b97d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027my_host\u0027,"},{"line_number":94,"context_line":"                                               \u0027admin_password\u0027: \u0027MyNewPass\u0027})"},{"line_number":95,"context_line":"        res \u003d req.get_response(app)"},{"line_number":96,"context_line":"        self.assertEqual(res.status_int, 400)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_evacuate_instance_with_bad_host(self):"},{"line_number":99,"context_line":"        req, app \u003d self._gen_request_with_app({\u0027host\u0027: \u0027bad_host\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2F7bg%3D","line":96,"in_reply_to":"AAAATn%2F%2F7eM%3D","updated":"2013-10-25 03:28:43.000000000","message":"Sorry, I am not sure that I understand your comment correctly.\n\nDo you mean we need to test the combination of invalid on_shared_storage and valid admin_password?","commit_id":"7c855d8f8b7a58bd572fb857d499a7a6a61d2406"}]}
