)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bf659307_aca662c0","updated":"2018-04-12 18:24:38.000000000","message":"Having *only* read the commit message so far, I have this to say:\n\n- #2 definitely, definitely needs to be a separate blueprint, spec, and (debatably) microversion.  It has to do with granularity, I suppose, but it has nothing to do with granular resource requests.  [Later] Okay, I see that you were trying to cover the use cases that \"unrestricted by default\" satisfies.  Unfortunately, I don\u0027t think this quite nails it.\n- IMO, #1 should also be a separate bp/spec/microversion, to be implemented subsequent to the existing.  But that\u0027s been my position from the start, and what I suppose we\u0027re debating via this patch.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90985f622c69faeb1e4ab99aee9f44a2c5a55925","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9f6a8fd7_32401436","in_reply_to":"9f6a8fd7_4cd731c1","updated":"2018-04-16 13:34:08.000000000","message":"\u003e Nothing yet implements the *response behaviour* of the original\n \u003e microversion that added the granular request groups, though. So\n \u003e adding a new microversion for this change in response behaviour\n \u003e would not be useful, since there\u0027s nothing to indicate what the\n \u003e *difference* between the two microversions would be.\n\nYeah, my preference would be that the subsequent microversion implementing separate-by-default would introduce a new queryparam that makes it happen.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9f6a8fd7_4cd731c1","in_reply_to":"bf659307_aca662c0","updated":"2018-04-16 13:08:12.000000000","message":"\u003e - IMO, #1 should also be a separate bp/spec/microversion, to be\n \u003e implemented subsequent to the existing.  But that\u0027s been my\n \u003e position from the start, and what I suppose we\u0027re debating via this\n \u003e patch.\n\nNothing yet implements the *response behaviour* of the original microversion that added the granular request groups, though. So adding a new microversion for this change in response behaviour would not be useful, since there\u0027s nothing to indicate what the *difference* between the two microversions would be.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"groups\u0027 ability to be serviced by the same resource provider.  This will"},{"line_number":13,"context_line":"no longer be the case. A numbered request group should specifically"},{"line_number":14,"context_line":"indicate that the requestor requires the resources be provided by"},{"line_number":15,"context_line":"different resource providers. That\u0027s what is implied by \"granular"},{"line_number":16,"context_line":"request groups\"."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf659307_ec669abb","line":16,"range":{"start_line":15,"start_character":30,"end_line":16,"end_character":16},"updated":"2018-04-12 18:24:38.000000000","message":"Please remove this sentence.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90985f622c69faeb1e4ab99aee9f44a2c5a55925","unresolved":false,"context_lines":[{"line_number":12,"context_line":"groups\u0027 ability to be serviced by the same resource provider.  This will"},{"line_number":13,"context_line":"no longer be the case. A numbered request group should specifically"},{"line_number":14,"context_line":"indicate that the requestor requires the resources be provided by"},{"line_number":15,"context_line":"different resource providers. That\u0027s what is implied by \"granular"},{"line_number":16,"context_line":"request groups\"."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_2f242fc6","line":16,"range":{"start_line":15,"start_character":30,"end_line":16,"end_character":16},"in_reply_to":"9f6a8fd7_4c009135","updated":"2018-04-16 13:34:08.000000000","message":"There are many possible interpretations of \"granular request groups\", at least one of which is described in the original spec, and at least one of which is described by this amendment.  IMO the difference in semantic proposed by this spec doesn\u0027t actually touch the meaning/implications of the granularity of request groups.  That is, the request groups are granular no matter which way they interact with each other.  I asked for the sentence to be removed so we don\u0027t have to waste time arguing about the code/architectural meaning of an English phrase that was itself written imperfectly, so it could be terse, to describe the thing in the spec.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"groups\u0027 ability to be serviced by the same resource provider.  This will"},{"line_number":13,"context_line":"no longer be the case. A numbered request group should specifically"},{"line_number":14,"context_line":"indicate that the requestor requires the resources be provided by"},{"line_number":15,"context_line":"different resource providers. That\u0027s what is implied by \"granular"},{"line_number":16,"context_line":"request groups\"."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_4c009135","line":16,"range":{"start_line":15,"start_character":30,"end_line":16,"end_character":16},"in_reply_to":"9f6a8fd7_697d476d","updated":"2018-04-16 13:08:12.000000000","message":"Eric is annoyed because we don\u0027t share the same understanding about what is implied by the term \"granular\".","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c153ded4c1fbac6d86e3fe1cd5633616a38cb319","unresolved":false,"context_lines":[{"line_number":12,"context_line":"groups\u0027 ability to be serviced by the same resource provider.  This will"},{"line_number":13,"context_line":"no longer be the case. A numbered request group should specifically"},{"line_number":14,"context_line":"indicate that the requestor requires the resources be provided by"},{"line_number":15,"context_line":"different resource providers. That\u0027s what is implied by \"granular"},{"line_number":16,"context_line":"request groups\"."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_697d476d","line":16,"range":{"start_line":15,"start_character":30,"end_line":16,"end_character":16},"in_reply_to":"bf659307_ec669abb","updated":"2018-04-16 11:36:24.000000000","message":"Is something else implied? (just looking for clarity, not sure I fully understand)","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"request groups\"."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"},{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf659307_ac0ae2ce","line":19,"range":{"start_line":19,"start_character":15,"end_line":19,"end_character":21},"updated":"2018-04-12 18:24:38.000000000","message":"be able to?  be required to?  be fixin\u0027 to?","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"request groups\"."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"},{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_8cbc696a","line":19,"range":{"start_line":19,"start_character":15,"end_line":19,"end_character":21},"in_reply_to":"bf659307_ac0ae2ce","updated":"2018-04-16 13:08:12.000000000","message":"might be able to","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c153ded4c1fbac6d86e3fe1cd5633616a38cb319","unresolved":false,"context_lines":[{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"},{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_69cb07a5","line":21,"updated":"2018-04-16 11:36:24.000000000","message":"If we can come up with some way to do this (if it truly is necessary) with something other than a config setting, that would be great. Maybe a query parameter?\n\nThe config choice could then be on the nova side, controlling whether to do this or not.\n\nI\u0027d prefer that we limit behavior configuration options in placement. Where possible those behavior changes should be input from the client. I know we already did the randomization thing as config, but I kind of regret that now, after playing with an isolated placement service. There the only config I want to think about is where is keystone and where is the database.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90985f622c69faeb1e4ab99aee9f44a2c5a55925","unresolved":false,"context_lines":[{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"},{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_8f18db81","line":21,"in_reply_to":"9f6a8fd7_69cb07a5","updated":"2018-04-16 13:34:08.000000000","message":"\u003e If we can come up with some way to do this (if it truly is\n \u003e necessary) with something other than a config setting, that would\n \u003e be great. Maybe a query parameter?\n\n+ a million.  There are many advantages, not least of which is being able to decide per call.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"},{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_6c455570","line":21,"in_reply_to":"9f6a8fd7_69cb07a5","updated":"2018-04-16 13:08:12.000000000","message":"I suppose I could go for a query parameter instead of a configuration option. That *would*, however, require a new microversion, since we\u0027d be changing the public API.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90985f622c69faeb1e4ab99aee9f44a2c5a55925","unresolved":false,"context_lines":[{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"},{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_7208cc27","line":21,"in_reply_to":"9f6a8fd7_6c455570","updated":"2018-04-16 13:34:08.000000000","message":"\u003e That *would*, however, require a new\n \u003e microversion, since we\u0027d be changing the public API.\n\nEarlier you pointed out that the original granular microversion hasn\u0027t been published yet, so we can do it in the same one if we want to.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5a5507f74255ae8c92c1842e0b33de397f4b3da9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":19,"context_line":"when you might be to split a request for a large amount of like"},{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_72568c09","line":21,"in_reply_to":"9f6a8fd7_6c455570","updated":"2018-04-16 13:31:21.000000000","message":"Microversions are cheap and query parameters are reslient.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"},{"line_number":25,"context_line":"requested amount."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf659307_0c22ee52","line":23,"range":{"start_line":23,"start_character":41,"end_line":23,"end_character":67},"updated":"2018-04-12 18:24:38.000000000","message":"Okay, I haven\u0027t read the spec yet, but this scares me.\n\nIs this \"second try\" done per root provider, or only if we get zero hits for the whole request?","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5a5507f74255ae8c92c1842e0b33de397f4b3da9","unresolved":false,"context_lines":[{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"},{"line_number":25,"context_line":"requested amount."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_523d88b9","line":23,"range":{"start_line":23,"start_character":41,"end_line":23,"end_character":67},"in_reply_to":"9f6a8fd7_2f698fbd","updated":"2018-04-16 13:31:21.000000000","message":"\u003e What do you mean by \"things are this variable\"?\n\nEverything else being equal we can get two different results based on a configuration item that the caller isn\u0027t necessarily aware of.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"},{"line_number":25,"context_line":"requested amount."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_2f698fbd","line":23,"range":{"start_line":23,"start_character":41,"end_line":23,"end_character":67},"in_reply_to":"9f6a8fd7_a936ffb3","updated":"2018-04-16 13:08:12.000000000","message":"What do you mean by \"things are this variable\"? GET /allocation_candidate should give back the various options that the caller has to consume resources on one or more providers. Nothing about this spec changes that basic fact for the caller.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"},{"line_number":25,"context_line":"requested amount."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_8c4a297e","line":23,"range":{"start_line":23,"start_character":41,"end_line":23,"end_character":67},"in_reply_to":"bf659307_0c22ee52","updated":"2018-04-16 13:08:12.000000000","message":"Only if we get zero hits for the whole request.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c153ded4c1fbac6d86e3fe1cd5633616a38cb319","unresolved":false,"context_lines":[{"line_number":20,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":21,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":22,"context_line":"contains a list of resource classes that the placement service would try"},{"line_number":23,"context_line":"to split across multiple child providers if it initially was unable to"},{"line_number":24,"context_line":"find a single provider that contained available inventory for the"},{"line_number":25,"context_line":"requested amount."},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9f6a8fd7_a936ffb3","line":23,"range":{"start_line":23,"start_character":41,"end_line":23,"end_character":67},"in_reply_to":"bf659307_0c22ee52","updated":"2018-04-16 11:36:24.000000000","message":"Scares me too. How does one \"reason\" about placement when things are this variable?","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90985f622c69faeb1e4ab99aee9f44a2c5a55925","unresolved":false,"context_lines":[{"line_number":15,"context_line":"different resource providers."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":18,"context_line":"when you might be to split a request for a large amount of like"},{"line_number":19,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":20,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":21,"context_line":"contains a list of resource classes that the placement service would try"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9f6a8fd7_4f2163b4","line":18,"range":{"start_line":18,"start_character":15,"end_line":18,"end_character":20},"updated":"2018-04-16 13:34:08.000000000","message":"be able to","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8397a69cd65b4ff75796ac8bb1475134cb080700","unresolved":false,"context_lines":[{"line_number":15,"context_line":"different resource providers."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"2) Supports the use case of \"try harder to return allocation candidates"},{"line_number":18,"context_line":"when you might be to split a request for a large amount of like"},{"line_number":19,"context_line":"resources across multiple child resource providers\" by adding a new CONF"},{"line_number":20,"context_line":"option called CONF.placement.try_split_resources. This new CONF option"},{"line_number":21,"context_line":"contains a list of resource classes that the placement service would try"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9f6a8fd7_d2667852","line":18,"range":{"start_line":18,"start_character":15,"end_line":18,"end_character":20},"in_reply_to":"9f6a8fd7_4f2163b4","updated":"2018-04-16 13:46:36.000000000","message":"Done","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"}],"specs/rocky/approved/granular-resource-requests.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":31,"context_line":".. note:: This document uses \"RP\" as an abbreviation for \"Resource Provider\""},{"line_number":32,"context_line":"          throughout."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Furthermore, there is a desire to allow the placement service to allocate identical"},{"line_number":35,"context_line":"resources from multiple resource providers when a single resource provider with"},{"line_number":36,"context_line":"the requested amount of that resource does not exist. This spec proposes a new"},{"line_number":37,"context_line":"configuration option that would trigger behaviour in the placement service to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_6c85aa06","line":34,"range":{"start_line":34,"start_character":74,"end_line":34,"end_character":83},"updated":"2018-04-12 18:24:38.000000000","message":"wrap","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":31,"context_line":".. note:: This document uses \"RP\" as an abbreviation for \"Resource Provider\""},{"line_number":32,"context_line":"          throughout."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Furthermore, there is a desire to allow the placement service to allocate identical"},{"line_number":35,"context_line":"resources from multiple resource providers when a single resource provider with"},{"line_number":36,"context_line":"the requested amount of that resource does not exist. This spec proposes a new"},{"line_number":37,"context_line":"configuration option that would trigger behaviour in the placement service to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_8fa9bbe0","line":34,"range":{"start_line":34,"start_character":74,"end_line":34,"end_character":83},"in_reply_to":"bf659307_6c85aa06","updated":"2018-04-16 13:08:12.000000000","message":"Done","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c153ded4c1fbac6d86e3fe1cd5633616a38cb319","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Use Case 5"},{"line_number":180,"context_line":"~~~~~~~~~~"},{"line_number":181,"context_line":"As an Operator, I want to the placement service to try as hard as possible to always return allocation candidates, even when no single resource provider can accomodate the requested amount of a single resource class."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"In other words, if I request 4 VFs, and the only remaining compute node in my"},{"line_number":184,"context_line":"deployment has 2 PFs each with 2 VFs in inventory, I want the placement service"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_8913fb0d","line":181,"range":{"start_line":181,"start_character":26,"end_line":181,"end_character":47},"updated":"2018-04-16 11:36:24.000000000","message":"I wonder if perhaps it is the client that should be doing this sort of retrying:\n\nif #results \u003d\u003d 0: retry with special \"try harder\" flag\n\nThis makes the placement code path simpler, and also removes the need for a config setting in placement.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Use Case 5"},{"line_number":180,"context_line":"~~~~~~~~~~"},{"line_number":181,"context_line":"As an Operator, I want to the placement service to try as hard as possible to always return allocation candidates, even when no single resource provider can accomodate the requested amount of a single resource class."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"In other words, if I request 4 VFs, and the only remaining compute node in my"},{"line_number":184,"context_line":"deployment has 2 PFs each with 2 VFs in inventory, I want the placement service"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_0c7e6e18","line":181,"range":{"start_line":181,"start_character":78,"end_line":181,"end_character":84},"updated":"2018-04-12 18:24:38.000000000","message":"wrap","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90985f622c69faeb1e4ab99aee9f44a2c5a55925","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Use Case 5"},{"line_number":180,"context_line":"~~~~~~~~~~"},{"line_number":181,"context_line":"As an Operator, I want to the placement service to try as hard as possible to always return allocation candidates, even when no single resource provider can accomodate the requested amount of a single resource class."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"In other words, if I request 4 VFs, and the only remaining compute node in my"},{"line_number":184,"context_line":"deployment has 2 PFs each with 2 VFs in inventory, I want the placement service"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_b20424c8","line":181,"range":{"start_line":181,"start_character":26,"end_line":181,"end_character":47},"in_reply_to":"9f6a8fd7_6f830706","updated":"2018-04-16 13:34:08.000000000","message":"\u003e GET /a-c?resources1\u003dSRIOV_NET_VF:2\u0026resources2\u003dSRIOV_NET_VF:2\n\nWith the original implementation, the scheduler *only* does this query.  (Or in fact with four groups of SRIOV_NET_VF:1.)\n\nI\u0027d also like to point out that the (initial) implementation is making no attempt to process the groups \"together\" (in the same query).  It\u0027s processing each group as if it\u0027s its own request [1] and then folding the results together after the fact.  A \"separate providers\" flag would just cause us to filter out more results in that second step.\n\n[1] https://review.openstack.org/#/c/517757/8/nova/api/openstack/placement/objects/resource_provider.py@3552\n[2] https://review.openstack.org/#/c/517757/8/nova/api/openstack/placement/objects/resource_provider.py@3635","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5a5507f74255ae8c92c1842e0b33de397f4b3da9","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Use Case 5"},{"line_number":180,"context_line":"~~~~~~~~~~"},{"line_number":181,"context_line":"As an Operator, I want to the placement service to try as hard as possible to always return allocation candidates, even when no single resource provider can accomodate the requested amount of a single resource class."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"In other words, if I request 4 VFs, and the only remaining compute node in my"},{"line_number":184,"context_line":"deployment has 2 PFs each with 2 VFs in inventory, I want the placement service"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_b23664b4","line":181,"range":{"start_line":181,"start_character":26,"end_line":181,"end_character":47},"in_reply_to":"9f6a8fd7_6f830706","updated":"2018-04-16 13:31:21.000000000","message":"Right now the placement finds results and returns them. You\u0027re proposing that placement evaluate the results (albeit very simply) and tries again. For me, that\u0027s a significant change.\n\nI\u0027m not suggesting that the client change the resource classes or traits required, but instead that it simply pass the value of you what you are proposing as a config item as a query parameter.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Use Case 5"},{"line_number":180,"context_line":"~~~~~~~~~~"},{"line_number":181,"context_line":"As an Operator, I want to the placement service to try as hard as possible to always return allocation candidates, even when no single resource provider can accomodate the requested amount of a single resource class."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"In other words, if I request 4 VFs, and the only remaining compute node in my"},{"line_number":184,"context_line":"deployment has 2 PFs each with 2 VFs in inventory, I want the placement service"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_6f830706","line":181,"range":{"start_line":181,"start_character":26,"end_line":181,"end_character":47},"in_reply_to":"9f6a8fd7_8913fb0d","updated":"2018-04-16 13:08:12.000000000","message":"How would that make the placement code path simpler, though? The placement service is still going to need to have the code that attempts to split *some* resource requests into smaller groups and attempt to find child providers that can individually handle that smaller amount of resources.\n\nEven if you put the onus on the client to re-request with split request groups when a NoValidHost was initially hit, the problem is that the granular request groups spec states that different request groups are *not* required to be served by different resource providers. That means that what you\u0027d be essentially doing would be this:\n\n 1) Scheduler asks for resource providers that have the \n    requested amount of resources:\n\n    GET /a-c?resources\u003dSRIOV_NET_VF:4\n\n 2) Placement doesn\u0027t find any single resource provider\n    that has the resources. Returns no results.\n\n 3) Scheduler re-works the request:\n\n    GET /a-c?resources1\u003dSRIOV_NET_VF:2\u0026resources2\u003dSRIOV_NET_VF:2\n\n 4) Placement tries to find a single resource provider that\n    has the resources (again, because the original granular\n    request groups spec says that the resources may or may\n    not come from the same resource provider), doesn\u0027t find\n    any single resource provider. Placement then drops into\n    an alternate less-performant function that tries to find\n    providers in the same tree that have room for 2 VFs each.\n\nNote that in 2) and 4), the placement service is re-doing the same activity to find that there are no single resource providers that meet the request for 4 VFs.\n\nWhat this amendment is proposing is that the scheduler not be the thing that \"re-works\" the request and instead, have a configuration option in the placement service that would automatically perform that fallback to less-performant function to try and split resources across child providers when no single provider results were found.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Use Case 5"},{"line_number":180,"context_line":"~~~~~~~~~~"},{"line_number":181,"context_line":"As an Operator, I want to the placement service to try as hard as possible to always return allocation candidates, even when no single resource provider can accomodate the requested amount of a single resource class."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"In other words, if I request 4 VFs, and the only remaining compute node in my"},{"line_number":184,"context_line":"deployment has 2 PFs each with 2 VFs in inventory, I want the placement service"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_2fae6fe7","line":181,"range":{"start_line":181,"start_character":78,"end_line":181,"end_character":84},"in_reply_to":"bf659307_0c7e6e18","updated":"2018-04-16 13:08:12.000000000","message":"Done","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c153ded4c1fbac6d86e3fe1cd5633616a38cb319","unresolved":false,"context_lines":[{"line_number":258,"context_line":"like resources may be provided by multiple child resource providers, we propose"},{"line_number":259,"context_line":"introducing a new ``CONF.placement.try_split_resources`` configuration option."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"This configuration option will be a comma-separated list of resource classes"},{"line_number":262,"context_line":"that shall be considered \"splittable\" in case an un-numbered resource request"},{"line_number":263,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":264,"context_line":"provider that can satsify the request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_e91ab715","line":261,"range":{"start_line":261,"start_character":26,"end_line":261,"end_character":76},"updated":"2018-04-16 11:36:24.000000000","message":"This means that any time we want to change those resource classes that might get this special treatment we need to update config. Is that a feature or a bug?","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"5a5507f74255ae8c92c1842e0b33de397f4b3da9","unresolved":false,"context_lines":[{"line_number":258,"context_line":"like resources may be provided by multiple child resource providers, we propose"},{"line_number":259,"context_line":"introducing a new ``CONF.placement.try_split_resources`` configuration option."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"This configuration option will be a comma-separated list of resource classes"},{"line_number":262,"context_line":"that shall be considered \"splittable\" in case an un-numbered resource request"},{"line_number":263,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":264,"context_line":"provider that can satsify the request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_126ab07f","line":261,"range":{"start_line":261,"start_character":26,"end_line":261,"end_character":76},"in_reply_to":"9f6a8fd7_af8eff24","updated":"2018-04-16 13:31:21.000000000","message":"Anything that is tweakable people will want to tweak? This is one of those things?","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":258,"context_line":"like resources may be provided by multiple child resource providers, we propose"},{"line_number":259,"context_line":"introducing a new ``CONF.placement.try_split_resources`` configuration option."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"This configuration option will be a comma-separated list of resource classes"},{"line_number":262,"context_line":"that shall be considered \"splittable\" in case an un-numbered resource request"},{"line_number":263,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":264,"context_line":"provider that can satsify the request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_af8eff24","line":261,"range":{"start_line":261,"start_character":26,"end_line":261,"end_character":76},"in_reply_to":"9f6a8fd7_e91ab715","updated":"2018-04-16 13:08:12.000000000","message":"I\u0027m not particularly concerned about that, to be honest. I don\u0027t see this being something that changes often, if ever.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":259,"context_line":"introducing a new ``CONF.placement.try_split_resources`` configuration option."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"This configuration option will be a comma-separated list of resource classes"},{"line_number":262,"context_line":"that shall be considered \"splittable\" in case an un-numbered resource request"},{"line_number":263,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":264,"context_line":"provider that can satsify the request."},{"line_number":265,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_0ccc2e68","line":262,"range":{"start_line":262,"start_character":46,"end_line":262,"end_character":48},"updated":"2018-04-12 18:24:38.000000000","message":"the (there can be only one)","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":259,"context_line":"introducing a new ``CONF.placement.try_split_resources`` configuration option."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"This configuration option will be a comma-separated list of resource classes"},{"line_number":262,"context_line":"that shall be considered \"splittable\" in case an un-numbered resource request"},{"line_number":263,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":264,"context_line":"provider that can satsify the request."},{"line_number":265,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_6f98e769","line":262,"range":{"start_line":262,"start_character":46,"end_line":262,"end_character":48},"in_reply_to":"bf659307_0ccc2e68","updated":"2018-04-16 13:08:12.000000000","message":"Done","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":263,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":264,"context_line":"provider that can satsify the request."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"When the placement service finds no results for an un-numbered request group,"},{"line_number":267,"context_line":"it shall check to see if any of the requested resources in the un-numbered"},{"line_number":268,"context_line":"request group are listed in the ``CONF.placement.try_split_resources`` option"},{"line_number":269,"context_line":"and if so, attempt to satisfy the allocation candidates request by iteratively"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_8cdd9e15","line":266,"range":{"start_line":266,"start_character":33,"end_line":266,"end_character":43},"updated":"2018-04-12 18:24:38.000000000","message":"No results for a given provider tree, or no results overall?","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":263,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":264,"context_line":"provider that can satsify the request."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"When the placement service finds no results for an un-numbered request group,"},{"line_number":267,"context_line":"it shall check to see if any of the requested resources in the un-numbered"},{"line_number":268,"context_line":"request group are listed in the ``CONF.placement.try_split_resources`` option"},{"line_number":269,"context_line":"and if so, attempt to satisfy the allocation candidates request by iteratively"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_ecbe9aac","line":266,"range":{"start_line":266,"start_character":48,"end_line":266,"end_character":50},"updated":"2018-04-12 18:24:38.000000000","message":"the","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":263,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":264,"context_line":"provider that can satsify the request."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"When the placement service finds no results for an un-numbered request group,"},{"line_number":267,"context_line":"it shall check to see if any of the requested resources in the un-numbered"},{"line_number":268,"context_line":"request group are listed in the ``CONF.placement.try_split_resources`` option"},{"line_number":269,"context_line":"and if so, attempt to satisfy the allocation candidates request by iteratively"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_2fa2ef9b","line":266,"range":{"start_line":266,"start_character":33,"end_line":266,"end_character":43},"in_reply_to":"bf659307_8cdd9e15","updated":"2018-04-16 13:08:12.000000000","message":"Overall no results.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":263,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":264,"context_line":"provider that can satsify the request."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"When the placement service finds no results for an un-numbered request group,"},{"line_number":267,"context_line":"it shall check to see if any of the requested resources in the un-numbered"},{"line_number":268,"context_line":"request group are listed in the ``CONF.placement.try_split_resources`` option"},{"line_number":269,"context_line":"and if so, attempt to satisfy the allocation candidates request by iteratively"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_efab9772","line":266,"range":{"start_line":266,"start_character":48,"end_line":266,"end_character":50},"in_reply_to":"bf659307_ecbe9aac","updated":"2018-04-16 13:08:12.000000000","message":"Done","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":277,"context_line":"4 VFs. If none are found, instead of returning no results to nova scheduler,"},{"line_number":278,"context_line":"the placement service will attempt to find 2 child providers that have 2 VFs"},{"line_number":279,"context_line":"each. If no results were found for that, it will try to find 1 VF available on"},{"line_number":280,"context_line":"4 PFs within a provider tree."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"Semantics"},{"line_number":283,"context_line":"~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_ccd636f3","line":280,"updated":"2018-04-12 18:24:38.000000000","message":"Doesn\u0027t try to find 3\u00261?  Why not?  Does the splittability have anything to do with step_size?  I ask because what happens if I list DISK_GB?","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":277,"context_line":"4 VFs. If none are found, instead of returning no results to nova scheduler,"},{"line_number":278,"context_line":"the placement service will attempt to find 2 child providers that have 2 VFs"},{"line_number":279,"context_line":"each. If no results were found for that, it will try to find 1 VF available on"},{"line_number":280,"context_line":"4 PFs within a provider tree."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"Semantics"},{"line_number":283,"context_line":"~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_cfe1f3d2","line":280,"in_reply_to":"bf659307_ccd636f3","updated":"2018-04-16 13:08:12.000000000","message":"I don\u0027t see any reason why DISK_GB would be listed in try_split_resources, but regardless, I think splitting resources in even groups just makes more logical sense.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":278,"context_line":"the placement service will attempt to find 2 child providers that have 2 VFs"},{"line_number":279,"context_line":"each. If no results were found for that, it will try to find 1 VF available on"},{"line_number":280,"context_line":"4 PFs within a provider tree."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"Semantics"},{"line_number":283,"context_line":"~~~~~~~~~"},{"line_number":284,"context_line":"The term \"results\" is used below to refer to the contents of one item in the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_ec277ac6","line":281,"updated":"2018-04-12 18:24:38.000000000","message":"This is a neat idea, but I see several drawbacks.\n\n- It allows this try/split behavior per deployment, rather than per request.\n- Taking traits into consideration is going to be troublesome.  For example, if I said resources\u003dVCPU:2\u0026required\u003dHW_CPU_THIS,HW_CPU_THAT, I meant that I wanted *both* of my VCPUs to have *both* of those traits.  But I might end up with one VCPU from each of two NUMA nodes, one (or both) of which doesn\u0027t have one (or both) of those traits.\n- As hinted above, it\u0027s poorly defined what levels of granularity we\u0027ll try for the split-up, and why.  And trying to define that in a generic way... I suspect that way lies madness.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90985f622c69faeb1e4ab99aee9f44a2c5a55925","unresolved":false,"context_lines":[{"line_number":278,"context_line":"the placement service will attempt to find 2 child providers that have 2 VFs"},{"line_number":279,"context_line":"each. If no results were found for that, it will try to find 1 VF available on"},{"line_number":280,"context_line":"4 PFs within a provider tree."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"Semantics"},{"line_number":283,"context_line":"~~~~~~~~~"},{"line_number":284,"context_line":"The term \"results\" is used below to refer to the contents of one item in the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_d2d75823","line":281,"in_reply_to":"9f6a8fd7_af611f3c","updated":"2018-04-16 13:34:08.000000000","message":"So for VCPU:5 we just go straight to 1,1,1,1,1 ?\n\nAgree with cdent, this is complex and hard to reason about.","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":278,"context_line":"the placement service will attempt to find 2 child providers that have 2 VFs"},{"line_number":279,"context_line":"each. If no results were found for that, it will try to find 1 VF available on"},{"line_number":280,"context_line":"4 PFs within a provider tree."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"Semantics"},{"line_number":283,"context_line":"~~~~~~~~~"},{"line_number":284,"context_line":"The term \"results\" is used below to refer to the contents of one item in the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_af611f3c","line":281,"in_reply_to":"bf659307_ec277ac6","updated":"2018-04-16 13:08:12.000000000","message":"\u003e This is a neat idea, but I see several drawbacks.\n \u003e \n \u003e - It allows this try/split behavior per deployment, rather than per\n \u003e request.\n\nYes, true. I am open to a potential ?try_split_resources query param, but a) it would require a new microversion and b) I\u0027m not convinced it\u0027s needed.\n\n \u003e - Taking traits into consideration is going to be troublesome.  For\n \u003e example, if I said resources\u003dVCPU:2\u0026required\u003dHW_CPU_THIS,HW_CPU_THAT,\n \u003e I meant that I wanted *both* of my VCPUs to have *both* of those\n \u003e traits.  But I might end up with one VCPU from each of two NUMA\n \u003e nodes, one (or both) of which doesn\u0027t have one (or both) of those\n \u003e traits.\n\nI can put in some text about traits not being \"splittable\".\n\n \u003e - As hinted above, it\u0027s poorly defined what levels of granularity\n \u003e we\u0027ll try for the split-up, and why.  And trying to define that in\n \u003e a generic way... I suspect that way lies madness.\n\nTry to split in even groups, iteratively splitting further into evenly-split groups. It\u0027s really the only way to do it, IMHO.\n\nWe could potentially do a quick query to find the maximum available resources of a class on any node and use that number to inform the splitting level?","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"92a8dc119387f92d7a30c07c87f8853adc059a5a","unresolved":false,"context_lines":[{"line_number":304,"context_line":"* For numbered ``resources``, a single *resource_class*:*count* will never be"},{"line_number":305,"context_line":"  split across multiple RPs."},{"line_number":306,"context_line":"* For un-numbered ``resources``, a single *resource_class*:*count* may be split"},{"line_number":307,"context_line":"  across multiple RPs if a no single provider could be found that satisfy the"},{"line_number":308,"context_line":"  full requested amount *and* the new ``CONF.placement.try_split_resources``"},{"line_number":309,"context_line":"  configuration option contains the resource class that allows splitting."},{"line_number":310,"context_line":"* Specifying a ``resources`` (numbered or un-numbered) without a corresponding"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bf659307_87dd7715","line":307,"range":{"start_line":307,"start_character":25,"end_line":307,"end_character":26},"updated":"2018-04-12 18:24:38.000000000","message":"strike","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ce54c8a048cc74850cbaf80dd1b8688739191fa1","unresolved":false,"context_lines":[{"line_number":304,"context_line":"* For numbered ``resources``, a single *resource_class*:*count* will never be"},{"line_number":305,"context_line":"  split across multiple RPs."},{"line_number":306,"context_line":"* For un-numbered ``resources``, a single *resource_class*:*count* may be split"},{"line_number":307,"context_line":"  across multiple RPs if a no single provider could be found that satisfy the"},{"line_number":308,"context_line":"  full requested amount *and* the new ``CONF.placement.try_split_resources``"},{"line_number":309,"context_line":"  configuration option contains the resource class that allows splitting."},{"line_number":310,"context_line":"* Specifying a ``resources`` (numbered or un-numbered) without a corresponding"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_cf66d352","line":307,"range":{"start_line":307,"start_character":25,"end_line":307,"end_character":26},"in_reply_to":"bf659307_87dd7715","updated":"2018-04-16 13:08:12.000000000","message":"Done","commit_id":"ad2764dba5e0a07bb6466e653126eb174f629d14"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0c1528a8680af2bf9a0c9fac76fe60a36dac4972","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"This demonstrates the desired behaviour change in the placement service when"},{"line_number":192,"context_line":"the new ``CONF.placement.try_split_resources`` contains the ``SRIOV_NET_VF``"},{"line_number":193,"context_line":"resource class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Proposed change"},{"line_number":196,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_3dd785c2","line":193,"updated":"2018-04-16 14:20:37.000000000","message":"I don\u0027t understand how this could be a thing. Any sort of configuration option that changes the behavior of allocations in placement seems like a problem to me. What happens if nova needs this to get multiple VFs across a PF, but it breaks cinder\u0027s inability to magically stitch two 1GB sections of disk together? It seems to me that anything like this _has_ to be a part of the query, or it\u0027s going to be a problem with placement being universally applicable in a deployment.","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"01d32e7e0d3670cfa8bfac5c46a1e092dcb67d93","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"This demonstrates the desired behaviour change in the placement service when"},{"line_number":192,"context_line":"the new ``CONF.placement.try_split_resources`` contains the ``SRIOV_NET_VF``"},{"line_number":193,"context_line":"resource class."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Proposed change"},{"line_number":196,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_72c20788","line":193,"in_reply_to":"9f6a8fd7_3dd785c2","updated":"2018-04-16 15:54:46.000000000","message":"Done. Turned this into a query param.","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0c1528a8680af2bf9a0c9fac76fe60a36dac4972","unresolved":false,"context_lines":[{"line_number":260,"context_line":"like resources may be provided by multiple child resource providers, we propose"},{"line_number":261,"context_line":"introducing a new ``CONF.placement.try_split_resources`` configuration option."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"This configuration option will be a comma-separated list of resource classes"},{"line_number":264,"context_line":"that shall be considered \"splittable\" in case an un-numbered resource request"},{"line_number":265,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":266,"context_line":"provider that can satsify the request."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_bdc2b5e8","line":263,"range":{"start_line":263,"start_character":0,"end_line":263,"end_character":76},"updated":"2018-04-16 14:20:37.000000000","message":"I guess this is how it can be applied to nova and not cinder, although It think this is confusing. I still don\u0027t understand why this can\u0027t or shouldn\u0027t be part of the query...","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"01d32e7e0d3670cfa8bfac5c46a1e092dcb67d93","unresolved":false,"context_lines":[{"line_number":260,"context_line":"like resources may be provided by multiple child resource providers, we propose"},{"line_number":261,"context_line":"introducing a new ``CONF.placement.try_split_resources`` configuration option."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"This configuration option will be a comma-separated list of resource classes"},{"line_number":264,"context_line":"that shall be considered \"splittable\" in case an un-numbered resource request"},{"line_number":265,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":266,"context_line":"provider that can satsify the request."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_524a6327","line":263,"range":{"start_line":263,"start_character":0,"end_line":263,"end_character":76},"in_reply_to":"9f6a8fd7_bdc2b5e8","updated":"2018-04-16 15:54:46.000000000","message":"Done","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"90985f622c69faeb1e4ab99aee9f44a2c5a55925","unresolved":false,"context_lines":[{"line_number":261,"context_line":"introducing a new ``CONF.placement.try_split_resources`` configuration option."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"This configuration option will be a comma-separated list of resource classes"},{"line_number":264,"context_line":"that shall be considered \"splittable\" in case an un-numbered resource request"},{"line_number":265,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":266,"context_line":"provider that can satsify the request."},{"line_number":267,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_9213200e","line":264,"range":{"start_line":264,"start_character":46,"end_line":264,"end_character":48},"updated":"2018-04-16 13:34:08.000000000","message":"the","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"8397a69cd65b4ff75796ac8bb1475134cb080700","unresolved":false,"context_lines":[{"line_number":261,"context_line":"introducing a new ``CONF.placement.try_split_resources`` configuration option."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"This configuration option will be a comma-separated list of resource classes"},{"line_number":264,"context_line":"that shall be considered \"splittable\" in case an un-numbered resource request"},{"line_number":265,"context_line":"is received and the placement service initially finds no single resource"},{"line_number":266,"context_line":"provider that can satsify the request."},{"line_number":267,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_b261843c","line":264,"range":{"start_line":264,"start_character":46,"end_line":264,"end_character":48},"in_reply_to":"9f6a8fd7_9213200e","updated":"2018-04-16 13:46:36.000000000","message":"Done","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0c1528a8680af2bf9a0c9fac76fe60a36dac4972","unresolved":false,"context_lines":[{"line_number":308,"context_line":"* For un-numbered ``resources``, a single *resource_class*:*count* may be split"},{"line_number":309,"context_line":"  across multiple RPs if no single provider could be found that satisfy the"},{"line_number":310,"context_line":"  full requested amount *and* the new ``CONF.placement.try_split_resources``"},{"line_number":311,"context_line":"  configuration option contains the resource class that allows splitting."},{"line_number":312,"context_line":"* Specifying a ``resources`` (numbered or un-numbered) without a corresponding"},{"line_number":313,"context_line":"  ``required`` returns results unfiltered by traits."},{"line_number":314,"context_line":"* It is an error to specify a ``required`` (numbered or un-numbered) without a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_5d45996f","line":311,"updated":"2018-04-16 14:20:37.000000000","message":"Why not just use the un-numbered group for \"these can be split\" and not have the config option? Or why not have a flag to the group that say \"...and you can split these if needed\"?","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"01d32e7e0d3670cfa8bfac5c46a1e092dcb67d93","unresolved":false,"context_lines":[{"line_number":308,"context_line":"* For un-numbered ``resources``, a single *resource_class*:*count* may be split"},{"line_number":309,"context_line":"  across multiple RPs if no single provider could be found that satisfy the"},{"line_number":310,"context_line":"  full requested amount *and* the new ``CONF.placement.try_split_resources``"},{"line_number":311,"context_line":"  configuration option contains the resource class that allows splitting."},{"line_number":312,"context_line":"* Specifying a ``resources`` (numbered or un-numbered) without a corresponding"},{"line_number":313,"context_line":"  ``required`` returns results unfiltered by traits."},{"line_number":314,"context_line":"* It is an error to specify a ``required`` (numbered or un-numbered) without a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_121b8b1b","line":311,"in_reply_to":"9f6a8fd7_23d0c8f7","updated":"2018-04-16 15:54:46.000000000","message":"I\u0027ve turned it into a can_split query parameter that instructs the placement service which resource classes it is allowed to split for the unnumbered request group.\n\nAs mentioned previously, the splitting behaviour is *only* used for the unnumbered request group because (with this amendment), the numbered request groups explicitly mean \"this resource class will be provided by a single resource provider\" and numbered request groups that contain the same resource class explicitly means \"this resource class will be provided by different resource providers, with those resource providers having a specific amount of the resource consumed from them\".","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"fb7ba0a601748e437acf7e1b13ab4683961169b7","unresolved":false,"context_lines":[{"line_number":308,"context_line":"* For un-numbered ``resources``, a single *resource_class*:*count* may be split"},{"line_number":309,"context_line":"  across multiple RPs if no single provider could be found that satisfy the"},{"line_number":310,"context_line":"  full requested amount *and* the new ``CONF.placement.try_split_resources``"},{"line_number":311,"context_line":"  configuration option contains the resource class that allows splitting."},{"line_number":312,"context_line":"* Specifying a ``resources`` (numbered or un-numbered) without a corresponding"},{"line_number":313,"context_line":"  ``required`` returns results unfiltered by traits."},{"line_number":314,"context_line":"* It is an error to specify a ``required`` (numbered or un-numbered) without a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_23d0c8f7","line":311,"in_reply_to":"9f6a8fd7_5d45996f","updated":"2018-04-16 15:11:47.000000000","message":"\u003e Why not just use the un-numbered group for \"these can be split\"\n\nDISK_GB is quite often going to be in the un-numbered group.  I suppose we could make consumers put it in a numbered group, but we\u0027re going to get pretty bound up when it comes to NUMA.\n\n \u003e Or why not have a flag to the group\n \u003e that say \"...and you can split these if needed\"?\n\nThis to me is going in a better direction.  Do you mean splitting is always in the un-numbered group and we specify the splittable resource classes?\n\n ?split_if_needed\u003dVCPU,MEMORY_MB\n\nI\u0027m still opposed to this spec as a whole, but if I\u0027m outvoted on that, the above is way preferable to the config option.","commit_id":"06117d26f6967a9b23260f142ffec262631b8277"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"66d1581fde874e803073304c50a6619e18e84224","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  from distinct resource providers."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* _`Requirement 4`: Instructing the placement service that requests for certain"},{"line_number":28,"context_line":"  resource classes may be split across multiple child resource providers if a"},{"line_number":29,"context_line":"  single child resource provider doesn\u0027t have available room for the full"},{"line_number":30,"context_line":"  requested amount."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_7500b135","line":28,"range":{"start_line":28,"start_character":48,"end_line":28,"end_character":53},"updated":"2018-04-16 16:57:05.000000000","message":"strike","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"72228a0c6b32572d6c549c78f349f848cc725c47","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  from distinct resource providers."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* _`Requirement 4`: Instructing the placement service that requests for certain"},{"line_number":28,"context_line":"  resource classes may be split across multiple child resource providers if a"},{"line_number":29,"context_line":"  single child resource provider doesn\u0027t have available room for the full"},{"line_number":30,"context_line":"  requested amount."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_6b8532ad","line":28,"range":{"start_line":28,"start_character":48,"end_line":28,"end_character":53},"in_reply_to":"9f6a8fd7_7500b135","updated":"2018-04-16 18:24:09.000000000","message":"Done","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"66d1581fde874e803073304c50a6619e18e84224","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* _`Requirement 4`: Instructing the placement service that requests for certain"},{"line_number":28,"context_line":"  resource classes may be split across multiple child resource providers if a"},{"line_number":29,"context_line":"  single child resource provider doesn\u0027t have available room for the full"},{"line_number":30,"context_line":"  requested amount."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"This specification attempts to address these requirements by way of a numbered"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_f599211f","line":29,"range":{"start_line":29,"start_character":9,"end_line":29,"end_character":14},"updated":"2018-04-16 16:57:05.000000000","message":"strike\n\nThe resources can come from the root and/or child providers and/or sharing providers.","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"72228a0c6b32572d6c549c78f349f848cc725c47","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* _`Requirement 4`: Instructing the placement service that requests for certain"},{"line_number":28,"context_line":"  resource classes may be split across multiple child resource providers if a"},{"line_number":29,"context_line":"  single child resource provider doesn\u0027t have available room for the full"},{"line_number":30,"context_line":"  requested amount."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"This specification attempts to address these requirements by way of a numbered"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_4b886ec5","line":29,"range":{"start_line":29,"start_character":9,"end_line":29,"end_character":14},"in_reply_to":"9f6a8fd7_f599211f","updated":"2018-04-16 18:24:09.000000000","message":"Done","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2c1bba1ec4872d5129fbb6b16021cae681c682ea","unresolved":false,"context_lines":[{"line_number":251,"context_line":"Attempting to split a request for resources"},{"line_number":252,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"To address the desire to have the placement service try extra-hard to always"},{"line_number":255,"context_line":"return results for allocation candidates when a request for a large amount of"},{"line_number":256,"context_line":"like resources may be provided by multiple child resource providers, we propose"},{"line_number":257,"context_line":"introducing a new ``can_split`` query parameter to the ``GET"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_f5c04153","line":254,"range":{"start_line":254,"start_character":56,"end_line":254,"end_character":66},"updated":"2018-04-16 16:31:22.000000000","message":"really not needed.","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"72228a0c6b32572d6c549c78f349f848cc725c47","unresolved":false,"context_lines":[{"line_number":251,"context_line":"Attempting to split a request for resources"},{"line_number":252,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"To address the desire to have the placement service try extra-hard to always"},{"line_number":255,"context_line":"return results for allocation candidates when a request for a large amount of"},{"line_number":256,"context_line":"like resources may be provided by multiple child resource providers, we propose"},{"line_number":257,"context_line":"introducing a new ``can_split`` query parameter to the ``GET"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_0b9276f7","line":254,"range":{"start_line":254,"start_character":56,"end_line":254,"end_character":66},"in_reply_to":"9f6a8fd7_f5c04153","updated":"2018-04-16 18:24:09.000000000","message":"Done","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"2c1bba1ec4872d5129fbb6b16021cae681c682ea","unresolved":false,"context_lines":[{"line_number":297,"context_line":"  \"shared\" is fully implemented, the same aggregate)."},{"line_number":298,"context_line":"* However, a numbered group will always return results from the *same* RP."},{"line_number":299,"context_line":"  This is to satisfy `Requirement 2`_."},{"line_number":300,"context_line":"* Separately numbered groups shall represent results from *different* RPs."},{"line_number":301,"context_line":"* It is still not supported to repeat a resource class within a given (numbered"},{"line_number":302,"context_line":"  or un-numbered) ``resources`` grouping, but there is no restriction on"},{"line_number":303,"context_line":"  repeating a resource class from one grouping to the next.  The same applies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_75919152","line":300,"range":{"start_line":300,"start_character":2,"end_line":300,"end_character":74},"updated":"2018-04-16 16:31:22.000000000","message":"So with this change, there is no way to express that getting the resources from the same RP is allowed?","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"72228a0c6b32572d6c549c78f349f848cc725c47","unresolved":false,"context_lines":[{"line_number":297,"context_line":"  \"shared\" is fully implemented, the same aggregate)."},{"line_number":298,"context_line":"* However, a numbered group will always return results from the *same* RP."},{"line_number":299,"context_line":"  This is to satisfy `Requirement 2`_."},{"line_number":300,"context_line":"* Separately numbered groups shall represent results from *different* RPs."},{"line_number":301,"context_line":"* It is still not supported to repeat a resource class within a given (numbered"},{"line_number":302,"context_line":"  or un-numbered) ``resources`` grouping, but there is no restriction on"},{"line_number":303,"context_line":"  repeating a resource class from one grouping to the next.  The same applies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_86219da2","line":300,"range":{"start_line":300,"start_character":2,"end_line":300,"end_character":74},"in_reply_to":"9f6a8fd7_352b1995","updated":"2018-04-16 18:24:09.000000000","message":"\u003e Correct.  Except by putting them in the un-numbered group.  Which\n \u003e is not sufficiently flexible.\n \u003e \n \u003e Example: I want my instance to have two disks.  I don\u0027t care if\n \u003e they come from the same provider or not, but I do care that they be\n \u003e specific sizes.\n\nWe don\u0027t have a resource class that represents the number of disks. We\u0027ve talked about that before. You are equating DISK_GB with disks. The two aren\u0027t the same thing, as you know.\n\n \u003e Example: I want my instance to have two VGPUs with two different\n \u003e capabilities (traits).  I don\u0027t care if they come from the same\n \u003e PGPU (with both of the necessary capabilities) or not.  But it\u0027s\n \u003e not acceptable for one to come from a PGPU with both traits and the\n \u003e other to come from a PGPU with neither.\n\nSorry, I cannot view the above as a real example. Show me an actual use case where the above is being asked for.\n\n \u003e Exmaple: I want two VFs with different bandwidth limits.  I don\u0027t\n \u003e care if they\u0027re on the same PF or not, but I do care that the\n \u003e limits are correctly observed for each VF.\n\nIf you want two VFs with different bandwidth limits, you will be asking for two VFs that are connected to two different physical networks (out of which the bandwidth is consumed). Therefore, you *want* to ensure that the resource providers of those two VFs are *different* resource providers...\n\n \u003e The crux of the issue is that there\u0027s only one un-numbered request\n \u003e group.","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"66d1581fde874e803073304c50a6619e18e84224","unresolved":false,"context_lines":[{"line_number":297,"context_line":"  \"shared\" is fully implemented, the same aggregate)."},{"line_number":298,"context_line":"* However, a numbered group will always return results from the *same* RP."},{"line_number":299,"context_line":"  This is to satisfy `Requirement 2`_."},{"line_number":300,"context_line":"* Separately numbered groups shall represent results from *different* RPs."},{"line_number":301,"context_line":"* It is still not supported to repeat a resource class within a given (numbered"},{"line_number":302,"context_line":"  or un-numbered) ``resources`` grouping, but there is no restriction on"},{"line_number":303,"context_line":"  repeating a resource class from one grouping to the next.  The same applies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_352b1995","line":300,"range":{"start_line":300,"start_character":2,"end_line":300,"end_character":74},"in_reply_to":"9f6a8fd7_75919152","updated":"2018-04-16 16:57:05.000000000","message":"Correct.  Except by putting them in the un-numbered group.  Which is not sufficiently flexible.\n\nExample: I want my instance to have two disks.  I don\u0027t care if they come from the same provider or not, but I do care that they be specific sizes.\n\nExample: I want my instance to have two VGPUs with two different capabilities (traits).  I don\u0027t care if they come from the same PGPU (with both of the necessary capabilities) or not.  But it\u0027s not acceptable for one to come from a PGPU with both traits and the other to come from a PGPU with neither.\n\nExmaple: I want two VFs with different bandwidth limits.  I don\u0027t care if they\u0027re on the same PF or not, but I do care that the limits are correctly observed for each VF.\n\nThe crux of the issue is that there\u0027s only one un-numbered request group.","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"89d4ec541a93a2ce1e65292d9c411e2d2d8bad38","unresolved":false,"context_lines":[{"line_number":297,"context_line":"  \"shared\" is fully implemented, the same aggregate)."},{"line_number":298,"context_line":"* However, a numbered group will always return results from the *same* RP."},{"line_number":299,"context_line":"  This is to satisfy `Requirement 2`_."},{"line_number":300,"context_line":"* Separately numbered groups shall represent results from *different* RPs."},{"line_number":301,"context_line":"* It is still not supported to repeat a resource class within a given (numbered"},{"line_number":302,"context_line":"  or un-numbered) ``resources`` grouping, but there is no restriction on"},{"line_number":303,"context_line":"  repeating a resource class from one grouping to the next.  The same applies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_a1a92be0","line":300,"range":{"start_line":300,"start_character":2,"end_line":300,"end_character":74},"in_reply_to":"9f6a8fd7_86219da2","updated":"2018-04-16 19:05:49.000000000","message":"\u003e We don\u0027t have a resource class that represents the number of disks.\n \u003e We\u0027ve talked about that before. You are equating DISK_GB with\n \u003e disks. The two aren\u0027t the same thing, as you know.\n\nPrecisely my point.  The only way we could request multiple disks of specific sizes would be\n\n ?resources1\u003dDISK_GB:1024\u0026resources2\u003dDISK_GB:2048\n\n \u003e \u003e Example: I want my instance to have two VGPUs with two different\n \u003e \u003e capabilities (traits).  I don\u0027t care if they come from the same\n \u003e \u003e PGPU (with both of the necessary capabilities) or not.  But it\u0027s\n \u003e \u003e not acceptable for one to come from a PGPU with both traits and\n \u003e the\n \u003e \u003e other to come from a PGPU with neither.\n \u003e \n \u003e Sorry, I cannot view the above as a real example. Show me an actual\n \u003e use case where the above is being asked for.\n\nCaveat: I\u0027m not a GPU expert.\n\nLet\u0027s say I\u0027m a mathematics PhD and want an instance that can process fourier transforms and floating point calculations in parallel on separate VGPUs.\n\n ?resources1\u003dVGPU:1\u0026required1\u003dFAST_FOURIER_XFORM\n \u0026resources2\u003dVGPU:1\u0026required2\u003dFLOATING_POINT_ACCEL\n\nI want my instance to rip sound from video on one VGPU, and send it in realtime to speech recognition on another.\n\n ?resources1\u003dVGPU:1\u0026required1\u003dVIDEO_SOUND_RIPPING\n \u0026resources2\u003dVGPU:1\u0026required2\u003dSPEECH_RECOGNITION\n\n \u003e If you want two VFs with different bandwidth limits, you will be\n \u003e asking for two VFs that are connected to two different physical\n \u003e networks (out of which the bandwidth is consumed).\n\nNot necessarily.  My instance can be running separate services / ports / whatever over the same network, which I want to throttle differently.  Or my switches can route multiple networks, and some of my PFs are switched to one and some to more than one.\n\nBut look, even if you can shoot down every example I contrive, there\u0027s a way to architect this that doesn\u0027t paint us into a corner.  And it\u0027s no more complicated (IMO less so) than what you\u0027ve proposed.","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f430e0eeea21f65f7ae7e29f3a12ae36656497e7","unresolved":false,"context_lines":[{"line_number":297,"context_line":"  \"shared\" is fully implemented, the same aggregate)."},{"line_number":298,"context_line":"* However, a numbered group will always return results from the *same* RP."},{"line_number":299,"context_line":"  This is to satisfy `Requirement 2`_."},{"line_number":300,"context_line":"* Separately numbered groups shall represent results from *different* RPs."},{"line_number":301,"context_line":"* It is still not supported to repeat a resource class within a given (numbered"},{"line_number":302,"context_line":"  or un-numbered) ``resources`` grouping, but there is no restriction on"},{"line_number":303,"context_line":"  repeating a resource class from one grouping to the next.  The same applies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_415fef40","line":300,"range":{"start_line":300,"start_character":2,"end_line":300,"end_character":74},"in_reply_to":"9f6a8fd7_a1a92be0","updated":"2018-04-16 19:27:39.000000000","message":"\u003e \u003e We don\u0027t have a resource class that represents the number of\n \u003e disks.\n \u003e \u003e We\u0027ve talked about that before. You are equating DISK_GB with\n \u003e \u003e disks. The two aren\u0027t the same thing, as you know.\n \u003e \n \u003e Precisely my point.  The only way we could request multiple disks\n \u003e of specific sizes would be\n \u003e \n \u003e ?resources1\u003dDISK_GB:1024\u0026resources2\u003dDISK_GB:2048\n\nRight. What\u0027s wrong with that?\n\n \u003e \u003e \u003e Example: I want my instance to have two VGPUs with two\n \u003e different\n \u003e \u003e \u003e capabilities (traits).  I don\u0027t care if they come from the same\n \u003e \u003e \u003e PGPU (with both of the necessary capabilities) or not.  But\n \u003e it\u0027s\n \u003e \u003e \u003e not acceptable for one to come from a PGPU with both traits and\n \u003e \u003e the\n \u003e \u003e \u003e other to come from a PGPU with neither.\n \u003e \u003e\n \u003e \u003e Sorry, I cannot view the above as a real example. Show me an\n \u003e actual\n \u003e \u003e use case where the above is being asked for.\n \u003e \n \u003e Caveat: I\u0027m not a GPU expert.\n \u003e \n \u003e Let\u0027s say I\u0027m a mathematics PhD and want an instance that can\n \u003e process fourier transforms and floating point calculations in\n \u003e parallel on separate VGPUs.\n \u003e \n \u003e ?resources1\u003dVGPU:1\u0026required1\u003dFAST_FOURIER_XFORM\n \u003e \u0026resources2\u003dVGPU:1\u0026required2\u003dFLOATING_POINT_ACCEL\n \u003e \n \u003e I want my instance to rip sound from video on one VGPU, and send it\n \u003e in realtime to speech recognition on another.\n \u003e \n \u003e ?resources1\u003dVGPU:1\u0026required1\u003dVIDEO_SOUND_RIPPING\n \u003e \u0026resources2\u003dVGPU:1\u0026required2\u003dSPEECH_RECOGNITION\n\nI fail to see those as use cases coming from the real world that could not be satisfied with *either*:\n\n resources\u003dVGPU:2\u0026required\u003dFAST_FOURIER_XFORM,FLOATING_POINT_ACCEL\n\n*or*:\n\n resources1\u003dVGPU:1\u0026required1\u003dFAST_FOURIER_XFORM\u0026resources2\u003dVGPU:1\u0026required2\u003dFLOATING_POINT_ACCEL\n\nThe first variant meaning you don\u0027t care if the vGPUs are on the same physical GPU and the second indicating you do want them on different physical GPUs.\n\nThe use case of \"well, I need 2 vGPUs and one of em needs fast fourier and the other needs floating point and put them on different physical GPUs but only if you can\u0027t find a single physical GPU with both fast fourier and floating point accel\" isn\u0027t something we need to be catering to, IMO.\n\n \u003e \u003e If you want two VFs with different bandwidth limits, you will be\n \u003e \u003e asking for two VFs that are connected to two different physical\n \u003e \u003e networks (out of which the bandwidth is consumed).\n \u003e \n \u003e Not necessarily.  My instance can be running separate services /\n \u003e ports / whatever over the same network, which I want to throttle\n \u003e differently.  Or my switches can route multiple networks, and some\n \u003e of my PFs are switched to one and some to more than one.\n \u003e \n \u003e But look, even if you can shoot down every example I contrive,\n \u003e there\u0027s a way to architect this that doesn\u0027t paint us into a\n \u003e corner.  And it\u0027s no more complicated (IMO less so) than what\n \u003e you\u0027ve proposed.\n\nI disagree wholeheartedly. I think the whole \"granular groups may or may not mean distinct providers\" actually makes things harder to reason about and requires more conditionals in the implementation code than being explicit and saying \"granular request groups will be provided by distinct resource providers\".","commit_id":"788da5edc1b4894f2f8fe1e1534953ed7bc189b3"}]}
