)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add detail\u003dTrue query string to API list endpoints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We currently support /[nodes, ports, portgroups, chassis]/detail as a"},{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object this does not"},{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f287b81_687dfcb0","line":9,"range":{"start_line":9,"start_character":68,"end_line":9,"end_character":69},"updated":"2017-09-06 22:32:38.000000000","message":"nit: an","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add detail\u003dTrue query string to API list endpoints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We currently support /[nodes, ports, portgroups, chassis]/detail as a"},{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object this does not"},{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ff82abbf_11a19346","line":9,"range":{"start_line":9,"start_character":68,"end_line":9,"end_character":69},"in_reply_to":"7f287b81_687dfcb0","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add detail\u003dTrue query string to API list endpoints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We currently support /[nodes, ports, portgroups, chassis]/detail as a"},{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object this does not"},{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f287b81_a8608402","line":10,"range":{"start_line":10,"start_character":49,"end_line":10,"end_character":55},"updated":"2017-09-06 22:32:38.000000000","message":"nit: s/object this/object. This/","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add detail\u003dTrue query string to API list endpoints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We currently support /[nodes, ports, portgroups, chassis]/detail as a"},{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object this does not"},{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ff82abbf_b1b46781","line":10,"range":{"start_line":10,"start_character":49,"end_line":10,"end_character":55},"in_reply_to":"7f287b81_a8608402","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We currently support /[nodes, ports, portgroups, chassis]/detail as a"},{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object this does not"},{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"},{"line_number":14,"context_line":"safe guarded by the restricted node names list, this patch adds a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f287b81_a82524c4","line":11,"range":{"start_line":11,"start_character":43,"end_line":11,"end_character":54},"updated":"2017-09-06 22:32:38.000000000","message":"s/principles,/principles/","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We currently support /[nodes, ports, portgroups, chassis]/detail as a"},{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object this does not"},{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"},{"line_number":14,"context_line":"safe guarded by the restricted node names list, this patch adds a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ff82abbf_91a5a349","line":11,"range":{"start_line":11,"start_character":43,"end_line":11,"end_character":54},"in_reply_to":"7f287b81_a82524c4","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object this does not"},{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"},{"line_number":14,"context_line":"safe guarded by the restricted node names list, this patch adds a"},{"line_number":15,"context_line":"?detail\u003dTrue query string to the list API endpoints to allow those"},{"line_number":16,"context_line":"consuming the API to use the expected URL form."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f287b81_48012006","line":13,"range":{"start_line":13,"start_character":61,"end_line":13,"end_character":63},"updated":"2017-09-06 22:32:38.000000000","message":"s/so/as/","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object this does not"},{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"},{"line_number":14,"context_line":"safe guarded by the restricted node names list, this patch adds a"},{"line_number":15,"context_line":"?detail\u003dTrue query string to the list API endpoints to allow those"},{"line_number":16,"context_line":"consuming the API to use the expected URL form."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ff82abbf_f4265d68","line":13,"range":{"start_line":13,"start_character":61,"end_line":13,"end_character":63},"in_reply_to":"7f287b81_48012006","updated":"2017-11-28 16:33:29.000000000","message":"so is correct here.","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"},{"line_number":14,"context_line":"safe guarded by the restricted node names list, this patch adds a"},{"line_number":15,"context_line":"?detail\u003dTrue query string to the list API endpoints to allow those"},{"line_number":16,"context_line":"consuming the API to use the expected URL form."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f287b81_9b13d45c","line":14,"range":{"start_line":14,"start_character":42,"end_line":14,"end_character":52},"updated":"2017-09-06 22:32:38.000000000","message":"list. This","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"},{"line_number":14,"context_line":"safe guarded by the restricted node names list, this patch adds a"},{"line_number":15,"context_line":"?detail\u003dTrue query string to the list API endpoints to allow those"},{"line_number":16,"context_line":"consuming the API to use the expected URL form."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f287b81_fb041817","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":12},"updated":"2017-09-06 22:32:38.000000000","message":"nit: safeguarded","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"},{"line_number":14,"context_line":"safe guarded by the restricted node names list, this patch adds a"},{"line_number":15,"context_line":"?detail\u003dTrue query string to the list API endpoints to allow those"},{"line_number":16,"context_line":"consuming the API to use the expected URL form."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ff82abbf_b424555f","line":14,"range":{"start_line":14,"start_character":42,"end_line":14,"end_character":52},"in_reply_to":"7f287b81_9b13d45c","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles, of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint so that is"},{"line_number":14,"context_line":"safe guarded by the restricted node names list, this patch adds a"},{"line_number":15,"context_line":"?detail\u003dTrue query string to the list API endpoints to allow those"},{"line_number":16,"context_line":"consuming the API to use the expected URL form."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ff82abbf_941591e7","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":12},"in_reply_to":"7f287b81_fb041817","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"cce22296a630593e8eca66e814cabda1beaa741c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sam Betts \u003csam@code-smash.net\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-11-28 16:53:07 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add detail\u003dTrue query string to API list endpoints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We currently support /[nodes, ports, portgroups, chassis]/detail as an"},{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object. This does not"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ff82abbf_0a558d1d","line":7,"updated":"2017-11-30 23:39:49.000000000","message":"Aren\u0027t we really adding support for \u0027detail\u0027 a boolean value to the query string?\n\nIn that it could be \u0027detail\u003dTrue\u0027 or \u0027detail\u003dFalse\u0027. Or am I misunderstanding?","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Sam Betts \u003csam@code-smash.net\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-11-28 16:53:07 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add detail\u003dTrue query string to API list endpoints"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We currently support /[nodes, ports, portgroups, chassis]/detail as an"},{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object. This does not"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"df87a7cf_df199288","line":7,"in_reply_to":"ff82abbf_0a558d1d","updated":"2017-12-06 13:46:21.000000000","message":"Correct it could be either, although detail\u003dFalse is the same as not including the detail\u003d at all.","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0bc4a832e4c6a65bf69f196bedd6e4cde1068427","unresolved":false,"context_lines":[{"line_number":10,"context_line":"API endpoint for getting a detailed list of each object. This does not"},{"line_number":11,"context_line":"fit the RESTful and resourceful API design principles of \u003cresource"},{"line_number":12,"context_line":"type\u003e/\u003cresource id\u003e and makes it hard to consume the API from frameworks"},{"line_number":13,"context_line":"that expect that structure. We can\u0027t remove the old endpoint, so that is"},{"line_number":14,"context_line":"safeguarded by the restricted node names list. This patch adds a"},{"line_number":15,"context_line":"?detail\u003d[True, False] query string to the list API endpoints to allow"},{"line_number":16,"context_line":"those consuming the API to use the expected URL form."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"3fa0c359_a677c03a","line":13,"updated":"2018-02-07 12:35:36.000000000","message":"Well, we can, guarded by a microversion.. but probably we shouldn\u0027t, at least not right now.","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"}],"api-ref/source/baremetal-api-v1-nodes.inc":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0bc4a832e4c6a65bf69f196bedd6e4cde1068427","unresolved":false,"context_lines":[{"line_number":245,"context_line":".. rest_method::  GET /v1/nodes/detail"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"Return a list of bare metal Nodes with complete details. Some filtering is"},{"line_number":248,"context_line":"possible by passing in flags with the request."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"This method is particularly useful to locate the Node associated to a given"},{"line_number":251,"context_line":"Nova instance, eg. with a request to ``v1/nodes/detail?instance_uuid\u003d{NOVA INSTANCE UUID}``"}],"source_content_type":"text/x-c++src","patch_set":15,"id":"3fa0c359_0679d42d","line":248,"updated":"2018-02-07 12:35:36.000000000","message":"Maybe suggest to stop using this method in favor of the new argument?","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a148d20029c6e4a0a1b781f9e474092053d17d8e","unresolved":false,"context_lines":[{"line_number":245,"context_line":".. rest_method::  GET /v1/nodes/detail"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"Return a list of bare metal Nodes with complete details. Some filtering is"},{"line_number":248,"context_line":"possible by passing in flags with the request."},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"This method is particularly useful to locate the Node associated to a given"},{"line_number":251,"context_line":"Nova instance, eg. with a request to ``v1/nodes/detail?instance_uuid\u003d{NOVA INSTANCE UUID}``"}],"source_content_type":"text/x-c++src","patch_set":15,"id":"bf659307_f139ffa2","line":248,"in_reply_to":"3fa0c359_0679d42d","updated":"2018-04-09 10:08:47.000000000","message":"Done","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"}],"api-ref/source/baremetal-api-v1-portgroups.inc":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3892241a68a4027700bcd0ce2685c3e1b383afdc","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"By default, this query will return the UUID, name and address for each Portgroup."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":".. versionadded:: 1.39"},{"line_number":32,"context_line":"  Added the ``detail`` boolean request parameter. When specified ``True`` this"},{"line_number":33,"context_line":"  causes the response to include complete details about each portgroup."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":16,"id":"5f7c97a3_137ebfe3","line":31,"updated":"2018-06-09 12:48:11.000000000","message":"will be 1.43 now, I guess","commit_id":"660a395d53d76459d887e7dfecdd7680d492004c"}],"doc/source/contributor/webapi-version-history.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0bc4a832e4c6a65bf69f196bedd6e4cde1068427","unresolved":false,"context_lines":[{"line_number":2,"context_line":"REST API Version History"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"1.39 (Queens, 10.2.0)"},{"line_number":6,"context_line":"---------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Added ``?detail\u003d`` boolean query to the API list endpoints to provide a more"}],"source_content_type":"text/x-rst","patch_set":15,"id":"3fa0c359_2699706d","line":5,"updated":"2018-02-07 12:35:36.000000000","message":"It\u0027s not going into Queens, unfortunately.","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a148d20029c6e4a0a1b781f9e474092053d17d8e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"REST API Version History"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"1.39 (Queens, 10.2.0)"},{"line_number":6,"context_line":"---------------------"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Added ``?detail\u003d`` boolean query to the API list endpoints to provide a more"}],"source_content_type":"text/x-rst","patch_set":15,"id":"bf659307_b1438713","line":5,"in_reply_to":"3fa0c359_2699706d","updated":"2018-04-09 10:08:47.000000000","message":"Done","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"}],"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"1388f86a5d33a0bcec7a8f2f8413adbe45b302a7","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"                   types.boolean, wtypes.text, types.uuid, int, wtypes.text,"},{"line_number":1407,"context_line":"                   wtypes.text, wtypes.text, types.listtype, wtypes.text,"},{"line_number":1408,"context_line":"                   types.boolean)"},{"line_number":1409,"context_line":"    def get_all(self, chassis_uuid\u003dNone, instance_uuid\u003dNone, associated\u003dNone,"},{"line_number":1410,"context_line":"                maintenance\u003dNone, provision_state\u003dNone, marker\u003dNone,"},{"line_number":1411,"context_line":"                limit\u003dNone, sort_key\u003d\u0027id\u0027, sort_dir\u003d\u0027asc\u0027, driver\u003dNone,"},{"line_number":1412,"context_line":"                fields\u003dNone, resource_class\u003dNone, detail\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_6d73714e","line":1409,"updated":"2017-02-09 21:09:15.000000000","message":"I prefer to do this for all other objects, and deprecate /v1/obj/detail endpoints in single request to do not create a lot of new microversions.","commit_id":"988483c20b32ad68611fa76f69e5bc856c4d5aca"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"1388f86a5d33a0bcec7a8f2f8413adbe45b302a7","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"    def get_all(self, chassis_uuid\u003dNone, instance_uuid\u003dNone, associated\u003dNone,"},{"line_number":1410,"context_line":"                maintenance\u003dNone, provision_state\u003dNone, marker\u003dNone,"},{"line_number":1411,"context_line":"                limit\u003dNone, sort_key\u003d\u0027id\u0027, sort_dir\u003d\u0027asc\u0027, driver\u003dNone,"},{"line_number":1412,"context_line":"                fields\u003dNone, resource_class\u003dNone, detail\u003dFalse):"},{"line_number":1413,"context_line":"        \"\"\"Retrieve a list of nodes."},{"line_number":1414,"context_line":""},{"line_number":1415,"context_line":"        :param chassis_uuid: Optional UUID of a chassis, to get only nodes for"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_4d1dcd65","line":1412,"updated":"2017-02-09 21:09:15.000000000","message":"should be None","commit_id":"988483c20b32ad68611fa76f69e5bc856c4d5aca"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"066f611bd1dbffd71bc339c07ca83b31af4af4d7","unresolved":false,"context_lines":[{"line_number":1409,"context_line":"    def get_all(self, chassis_uuid\u003dNone, instance_uuid\u003dNone, associated\u003dNone,"},{"line_number":1410,"context_line":"                maintenance\u003dNone, provision_state\u003dNone, marker\u003dNone,"},{"line_number":1411,"context_line":"                limit\u003dNone, sort_key\u003d\u0027id\u0027, sort_dir\u003d\u0027asc\u0027, driver\u003dNone,"},{"line_number":1412,"context_line":"                fields\u003dNone, resource_class\u003dNone, detail\u003dFalse):"},{"line_number":1413,"context_line":"        \"\"\"Retrieve a list of nodes."},{"line_number":1414,"context_line":""},{"line_number":1415,"context_line":"        :param chassis_uuid: Optional UUID of a chassis, to get only nodes for"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_2db44033","line":1412,"in_reply_to":"fa31d9ce_4d1dcd65","updated":"2017-02-15 13:58:54.000000000","message":"++","commit_id":"988483c20b32ad68611fa76f69e5bc856c4d5aca"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"1388f86a5d33a0bcec7a8f2f8413adbe45b302a7","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"                       driver."},{"line_number":1436,"context_line":"        :param resource_class: Optional string value to get only nodes with"},{"line_number":1437,"context_line":"                               that resource_class."},{"line_number":1438,"context_line":"        :param fields: Optional, a list with a specified set of fields"},{"line_number":1439,"context_line":"                       of the resource to be returned."},{"line_number":1440,"context_line":"        \"\"\""},{"line_number":1441,"context_line":"        cdict \u003d pecan.request.context.to_policy_values()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_4db94d2e","line":1438,"updated":"2017-02-09 21:09:15.000000000","message":"missing in docstring","commit_id":"988483c20b32ad68611fa76f69e5bc856c4d5aca"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"066f611bd1dbffd71bc339c07ca83b31af4af4d7","unresolved":false,"context_lines":[{"line_number":1448,"context_line":"        api_utils.check_allow_specify_resource_class(resource_class)"},{"line_number":1449,"context_line":""},{"line_number":1450,"context_line":"        if ((fields is not None and detail) or"},{"line_number":1451,"context_line":"                detail and not api_utils.allow_nodes_detail_query()):"},{"line_number":1452,"context_line":"            raise exception.NotAcceptable()"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"        if fields is None and not detail:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_ad7e7067","line":1451,"range":{"start_line":1451,"start_character":16,"end_line":1451,"end_character":22},"updated":"2017-02-15 13:58:54.000000000","message":"here too, we should be checking that detail is not None, not just that it is True","commit_id":"988483c20b32ad68611fa76f69e5bc856c4d5aca"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"1388f86a5d33a0bcec7a8f2f8413adbe45b302a7","unresolved":false,"context_lines":[{"line_number":1465,"context_line":"    @expose.expose(NodeCollection, types.uuid, types.uuid, types.boolean,"},{"line_number":1466,"context_line":"                   types.boolean, wtypes.text, types.uuid, int, wtypes.text,"},{"line_number":1467,"context_line":"                   wtypes.text, wtypes.text, wtypes.text)"},{"line_number":1468,"context_line":"    def detail(self, chassis_uuid\u003dNone, instance_uuid\u003dNone, associated\u003dNone,"},{"line_number":1469,"context_line":"               maintenance\u003dNone, provision_state\u003dNone, marker\u003dNone,"},{"line_number":1470,"context_line":"               limit\u003dNone, sort_key\u003d\u0027id\u0027, sort_dir\u003d\u0027asc\u0027, driver\u003dNone,"},{"line_number":1471,"context_line":"               resource_class\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_cdaa9d85","line":1468,"updated":"2017-02-09 21:09:15.000000000","message":"Might be deprecate /v1/nodes/detail endpoint if it is not RESTfull why we  want to keep it?","commit_id":"988483c20b32ad68611fa76f69e5bc856c4d5aca"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"066f611bd1dbffd71bc339c07ca83b31af4af4d7","unresolved":false,"context_lines":[{"line_number":1465,"context_line":"    @expose.expose(NodeCollection, types.uuid, types.uuid, types.boolean,"},{"line_number":1466,"context_line":"                   types.boolean, wtypes.text, types.uuid, int, wtypes.text,"},{"line_number":1467,"context_line":"                   wtypes.text, wtypes.text, wtypes.text)"},{"line_number":1468,"context_line":"    def detail(self, chassis_uuid\u003dNone, instance_uuid\u003dNone, associated\u003dNone,"},{"line_number":1469,"context_line":"               maintenance\u003dNone, provision_state\u003dNone, marker\u003dNone,"},{"line_number":1470,"context_line":"               limit\u003dNone, sort_key\u003d\u0027id\u0027, sort_dir\u003d\u0027asc\u0027, driver\u003dNone,"},{"line_number":1471,"context_line":"               resource_class\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa31d9ce_8dc9acae","line":1468,"in_reply_to":"fa31d9ce_cdaa9d85","updated":"2017-02-15 13:58:54.000000000","message":"I think we can not remove the endpoint unless we bump the major version, so not sure we need to deprecate right in this patch... Can be done separately when we decide what v2 looks like","commit_id":"988483c20b32ad68611fa76f69e5bc856c4d5aca"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"a5d0fbe0710da5cc2f6993799cb56e5c9f5f0dae","unresolved":false,"context_lines":[{"line_number":1436,"context_line":"        :param resource_class: Optional string value to get only nodes with"},{"line_number":1437,"context_line":"                               that resource_class."},{"line_number":1438,"context_line":"        :param fields: Optional, a list with a specified set of fields"},{"line_number":1439,"context_line":"                       of the resource to be returned."},{"line_number":1440,"context_line":"        \"\"\""},{"line_number":1441,"context_line":"        cdict \u003d pecan.request.context.to_policy_values()"},{"line_number":1442,"context_line":"        policy.authorize(\u0027baremetal:node:get\u0027, cdict, cdict)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_849d340c","line":1439,"updated":"2017-03-30 15:35:33.000000000","message":"Missing param in docstring for all resources.","commit_id":"8482bb96a67fa56f508a39da6a2293fafd7365a0"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"28ddc8f2d49862f9522b66f3bcb9fe6093bc7123","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"        collection \u003d NodeCollection()"},{"line_number":1044,"context_line":"        collection.nodes \u003d [Node.convert_with_links(n, fields\u003dfields)"},{"line_number":1045,"context_line":"                            for n in nodes]"},{"line_number":1046,"context_line":"        collection.next \u003d collection.get_next(limit, url\u003durl, **kwargs)"},{"line_number":1047,"context_line":"        return collection"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_d6df0d38","line":1046,"updated":"2017-09-06 06:56:44.000000000","message":"It might be better to add \"detail\u003dTrue\" to \u0027next\u0027 parameter like volume connector[1] when \u0027detail\u0027 is specified.\n\n[1] https://github.com/openstack/ironic/blob/c380e05dbf84079b01fb3b0ea099ef9b293b9b3d/ironic/api/controllers/v1/volume_connector.py#L186","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"        collection \u003d NodeCollection()"},{"line_number":1044,"context_line":"        collection.nodes \u003d [Node.convert_with_links(n, fields\u003dfields)"},{"line_number":1045,"context_line":"                            for n in nodes]"},{"line_number":1046,"context_line":"        collection.next \u003d collection.get_next(limit, url\u003durl, **kwargs)"},{"line_number":1047,"context_line":"        return collection"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_54370900","line":1046,"in_reply_to":"7f287b81_d6df0d38","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"}],"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f413860fa41a6ba927a98d0c06d04b9cee2af269","unresolved":false,"context_lines":[{"line_number":584,"context_line":"def allow_detail_query():"},{"line_number":585,"context_line":"    \"\"\"Check if passing a detail\u003dTrue query in /nodes is allowed"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    Version 1.32 allows a user to pass the detail query string to"},{"line_number":588,"context_line":"    list the nodes with all the fields."},{"line_number":589,"context_line":"    \"\"\""},{"line_number":590,"context_line":"    return (pecan.request.version.minor \u003e\u003d"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf3e73b7_d8fe6804","line":587,"range":{"start_line":587,"start_character":14,"end_line":587,"end_character":16},"updated":"2017-08-07 10:24:18.000000000","message":"needs updating","commit_id":"f929463e3d9273c7615256930c216f90003426c6"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"64ad7c9daab1f0d099748ff084c8adf30ed333d2","unresolved":false,"context_lines":[{"line_number":584,"context_line":"def allow_detail_query():"},{"line_number":585,"context_line":"    \"\"\"Check if passing a detail\u003dTrue query in /nodes is allowed"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    Version 1.32 allows a user to pass the detail query string to"},{"line_number":588,"context_line":"    list the nodes with all the fields."},{"line_number":589,"context_line":"    \"\"\""},{"line_number":590,"context_line":"    return (pecan.request.version.minor \u003e\u003d"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf3e73b7_9340c109","line":587,"range":{"start_line":587,"start_character":14,"end_line":587,"end_character":16},"in_reply_to":"bf3e73b7_d8fe6804","updated":"2017-08-07 11:39:26.000000000","message":"Done","commit_id":"f929463e3d9273c7615256930c216f90003426c6"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f413860fa41a6ba927a98d0c06d04b9cee2af269","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    \"\"\""},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    if (detail is not None and"},{"line_number":632,"context_line":"            (not allow_detail_query() or fields is not None)):"},{"line_number":633,"context_line":"        raise exception.NotAcceptable()"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"    if fields is None and not detail:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf3e73b7_b87a8485","line":632,"range":{"start_line":632,"start_character":41,"end_line":632,"end_character":60},"updated":"2017-08-07 10:24:18.000000000","message":"if both detail and fields are provided, I\u0027d think of this as BadRequest?\n\nOh, for volumes, we actually raise InvalidParameterValue in this case","commit_id":"f929463e3d9273c7615256930c216f90003426c6"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"64ad7c9daab1f0d099748ff084c8adf30ed333d2","unresolved":false,"context_lines":[{"line_number":629,"context_line":"    \"\"\""},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    if (detail is not None and"},{"line_number":632,"context_line":"            (not allow_detail_query() or fields is not None)):"},{"line_number":633,"context_line":"        raise exception.NotAcceptable()"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"    if fields is None and not detail:"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf3e73b7_9334414c","line":632,"range":{"start_line":632,"start_character":41,"end_line":632,"end_character":60},"in_reply_to":"bf3e73b7_b87a8485","updated":"2017-08-07 11:39:26.000000000","message":"Much nicer!","commit_id":"f929463e3d9273c7615256930c216f90003426c6"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"72845f0d5a8e9c0703e6b29f6ea7cc87164cc41b","unresolved":false,"context_lines":[{"line_number":614,"context_line":"def get_request_return_fields(fields, detail, default_fields\u003dNone):"},{"line_number":615,"context_line":"    \"\"\"Calculate fields to return from an API request"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    The fields query and detail querys can not be passed into in a request at"},{"line_number":618,"context_line":"    the same time, and to use the detail query we need to be on a new enough"},{"line_number":619,"context_line":"    version of the API. This function raises an NotAcceptable exception if"},{"line_number":620,"context_line":"    either of these conditions are not met and also will return either the"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_443232f4","line":617,"range":{"start_line":617,"start_character":32,"end_line":617,"end_character":38},"updated":"2017-09-06 18:07:11.000000000","message":"nit:s/querys/queries","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":614,"context_line":"def get_request_return_fields(fields, detail, default_fields\u003dNone):"},{"line_number":615,"context_line":"    \"\"\"Calculate fields to return from an API request"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    The fields query and detail querys can not be passed into in a request at"},{"line_number":618,"context_line":"    the same time, and to use the detail query we need to be on a new enough"},{"line_number":619,"context_line":"    version of the API. This function raises an NotAcceptable exception if"},{"line_number":620,"context_line":"    either of these conditions are not met and also will return either the"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_87c32157","line":617,"range":{"start_line":617,"start_character":32,"end_line":617,"end_character":38},"in_reply_to":"7f287b81_443232f4","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"72845f0d5a8e9c0703e6b29f6ea7cc87164cc41b","unresolved":false,"context_lines":[{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    The fields query and detail querys can not be passed into in a request at"},{"line_number":618,"context_line":"    the same time, and to use the detail query we need to be on a new enough"},{"line_number":619,"context_line":"    version of the API. This function raises an NotAcceptable exception if"},{"line_number":620,"context_line":"    either of these conditions are not met and also will return either the"},{"line_number":621,"context_line":"    field\u0027s passed in or the default fields provided."},{"line_number":622,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_c110545c","line":619,"range":{"start_line":619,"start_character":48,"end_line":619,"end_character":61},"updated":"2017-09-06 18:07:11.000000000","message":"nit: does not raise NotAcceptable anywhere","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    The fields query and detail querys can not be passed into in a request at"},{"line_number":618,"context_line":"    the same time, and to use the detail query we need to be on a new enough"},{"line_number":619,"context_line":"    version of the API. This function raises an NotAcceptable exception if"},{"line_number":620,"context_line":"    either of these conditions are not met and also will return either the"},{"line_number":621,"context_line":"    field\u0027s passed in or the default fields provided."},{"line_number":622,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_a7974548","line":619,"range":{"start_line":619,"start_character":48,"end_line":619,"end_character":61},"in_reply_to":"7f287b81_c110545c","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":614,"context_line":"def get_request_return_fields(fields, detail, default_fields\u003dNone):"},{"line_number":615,"context_line":"    \"\"\"Calculate fields to return from an API request"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    The fields query and detail querys can not be passed into in a request at"},{"line_number":618,"context_line":"    the same time, and to use the detail query we need to be on a new enough"},{"line_number":619,"context_line":"    version of the API. This function raises an NotAcceptable exception if"},{"line_number":620,"context_line":"    either of these conditions are not met and also will return either the"},{"line_number":621,"context_line":"    field\u0027s passed in or the default fields provided."},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    :param fields: The fields query passed into the API request."},{"line_number":624,"context_line":"    :param detail: The detail query passed into the API request."}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_7bc3888a","line":621,"range":{"start_line":617,"start_character":4,"end_line":621,"end_character":53},"updated":"2017-09-06 22:32:38.000000000","message":"The queries \u0027fields\u0027 and \u0027detail\u0027 cannot be passed in a request at the same time. To use the \u0027detail\u0027 query, the API version needs to be \u003e\u003d 1.35. This function raises the InvalidParameterValue exception if either of these conditions is not not met.","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":614,"context_line":"def get_request_return_fields(fields, detail, default_fields\u003dNone):"},{"line_number":615,"context_line":"    \"\"\"Calculate fields to return from an API request"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    The fields query and detail querys can not be passed into in a request at"},{"line_number":618,"context_line":"    the same time, and to use the detail query we need to be on a new enough"},{"line_number":619,"context_line":"    version of the API. This function raises an NotAcceptable exception if"},{"line_number":620,"context_line":"    either of these conditions are not met and also will return either the"},{"line_number":621,"context_line":"    field\u0027s passed in or the default fields provided."},{"line_number":622,"context_line":""},{"line_number":623,"context_line":"    :param fields: The fields query passed into the API request."},{"line_number":624,"context_line":"    :param detail: The detail query passed into the API request."}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_a74185ab","line":621,"range":{"start_line":617,"start_character":4,"end_line":621,"end_character":53},"in_reply_to":"7f287b81_7bc3888a","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"72845f0d5a8e9c0703e6b29f6ea7cc87164cc41b","unresolved":false,"context_lines":[{"line_number":624,"context_line":"    :param detail: The detail query passed into the API request."},{"line_number":625,"context_line":"    :param default_fields: The default fields to return if fields\u003dNone and"},{"line_number":626,"context_line":"        detail\u003dNone."},{"line_number":627,"context_line":"    :raises Invalid if there is an invalid combination of query strings"},{"line_number":628,"context_line":"        or API version."},{"line_number":629,"context_line":"    \"\"\""},{"line_number":630,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_412b4494","line":627,"range":{"start_line":627,"start_character":12,"end_line":627,"end_character":20},"updated":"2017-09-06 18:07:11.000000000","message":"nit: InvalidParameterValue","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":624,"context_line":"    :param detail: The detail query passed into the API request."},{"line_number":625,"context_line":"    :param default_fields: The default fields to return if fields\u003dNone and"},{"line_number":626,"context_line":"        detail\u003dNone."},{"line_number":627,"context_line":"    :raises Invalid if there is an invalid combination of query strings"},{"line_number":628,"context_line":"        or API version."},{"line_number":629,"context_line":"    \"\"\""},{"line_number":630,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_3bb98014","line":627,"range":{"start_line":627,"start_character":4,"end_line":627,"end_character":11},"updated":"2017-09-06 22:32:38.000000000","message":"s/:raises/:raises:/","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":624,"context_line":"    :param detail: The detail query passed into the API request."},{"line_number":625,"context_line":"    :param default_fields: The default fields to return if fields\u003dNone and"},{"line_number":626,"context_line":"        detail\u003dNone."},{"line_number":627,"context_line":"    :raises Invalid if there is an invalid combination of query strings"},{"line_number":628,"context_line":"        or API version."},{"line_number":629,"context_line":"    \"\"\""},{"line_number":630,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_a72ae5d7","line":627,"range":{"start_line":627,"start_character":4,"end_line":627,"end_character":11},"in_reply_to":"7f287b81_3bb98014","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        detail\u003dNone."},{"line_number":627,"context_line":"    :raises Invalid if there is an invalid combination of query strings"},{"line_number":628,"context_line":"        or API version."},{"line_number":629,"context_line":"    \"\"\""},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    if detail is not None:"},{"line_number":632,"context_line":"        if not allow_detail_query():"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_3b6740ba","line":629,"updated":"2017-09-06 22:32:38.000000000","message":"Add :returns: \u0027fields\u0027 passed in value or \u0027default_fields\u0027","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":626,"context_line":"        detail\u003dNone."},{"line_number":627,"context_line":"    :raises Invalid if there is an invalid combination of query strings"},{"line_number":628,"context_line":"        or API version."},{"line_number":629,"context_line":"    \"\"\""},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"    if detail is not None:"},{"line_number":632,"context_line":"        if not allow_detail_query():"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_8770010a","line":629,"in_reply_to":"7f287b81_3b6740ba","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"28ddc8f2d49862f9522b66f3bcb9fe6093bc7123","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        if not allow_detail_query():"},{"line_number":633,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":634,"context_line":"                \"Invalid query parameter ?detail received.\")"},{"line_number":635,"context_line":"        if fields is not None:"},{"line_number":636,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":637,"context_line":"                \"Can not specify detail\u003dTrue and fields in the same request.\")"},{"line_number":638,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_7bc96476","line":635,"updated":"2017-09-06 06:56:44.000000000","message":"It would be better use:\n  \"if detail and fields is not None:\"\nbecause detail\u003dFalse can be specified.","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        if not allow_detail_query():"},{"line_number":633,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":634,"context_line":"                \"Invalid query parameter ?detail received.\")"},{"line_number":635,"context_line":"        if fields is not None:"},{"line_number":636,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":637,"context_line":"                \"Can not specify detail\u003dTrue and fields in the same request.\")"},{"line_number":638,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_dbfcbc73","line":635,"in_reply_to":"7f287b81_7bc96476","updated":"2017-09-06 22:32:38.000000000","message":"++","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        if not allow_detail_query():"},{"line_number":633,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":634,"context_line":"                \"Invalid query parameter ?detail received.\")"},{"line_number":635,"context_line":"        if fields is not None:"},{"line_number":636,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":637,"context_line":"                \"Can not specify detail\u003dTrue and fields in the same request.\")"},{"line_number":638,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_e7cf8d26","line":635,"in_reply_to":"7f287b81_dbfcbc73","updated":"2017-11-28 16:33:29.000000000","message":"detail\u003dFalse\u0026\u0026fields\u003d\u003cfields\u003e is an acceptable request, I\u0027ve modified the explanation above to state that, only detail\u003dTrue\u0026\u0026fields\u003d\u003cfields\u003e we\u0027re trying to prevent,","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"cce22296a630593e8eca66e814cabda1beaa741c","unresolved":false,"context_lines":[{"line_number":655,"context_line":"    if detail is not None:"},{"line_number":656,"context_line":"        if not allow_detail_query():"},{"line_number":657,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":658,"context_line":"                \"Invalid query parameter ?detail received.\")"},{"line_number":659,"context_line":"        if fields is not None:"},{"line_number":660,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":661,"context_line":"                \"Can not specify detail\u003dTrue and fields in the same request.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_a55e12e7","line":658,"updated":"2017-11-30 23:39:49.000000000","message":"Should the value of detail be in the message?","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":655,"context_line":"    if detail is not None:"},{"line_number":656,"context_line":"        if not allow_detail_query():"},{"line_number":657,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":658,"context_line":"                \"Invalid query parameter ?detail received.\")"},{"line_number":659,"context_line":"        if fields is not None:"},{"line_number":660,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":661,"context_line":"                \"Can not specify detail\u003dTrue and fields in the same request.\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_9a47981e","line":658,"in_reply_to":"ff82abbf_a55e12e7","updated":"2017-12-06 13:46:21.000000000","message":"Done","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"cce22296a630593e8eca66e814cabda1beaa741c","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        if not allow_detail_query():"},{"line_number":657,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":658,"context_line":"                \"Invalid query parameter ?detail received.\")"},{"line_number":659,"context_line":"        if fields is not None:"},{"line_number":660,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":661,"context_line":"                \"Can not specify detail\u003dTrue and fields in the same request.\")"},{"line_number":662,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_a52612ba","line":659,"updated":"2017-11-30 23:39:49.000000000","message":"Seems like we should be able to handle the \u0027detail\u003dFalse\u0027 case with fields. This does not seem to handle it.","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        if not allow_detail_query():"},{"line_number":657,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":658,"context_line":"                \"Invalid query parameter ?detail received.\")"},{"line_number":659,"context_line":"        if fields is not None:"},{"line_number":660,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":661,"context_line":"                \"Can not specify detail\u003dTrue and fields in the same request.\")"},{"line_number":662,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_7a4ad427","line":659,"in_reply_to":"ff82abbf_a52612ba","updated":"2017-12-06 13:46:21.000000000","message":"Yeah that was the intention will fix","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0bc4a832e4c6a65bf69f196bedd6e4cde1068427","unresolved":false,"context_lines":[{"line_number":676,"context_line":""},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"def allow_detail_query():"},{"line_number":679,"context_line":"    \"\"\"Check if passing a detail\u003dTrue query in /nodes is allowed"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    Version 1.39 allows a user to pass the detail query string to"},{"line_number":682,"context_line":"    list the nodes with all the fields."}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa0c359_c6720c4a","line":679,"updated":"2018-02-07 12:35:36.000000000","message":"++","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"b5f1390e20679a9a8f8d304c493c7b8a99d32b68","unresolved":false,"context_lines":[{"line_number":676,"context_line":""},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"def allow_detail_query():"},{"line_number":679,"context_line":"    \"\"\"Check if passing a detail\u003dTrue query in /nodes is allowed"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    Version 1.39 allows a user to pass the detail query string to"},{"line_number":682,"context_line":"    list the nodes with all the fields."}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa0c359_9dcb18a4","line":679,"range":{"start_line":679,"start_character":47,"end_line":679,"end_character":53},"updated":"2018-02-06 05:59:35.000000000","message":"The query string is not restricted to nodes only. So better to change it to generic stations.\n\ns/nodes/Ironic resources/","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a148d20029c6e4a0a1b781f9e474092053d17d8e","unresolved":false,"context_lines":[{"line_number":676,"context_line":""},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"def allow_detail_query():"},{"line_number":679,"context_line":"    \"\"\"Check if passing a detail\u003dTrue query in /nodes is allowed"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    Version 1.39 allows a user to pass the detail query string to"},{"line_number":682,"context_line":"    list the nodes with all the fields."}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_7145ef14","line":679,"in_reply_to":"3fa0c359_c6720c4a","updated":"2018-04-09 10:08:47.000000000","message":"Done","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"b5f1390e20679a9a8f8d304c493c7b8a99d32b68","unresolved":false,"context_lines":[{"line_number":679,"context_line":"    \"\"\"Check if passing a detail\u003dTrue query in /nodes is allowed"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    Version 1.39 allows a user to pass the detail query string to"},{"line_number":682,"context_line":"    list the nodes with all the fields."},{"line_number":683,"context_line":"    \"\"\""},{"line_number":684,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":685,"context_line":"            versions.MINOR_39_ENABLE_DETAIL_QUERY)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa0c359_7dd96c81","line":682,"range":{"start_line":682,"start_character":13,"end_line":682,"end_character":18},"updated":"2018-02-06 05:59:35.000000000","message":"ditto","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a148d20029c6e4a0a1b781f9e474092053d17d8e","unresolved":false,"context_lines":[{"line_number":679,"context_line":"    \"\"\"Check if passing a detail\u003dTrue query in /nodes is allowed"},{"line_number":680,"context_line":""},{"line_number":681,"context_line":"    Version 1.39 allows a user to pass the detail query string to"},{"line_number":682,"context_line":"    list the nodes with all the fields."},{"line_number":683,"context_line":"    \"\"\""},{"line_number":684,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":685,"context_line":"            versions.MINOR_39_ENABLE_DETAIL_QUERY)"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_d15f1be3","line":682,"range":{"start_line":682,"start_character":13,"end_line":682,"end_character":18},"in_reply_to":"3fa0c359_7dd96c81","updated":"2018-04-09 10:08:47.000000000","message":"Done","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0bc4a832e4c6a65bf69f196bedd6e4cde1068427","unresolved":false,"context_lines":[{"line_number":685,"context_line":"            versions.MINOR_39_ENABLE_DETAIL_QUERY)"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"def get_request_return_fields(fields, detail, default_fields\u003dNone):"},{"line_number":689,"context_line":"    \"\"\"Calculate fields to return from an API request"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"    The fields query and detail\u003dTrue query can not be passed into a request at"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa0c359_668f7823","line":688,"updated":"2018-02-07 12:35:36.000000000","message":"nit: I don\u0027t think default_fields can be None here","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":10206,"name":"Madhuri Kumari","email":"madhuri.kumari@intel.com","username":"Madhuri"},"change_message_id":"b5f1390e20679a9a8f8d304c493c7b8a99d32b68","unresolved":false,"context_lines":[{"line_number":690,"context_line":""},{"line_number":691,"context_line":"    The fields query and detail\u003dTrue query can not be passed into a request at"},{"line_number":692,"context_line":"    the same time. To use the detail query we need to be on a version of the"},{"line_number":693,"context_line":"    API greater than 1.37. This function raises an InvalidParameterValue"},{"line_number":694,"context_line":"    exception if either of these conditions are not met."},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"    If these checks pass then this function will return either the fields"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa0c359_bd45b419","line":693,"range":{"start_line":693,"start_character":21,"end_line":693,"end_character":25},"updated":"2018-02-06 05:59:35.000000000","message":"s/1.37/1.39/","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a148d20029c6e4a0a1b781f9e474092053d17d8e","unresolved":false,"context_lines":[{"line_number":690,"context_line":""},{"line_number":691,"context_line":"    The fields query and detail\u003dTrue query can not be passed into a request at"},{"line_number":692,"context_line":"    the same time. To use the detail query we need to be on a version of the"},{"line_number":693,"context_line":"    API greater than 1.37. This function raises an InvalidParameterValue"},{"line_number":694,"context_line":"    exception if either of these conditions are not met."},{"line_number":695,"context_line":""},{"line_number":696,"context_line":"    If these checks pass then this function will return either the fields"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_f1bedfd2","line":693,"range":{"start_line":693,"start_character":21,"end_line":693,"end_character":25},"in_reply_to":"3fa0c359_bd45b419","updated":"2018-04-09 10:08:47.000000000","message":"Done","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0bc4a832e4c6a65bf69f196bedd6e4cde1068427","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    \"\"\""},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    if detail is not None and not allow_detail_query():"},{"line_number":709,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":710,"context_line":"            \"Invalid query parameter ?detail\u003d%s received.\" % detail)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"    if fields is not None and detail:"}],"source_content_type":"text/x-python","patch_set":15,"id":"3fa0c359_8692c44a","line":709,"updated":"2018-02-07 12:35:36.000000000","message":"What was the older behavior? Did we raise HTTP 400 or just silently ignored unused parameters?","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"a148d20029c6e4a0a1b781f9e474092053d17d8e","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    \"\"\""},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    if detail is not None and not allow_detail_query():"},{"line_number":709,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":710,"context_line":"            \"Invalid query parameter ?detail\u003d%s received.\" % detail)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"    if fields is not None and detail:"}],"source_content_type":"text/x-python","patch_set":15,"id":"bf659307_d12ddb46","line":709,"in_reply_to":"3fa0c359_8692c44a","updated":"2018-04-09 10:08:47.000000000","message":"raise 400, Ironic\u0027s API never ignores parameters and throws 400 if any unrecognised parameters are received.","commit_id":"2419be24cd353d534dc56a659f25b5c4f575f9e7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3892241a68a4027700bcd0ce2685c3e1b383afdc","unresolved":false,"context_lines":[{"line_number":752,"context_line":"    \"\"\""},{"line_number":753,"context_line":""},{"line_number":754,"context_line":"    if detail is not None and not allow_detail_query():"},{"line_number":755,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":756,"context_line":"            \"Invalid query parameter ?detail\u003d%s received.\" % detail)"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"    if fields is not None and detail:"}],"source_content_type":"text/x-python","patch_set":16,"id":"5f7c97a3_b37eebe0","line":755,"updated":"2018-06-09 12:48:11.000000000","message":"we use NotAcceptable for such cases","commit_id":"660a395d53d76459d887e7dfecdd7680d492004c"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3f76faa96218f5abcef20b04cc8d310d5af586ee","unresolved":false,"context_lines":[{"line_number":882,"context_line":"    :returns: \u0027fields\u0027 passed in value or \u0027default_fields\u0027"},{"line_number":883,"context_line":"    \"\"\""},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    if detail is not None and not allow_detail_query():"},{"line_number":886,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":887,"context_line":"            \"Invalid query parameter ?detail\u003d%s received.\" % detail)"},{"line_number":888,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_b4e92b1a","line":885,"range":{"start_line":885,"start_character":4,"end_line":885,"end_character":55},"updated":"2018-06-19 13:12:45.000000000","message":"this check makes more sense to be added into check_allowed*_fields, but this avoids some duplication","commit_id":"233d7d5727443ecb0ccd0526a02ea0d0695d8805"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"5aefb77a03340f51482b1ae2d1aebe053f7566b7","unresolved":false,"context_lines":[{"line_number":883,"context_line":"    \"\"\""},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    if detail is not None and not allow_detail_query():"},{"line_number":886,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":887,"context_line":"            \"Invalid query parameter ?detail\u003d%s received.\" % detail)"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    if fields is not None and detail:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_9011a560","line":886,"updated":"2018-06-19 06:38:17.000000000","message":"I\u0027m not sure we should use NotAccepatable or BadRequest here regarding Dmitry\u0027s comment at PS16. I know NotAcceptable is used for similar cases. But, it also makes sense to use BadRequest for returning the same code before this change to a request with an older version. As far as I remember, NotFound is used for a similar case where a new resource is requested with an older version.","commit_id":"233d7d5727443ecb0ccd0526a02ea0d0695d8805"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"3f76faa96218f5abcef20b04cc8d310d5af586ee","unresolved":false,"context_lines":[{"line_number":883,"context_line":"    \"\"\""},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    if detail is not None and not allow_detail_query():"},{"line_number":886,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":887,"context_line":"            \"Invalid query parameter ?detail\u003d%s received.\" % detail)"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    if fields is not None and detail:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_94b50fd3","line":886,"in_reply_to":"5f7c97a3_5a81e34c","updated":"2018-06-19 13:12:45.000000000","message":"InvalidParameterValue is 400 which is what currently gets thrown in case of doing /nodes?detail\u003dTrue, so lgtm","commit_id":"233d7d5727443ecb0ccd0526a02ea0d0695d8805"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b08f5e2d32d6d1f9ec2e5a0ee6e1a06cd91396eb","unresolved":false,"context_lines":[{"line_number":883,"context_line":"    \"\"\""},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    if detail is not None and not allow_detail_query():"},{"line_number":886,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":887,"context_line":"            \"Invalid query parameter ?detail\u003d%s received.\" % detail)"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    if fields is not None and detail:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_5a81e34c","line":886,"in_reply_to":"5f7c97a3_9011a560","updated":"2018-06-19 10:32:04.000000000","message":"Except,  we pass InvalidParameterValue below for a very similar case.\n\nIs the concern over caching results?","commit_id":"233d7d5727443ecb0ccd0526a02ea0d0695d8805"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"fa3475ac63bbbce5dc1b83ecdd8ae9469cdaf16a","unresolved":false,"context_lines":[{"line_number":883,"context_line":"    \"\"\""},{"line_number":884,"context_line":""},{"line_number":885,"context_line":"    if detail is not None and not allow_detail_query():"},{"line_number":886,"context_line":"        raise exception.InvalidParameterValue("},{"line_number":887,"context_line":"            \"Invalid query parameter ?detail\u003d%s received.\" % detail)"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"    if fields is not None and detail:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_e06a6beb","line":886,"in_reply_to":"5f7c97a3_94b50fd3","updated":"2018-06-20 05:16:00.000000000","message":"\u003e Is the concern over caching results?\n\nNo. I was just concerned about consistency with other cases and wanted comments from others. According to the comments, there seems to be no problem here. Thanks.","commit_id":"233d7d5727443ecb0ccd0526a02ea0d0695d8805"}],"ironic/tests/unit/api/controllers/v1/test_chassis.py":[{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"72845f0d5a8e9c0703e6b29f6ea7cc87164cc41b","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            \u0027/chassis?detail\u003dTrue\u0026fields\u003dname\u0027,"},{"line_number":139,"context_line":"            headers\u003d{api_base.Version.string: str(api_v1.MAX_VER)},"},{"line_number":140,"context_line":"            expect_errors\u003dTrue)"},{"line_number":141,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_detail_using_query_old_version(self):"},{"line_number":144,"context_line":"        obj_utils.create_test_chassis(self.context)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f287b81_64c3ee8a","line":141,"range":{"start_line":141,"start_character":7,"end_line":141,"end_character":70},"updated":"2017-09-06 18:07:11.000000000","message":"It would be great if error message is also checked as BAD_REQUEST will be returned even when correct version is not used for detail\u003dtrue and when both fields,detail queries are passed. But I do not insist on adding the message, just thought would be great","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"a919e5e2bbb862039e8d707d0be10c94374048a2","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            headers\u003d{api_base.Version.string: str(api_v1.MIN_VER)},"},{"line_number":148,"context_line":"            expect_errors\u003dTrue)"},{"line_number":149,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_detail_against_single(self):"},{"line_number":152,"context_line":"        chassis \u003d obj_utils.create_test_chassis(self.context)"},{"line_number":153,"context_line":"        response \u003d self.get_json(\u0027/chassis/%s/detail\u0027 % chassis[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_b1c63e67","line":150,"updated":"2017-12-04 16:01:15.000000000","message":"Can test be added for \"?detail\u003dFalse\"","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            headers\u003d{api_base.Version.string: str(api_v1.MIN_VER)},"},{"line_number":148,"context_line":"            expect_errors\u003dTrue)"},{"line_number":149,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_detail_against_single(self):"},{"line_number":152,"context_line":"        chassis \u003d obj_utils.create_test_chassis(self.context)"},{"line_number":153,"context_line":"        response \u003d self.get_json(\u0027/chassis/%s/detail\u0027 % chassis[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_e8833acb","line":150,"in_reply_to":"df87a7cf_b1c63e67","updated":"2017-12-06 13:46:21.000000000","message":"Done","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"}],"ironic/tests/unit/api/controllers/v1/test_node.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"a919e5e2bbb862039e8d707d0be10c94374048a2","unresolved":false,"context_lines":[{"line_number":374,"context_line":"            headers\u003d{api_base.Version.string: str(api_v1.MIN_VER)},"},{"line_number":375,"context_line":"            expect_errors\u003dTrue)"},{"line_number":376,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def test_detail_against_single(self):"},{"line_number":379,"context_line":"        node \u003d obj_utils.create_test_node(self.context)"},{"line_number":380,"context_line":"        response \u003d self.get_json(\u0027/nodes/%s/detail\u0027 % node.uuid,"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_f1912654","line":377,"updated":"2017-12-04 16:01:15.000000000","message":"Can test be added for \"?detail\u003dFalse\"","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":374,"context_line":"            headers\u003d{api_base.Version.string: str(api_v1.MIN_VER)},"},{"line_number":375,"context_line":"            expect_errors\u003dTrue)"},{"line_number":376,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def test_detail_against_single(self):"},{"line_number":379,"context_line":"        node \u003d obj_utils.create_test_node(self.context)"},{"line_number":380,"context_line":"        response \u003d self.get_json(\u0027/nodes/%s/detail\u0027 % node.uuid,"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_a313155c","line":377,"in_reply_to":"df87a7cf_f1912654","updated":"2017-12-06 13:46:21.000000000","message":"Done","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"}],"ironic/tests/unit/api/controllers/v1/test_port.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"a919e5e2bbb862039e8d707d0be10c94374048a2","unresolved":false,"context_lines":[{"line_number":439,"context_line":"            headers\u003d{api_base.Version.string: str(api_v1.MIN_VER)},"},{"line_number":440,"context_line":"            expect_errors\u003dTrue)"},{"line_number":441,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    def test_detail_against_single(self):"},{"line_number":444,"context_line":"        port \u003d obj_utils.create_test_port(self.context, node_id\u003dself.node.id)"},{"line_number":445,"context_line":"        response \u003d self.get_json(\u0027/ports/%s/detail\u0027 % port.uuid,"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_b19b9e70","line":442,"updated":"2017-12-04 16:01:15.000000000","message":"Can test be added for \"?detail\u003dFalse\"","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":439,"context_line":"            headers\u003d{api_base.Version.string: str(api_v1.MIN_VER)},"},{"line_number":440,"context_line":"            expect_errors\u003dTrue)"},{"line_number":441,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":442,"context_line":""},{"line_number":443,"context_line":"    def test_detail_against_single(self):"},{"line_number":444,"context_line":"        port \u003d obj_utils.create_test_port(self.context, node_id\u003dself.node.id)"},{"line_number":445,"context_line":"        response \u003d self.get_json(\u0027/ports/%s/detail\u0027 % port.uuid,"}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_a3af95e1","line":442,"in_reply_to":"df87a7cf_b19b9e70","updated":"2017-12-06 13:46:21.000000000","message":"Done","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"}],"ironic/tests/unit/api/controllers/v1/test_portgroup.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"a919e5e2bbb862039e8d707d0be10c94374048a2","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            \u0027/portgroups?detail\u003dTrue\u0027,"},{"line_number":195,"context_line":"            headers\u003d{api_base.Version.string: \u00271.34\u0027},"},{"line_number":196,"context_line":"            expect_errors\u003dTrue)"},{"line_number":197,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_detail_invalid_api_version(self):"},{"line_number":200,"context_line":"        response \u003d self.get_json("}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_518a521b","line":197,"updated":"2017-12-04 16:01:15.000000000","message":"Can test be added for \"?detail\u003dFalse\"","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            \u0027/portgroups?detail\u003dTrue\u0027,"},{"line_number":195,"context_line":"            headers\u003d{api_base.Version.string: \u00271.34\u0027},"},{"line_number":196,"context_line":"            expect_errors\u003dTrue)"},{"line_number":197,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, response.status_int)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    def test_detail_invalid_api_version(self):"},{"line_number":200,"context_line":"        response \u003d self.get_json("}],"source_content_type":"text/x-python","patch_set":8,"id":"df87a7cf_a398f5bf","line":197,"in_reply_to":"df87a7cf_518a521b","updated":"2017-12-06 13:46:21.000000000","message":"Done","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"}],"ironic/tests/unit/api/v1/test_nodes.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f413860fa41a6ba927a98d0c06d04b9cee2af269","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        # never expose the chassis_id"},{"line_number":328,"context_line":"        self.assertNotIn(\u0027chassis_id\u0027, data[\u0027nodes\u0027][0])"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def test_detail_using_query(self):"},{"line_number":331,"context_line":"        node \u003d obj_utils.create_test_node(self.context,"},{"line_number":332,"context_line":"                                          chassis_id\u003dself.chassis.id)"},{"line_number":333,"context_line":"        data \u003d self.get_json("}],"source_content_type":"text/x-python","patch_set":4,"id":"bf3e73b7_f85fec0b","line":330,"updated":"2017-08-07 10:24:18.000000000","message":"we need to add such tests for all endpoints I think :(","commit_id":"f929463e3d9273c7615256930c216f90003426c6"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"64ad7c9daab1f0d099748ff084c8adf30ed333d2","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        # never expose the chassis_id"},{"line_number":328,"context_line":"        self.assertNotIn(\u0027chassis_id\u0027, data[\u0027nodes\u0027][0])"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def test_detail_using_query(self):"},{"line_number":331,"context_line":"        node \u003d obj_utils.create_test_node(self.context,"},{"line_number":332,"context_line":"                                          chassis_id\u003dself.chassis.id)"},{"line_number":333,"context_line":"        data \u003d self.get_json("}],"source_content_type":"text/x-python","patch_set":4,"id":"bf3e73b7_ee8de67b","line":330,"in_reply_to":"bf3e73b7_f85fec0b","updated":"2017-08-07 11:39:26.000000000","message":"Done","commit_id":"f929463e3d9273c7615256930c216f90003426c6"}],"releasenotes/notes/add_detail_true_api_query-cb6944847830cd1a.yaml":[{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"beac68837939076a0ee07d2abd9de83341256a0f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add ?detail\u003dTrue query to the API list endpoint to make it more restful"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7f287b81_9b3f5424","line":3,"range":{"start_line":3,"start_character":68,"end_line":3,"end_character":75},"updated":"2017-09-06 22:32:38.000000000","message":"nit: s/restful/restful./","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"dbccdf0c6316efabc87b34eb7771a0817bc70a36","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add ?detail\u003dTrue query to the API list endpoint to make it more restful"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"ff82abbf_2a2bfc82","line":3,"range":{"start_line":3,"start_character":68,"end_line":3,"end_character":75},"in_reply_to":"7f287b81_9b3f5424","updated":"2017-11-28 16:33:29.000000000","message":"Done","commit_id":"e45b0a63656e5108eada4c8dfb27fc569d73ab36"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"cce22296a630593e8eca66e814cabda1beaa741c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ?detail\u003dTrue query to the API list endpoints to make them more restful."},{"line_number":5,"context_line":"    Now these API requests are possible:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * /nodes?detail\u003dTrue"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff82abbf_6a445975","line":4,"updated":"2017-11-30 23:39:49.000000000","message":"nit:  ``?detail\u003dTrue``\n\nI think it is double back-tick","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ?detail\u003dTrue query to the API list endpoints to make them more restful."},{"line_number":5,"context_line":"    Now these API requests are possible:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * /nodes?detail\u003dTrue"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"df87a7cf_5abcb004","line":4,"in_reply_to":"ff82abbf_6a445975","updated":"2017-12-06 13:46:21.000000000","message":"Done","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"cce22296a630593e8eca66e814cabda1beaa741c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Add ?detail\u003dTrue query to the API list endpoints to make them more restful."},{"line_number":5,"context_line":"    Now these API requests are possible:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * /nodes?detail\u003dTrue"},{"line_number":8,"context_line":"    * /ports?detail\u003dTrue"},{"line_number":9,"context_line":"    * /chassis?detail\u003dTrue"},{"line_number":10,"context_line":"    * /portgroups?detail\u003dTrue"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff82abbf_8a499d8c","line":7,"updated":"2017-11-30 23:39:49.000000000","message":"And these with double back-tick would be good too.","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Add ?detail\u003dTrue query to the API list endpoints to make them more restful."},{"line_number":5,"context_line":"    Now these API requests are possible:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * /nodes?detail\u003dTrue"},{"line_number":8,"context_line":"    * /ports?detail\u003dTrue"},{"line_number":9,"context_line":"    * /chassis?detail\u003dTrue"},{"line_number":10,"context_line":"    * /portgroups?detail\u003dTrue"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"df87a7cf_fa36e4b4","line":7,"in_reply_to":"ff82abbf_8a499d8c","updated":"2017-12-06 13:46:21.000000000","message":"Done","commit_id":"cdab594dfbcf061b27593a69d0b22d137b7bf5ca"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"a919e5e2bbb862039e8d707d0be10c94374048a2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``?detail\u003dTrue`` query to the API list endpoints to make them more"},{"line_number":5,"context_line":"    restful.  Now these API requests are possible:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * ``/nodes?detail\u003dTrue``"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"df87a7cf_11004a67","line":4,"updated":"2017-12-04 16:01:15.000000000","message":"Add ``?detail\u003d`` boolean query to the API list endpoints to make them more RESTful. The default is False. Now these API requests are possible.\n\nMaybe a comment about how it can be used instead of /nodes/detail/.....","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"18f4c22627ff72612b6047d608b3b276e89aebcd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``?detail\u003dTrue`` query to the API list endpoints to make them more"},{"line_number":5,"context_line":"    restful.  Now these API requests are possible:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * ``/nodes?detail\u003dTrue``"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"df87a7cf_e3d11dcf","line":4,"in_reply_to":"df87a7cf_11004a67","updated":"2017-12-06 13:46:21.000000000","message":"Done","commit_id":"c3f26edf405e98ee62cd2108eced49aecab33ddd"},{"author":{"_account_id":13689,"name":"Hironori Shiina","email":"Hironori.Shiina@fujitsu.com","username":"shiina"},"change_message_id":"c9485d97b6750463292575dfac6777bf975e8974","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``?detail\u003d`` boolean query to the API list endpoints to provide a more"},{"line_number":5,"context_line":"    RESTful alternative to the existing ``/nodes/detail`` and similar endpoints. The"},{"line_number":6,"context_line":"    default is False. Now these API requests are possible:"},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":14,"id":"df87a7cf_8ee97fb8","line":4,"updated":"2017-12-15 02:00:28.000000000","message":"nit: \u0027Adds\u0027 would be better for consistency with other releasenotes[1].\n\n[1] https://docs.openstack.org/ironic/latest/contributor/faq.html#create-a-new-release-note","commit_id":"f87f315446a633342d733d68e984f53384b23fa4"}]}
