)]}'
{"api-guide/source/microversions.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"db5d42f5b6375e70ca11349b8365d83b9fcd670c","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    OpenStack-API-Version: compute microversion_number"},{"line_number":160,"context_line":"    Vary: OpenStack-API-Version"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"At some point in the future, when the minimum microversion has been"},{"line_number":163,"context_line":"raised to 2.27 or above, the older style of microverion header will"},{"line_number":164,"context_line":"not be accepted in requests, nor will it be sent in responses."}],"source_content_type":"text/x-rst","patch_set":12,"id":"bab6814e_ea46dd4d","line":164,"range":{"start_line":162,"start_character":0,"end_line":164,"end_character":62},"updated":"2016-05-25 15:27:50.000000000","message":"Hmm, if we want to do that, we should probably make it invalid to request a microversion \u003e 2.27 with the old header.\n\nBut I thought we decided not to do that?","commit_id":"e22cdbb3182231f9d3b260f77a2061360f6f2341"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"4ca02d2a3f60a63c240b08abedc91117eede3f50","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"At some point in the future, when the minimum microversion has been"},{"line_number":163,"context_line":"raised to 2.27 or above, the older style of microverion header will"},{"line_number":164,"context_line":"not be accepted in requests, nor will it be sent in responses."}],"source_content_type":"text/x-rst","patch_set":12,"id":"bab6814e_eafeddac","line":164,"in_reply_to":"bab6814e_ea46dd4d","updated":"2016-05-25 15:30:15.000000000","message":"I was mostly just fishing here, I can just drop this paragraph and if there is an adjustment in the plan later, we can deal with that then.","commit_id":"e22cdbb3182231f9d3b260f77a2061360f6f2341"}],"doc/source/api_microversion_dev.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"057308cf351b22310ed7d0200a7346337a70ab7f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"API Microversions"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Background"},{"line_number":5,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_73bea4d5","line":2,"updated":"2016-05-24 16:20:28.000000000","message":"we need to also update this:\nhttps://github.com/openstack/nova/blob/master/api-guide/source/microversions.rst\n\nand this:\nhttps://github.com/openstack/nova/blob/master/api-ref/source/versions.inc","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c0022ac9542d486a56a07a606a34ccd075cebef1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"API Microversions"},{"line_number":2,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"Background"},{"line_number":5,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_65037b0e","line":2,"in_reply_to":"bab6814e_73bea4d5","updated":"2016-05-24 16:30:33.000000000","message":"roger that","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"057308cf351b22310ed7d0200a7346337a70ab7f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"  microversion but limit what is acceptable to the version range that it"},{"line_number":33,"context_line":"  understands at the time."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":".. note:: To maintain compatibility, an earlier form of the of the"},{"line_number":36,"context_line":"   microversion header is acceptable. It takes the form::"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        X-OpenStack-Nova-API-Version: 2.1"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_b85e2b74","line":35,"range":{"start_line":35,"start_character":22,"end_line":35,"end_character":35},"updated":"2016-05-24 16:20:28.000000000","message":"Don\u0027t we need to say, if version 2.23 is not available, you must use this older form?","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"057308cf351b22310ed7d0200a7346337a70ab7f","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        X-OpenStack-Nova-API-Version: 2.1"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"   This form will continue to be supported until the ``DEFAULT_API_VERSION``"},{"line_number":41,"context_line":"   is raised to a level that is higher than the microversion used when the"},{"line_number":42,"context_line":"   new form of header was introduced."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"For full details please read the `Kilo spec for microversions"},{"line_number":45,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/nova-specs/tree/specs/kilo/implemented/api-microversions.rst\u003e`_"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_584e1fc2","line":42,"range":{"start_line":41,"start_character":66,"end_line":42,"end_character":36},"updated":"2016-05-24 16:20:28.000000000","message":"we can be specific here, I think?","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c0022ac9542d486a56a07a606a34ccd075cebef1","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"   This form will continue to be supported until the ``DEFAULT_API_VERSION``"},{"line_number":41,"context_line":"   is raised to a level that is higher than the microversion used when the"},{"line_number":42,"context_line":"   new form of header was introduced."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"For full details please read the `Kilo spec for microversions"},{"line_number":45,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/nova-specs/tree/specs/kilo/implemented/api-microversions.rst\u003e`_"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_a52443af","line":42,"in_reply_to":"bab6814e_584e1fc2","updated":"2016-05-24 16:30:33.000000000","message":"You mean about which version? So put 2.27 here somewhere, and ride the merge conflicts in to happiness?","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"02be5cc24f97f2eda0b4e8630f4e49d415a074fa","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"   This form will continue to be supported until the ``DEFAULT_API_VERSION``"},{"line_number":41,"context_line":"   is raised to a level that is higher than the microversion used when the"},{"line_number":42,"context_line":"   new form of header was introduced."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"For full details please read the `Kilo spec for microversions"},{"line_number":45,"context_line":"\u003chttp://git.openstack.org/cgit/openstack/nova-specs/tree/specs/kilo/implemented/api-microversions.rst\u003e`_"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_88466f4d","line":42,"in_reply_to":"bab6814e_a52443af","updated":"2016-05-24 19:47:42.000000000","message":"yeah, its not a fun rebase job...","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"057308cf351b22310ed7d0200a7346337a70ab7f","unresolved":false,"context_lines":[{"line_number":379,"context_line":"header, for example::"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    req \u003d fakes.HTTPRequest.blank(\u0027/testable/url/endpoint\u0027)"},{"line_number":382,"context_line":"    req.headers \u003d {\u0027OpenStack-API-Version\u0027: \u0027compute 2.2\u0027}"},{"line_number":383,"context_line":"    req.api_version_request \u003d api_version.APIVersionRequest(\u00272.6\u0027)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    controller \u003d controller.TestableController()"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_18dbf7ee","line":382,"range":{"start_line":382,"start_character":45,"end_line":382,"end_character":52},"updated":"2016-05-24 16:20:28.000000000","message":"this will not work on all clouds, maybe pick a later version number?","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c0022ac9542d486a56a07a606a34ccd075cebef1","unresolved":false,"context_lines":[{"line_number":379,"context_line":"header, for example::"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    req \u003d fakes.HTTPRequest.blank(\u0027/testable/url/endpoint\u0027)"},{"line_number":382,"context_line":"    req.headers \u003d {\u0027OpenStack-API-Version\u0027: \u0027compute 2.2\u0027}"},{"line_number":383,"context_line":"    req.api_version_request \u003d api_version.APIVersionRequest(\u00272.6\u0027)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"    controller \u003d controller.TestableController()"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_6551bb0e","line":382,"in_reply_to":"bab6814e_18dbf7ee","updated":"2016-05-24 16:30:33.000000000","message":"Done","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"}],"nova/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"057308cf351b22310ed7d0200a7346337a70ab7f","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"  Added support for the new form of microversion headers described in the"},{"line_number":291,"context_line":"  `Microversion Specification"},{"line_number":292,"context_line":"  \u003chttp://specs.openstack.org/openstack/api-wg/guidelines/microversion_specification.html\u003e`_. Both the original form of header and the new form is supported."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_185e5745","line":292,"range":{"start_line":292,"start_character":94,"end_line":292,"end_character":98},"updated":"2016-05-24 16:20:28.000000000","message":"Nit: we tend to warp the lines in this file.","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c0022ac9542d486a56a07a606a34ccd075cebef1","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"  Added support for the new form of microversion headers described in the"},{"line_number":291,"context_line":"  `Microversion Specification"},{"line_number":292,"context_line":"  \u003chttp://specs.openstack.org/openstack/api-wg/guidelines/microversion_specification.html\u003e`_. Both the original form of header and the new form is supported."}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_130c7841","line":292,"in_reply_to":"bab6814e_185e5745","updated":"2016-05-24 16:30:33.000000000","message":"Oops, that\u0027s likely a pasto. fixed.","commit_id":"baa5f827145c9eee4f31d949c35f13b0b90dce22"}],"nova/api/openstack/wsgi.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ebe6084ce38abb706281b048c6e1d04839cd384d","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        \"\"\"Set API version request based on the request header information.\"\"\""},{"line_number":231,"context_line":"        hdr_string \u003d microversion_parse.get_version("},{"line_number":232,"context_line":"            self.headers, service_type\u003d\u0027compute\u0027,"},{"line_number":233,"context_line":"            legacy_headers\u003d[API_VERSION_REQUEST_HEADER])"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        if hdr_string is None:"},{"line_number":236,"context_line":"            self.api_version_request \u003d api_version.APIVersionRequest("}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_bb7089a5","side":"PARENT","line":233,"range":{"start_line":233,"start_character":12,"end_line":233,"end_character":56},"updated":"2016-05-26 06:50:19.000000000","message":"Emm...looks like we already leak the new header before we bump microversion","commit_id":"14d6a424ff6f71c7bdd263436a3aff11d654252c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b3898713296b61bfa8305797c5b3ba5f22fdf1a7","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        \"\"\"Set API version request based on the request header information.\"\"\""},{"line_number":231,"context_line":"        hdr_string \u003d microversion_parse.get_version("},{"line_number":232,"context_line":"            self.headers, service_type\u003d\u0027compute\u0027,"},{"line_number":233,"context_line":"            legacy_headers\u003d[API_VERSION_REQUEST_HEADER])"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        if hdr_string is None:"},{"line_number":236,"context_line":"            self.api_version_request \u003d api_version.APIVersionRequest("}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_060e9c3a","side":"PARENT","line":233,"in_reply_to":"bab6814e_bb7089a5","updated":"2016-05-26 07:41:03.000000000","message":"Only a little bit. When Change-Id: I9098ab8f0800fb0550887f5eff219b18addde709 merged the new header would have been accepted on input if someone knew to use it, but would not have been output in the response headers.","commit_id":"14d6a424ff6f71c7bdd263436a3aff11d654252c"}],"nova/tests/functional/api/client.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"4b9ae787d345cf2732c8f686f4f5a47a0a5b25f3","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        headers \u003d kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":173,"context_line":"        headers[\u0027X-Auth-Token\u0027] \u003d auth_result[\u0027x-auth-token\u0027]"},{"line_number":174,"context_line":"        if \u0027X-OpenStack-Nova-API-Version\u0027 in headers:"},{"line_number":175,"context_line":"            raise Exception(\u0027X-OpenStack-Nova-API-Version should be set on \u0027"},{"line_number":176,"context_line":"                            \u0027microversion attribute in API client.\u0027)"},{"line_number":177,"context_line":"        elif self.microversion:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_606d2904","line":174,"range":{"start_line":174,"start_character":29,"end_line":174,"end_character":32},"updated":"2016-04-12 12:30:03.000000000","message":"this need change as well ?","commit_id":"201555efdaf00bfc697ba8c6d831888cb97f7761"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"d176549d0294a577f3b85d00fae9a4c2905d9a42","unresolved":false,"context_lines":[{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        headers \u003d kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":173,"context_line":"        headers[\u0027X-Auth-Token\u0027] \u003d auth_result[\u0027x-auth-token\u0027]"},{"line_number":174,"context_line":"        if \u0027X-OpenStack-Nova-API-Version\u0027 in headers:"},{"line_number":175,"context_line":"            raise Exception(\u0027X-OpenStack-Nova-API-Version should be set on \u0027"},{"line_number":176,"context_line":"                            \u0027microversion attribute in API client.\u0027)"},{"line_number":177,"context_line":"        elif self.microversion:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_5b446073","line":174,"in_reply_to":"5a18252c_606d2904","updated":"2016-04-12 12:45:47.000000000","message":"Yes, this not being covered is a result of the recent rebase that merged in the self.microversion handling.","commit_id":"201555efdaf00bfc697ba8c6d831888cb97f7761"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"00a7e5688bce31f394fd515bf44f615d4cec969f","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        headers \u003d kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":173,"context_line":"        headers[\u0027X-Auth-Token\u0027] \u003d auth_result[\u0027x-auth-token\u0027]"},{"line_number":174,"context_line":"        if (\u0027X-OpenStack-Nova-API-Version\u0027 in headers or"},{"line_number":175,"context_line":"            \u0027OpenStack-API-Version\u0027 in headers):"},{"line_number":176,"context_line":"            raise Exception(\u0027Microversion should be set via \u0027"},{"line_number":177,"context_line":"                            \u0027microversion attribute in API client.\u0027)"},{"line_number":178,"context_line":"        elif self.microversion:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_e6402c38","line":175,"updated":"2016-04-22 02:44:36.000000000","message":"OK, I\u0027m usually good about letting my preferences for indentation slide in deference to the general consensus, even though I believe that visual indentation should DIAFF, but here is one that I can\u0027t let slide. The effect of visually indenting this is a) it lines up nice and pretty with the line above it, and b) it lines up nice and pretty with the line below it, which is in a block that should be visually distinct from the line that starts the block with a \":\".\n\nPlease follow the standard of indenting two levels (8 spaces) to clearly should continuation *and* a nested block.","commit_id":"0c0c087facc0eccd9798421af2e116e528f642b4"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"cd69378ebc6ea9d9f0db058dbe5cc9ffd255403b","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        headers \u003d kwargs.setdefault(\u0027headers\u0027, {})"},{"line_number":173,"context_line":"        headers[\u0027X-Auth-Token\u0027] \u003d auth_result[\u0027x-auth-token\u0027]"},{"line_number":174,"context_line":"        if (\u0027X-OpenStack-Nova-API-Version\u0027 in headers or"},{"line_number":175,"context_line":"            \u0027OpenStack-API-Version\u0027 in headers):"},{"line_number":176,"context_line":"            raise Exception(\u0027Microversion should be set via \u0027"},{"line_number":177,"context_line":"                            \u0027microversion attribute in API client.\u0027)"},{"line_number":178,"context_line":"        elif self.microversion:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_7dc019e1","line":175,"in_reply_to":"1a122d0e_e6402c38","updated":"2016-04-22 11:38:24.000000000","message":"a) I totally agree with you about death by fire\n\nb) I was just following the bad habits acquired by too long under the thumb of openstack hacking rules","commit_id":"0c0c087facc0eccd9798421af2e116e528f642b4"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"4814781e92f979e9403537e978350c883557b4f4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        headers[\u0027X-Auth-Token\u0027] \u003d auth_result[\u0027x-auth-token\u0027]"},{"line_number":174,"context_line":"        if (\u0027X-OpenStack-Nova-API-Version\u0027 in headers or"},{"line_number":175,"context_line":"                \u0027OpenStack-API-Version\u0027 in headers):"},{"line_number":176,"context_line":"            raise Exception(\u0027Microversion should be set via \u0027"},{"line_number":177,"context_line":"                            \u0027microversion attribute in API client.\u0027)"},{"line_number":178,"context_line":"        elif self.microversion:"},{"line_number":179,"context_line":"            headers[\u0027X-OpenStack-Nova-API-Version\u0027] \u003d self.microversion"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a122d0e_32c52b5b","line":176,"updated":"2016-04-22 12:50:17.000000000","message":"/me smiles a bit","commit_id":"9e081345b5a81adf6740c4219861ac6baf6cad85"}],"nova/tests/unit/api/openstack/compute/test_microversions.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"326a18d670087d275c2bbecc19e6a2c77ace211a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        res \u003d req.get_response(app)"},{"line_number":31,"context_line":"        self.assertEqual(ret_code, res.status_int)"},{"line_number":32,"context_line":"        if ret_header:"},{"line_number":33,"context_line":"            if \u0027nova\u0027 not in self.header_name. lower():"},{"line_number":34,"context_line":"                ret_header \u003d \u0027compute %s\u0027 % ret_header"},{"line_number":35,"context_line":"            self.assertEqual(ret_header,"},{"line_number":36,"context_line":"                             res.headers[self.header_name])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_156550e0","line":33,"range":{"start_line":33,"start_character":46,"end_line":33,"end_character":47},"updated":"2016-04-13 14:42:15.000000000","message":"Oops!","commit_id":"201555efdaf00bfc697ba8c6d831888cb97f7761"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e2ee7587f9ca63c573dcd2a9cc400756da605158","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        res \u003d req.get_response(app)"},{"line_number":31,"context_line":"        self.assertEqual(ret_code, res.status_int)"},{"line_number":32,"context_line":"        if ret_header:"},{"line_number":33,"context_line":"            if \u0027nova\u0027 not in self.header_name. lower():"},{"line_number":34,"context_line":"                ret_header \u003d \u0027compute %s\u0027 % ret_header"},{"line_number":35,"context_line":"            self.assertEqual(ret_header,"},{"line_number":36,"context_line":"                             res.headers[self.header_name])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_9693264f","line":33,"in_reply_to":"5a18252c_156550e0","updated":"2016-04-13 15:18:37.000000000","message":"that was clever of me","commit_id":"201555efdaf00bfc697ba8c6d831888cb97f7761"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"326a18d670087d275c2bbecc19e6a2c77ace211a","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        app \u003d fakes.wsgi_app_v21(init_only\u003d\u0027test-microversions\u0027)"},{"line_number":356,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/fake/microversions3/1/action\u0027)"},{"line_number":357,"context_line":"        if req_header:"},{"line_number":358,"context_line":"            if \u0027nova\u0027 in self.header_name.lower():"},{"line_number":359,"context_line":"                req.headers \u003d {self.header_name: req_header}"},{"line_number":360,"context_line":"            else:"},{"line_number":361,"context_line":"                req.headers \u003d {self.header_name: \u0027compute %s\u0027 % req_header}"},{"line_number":362,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":363,"context_line":"        req.body \u003d jsonutils.dump_as_bytes({\u0027foo\u0027: None})"},{"line_number":364,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_d5af5892","line":361,"range":{"start_line":358,"start_character":0,"end_line":361,"end_character":75},"updated":"2016-04-13 14:42:15.000000000","message":"This structure repeats so often that it should probably be refactored out so that the code reads more like:\n\n    if req_header:\n        req.headers \u003d self._make_header(req_header)","commit_id":"201555efdaf00bfc697ba8c6d831888cb97f7761"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"e2ee7587f9ca63c573dcd2a9cc400756da605158","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            if \u0027nova\u0027 in self.header_name.lower():"},{"line_number":359,"context_line":"                req.headers \u003d {self.header_name: req_header}"},{"line_number":360,"context_line":"            else:"},{"line_number":361,"context_line":"                req.headers \u003d {self.header_name: \u0027compute %s\u0027 % req_header}"},{"line_number":362,"context_line":"        req.method \u003d \u0027POST\u0027"},{"line_number":363,"context_line":"        req.body \u003d jsonutils.dump_as_bytes({\u0027foo\u0027: None})"},{"line_number":364,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_56d86e1d","line":361,"in_reply_to":"5a18252c_d5af5892","updated":"2016-04-13 15:18:37.000000000","message":"Yeah, that\u0027s the plan. I stalled out before making that change when I started realizing this change might not float at all, but people seem okay with it, so I\u0027ll get to cleaning pronto.","commit_id":"201555efdaf00bfc697ba8c6d831888cb97f7761"}]}
