)]}'
{"specs/mitaka/approved/get-multi-servers-filter.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"184d650a6a51efd34ee675e1cdc3bad3939852b2","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The second case is getting Floating IPs list from Neutron. We again request all"},{"line_number":42,"context_line":"the instances from Nova just to show their names for some Floating IPs"},{"line_number":43,"context_line":"(which number could be much less than the number of Instances)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Both cases could be avoided if we were able to request details for a limited"},{"line_number":46,"context_line":"set of instances (specified by their UUIDs) from Nova."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_89a40608","line":43,"updated":"2015-11-19 14:30:42.000000000","message":"surely, in this case, you would be better served by only returning a list of uuids to names for all the users instances?\n\nJust calling the regular list, rather than the detail call should be more efficient for what you are wanting here:\nhttp://developer.openstack.org/api-ref-compute-v2.1.html#listServers","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"7b79fe37c791cab50a8a1ee646d1fb9834e36b0e","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"The second case is getting Floating IPs list from Neutron. We again request all"},{"line_number":42,"context_line":"the instances from Nova just to show their names for some Floating IPs"},{"line_number":43,"context_line":"(which number could be much less than the number of Instances)."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Both cases could be avoided if we were able to request details for a limited"},{"line_number":46,"context_line":"set of instances (specified by their UUIDs) from Nova."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a8ffd7b_0aa7b80b","line":43,"in_reply_to":"ba8a016a_89a40608","updated":"2015-12-03 07:48:37.000000000","message":"If it really is only about mapping UUID to name then that\u0027d work.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"184d650a6a51efd34ee675e1cdc3bad3939852b2","unresolved":false,"context_lines":[{"line_number":64,"context_line":"And the second would potentially load a large amount of data from the DB and"},{"line_number":65,"context_line":"transfer it over a network, when only a subset of that data is actually needed"},{"line_number":66,"context_line":"(i.e. be slow and cause unnecessary load on disks and network)."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Data model impact"},{"line_number":69,"context_line":"-----------------"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba8a016a_8ee64ce6","line":67,"updated":"2015-11-19 14:30:42.000000000","message":"You can also use changes-since, would that help this use case at all?","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"7b79fe37c791cab50a8a1ee646d1fb9834e36b0e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"And the second would potentially load a large amount of data from the DB and"},{"line_number":65,"context_line":"transfer it over a network, when only a subset of that data is actually needed"},{"line_number":66,"context_line":"(i.e. be slow and cause unnecessary load on disks and network)."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Data model impact"},{"line_number":69,"context_line":"-----------------"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a8ffd7b_afb1de90","line":67,"in_reply_to":"ba8a016a_8ee64ce6","updated":"2015-12-03 07:48:37.000000000","message":"No because you don\u0027t know what the \u0027since\u0027 value is","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8d7f1f823b76d63e93c6c2512591fd3ac4a8ec94","unresolved":false,"context_lines":[{"line_number":77,"context_line":"a set of UUIDs. The new `server_ids` search filter for GET /servers/detail"},{"line_number":78,"context_line":"request will be created."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_2d3126a3","line":80,"updated":"2015-11-03 14:43:10.000000000","message":"I am being very very picky here, but can we please give examples of how we want the uuid to be formatted, just for the avoidance of any doubt.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"e206046116b51111be73ce292e5d2fce73158a84","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a26ad4f_87035fb8","line":82,"updated":"2015-10-28 02:07:25.000000000","message":"Given a max URL length of 2048 this API will limit you to 55 UUIDs this may not be a problem for the use case that is specified in the bug referenced.  Hoever, if we build it they will come.\n\nI don\u0027t actually know what that failure mode for a longer URL looks like but you\u0027ll need to handle it.\n\nI think it\u0027d be better to create a new method that receives a JSON blob containing a list of UUID\u0027s.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"8840aeaea6fc99d95885eaef3604ff1d500ca8c7","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_b82a412b","line":82,"in_reply_to":"1a26ad4f_87035fb8","updated":"2015-11-03 10:42:30.000000000","message":"Hmm, looks like there is no URL length limit defined in RFC and it\u0027s just implementation specific for each HTTP client and server.\n\nThus, as a WSGI application nova-api should not care about the limit of a particular HTTP server it\u0027s served by (eventlet, apache mod_wsgi, etc) and should simply process the UUIDs it got. If the limit is 2048 and only 50 UUIDs, fine, we\u0027ll process these 50 UUIDs passed.\n\nWe expect the HTTP server to return 414 (http://www.checkupdown.com/status/E414.html), when the request is too long for processing. It will be up to client to make multiple shorter requests. E.g. in python-novaclient we could probably allow an arbitrary number of UUIDs passed and then make queries to Compute API in chunks by 50 UUIDs (or more and then gracefully handle 414 HTTP status codes from server by reducing the size of a chunk).","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"33e14080cf3b350e9a2f3086fdffe7303bf5ae97","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_55b0be8b","line":82,"in_reply_to":"1a26ad4f_87035fb8","updated":"2015-11-03 10:31:56.000000000","message":"Tony has a valid point here. I think it may be best to use a new POST /servers/search URI for this and use the request body to store the multiple uuid filters. Behind the scenes, the same \"machinery\" that uses nova.objects.InstanceList.get_all_by_filters() would be used, it\u0027s just that a new API microversion could add the new POST /servers/search route to the URI map.\n\nThe issue is that you will want to copy all of the existing filters that act on query string parameters for GET /servers/detail and make them filters in the POST /servers/search request body as well. Otherwise, you will have a POST with both query string parameter filters *and* request body filters, which would likely be confusing to the user.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"7b79fe37c791cab50a8a1ee646d1fb9834e36b0e","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a8ffd7b_af5f9e3f","line":82,"in_reply_to":"fa80f949_22935a5d","updated":"2015-12-03 07:48:37.000000000","message":"I don\u0027t like the idea of truncating the UUID\u0027s.  You\u0027re still limited in the number you can check it\u0027s just the number is higher.\n\nI\u0027d rather see us limit the max number of UUID\u0027s to something reasonable OR we provide a POST API.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"54fdf406b1f45a72b645293e41230fda2bf2c020","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_fa8652b8","line":82,"in_reply_to":"fa80f949_22935a5d","updated":"2015-11-04 09:13:46.000000000","message":"I like the Ken\u0027ichi\u0027s idea. Sounds smart way to forward.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"856d55d6e28da5999cdec5b752ee8c477544bb08","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_d88e2527","line":82,"in_reply_to":"fa80f949_55b0be8b","updated":"2015-11-03 10:44:17.000000000","message":"I\u0027m against using POST here as it has different semantics with regards to concurrency, caching, proxying, retrying, etc.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"403fa7f0f89c80957ef8af8b2459c079542e0895","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_ed023e6f","line":82,"in_reply_to":"fa80f949_8d4b722b","updated":"2015-11-03 14:45:29.000000000","message":"We could use GET with data payload instead of POST, in that case. Not sure that concern is valid.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"93c7e10e7cb80363eb29d21bb38eeacba580de03","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_22935a5d","line":82,"in_reply_to":"fa80f949_b82a412b","updated":"2015-11-04 00:27:56.000000000","message":"I also prefer GET instead of POST here for easy understanding.\n\nHow about allowing incomplete UUIDs of servers also for this filter?\nFor example, there are two servers\n\n d77ed1d2-0702-4274-acf7-a33dd2e5dec5\n 8f41f612-b32b-4a81-90e6-fddfa1a95d5e\n\nthis filter supports short format like\n\n  GET /servers/detail?server_ids\u003dd77ed1d2-0702,8f41f612-b32b\n\nThat means client APPs can specify many servers as they want and they need to own unique of servers on client side.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2f5538b3265f7da12f689638b791e19514fe29e9","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_ccc16a82","line":82,"in_reply_to":"fa80f949_d66a5b1a","updated":"2015-11-03 21:18:08.000000000","message":"@tdurakov, @edleafe:\n\nhttp://stackoverflow.com/questions/978061/http-get-with-request-body\n\nDoesn\u0027t look like sending a request body with GET is recommended (though to be sure, there are differing viewpoints in the above stackoverflow answer)","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"8d7f1f823b76d63e93c6c2512591fd3ac4a8ec94","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_8d4b722b","line":82,"in_reply_to":"fa80f949_d88e2527","updated":"2015-11-03 14:43:10.000000000","message":"I know POST is annoying for this classic GET request, but POST does make sense here for when the query gets long.\n\nMaybe this is a case where we want to support both GET and POST for this call, incase folks need to go over the limit?","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"6b8b25bc3214b9c92339c8af44b3964218b4234c","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_d66a5b1a","line":82,"in_reply_to":"fa80f949_ed023e6f","updated":"2015-11-03 20:29:05.000000000","message":"I prefer the GET with data in the body, as long as we are sure that our tooling doesn\u0027t assume GETs don\u0027t have bodies. Using POST here just feels icky.","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"e47ddb3cfe3c4c1f2df191417f54737fd7c84cbf","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Example of using this filter ::"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    GET /servers/detail?server_ids\u003d{uuid1},{uuid2},{uuid3}"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Response ::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa80f949_c6d4a648","line":82,"in_reply_to":"fa80f949_fa8652b8","updated":"2015-11-05 10:12:11.000000000","message":"+1 for Ken\u0027ichi\u0027s idea. What do you think guys?","commit_id":"18905f30ab90ad6b75eba6928d28f3f994ee9371"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"39a2797400f14d310af6cda64310ba087e4a69cd","unresolved":false,"context_lines":[{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Add an API microversion that allows to get a set of instances by set of UUIDs"},{"line_number":52,"context_line":"with the help of search filter `server_ids` in request GET /servers/detail."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Alternatives"},{"line_number":55,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a740942_9fa3999e","line":52,"updated":"2015-12-03 19:22:30.000000000","message":"Another thing to consider is that there is a more concise /servers resource.  It may be too concise, basically just uuid and name, but having a smaller response when only some details are needed is another way to slice this.","commit_id":"2d25bbbd4b37a5e9f1e6e293c4107b931e00e0c4"}]}
