)]}'
{"doc/source/placement_dev.rst":[{"author":{"_account_id":8175,"name":"Rafael Folco","email":"rfolco@redhat.com","username":"rfolco"},"change_message_id":"b7526e1310c42ee573f5ee7ba1273fd708a22809","unresolved":false,"context_lines":[{"line_number":179,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Adding a new URL or a new method (e.g, ``PATCH``) to an existing URL"},{"line_number":182,"context_line":"requires adding a new handler function. In either case a new microversion is"},{"line_number":183,"context_line":"required. When adding an entirely new route a request for a lower microversion"},{"line_number":184,"context_line":"should return a ``404``. When adding a new method to an existing URL a request"},{"line_number":185,"context_line":"for a lower microversion should return a ``405``."},{"line_number":186,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5201f7_3a3b173a","line":183,"range":{"start_line":182,"start_character":57,"end_line":183,"end_character":8},"updated":"2017-01-03 18:03:38.000000000","message":"and therefore, a reno should be also be provided.","commit_id":"7a360ebbec5655536eed2a3f863736da8cd8f56d"},{"author":{"_account_id":8175,"name":"Rafael Folco","email":"rfolco@redhat.com","username":"rfolco"},"change_message_id":"b7526e1310c42ee573f5ee7ba1273fd708a22809","unresolved":false,"context_lines":[{"line_number":194,"context_line":"``@webob.dec.wsgify``, take a single argument ``req`` which is a WebOb"},{"line_number":195,"context_line":"`Request`_ object, and return a WebOb `Response`_."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"For ``PUT`` and ``POST`` methods, reqest bodies are expected to have a"},{"line_number":198,"context_line":"content-type of ``application/json``. This may be enforced by using a"},{"line_number":199,"context_line":"decorator: ``@util.require_content(\u0027application/json\u0027)``. If the content-type"},{"line_number":200,"context_line":"is not `JSON`, a ``415`` response status is returned."}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5201f7_7a167ff2","line":197,"range":{"start_line":197,"start_character":34,"end_line":197,"end_character":40},"updated":"2017-01-03 18:03:38.000000000","message":"nit: typo","commit_id":"7a360ebbec5655536eed2a3f863736da8cd8f56d"},{"author":{"_account_id":8175,"name":"Rafael Folco","email":"rfolco@redhat.com","username":"rfolco"},"change_message_id":"b7526e1310c42ee573f5ee7ba1273fd708a22809","unresolved":false,"context_lines":[{"line_number":197,"context_line":"For ``PUT`` and ``POST`` methods, reqest bodies are expected to have a"},{"line_number":198,"context_line":"content-type of ``application/json``. This may be enforced by using a"},{"line_number":199,"context_line":"decorator: ``@util.require_content(\u0027application/json\u0027)``. If the content-type"},{"line_number":200,"context_line":"is not `JSON`, a ``415`` response status is returned."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Response bodies are usually `JSON`. A handler can check the `Accept` header"},{"line_number":203,"context_line":"provided in a request using another decorator:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5201f7_fab7cff2","line":200,"range":{"start_line":200,"start_character":52,"end_line":200,"end_character":53},"updated":"2017-01-03 18:03:38.000000000","message":"DELETE method should enforce empty request bodies?","commit_id":"7a360ebbec5655536eed2a3f863736da8cd8f56d"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c7bb87563d2e819132f337389cdfa522ce0b8918","unresolved":false,"context_lines":[{"line_number":197,"context_line":"For ``PUT`` and ``POST`` methods, reqest bodies are expected to have a"},{"line_number":198,"context_line":"content-type of ``application/json``. This may be enforced by using a"},{"line_number":199,"context_line":"decorator: ``@util.require_content(\u0027application/json\u0027)``. If the content-type"},{"line_number":200,"context_line":"is not `JSON`, a ``415`` response status is returned."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Response bodies are usually `JSON`. A handler can check the `Accept` header"},{"line_number":203,"context_line":"provided in a request using another decorator:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5201f7_69731b16","line":200,"in_reply_to":"ba5201f7_fab7cff2","updated":"2017-01-03 20:48:51.000000000","message":"There\u0027s not any built in tooling for enforcing that, so I didn\u0027t want to write about something that doesn\u0027t exist.","commit_id":"7a360ebbec5655536eed2a3f863736da8cd8f56d"},{"author":{"_account_id":8175,"name":"Rafael Folco","email":"rfolco@redhat.com","username":"rfolco"},"change_message_id":"b7526e1310c42ee573f5ee7ba1273fd708a22809","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Testing"},{"line_number":229,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Most of the handler code in the placement API is tested using `gabbi`_. Some"},{"line_number":232,"context_line":"utility code is tested with unit tests found in"},{"line_number":233,"context_line":"`nova/tests/unit/api/openstack/placement/`. The back-end objects are tested"},{"line_number":234,"context_line":"with a combination of unit and functional tests found in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5201f7_7aa91f7b","line":231,"range":{"start_line":231,"start_character":63,"end_line":231,"end_character":68},"updated":"2017-01-03 18:03:38.000000000","message":"which one is right: gabbit or gabbi?","commit_id":"7a360ebbec5655536eed2a3f863736da8cd8f56d"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c7bb87563d2e819132f337389cdfa522ce0b8918","unresolved":false,"context_lines":[{"line_number":228,"context_line":"Testing"},{"line_number":229,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Most of the handler code in the placement API is tested using `gabbi`_. Some"},{"line_number":232,"context_line":"utility code is tested with unit tests found in"},{"line_number":233,"context_line":"`nova/tests/unit/api/openstack/placement/`. The back-end objects are tested"},{"line_number":234,"context_line":"with a combination of unit and functional tests found in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba5201f7_098a8fbf","line":231,"in_reply_to":"ba5201f7_7aa91f7b","updated":"2017-01-03 20:48:51.000000000","message":"The tool is called gabbi (there\u0027s a description of the history of the name on the first page here: http://gabbi.readthedocs.io/en/latest/ ) and the collections of YAML files are sometimes called \"gabbits\". That was a name I used sort of as a joke in an early review and it stuck.","commit_id":"7a360ebbec5655536eed2a3f863736da8cd8f56d"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a8c52008e8589176d29069165f508a4a5e1562dc","unresolved":false,"context_lines":[{"line_number":194,"context_line":"``@webob.dec.wsgify``, take a single argument ``req`` which is a WebOb"},{"line_number":195,"context_line":"`Request`_ object, and return a WebOb `Response`_."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"For ``PUT`` and ``POST`` methods, request bodies are expected to have a"},{"line_number":198,"context_line":"content-type of ``application/json``. This may be enforced by using a"},{"line_number":199,"context_line":"decorator: ``@util.require_content(\u0027application/json\u0027)``. If the content-type"},{"line_number":200,"context_line":"is not `JSON`, a ``415`` response status is returned."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5201f7_8ba66c51","line":197,"range":{"start_line":197,"start_character":34,"end_line":197,"end_character":48},"updated":"2017-01-04 02:00:47.000000000","message":"\"request headers\" or just \"request\"?","commit_id":"1c718b79fdfc74fadf7315252fb479a4ec4c3b29"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b3d0ee6a572db0fff7746e04ddb318e471e44ec7","unresolved":false,"context_lines":[{"line_number":194,"context_line":"``@webob.dec.wsgify``, take a single argument ``req`` which is a WebOb"},{"line_number":195,"context_line":"`Request`_ object, and return a WebOb `Response`_."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"For ``PUT`` and ``POST`` methods, request bodies are expected to have a"},{"line_number":198,"context_line":"content-type of ``application/json``. This may be enforced by using a"},{"line_number":199,"context_line":"decorator: ``@util.require_content(\u0027application/json\u0027)``. If the content-type"},{"line_number":200,"context_line":"is not `JSON`, a ``415`` response status is returned."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5201f7_b00d4939","line":197,"in_reply_to":"ba5201f7_8ba66c51","updated":"2017-01-04 11:12:47.000000000","message":"I was trying to be explicit about the actual body being JSON, not the declaration of that in the headers. These are two slightly different assertions:\n\n* There is a request -\u003e it has a body -\u003e that body should be JSON.\n* The request should have a content-type header that states JSON.\n\nI agree it is a bit weird how it is currently written but I\u0027m not sure what the best form is.","commit_id":"1c718b79fdfc74fadf7315252fb479a4ec4c3b29"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"cbba509dc7b3fae15f1e97c6de5d69a62738ed27","unresolved":false,"context_lines":[{"line_number":194,"context_line":"``@webob.dec.wsgify``, take a single argument ``req`` which is a WebOb"},{"line_number":195,"context_line":"`Request`_ object, and return a WebOb `Response`_."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"For ``PUT`` and ``POST`` methods, request bodies are expected to have a"},{"line_number":198,"context_line":"content-type of ``application/json``. This may be enforced by using a"},{"line_number":199,"context_line":"decorator: ``@util.require_content(\u0027application/json\u0027)``. If the content-type"},{"line_number":200,"context_line":"is not `JSON`, a ``415`` response status is returned."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5201f7_c6120657","line":197,"in_reply_to":"ba5201f7_a3cc146b","updated":"2017-01-04 18:33:04.000000000","message":"Yeah, that\u0027s better, I\u0027ll change it.","commit_id":"1c718b79fdfc74fadf7315252fb479a4ec4c3b29"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7c0fd117968932d2daf9b8de334a0e0697506590","unresolved":false,"context_lines":[{"line_number":194,"context_line":"``@webob.dec.wsgify``, take a single argument ``req`` which is a WebOb"},{"line_number":195,"context_line":"`Request`_ object, and return a WebOb `Response`_."},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"For ``PUT`` and ``POST`` methods, request bodies are expected to have a"},{"line_number":198,"context_line":"content-type of ``application/json``. This may be enforced by using a"},{"line_number":199,"context_line":"decorator: ``@util.require_content(\u0027application/json\u0027)``. If the content-type"},{"line_number":200,"context_line":"is not `JSON`, a ``415`` response status is returned."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5201f7_a3cc146b","line":197,"in_reply_to":"ba5201f7_b00d4939","updated":"2017-01-04 18:26:27.000000000","message":"Humm, it was a little difficult to understand it for me at the first looking..\n\nHow about\n\n request bodies are expected to be JSON based on content-type of ``application/json``\n\n?","commit_id":"1c718b79fdfc74fadf7315252fb479a4ec4c3b29"}]}
