)]}'
{"nova/api/openstack/compute/contrib/services.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"c3e457b58ecc8f0a422cc4fc56c08372a6b4d20d","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                    msg \u003d _(\u0027The string containing the reason for disabling \u0027"},{"line_number":194,"context_line":"                            \u0027the service contains invalid characters or is \u0027"},{"line_number":195,"context_line":"                            \u0027too long.\u0027)"},{"line_number":196,"context_line":"                    raise webob.exc.HTTPUnprocessableEntity(explanation\u003dmsg)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                status_detail[\u0027disabled_reason\u0027] \u003d reason"},{"line_number":199,"context_line":"                ret_value[\u0027service\u0027][\u0027disabled_reason\u0027] \u003d reason"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FQ9c%3D","line":196,"updated":"2014-03-19 01:27:14.000000000","message":"Might as well change this to an HTTPBadRequest at the same time. 422 is for WebDav","commit_id":"78f48f181e743ee1b9c078f40b2bc187b1c927a5"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"c3e457b58ecc8f0a422cc4fc56c08372a6b4d20d","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            msg \u003d _(\u0027Invalid attribute in the request\u0027)"},{"line_number":202,"context_line":"            if \u0027host\u0027 in body and \u0027binary\u0027 in body:"},{"line_number":203,"context_line":"                msg \u003d _(\u0027Missing disabled reason field\u0027)"},{"line_number":204,"context_line":"            raise webob.exc.HTTPUnprocessableEntity(explanation\u003dmsg)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        try:"},{"line_number":207,"context_line":"            self.host_api.service_update(context, host, binary, status_detail)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAWH%2F%2FQ9Y%3D","line":204,"updated":"2014-03-19 01:27:14.000000000","message":"Might as well change this to an HTTPBadRequest at the same time. 422 is for WebDav","commit_id":"78f48f181e743ee1b9c078f40b2bc187b1c927a5"}],"nova/tests/api/openstack/compute/contrib/test_services.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"230fa5c818439e6ea56a232736f50ba7038db99a","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid1)"},{"line_number":441,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":442,"context_line":"            self.assertEqual(err_msg1, unicode(e))"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        body_valid2 \u003d {}"},{"line_number":445,"context_line":"        err_msg2 \u003d \u0027Invalid attribute in the request\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAU3%2F%2FseY%3D","line":442,"updated":"2014-02-25 08:15:37.000000000","message":"else: block seems necessary like the following because if any exception does not happen in update(), this test would pass.\n\n else:\n     raise Exception(\"This shouldn\u0027t be called\")","commit_id":"8333f643e9ba246a1f481f4fb00070eb96cbf03a"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"f925653ad4c05816f86cbebb3adbaf6772db00d2","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid1)"},{"line_number":441,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":442,"context_line":"            self.assertEqual(err_msg1, unicode(e))"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        body_valid2 \u003d {}"},{"line_number":445,"context_line":"        err_msg2 \u003d \u0027Invalid attribute in the request\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAU3%2F%2FsTI%3D","line":442,"in_reply_to":"AAAAU3%2F%2FseY%3D","updated":"2014-02-25 08:31:18.000000000","message":"Done.","commit_id":"8333f643e9ba246a1f481f4fb00070eb96cbf03a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"230fa5c818439e6ea56a232736f50ba7038db99a","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        try:"},{"line_number":447,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid2)"},{"line_number":448,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":449,"context_line":"            self.assertEqual(err_msg2, unicode(e))"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def test_invalid_reason_field(self):"},{"line_number":452,"context_line":"        reason \u003d \u0027 \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAU3%2F%2FseE%3D","line":449,"updated":"2014-02-25 08:15:37.000000000","message":"ditto","commit_id":"8333f643e9ba246a1f481f4fb00070eb96cbf03a"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"f925653ad4c05816f86cbebb3adbaf6772db00d2","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        try:"},{"line_number":447,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid2)"},{"line_number":448,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":449,"context_line":"            self.assertEqual(err_msg2, unicode(e))"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"    def test_invalid_reason_field(self):"},{"line_number":452,"context_line":"        reason \u003d \u0027 \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAU3%2F%2FsTA%3D","line":449,"in_reply_to":"AAAAU3%2F%2FseE%3D","updated":"2014-02-25 08:31:18.000000000","message":"Done.","commit_id":"8333f643e9ba246a1f481f4fb00070eb96cbf03a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9e7e01d78bd34884c9cf110b71c5965bf7910b90","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid1)"},{"line_number":441,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":442,"context_line":"            self.assertEqual(err_msg1, unicode(e))"},{"line_number":443,"context_line":"        else:"},{"line_number":444,"context_line":"            raise Exception(\"This shouldn\u0027t be called\")"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FrnQ%3D","line":442,"updated":"2014-03-04 17:51:25.000000000","message":"Can you use six.text_type instead of unicode?","commit_id":"e8bf19b2c98e0f8c5e0012a9e57a7136d4fe7b5c"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"986f7cc6d988077774fde1e8a8b8a923a725933e","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        try:"},{"line_number":440,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid1)"},{"line_number":441,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":442,"context_line":"            self.assertEqual(err_msg1, unicode(e))"},{"line_number":443,"context_line":"        else:"},{"line_number":444,"context_line":"            raise Exception(\"This shouldn\u0027t be called\")"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2Fl8g%3D","line":442,"in_reply_to":"AAAAVn%2F%2FrnQ%3D","updated":"2014-03-05 06:29:12.000000000","message":"Done.","commit_id":"e8bf19b2c98e0f8c5e0012a9e57a7136d4fe7b5c"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"9e7e01d78bd34884c9cf110b71c5965bf7910b90","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        try:"},{"line_number":449,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid2)"},{"line_number":450,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":451,"context_line":"            self.assertEqual(err_msg2, unicode(e))"},{"line_number":452,"context_line":"        else:"},{"line_number":453,"context_line":"            raise Exception(\"This shouldn\u0027t be called\")"},{"line_number":454,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FrnE%3D","line":451,"updated":"2014-03-04 17:51:25.000000000","message":"ditto","commit_id":"e8bf19b2c98e0f8c5e0012a9e57a7136d4fe7b5c"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"986f7cc6d988077774fde1e8a8b8a923a725933e","unresolved":false,"context_lines":[{"line_number":448,"context_line":"        try:"},{"line_number":449,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid2)"},{"line_number":450,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":451,"context_line":"            self.assertEqual(err_msg2, unicode(e))"},{"line_number":452,"context_line":"        else:"},{"line_number":453,"context_line":"            raise Exception(\"This shouldn\u0027t be called\")"},{"line_number":454,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2Fl8Y%3D","line":451,"in_reply_to":"AAAAVn%2F%2FrnE%3D","updated":"2014-03-05 06:29:12.000000000","message":"Done. Thanks.","commit_id":"e8bf19b2c98e0f8c5e0012a9e57a7136d4fe7b5c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"279993f3a11c48e585cc0c78f5b1cfed65129aeb","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":443,"context_line":"            self.assertEqual(err_msg1, six.text_type(e))"},{"line_number":444,"context_line":"        else:"},{"line_number":445,"context_line":"            raise Exception(\"This shouldn\u0027t be called\")"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        body_valid2 \u003d {}"},{"line_number":448,"context_line":"        err_msg2 \u003d \u0027Invalid attribute in the request\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2FkLQ%3D","line":445,"updated":"2014-03-05 11:04:29.000000000","message":"you could use self.fail()","commit_id":"2914b20eed4ce45bd5b0ca25e406bd3f170d937b"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"822a5e756f7db9c4da68c59fc856aa33723d3fe3","unresolved":false,"context_lines":[{"line_number":442,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":443,"context_line":"            self.assertEqual(err_msg1, six.text_type(e))"},{"line_number":444,"context_line":"        else:"},{"line_number":445,"context_line":"            raise Exception(\"This shouldn\u0027t be called\")"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"        body_valid2 \u003d {}"},{"line_number":448,"context_line":"        err_msg2 \u003d \u0027Invalid attribute in the request\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2FdRk%3D","line":445,"in_reply_to":"AAAAVn%2F%2FkLQ%3D","updated":"2014-03-06 00:09:39.000000000","message":"Done.","commit_id":"2914b20eed4ce45bd5b0ca25e406bd3f170d937b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"279993f3a11c48e585cc0c78f5b1cfed65129aeb","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":452,"context_line":"            self.assertEqual(err_msg2, six.text_type(e))"},{"line_number":453,"context_line":"        else:"},{"line_number":454,"context_line":"            raise Exception(\"This shouldn\u0027t be called\")"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def test_invalid_reason_field(self):"},{"line_number":457,"context_line":"        reason \u003d \u0027 \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2FkLI%3D","line":454,"updated":"2014-03-05 11:04:29.000000000","message":"ditto","commit_id":"2914b20eed4ce45bd5b0ca25e406bd3f170d937b"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"822a5e756f7db9c4da68c59fc856aa33723d3fe3","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        except webob.exc.HTTPUnprocessableEntity as e:"},{"line_number":452,"context_line":"            self.assertEqual(err_msg2, six.text_type(e))"},{"line_number":453,"context_line":"        else:"},{"line_number":454,"context_line":"            raise Exception(\"This shouldn\u0027t be called\")"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    def test_invalid_reason_field(self):"},{"line_number":457,"context_line":"        reason \u003d \u0027 \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAVn%2F%2FdRY%3D","line":454,"in_reply_to":"AAAAVn%2F%2FkLI%3D","updated":"2014-03-06 00:09:39.000000000","message":"Done.","commit_id":"2914b20eed4ce45bd5b0ca25e406bd3f170d937b"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2ce6d0a575874688f640136f959d20859eab0f59","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    \u0027the service contains invalid characters or is \u0027"},{"line_number":439,"context_line":"                    \u0027too long.\u0027)"},{"line_number":440,"context_line":"        try:"},{"line_number":441,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid1)"},{"line_number":442,"context_line":"        except webob.exc.HTTPBadRequest as e:"},{"line_number":443,"context_line":"            self.assertEqual(err_msg1, six.text_type(e))"},{"line_number":444,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2FIhs%3D","line":441,"updated":"2014-03-20 01:34:30.000000000","message":"Instead of use try/except/else: fail lets use self.assertRaises instead.","commit_id":"5399ab4b1fa2568c982bacee990581465880f5c0"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"898d099f2c64f7c6baee4e929501449062bd23c7","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    \u0027the service contains invalid characters or is \u0027"},{"line_number":439,"context_line":"                    \u0027too long.\u0027)"},{"line_number":440,"context_line":"        try:"},{"line_number":441,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid1)"},{"line_number":442,"context_line":"        except webob.exc.HTTPBadRequest as e:"},{"line_number":443,"context_line":"            self.assertEqual(err_msg1, six.text_type(e))"},{"line_number":444,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2B0LU%3D","line":441,"in_reply_to":"AAAAWH%2F%2B%2B7k%3D","updated":"2014-03-24 04:25:49.000000000","message":"Done. Thank you.","commit_id":"5399ab4b1fa2568c982bacee990581465880f5c0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fdb9b32af6fb865dbd024b567461a67f31dcc95b","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    \u0027the service contains invalid characters or is \u0027"},{"line_number":439,"context_line":"                    \u0027too long.\u0027)"},{"line_number":440,"context_line":"        try:"},{"line_number":441,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid1)"},{"line_number":442,"context_line":"        except webob.exc.HTTPBadRequest as e:"},{"line_number":443,"context_line":"            self.assertEqual(err_msg1, six.text_type(e))"},{"line_number":444,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2B%2B7k%3D","line":441,"in_reply_to":"AAAAWH%2F%2FIdg%3D","updated":"2014-03-21 07:08:40.000000000","message":"@Aaron\n\nthanks for your response.\n\n@xu\n\ncould you remove line 433-455?","commit_id":"5399ab4b1fa2568c982bacee990581465880f5c0"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"dd44f83303592589a363e4dcd4c2966aa0b98cb8","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    \u0027the service contains invalid characters or is \u0027"},{"line_number":439,"context_line":"                    \u0027too long.\u0027)"},{"line_number":440,"context_line":"        try:"},{"line_number":441,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid1)"},{"line_number":442,"context_line":"        except webob.exc.HTTPBadRequest as e:"},{"line_number":443,"context_line":"            self.assertEqual(err_msg1, six.text_type(e))"},{"line_number":444,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2FIdg%3D","line":441,"in_reply_to":"AAAAWH%2F%2FIfE%3D","updated":"2014-03-20 01:52:30.000000000","message":"Whoops i missed that thanks. Sounds good to me.","commit_id":"5399ab4b1fa2568c982bacee990581465880f5c0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d836f37e52a591fd988ea7136ea96b131a961d4e","unresolved":false,"context_lines":[{"line_number":438,"context_line":"                    \u0027the service contains invalid characters or is \u0027"},{"line_number":439,"context_line":"                    \u0027too long.\u0027)"},{"line_number":440,"context_line":"        try:"},{"line_number":441,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid1)"},{"line_number":442,"context_line":"        except webob.exc.HTTPBadRequest as e:"},{"line_number":443,"context_line":"            self.assertEqual(err_msg1, six.text_type(e))"},{"line_number":444,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2FIfE%3D","line":441,"in_reply_to":"AAAAWH%2F%2FIhs%3D","updated":"2014-03-20 01:45:28.000000000","message":"assertRaises() already exists at line430.\n\nThis test is for checking http error message, assertRaises() cannot check it. but now I feel this test is a little overkill, how about removing line 433-455?","commit_id":"5399ab4b1fa2568c982bacee990581465880f5c0"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2ce6d0a575874688f640136f959d20859eab0f59","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        body_valid2 \u003d {}"},{"line_number":448,"context_line":"        err_msg2 \u003d \u0027Invalid attribute in the request\u0027"},{"line_number":449,"context_line":"        try:"},{"line_number":450,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid2)"},{"line_number":451,"context_line":"        except webob.exc.HTTPBadRequest as e:"},{"line_number":452,"context_line":"            self.assertEqual(err_msg2, six.text_type(e))"},{"line_number":453,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2FIho%3D","line":450,"updated":"2014-03-20 01:34:30.000000000","message":"ditto","commit_id":"5399ab4b1fa2568c982bacee990581465880f5c0"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"898d099f2c64f7c6baee4e929501449062bd23c7","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        body_valid2 \u003d {}"},{"line_number":448,"context_line":"        err_msg2 \u003d \u0027Invalid attribute in the request\u0027"},{"line_number":449,"context_line":"        try:"},{"line_number":450,"context_line":"            self.controller.update(req, \"disable-log-reason\", body_valid2)"},{"line_number":451,"context_line":"        except webob.exc.HTTPBadRequest as e:"},{"line_number":452,"context_line":"            self.assertEqual(err_msg2, six.text_type(e))"},{"line_number":453,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAWH%2F%2B0LM%3D","line":450,"in_reply_to":"AAAAWH%2F%2FIho%3D","updated":"2014-03-24 04:25:49.000000000","message":"Thanks.","commit_id":"5399ab4b1fa2568c982bacee990581465880f5c0"}]}
