)]}'
{"nova/tests/unit/api/openstack/compute/test_microversions.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"81ee3acf6d403cb13eec1d7b67016f193d3c86d5","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        resp_json \u003d jsonutils.loads(res.body)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        self.assertEqual(\u0027create_val1\u0027, resp_json[\u0027param\u0027])"},{"line_number":337,"context_line":"        self.assertEqual(\u0027create_val1_ext\u0027, resp_json[\u0027param_ext\u0027])"},{"line_number":338,"context_line":"        self.assertEqual(\"2.2\", res.headers[\u0027X-OpenStack-Compute-API-Version\u0027])"},{"line_number":339,"context_line":"        self.assertEqual(\"X-OpenStack-Compute-API-Version\","},{"line_number":340,"context_line":"                         res.headers[\u0027Vary\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_25061286","line":337,"updated":"2014-12-31 21:14:33.000000000","message":"suggestion:\n\nmaybe we can double check there is no \nparam_ext2 here?","commit_id":"904f12a7b51727fd54030e348cc3166612ff3d72"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d5b5e7b09fbf85335445af43b1fdc65ec37f3554","unresolved":false,"context_lines":[{"line_number":334,"context_line":"        resp_json \u003d jsonutils.loads(res.body)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"        self.assertEqual(\u0027create_val1\u0027, resp_json[\u0027param\u0027])"},{"line_number":337,"context_line":"        self.assertEqual(\u0027create_val1_ext\u0027, resp_json[\u0027param_ext\u0027])"},{"line_number":338,"context_line":"        self.assertEqual(\"2.2\", res.headers[\u0027X-OpenStack-Compute-API-Version\u0027])"},{"line_number":339,"context_line":"        self.assertEqual(\"X-OpenStack-Compute-API-Version\","},{"line_number":340,"context_line":"                         res.headers[\u0027Vary\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_f0984677","line":337,"in_reply_to":"3a961159_25061286","updated":"2015-01-01 03:05:43.000000000","message":"we can just check the whole dict: {\u0027param\u0027: \u0027create_val1\u0027, \u0027param_ext\u0027: \u0027create_val1_ext\u0027}","commit_id":"904f12a7b51727fd54030e348cc3166612ff3d72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"81ee3acf6d403cb13eec1d7b67016f193d3c86d5","unresolved":false,"context_lines":[{"line_number":355,"context_line":""},{"line_number":356,"context_line":"        res \u003d req.get_response(app)"},{"line_number":357,"context_line":"        self.assertEqual(200, res.status_int)"},{"line_number":358,"context_line":"        resp_json \u003d jsonutils.loads(res.body)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        self.assertEqual(\u0027create_val1\u0027, resp_json[\u0027param\u0027])"},{"line_number":361,"context_line":"        self.assertEqual(\u0027create_val2_ext\u0027, resp_json[\u0027param_ext2\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_25dff20d","line":358,"updated":"2014-12-31 21:14:33.000000000","message":"same to previous patch, consider to consolidate cases","commit_id":"904f12a7b51727fd54030e348cc3166612ff3d72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"81ee3acf6d403cb13eec1d7b67016f193d3c86d5","unresolved":false,"context_lines":[{"line_number":358,"context_line":"        resp_json \u003d jsonutils.loads(res.body)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"        self.assertEqual(\u0027create_val1\u0027, resp_json[\u0027param\u0027])"},{"line_number":361,"context_line":"        self.assertEqual(\u0027create_val2_ext\u0027, resp_json[\u0027param_ext2\u0027])"},{"line_number":362,"context_line":"        self.assertEqual(\"2.3\", res.headers[\u0027X-OpenStack-Compute-API-Version\u0027])"},{"line_number":363,"context_line":"        self.assertEqual(\"X-OpenStack-Compute-API-Version\","},{"line_number":364,"context_line":"                         res.headers[\u0027Vary\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_45fdde6d","line":361,"updated":"2014-12-31 21:14:33.000000000","message":"maybe we can double check there is no \nparam_ext here?","commit_id":"904f12a7b51727fd54030e348cc3166612ff3d72"},{"author":{"_account_id":13663,"name":"heijlong","email":"jhei@redhat.com","username":"parklong"},"change_message_id":"d045b7d926dbbc658e7668bb94af161da68b104e","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/microversions3\u0027)"},{"line_number":339,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":340,"context_line":"        req.headers \u003d {\u0027X-OpenStack-Compute-API-Version\u0027: \u00272.3\u0027}"},{"line_number":341,"context_line":"        req.environ[\u0027CONTENT_TYPE\u0027] \u003d \"application/json\""},{"line_number":342,"context_line":"        req.body \u003d jsonutils.dumps({\u0027dummy\u0027: {\u0027val\u0027: \u0027foo\u0027}})"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        res \u003d self._test_microversions(app, req, 200, ret_header\u003d\"2.3\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_dda349af","line":341,"updated":"2015-01-05 07:22:07.000000000","message":"hello Eli, you can remove this, as it is included in function _test_microversions","commit_id":"85e67c3c68a97524d4d4b905c487eb7177489825"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"86a0e12192a16419db7cdc8da3fb6f12d4cdc1cc","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/microversions3\u0027)"},{"line_number":339,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":340,"context_line":"        req.headers \u003d {\u0027X-OpenStack-Compute-API-Version\u0027: \u00272.3\u0027}"},{"line_number":341,"context_line":"        req.environ[\u0027CONTENT_TYPE\u0027] \u003d \"application/json\""},{"line_number":342,"context_line":"        req.body \u003d jsonutils.dumps({\u0027dummy\u0027: {\u0027val\u0027: \u0027foo\u0027}})"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        res \u003d self._test_microversions(app, req, 200, ret_header\u003d\"2.3\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_942c8f03","line":341,"in_reply_to":"3a961159_dda349af","updated":"2015-01-20 03:14:00.000000000","message":"Done","commit_id":"85e67c3c68a97524d4d4b905c487eb7177489825"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8b95c1fba98dc9fe9e59afbd994a54dc96271508","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    @mock.patch(\"nova.api.openstack.APIRouterV21.api_extension_namespace\","},{"line_number":310,"context_line":"                return_value\u003d\u0027nova.api.v3.test_extensions\u0027)"},{"line_number":311,"context_line":"    def test_microversions_extend(self, mock_namespace,"},{"line_number":312,"context_line":"                                  mock_maxver):"},{"line_number":313,"context_line":"        mock_maxver.return_value \u003d api_version.APIVersionRequest(\"3.3\")"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        app \u003d fakes.wsgi_app_v21(init_only\u003d\u0027test-microversions\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_0d519a2f","line":312,"updated":"2015-02-13 05:50:23.000000000","message":"The code of both tests are almost the same, so how about adding internal method and sharing it between them?\n\nlike\n\n @mock.patch(\"nova.api.openstack.api_version_request.max_api_version\")\n @mock.patch(\"nova.api.openstack.APIRouterV21.api_extension_namespace\",\n     return_value\u003d\u0027nova.api.v3.test_extensions\u0027)\n def _check_microversions_extend(self, req_version, expected_body, mock_namespace, mock_maxver):\n     mock_maxver.return_value \u003d api_version.APIVersionRequest(\"3.3\")\n     [..]\n     req.headers \u003d {\u0027X-OpenStack-Compute-API-Version\u0027: req_version}\n     [..]\n     res \u003d self._test_microversions(app, req, 200, ret_header\u003dreq_version)\n     [..]\n     self.assertEqual(expected_body, resp_json)\n      self.assertEqual(\"X-OpenStack-Compute-API-Version\", res.headers[\u0027Vary\u0027]) \n\n def test_microversions_extend(self):\n     self._check_microversions_extend(\u00272.2\u0027, {\u0027param\u0027: \u0027create_val1\u0027, \u0027param_ext\u0027: \u0027create_val1_ext\u0027})\n\n def test_microversions_extend2(self):\n     self._check_microversions_extend(\u00272.3\u0027, {\u0027param\u0027: \u0027create_val1\u0027, \u0027param_ext2\u0027: \u0027create_val2_ext\u0027})","commit_id":"c7929fd064b7cb49bdcbfd24c72450cd5293ed90"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"215da8f5b2e98524974b28bc000aa2a91bc6ad53","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    @mock.patch(\"nova.api.openstack.APIRouterV21.api_extension_namespace\","},{"line_number":310,"context_line":"                return_value\u003d\u0027nova.api.v3.test_extensions\u0027)"},{"line_number":311,"context_line":"    def test_microversions_extend(self, mock_namespace,"},{"line_number":312,"context_line":"                                  mock_maxver):"},{"line_number":313,"context_line":"        mock_maxver.return_value \u003d api_version.APIVersionRequest(\"3.3\")"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        app \u003d fakes.wsgi_app_v21(init_only\u003d\u0027test-microversions\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_2b2446ae","line":312,"in_reply_to":"da86d52c_0d519a2f","updated":"2015-02-16 07:27:01.000000000","message":"thanks ken\u0027ichi, done.","commit_id":"c7929fd064b7cb49bdcbfd24c72450cd5293ed90"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"8d157b76e21eb514e3c4089aa816c3fbc7a542bc","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    @mock.patch(\"nova.api.openstack.api_version_request.max_api_version\")"},{"line_number":324,"context_line":"    @mock.patch(\"nova.api.openstack.APIRouterV21.api_extension_namespace\","},{"line_number":325,"context_line":"        return_value\u003d\u0027nova.api.v3.test_extensions\u0027)"},{"line_number":326,"context_line":"    def _check_microversions_extend(self, req_header, expected_body,"},{"line_number":327,"context_line":"                                    mock_namespace, mock_maxver):"},{"line_number":328,"context_line":"        mock_maxver.return_value \u003d api_version.APIVersionRequest(\"3.3\")"},{"line_number":329,"context_line":"        app \u003d fakes.wsgi_app_v21(init_only\u003d\u0027test-microversions\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_8810c5a9","line":326,"updated":"2015-02-23 13:13:05.000000000","message":"nit: the decorator is called \u0027extends\u0027, so this test might be hard to find with a grep. Could you rename to\n\n  _check_microversion_extends\n\nplease?","commit_id":"b95fac41b7cdf94adbdb581328311d40412a448c"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"6edcdd3a5592b2a58ba54875fc42220decbd8eab","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    @mock.patch(\"nova.api.openstack.api_version_request.max_api_version\")"},{"line_number":324,"context_line":"    @mock.patch(\"nova.api.openstack.APIRouterV21.api_extension_namespace\","},{"line_number":325,"context_line":"        return_value\u003d\u0027nova.api.v3.test_extensions\u0027)"},{"line_number":326,"context_line":"    def _check_microversions_extend(self, req_header, expected_body,"},{"line_number":327,"context_line":"                                    mock_namespace, mock_maxver):"},{"line_number":328,"context_line":"        mock_maxver.return_value \u003d api_version.APIVersionRequest(\"3.3\")"},{"line_number":329,"context_line":"        app \u003d fakes.wsgi_app_v21(init_only\u003d\u0027test-microversions\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_c2592a8f","line":326,"in_reply_to":"ba7be1f8_8810c5a9","updated":"2015-02-26 08:23:09.000000000","message":"hi Matthew, thanks.","commit_id":"b95fac41b7cdf94adbdb581328311d40412a448c"}],"nova/tests/unit/api/openstack/compute/test_plugins/microversions.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"ea0a404983d67a70e75468876e1db32817d8aaac","unresolved":false,"context_lines":[{"line_number":83,"context_line":"# An extend controller to test the combination test cases of"},{"line_number":84,"context_line":"# wsgi.Controller.api_version and wsgi.extends"},{"line_number":85,"context_line":"class MicroversionsController3Extend(wsgi.Controller):"},{"line_number":86,"context_line":"    @wsgi.Controller.api_version(\"2.1\", \"2.2\")"},{"line_number":87,"context_line":"    @wsgi.extends"},{"line_number":88,"context_line":"    def create(self, req, resp_obj, body):"},{"line_number":89,"context_line":"        resp_obj.obj[\u0027param_ext\u0027] \u003d \u0027create_val1_ext\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_e47d1ee9","line":86,"updated":"2014-12-16 16:00:55.000000000","message":"N332  the api_version decorator must be the first decorator on a method.","commit_id":"47f756af129654c58ca2ed7bed56a7758da8c1b5"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"81ee3acf6d403cb13eec1d7b67016f193d3c86d5","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    def create(self, req, resp_obj, body):"},{"line_number":90,"context_line":"        resp_obj.obj[\u0027param_ext\u0027] \u003d \u0027create_val1_ext\u0027"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @wsgi.Controller.api_version(\"2.3\")  # noqa"},{"line_number":93,"context_line":"    @wsgi.extends"},{"line_number":94,"context_line":"    def create(self, req, resp_obj, body):"},{"line_number":95,"context_line":"        resp_obj.obj[\u0027param_ext2\u0027] \u003d \u0027create_val2_ext\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_65e9fab6","line":92,"updated":"2014-12-31 21:14:33.000000000","message":"why no qa ? the hacking problem is fixed? \n\nif not, guess we need to make it depend on that hacking patch?\notherwise we need to go back and remove the #noqa again?","commit_id":"904f12a7b51727fd54030e348cc3166612ff3d72"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"988fe9e1a39b1a07ac25058a3873e34e6220c789","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        data \u003d {\u0027param\u0027: \u0027controller2_val1\u0027}"},{"line_number":52,"context_line":"        return data"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @wsgi.Controller.api_version(\"2.5\", \"3.1\")"},{"line_number":55,"context_line":"    @wsgi.response(202)"},{"line_number":56,"context_line":"    def index(self, req):"},{"line_number":57,"context_line":"        data \u003d {\u0027param\u0027: \u0027controller2_val2\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_12d145cd","line":54,"updated":"2015-01-04 07:26:15.000000000","message":"my fault\n\nlooks like either we need to change the hacking rule or keep the #noqa \neitherwise it will report definition \n\nconsider change the hacking rule is because we might need create a lot of noqa if we are going to support microversion\nthough change it might be not easy ?","commit_id":"1f08d9974b4541898200b669a197c7c375d62980"}]}
