)]}'
{"specs/ocata/approved/cells-scheduling-interaction.rst":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e7bf23e73abee2e3769985745620790cf4ee0ca8","unresolved":false,"context_lines":[{"line_number":48,"context_line":"Because the existing build_instances conductor method assumes that the instance"},{"line_number":49,"context_line":"already exists within a cell database and makes some assumptions about cleaning"},{"line_number":50,"context_line":"up resources on failure we will not complicate that method with an alternate"},{"line_number":51,"context_line":"path. Instead a new conductor method will be added which can take the task of"},{"line_number":52,"context_line":"querying the scheduler and then creating the instance and associated resources"},{"line_number":53,"context_line":"within the cell indicated by the scheduler."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":56,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_70c89675","line":53,"range":{"start_line":51,"start_character":6,"end_line":53,"end_character":43},"updated":"2016-10-04 15:42:05.000000000","message":"Just to be clear, you\u0027re not talking about adding another call to the scheduler, right? We\u0027ll:\n - Create the buildreq or whatever\n - Call the api-level conductor with that\n - That conductor will make the one and only scheduling call\n - That conductor will create the instance in the proper cell\n - That conductor will call the existing conductor build api in the right cell (?)\n\nIf that\u0027s right, seems like we\u0027re still changing the existing method to assume the scheduling decision has already been done? Maybe that\u0027s the same as a reschedule with no existing retries?\n\nMaybe just some more clarity of the above would be good to make this more understandable. Or maybe I\u0027m just dumb.","commit_id":"c33a2f39ca3c2792e3d19142262d2f7a049c271e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60657daefc4cf959d006e556f3f666a48866bb82","unresolved":false,"context_lines":[{"line_number":48,"context_line":"Because the existing build_instances conductor method assumes that the instance"},{"line_number":49,"context_line":"already exists within a cell database and makes some assumptions about cleaning"},{"line_number":50,"context_line":"up resources on failure we will not complicate that method with an alternate"},{"line_number":51,"context_line":"path. Instead a new conductor method will be added which can take the task of"},{"line_number":52,"context_line":"querying the scheduler and then creating the instance and associated resources"},{"line_number":53,"context_line":"within the cell indicated by the scheduler."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":56,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_d8a0aca8","line":53,"range":{"start_line":51,"start_character":6,"end_line":53,"end_character":43},"in_reply_to":"1a95cdbc_5d51ee61","updated":"2016-10-04 17:02:24.000000000","message":"Ah, okay, that makes more sense yeah.","commit_id":"c33a2f39ca3c2792e3d19142262d2f7a049c271e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"39e3c6dd1bde813704ad70fab5647a88202cd2f5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"Because the existing build_instances conductor method assumes that the instance"},{"line_number":49,"context_line":"already exists within a cell database and makes some assumptions about cleaning"},{"line_number":50,"context_line":"up resources on failure we will not complicate that method with an alternate"},{"line_number":51,"context_line":"path. Instead a new conductor method will be added which can take the task of"},{"line_number":52,"context_line":"querying the scheduler and then creating the instance and associated resources"},{"line_number":53,"context_line":"within the cell indicated by the scheduler."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":56,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_5d51ee61","line":53,"range":{"start_line":51,"start_character":6,"end_line":53,"end_character":43},"in_reply_to":"1a95cdbc_70c89675","updated":"2016-10-04 16:51:34.000000000","message":"I can add more clarity here. The flow I plumbed out in my PoC was\n\n - Create the buildreq or whatever\n - Call the api-level conductor with that (new method)\n - That conductor will make the one and only scheduling call\n - That conductor will create the instance in the proper cell\n - That conductor will call to nova-compute exactly as the current conductor method (build_instances) does.\n - In the event of a reschedulable build failure nova-compute will call to the build_instances conductor method.","commit_id":"c33a2f39ca3c2792e3d19142262d2f7a049c271e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e7bf23e73abee2e3769985745620790cf4ee0ca8","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"We could query the scheduler at two points like in cellsv1. This creates more"},{"line_number":68,"context_line":"deployment complexity and creates an unnecessary coupling between the"},{"line_number":69,"context_line":"architecture of Nova and the scheduler."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Data model impact"},{"line_number":72,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_10b592cc","line":69,"updated":"2016-10-04 15:42:05.000000000","message":"On the other hand, deploying another conductor at the api level just for this also kinda sucks. Especially for single-cell deployments. I think that\u0027s likely to be a point of confusion for people. Not sure if we\u0027ll need this later for other things.\n\nI wonder if we could try to make it so that you can re-use your existing conductors for this if you want? Meaning, if they\u0027re just making the scheduling call via REST, and then calling to the conductors in the proper cell, maybe it \"doesn\u0027t matter\" if you somehow short-circuit your api nodes to call the single pool of conductors for this task?","commit_id":"c33a2f39ca3c2792e3d19142262d2f7a049c271e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"39e3c6dd1bde813704ad70fab5647a88202cd2f5","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"We could query the scheduler at two points like in cellsv1. This creates more"},{"line_number":68,"context_line":"deployment complexity and creates an unnecessary coupling between the"},{"line_number":69,"context_line":"architecture of Nova and the scheduler."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Data model impact"},{"line_number":72,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_3d0c2242","line":69,"in_reply_to":"1a95cdbc_10b592cc","updated":"2016-10-04 16:51:34.000000000","message":"Right now the only other thing I can think of that we may want to put in an api level conductor is something that will create a volume for an instance. Although that\u0027s still in the boot path so not really something separate from this.\n\nWe can certainly attempt to make it possible for deployers to share conductors between the API and a cell. For a single cell scenario I see no reason that wouldn\u0027t work.\n\nThe only thing I can see that would make it tricky for multiple cells is that whichever conductor calls the scheduler needs to be able to write to the cell db implied by the scheduling decision and call to a compute there. So as long as cross cell communication is in place it will work.\n\nIt\u0027s probably worth coming up with a general model of api-conductor-cell interaction and seeing what choices that provides us for deployment options.","commit_id":"c33a2f39ca3c2792e3d19142262d2f7a049c271e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"60657daefc4cf959d006e556f3f666a48866bb82","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"We could query the scheduler at two points like in cellsv1. This creates more"},{"line_number":68,"context_line":"deployment complexity and creates an unnecessary coupling between the"},{"line_number":69,"context_line":"architecture of Nova and the scheduler."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Data model impact"},{"line_number":72,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1a95cdbc_1899346f","line":69,"in_reply_to":"1a95cdbc_3d0c2242","updated":"2016-10-04 17:02:24.000000000","message":"Yeah, for multiple cell (or at least many-cell) deployments, separate is less of a deal. I just want to make sure we don\u0027t have to have eight conductor processes, half of which have one purpose for AIO deploy. That\u0027s just rather complicated.","commit_id":"c33a2f39ca3c2792e3d19142262d2f7a049c271e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2784ab20e968a549cd65552672117451529472f8","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* Operators want to partition their deployments into cells for scaling, failure"},{"line_number":28,"context_line":"  domain, and buildout reasons. When partitioned, we need to have flexible"},{"line_number":29,"context_line":"  scheduling that can make decisions on cells and hosts."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_f706371f","line":29,"updated":"2016-10-05 11:14:21.000000000","message":"Maybe we could note that the scheduler is global to the region (i.e. spans all the cells this nova-api knows about).","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84e242976be3211e82fd4d1b12071c40fae01725","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* Operators want to partition their deployments into cells for scaling, failure"},{"line_number":28,"context_line":"  domain, and buildout reasons. When partitioned, we need to have flexible"},{"line_number":29,"context_line":"  scheduling that can make decisions on cells and hosts."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_460496bf","line":29,"in_reply_to":"1a95cdbc_f706371f","updated":"2016-10-05 14:03:49.000000000","message":"Can do.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"76dfb174b53cebaeea23b605cc50a325323d29fe","unresolved":false,"context_lines":[{"line_number":55,"context_line":"The new boot workflow would look like the following:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":58,"context_line":" - Cast to the api level conductor to call the new method proposed here."},{"line_number":59,"context_line":"   - Conductor will call the scheduler once."},{"line_number":60,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":61,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_b35daceb","line":58,"range":{"start_line":58,"start_character":3,"end_line":58,"end_character":35},"updated":"2016-10-05 07:38:38.000000000","message":"Just to make it clear, it would use the DEFAULT/transport_url provided in the n-api node\u0027s nova.conf right?\n\nGiven we allow to pass a different transport URL for cells, I suppose that\u0027s reasonable to assume that, but maybe we should make it explicit (in a later respin if needed, of course).","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84e242976be3211e82fd4d1b12071c40fae01725","unresolved":false,"context_lines":[{"line_number":55,"context_line":"The new boot workflow would look like the following:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":58,"context_line":" - Cast to the api level conductor to call the new method proposed here."},{"line_number":59,"context_line":"   - Conductor will call the scheduler once."},{"line_number":60,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":61,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_a68d5a33","line":58,"range":{"start_line":58,"start_character":3,"end_line":58,"end_character":35},"in_reply_to":"1a95cdbc_b35daceb","updated":"2016-10-05 14:03:49.000000000","message":"That\u0027s correct. Because nova-api would not be talking to a specific cell it will rely on the configured transport_url and not one pulled from the db.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"76dfb174b53cebaeea23b605cc50a325323d29fe","unresolved":false,"context_lines":[{"line_number":60,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":61,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":62,"context_line":"     process. This cast will be the same as what is currently done in the"},{"line_number":63,"context_line":"     conductor build_instances method."},{"line_number":64,"context_line":"   - In the event of a reschedulable build failure nova-compute will cast to a"},{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_93b430f3","line":63,"updated":"2016-10-05 07:38:38.000000000","message":"we then need to consider deprecating the existing build_instances() conductor method once we consider cellsv2 as non-optional, which is something I\u0027d love for Ocata as a goal.\n\nGiven we\u0027ll keep build_instances() for a certain amount of time (at least from a rolling upgrade concern), I\u0027m a bit concerned by the code duplication that could occur between those two methods that only diverge by the workflow. Maybe using private helper methods could reduce that debt, but that\u0027s an implementation nit.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2784ab20e968a549cd65552672117451529472f8","unresolved":false,"context_lines":[{"line_number":60,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":61,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":62,"context_line":"     process. This cast will be the same as what is currently done in the"},{"line_number":63,"context_line":"     conductor build_instances method."},{"line_number":64,"context_line":"   - In the event of a reschedulable build failure nova-compute will cast to a"},{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_f7fc7740","line":63,"in_reply_to":"1a95cdbc_93b430f3","updated":"2016-10-05 11:14:21.000000000","message":"I was expecting to see the api-conductor call the cell-conductor\u0027s build_instances method, but I prefer this suggested flow.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84e242976be3211e82fd4d1b12071c40fae01725","unresolved":false,"context_lines":[{"line_number":60,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":61,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":62,"context_line":"     process. This cast will be the same as what is currently done in the"},{"line_number":63,"context_line":"     conductor build_instances method."},{"line_number":64,"context_line":"   - In the event of a reschedulable build failure nova-compute will cast to a"},{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_4659f659","line":63,"in_reply_to":"1a95cdbc_f7fc7740","updated":"2016-10-05 14:03:49.000000000","message":"John: the ordering on that would be backwards otherwise that\u0027s probably what we would do. But build_instances needs an instance in a db but we can\u0027t put it in the db until we have the scheduling decision that build_instances would retrive.\n\nSylvain: there is no plan to deprecate build_instances at this time. It is still going to be used for reschedules even when v2 is non optional.\n\nI think the risk of duplicated code is overestimated. You can see the current WIP at https://review.openstack.org/#/c/367557/9/nova/conductor/manager.py and other than calling the scheduler and casting to compute at the end there\u0027s not much similarity between the new conductor method and the current build_instances.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2784ab20e968a549cd65552672117451529472f8","unresolved":false,"context_lines":[{"line_number":63,"context_line":"     conductor build_instances method."},{"line_number":64,"context_line":"   - In the event of a reschedulable build failure nova-compute will cast to a"},{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":69,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_574feb91","line":66,"updated":"2016-10-05 11:14:21.000000000","message":"Hmm, I don\u0027t like having the maintain two very separate paths.\n\nMaybe we could restore the build request, and delete the instance in the child cell, and start the conductor api process again?\n\nThat build request would need to be different and include the volume and ports Nova already created, in a way that Nova doesn\u0027t think the user created them, but that seems feasible.\n\nAny IP address concerns will be sorted by the routed networks spec anyways, I believe.\n\nOh wait, there is more on this below...","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84e242976be3211e82fd4d1b12071c40fae01725","unresolved":false,"context_lines":[{"line_number":63,"context_line":"     conductor build_instances method."},{"line_number":64,"context_line":"   - In the event of a reschedulable build failure nova-compute will cast to a"},{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":69,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_e617624f","line":66,"in_reply_to":"1a95cdbc_574feb91","updated":"2016-10-05 14:03:49.000000000","message":"Answered below.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b6f60a41832ddb5577fe2f9fc2bc199fcab0659f","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":69,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"},{"line_number":70,"context_line":"rescheduling at a cell level will be a later effort."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Information about cells will need to be fed into the scheduler in order for it"},{"line_number":73,"context_line":"to account for that during its reschedule/migration placement decisions, but"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_62951e3f","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":52},"updated":"2016-10-04 21:22:28.000000000","message":"I understand that it will happen later, but some idea of what would be involved would be helpful here. Are you envisioning a separate scheduler service running per cell, or every cell having a connection to the main scheduler service?","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"76dfb174b53cebaeea23b605cc50a325323d29fe","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":69,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"},{"line_number":70,"context_line":"rescheduling at a cell level will be a later effort."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Information about cells will need to be fed into the scheduler in order for it"},{"line_number":73,"context_line":"to account for that during its reschedule/migration placement decisions, but"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_d3d158fd","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":52},"in_reply_to":"1a95cdbc_4f0cc694","updated":"2016-10-05 07:38:38.000000000","message":"Well, I\u0027m not concerned by where the scheduler should stand, but rather which one would call it. Cells v2 is very well designed to be top/down calls and we very try to refrain ourselves to do bottom/up calls. Here, if we say that computes would trigger reschedules, I\u0027m more worried by the workflow that would consist in the cell internals reaching the scheduler, and that is concerning me somehow.\n\nI\u0027d be in favor of rethinking how we manage our instance lifecycle and how we monitor it (think of the Tasks effort if you prefer) before doing that, because I can see a can of worms implementing that with lots of race conditions.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"change_message_id":"b8836baf71f062543e57dbdb2dc2236facf5f99d","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":69,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"},{"line_number":70,"context_line":"rescheduling at a cell level will be a later effort."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Information about cells will need to be fed into the scheduler in order for it"},{"line_number":73,"context_line":"to account for that during its reschedule/migration placement decisions, but"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_8cafbce2","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":52},"in_reply_to":"1a95cdbc_62951e3f","updated":"2016-10-04 22:17:14.000000000","message":"It\u0027s not clear to me where scheduler services will run. Obviously there will be one at the API level that has data about cells, so it can pick a cell. But if a rescheduling will happen at the cell level, does that indicate that there is a scheduler service running at the cell level, or does that get sent back up to the API level scheduler just with a constraint to be the same cell?\n\nWhile this spec isn\u0027t necessarily to address scale issues themselves, understanding where scheduler services are intended to live (and how to run more than just one at each level safely) is important information to judge this spec.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"85f8c0ced0f048cf308242241cbd65b91be7a20e","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":69,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"},{"line_number":70,"context_line":"rescheduling at a cell level will be a later effort."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Information about cells will need to be fed into the scheduler in order for it"},{"line_number":73,"context_line":"to account for that during its reschedule/migration placement decisions, but"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_4f0cc694","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":52},"in_reply_to":"1a95cdbc_8cafbce2","updated":"2016-10-04 22:59:59.000000000","message":"I\u0027ll clarify this.\n\nWhat will happen later is the ability to be able to move an instance from one cell to another in the event that it is rescheduled to another cell. That won\u0027t be something we allow for now. What\u0027s missing in that equation is the ability to move an instance record, and associated resources, from one db to another with the possible further restriction that network and volume resources will need to work in another cell.\n\nWhat I\u0027m envisioning is that there will be a scheduler service that is global to the deployment. Think of it as another service altogether separate from Nova similar to Cinder or Neutron. So an api level conductor and a cell level conductor are talking to the same service, but it\u0027s not quite correct to think of the scheduler service being api level or cell level.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"44bc3c5ad8a73406b7bbc9e867249219906a93f3","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":69,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"},{"line_number":70,"context_line":"rescheduling at a cell level will be a later effort."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Information about cells will need to be fed into the scheduler in order for it"},{"line_number":73,"context_line":"to account for that during its reschedule/migration placement decisions, but"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_ba7c8a73","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":52},"in_reply_to":"1a95cdbc_922501ad","updated":"2016-10-05 13:56:13.000000000","message":"@John, yeah, that\u0027s more along the lines of what I was imagining.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84e242976be3211e82fd4d1b12071c40fae01725","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":69,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"},{"line_number":70,"context_line":"rescheduling at a cell level will be a later effort."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Information about cells will need to be fed into the scheduler in order for it"},{"line_number":73,"context_line":"to account for that during its reschedule/migration placement decisions, but"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_1af73ed4","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":52},"in_reply_to":"1a95cdbc_922501ad","updated":"2016-10-05 14:03:49.000000000","message":"John: I think that\u0027s something we should leave for later. There\u0027s a fair amount of complexity in making sure we\u0027ve tracked and/or cleaned up resources created during build. So the simpler thing to do IMO is to keep using the existing reschedule path and accept the limitation of not rescheduling to a different cell. Long term we should look at something like you suggest.\n\nSylvain: I don\u0027t think of a cell querying the scheduler as a bottom/up call. In the same way that I don\u0027t think of a cell calling to Cinder as bottom/up. It\u0027s a sideways call.\n\nHowever, cell internals reaching the scheduler is inevitable I think. I don\u0027t think it needs to go beyond the scheduler knowing which host is in which cell, but I think that level of detail will be necessary. But the scheduler will be queried in the same way from the api as it is in the cell, and it will not be queried from both the api and the cell for a boot request unless there\u0027s a reschedule.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2784ab20e968a549cd65552672117451529472f8","unresolved":false,"context_lines":[{"line_number":65,"context_line":"     cell conductor to execute the current build_instances method just as it\u0027s"},{"line_number":66,"context_line":"     currently done."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Rescheduling will still take place within a cell via the normal"},{"line_number":69,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"},{"line_number":70,"context_line":"rescheduling at a cell level will be a later effort."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Information about cells will need to be fed into the scheduler in order for it"},{"line_number":73,"context_line":"to account for that during its reschedule/migration placement decisions, but"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_922501ad","line":70,"range":{"start_line":68,"start_character":0,"end_line":70,"end_character":52},"in_reply_to":"1a95cdbc_d3d158fd","updated":"2016-10-05 11:14:21.000000000","message":"Might it not be simpler to add the build request, delete the instance, and start again? Rather than having two code paths or generally leaving that till later?","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b6f60a41832ddb5577fe2f9fc2bc199fcab0659f","unresolved":false,"context_lines":[{"line_number":81,"context_line":"deployment complexity and creates an unnecessary coupling between the"},{"line_number":82,"context_line":"architecture of Nova and the scheduler."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":85,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"},{"line_number":86,"context_line":"is probably worth doing for the single cell case so another spec will propose"},{"line_number":87,"context_line":"doing this."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Data model impact"},{"line_number":90,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_42d662c6","line":87,"range":{"start_line":84,"start_character":0,"end_line":87,"end_character":11},"updated":"2016-10-04 21:22:28.000000000","message":"So in your steps above for the build workflow, nova-api casts to the conductor to carry out the rest of the steps. So if there are N cells and we get rid of the api-level conductor, how will that affect the workflow? IOW, will the cast go to all the conductors? Or will the api-level conductor be required when \u003e1 cell?","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"85f8c0ced0f048cf308242241cbd65b91be7a20e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"deployment complexity and creates an unnecessary coupling between the"},{"line_number":82,"context_line":"architecture of Nova and the scheduler."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":85,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"},{"line_number":86,"context_line":"is probably worth doing for the single cell case so another spec will propose"},{"line_number":87,"context_line":"doing this."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Data model impact"},{"line_number":90,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_afd8eaf0","line":87,"range":{"start_line":84,"start_character":0,"end_line":87,"end_character":11},"in_reply_to":"1a95cdbc_42d662c6","updated":"2016-10-04 22:59:59.000000000","message":"I\u0027m going to flesh this out in a separate spec. For this spec I would like to entertain the idea of doing it for a single cell deployment only.\n\nBut the cast would only go to one conductor and the only thing required of that conductor is that it can write to any cell db and send an RPC message to any cell compute. I\u0027ll go into more details in another spec.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2784ab20e968a549cd65552672117451529472f8","unresolved":false,"context_lines":[{"line_number":81,"context_line":"deployment complexity and creates an unnecessary coupling between the"},{"line_number":82,"context_line":"architecture of Nova and the scheduler."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":85,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"},{"line_number":86,"context_line":"is probably worth doing for the single cell case so another spec will propose"},{"line_number":87,"context_line":"doing this."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Data model impact"},{"line_number":90,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_b27cbd21","line":87,"range":{"start_line":84,"start_character":0,"end_line":87,"end_character":11},"in_reply_to":"1a95cdbc_5379c8fb","updated":"2016-10-05 11:14:21.000000000","message":"A slightly different take on this alternative, but I wonder about having the ability for a single parent process to run all nova services, except api and compute, to make life easier for smaller deployments, leaving a single nova-controller log. It could include a nova-conductor for the api and the child cell.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"76dfb174b53cebaeea23b605cc50a325323d29fe","unresolved":false,"context_lines":[{"line_number":81,"context_line":"deployment complexity and creates an unnecessary coupling between the"},{"line_number":82,"context_line":"architecture of Nova and the scheduler."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":85,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"},{"line_number":86,"context_line":"is probably worth doing for the single cell case so another spec will propose"},{"line_number":87,"context_line":"doing this."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Data model impact"},{"line_number":90,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_5379c8fb","line":87,"range":{"start_line":84,"start_character":0,"end_line":87,"end_character":11},"in_reply_to":"1a95cdbc_afd8eaf0","updated":"2016-10-05 07:38:38.000000000","message":"Here, you would just assume that the api conductor is one cell conductor. That looks like a deployment discussion honestly, not really a design problem.\n\nSee, say my deployment where : \n - default transport_url is foo:///\n - cell1 transport_url defaults to foo:///\n - cell2 transport_url is bar:///\n\nIn that case, you just need to start two nova-conductor processes, one listening on foo:/// and one on bar:///\n\nAPI casting the conductor would send it to the default URL which would cast to foo:/// looking for conductor targets, while then when the instance would be scheduled to cell2, it would read the CellMapping and use the cell2 transport URL.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84e242976be3211e82fd4d1b12071c40fae01725","unresolved":false,"context_lines":[{"line_number":81,"context_line":"deployment complexity and creates an unnecessary coupling between the"},{"line_number":82,"context_line":"architecture of Nova and the scheduler."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":85,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"},{"line_number":86,"context_line":"is probably worth doing for the single cell case so another spec will propose"},{"line_number":87,"context_line":"doing this."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Data model impact"},{"line_number":90,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_dab076f7","line":87,"range":{"start_line":84,"start_character":0,"end_line":87,"end_character":11},"in_reply_to":"1a95cdbc_b27cbd21","updated":"2016-10-05 14:03:49.000000000","message":"John: interesting thought, but not something I want to get into in this spec :)\n\nSylvain: I think we can make it interesting from a design pov, but not in this spec :)\n\nI wonder if I should just take this out of here as it\u0027s attracting more attention than I want it to. I\u0027d like to get into this in a separate spec.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"c9a3687661890f301f4396ab0e1148e889efb29d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"deployment complexity and creates an unnecessary coupling between the"},{"line_number":82,"context_line":"architecture of Nova and the scheduler."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":85,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"},{"line_number":86,"context_line":"is probably worth doing for the single cell case so another spec will propose"},{"line_number":87,"context_line":"doing this."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Data model impact"},{"line_number":90,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_b467f6e7","line":87,"range":{"start_line":84,"start_character":0,"end_line":87,"end_character":11},"in_reply_to":"1a95cdbc_dab076f7","updated":"2016-10-06 19:17:56.000000000","message":"I\u0027ve put up a follow on spec which discusses this point https://review.openstack.org/#/c/383419/ .","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2784ab20e968a549cd65552672117451529472f8","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* Add a conductor method to call the scheduler and then handle the latter half"},{"line_number":146,"context_line":"  of what the api currently does for a build request(create instance in db and"},{"line_number":147,"context_line":"  cast to the cell conductor)."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"* Update the conductor build_instances interface to take a scheduling decision"},{"line_number":150,"context_line":"  and not call the scheduler if it\u0027s provided. This allows for bypassing"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_5209b994","line":147,"updated":"2016-10-05 11:14:21.000000000","message":"This seems different to line 60 where there is no cast to the cell conductor?","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84e242976be3211e82fd4d1b12071c40fae01725","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"* Add a conductor method to call the scheduler and then handle the latter half"},{"line_number":146,"context_line":"  of what the api currently does for a build request(create instance in db and"},{"line_number":147,"context_line":"  cast to the cell conductor)."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"* Update the conductor build_instances interface to take a scheduling decision"},{"line_number":150,"context_line":"  and not call the scheduler if it\u0027s provided. This allows for bypassing"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_dab5d6cd","line":147,"in_reply_to":"1a95cdbc_5209b994","updated":"2016-10-05 14:03:49.000000000","message":"Yep. This was the thinking in M until I actually started coding it and realized that it would greatly complicate the current build_instances method to do it that way. It\u0027s much cleaner to just do everything in a new method.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"76dfb174b53cebaeea23b605cc50a325323d29fe","unresolved":false,"context_lines":[{"line_number":147,"context_line":"  cast to the cell conductor)."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"* Update the conductor build_instances interface to take a scheduling decision"},{"line_number":150,"context_line":"  and not call the scheduler if it\u0027s provided. This allows for bypassing"},{"line_number":151,"context_line":"  scheduling when it comes from the api conductor but still call the scheduler"},{"line_number":152,"context_line":"  when a compute requests a reschedule."},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_b35f6c71","line":150,"range":{"start_line":150,"start_character":29,"end_line":150,"end_character":45},"updated":"2016-10-05 07:38:38.000000000","message":"how do you know the scheduling decision is done ?","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"84e242976be3211e82fd4d1b12071c40fae01725","unresolved":false,"context_lines":[{"line_number":147,"context_line":"  cast to the cell conductor)."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"* Update the conductor build_instances interface to take a scheduling decision"},{"line_number":150,"context_line":"  and not call the scheduler if it\u0027s provided. This allows for bypassing"},{"line_number":151,"context_line":"  scheduling when it comes from the api conductor but still call the scheduler"},{"line_number":152,"context_line":"  when a compute requests a reschedule."},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_3a4a3ac6","line":150,"range":{"start_line":150,"start_character":29,"end_line":150,"end_character":45},"in_reply_to":"1a95cdbc_32b6eddc","updated":"2016-10-05 14:03:49.000000000","message":"John: correct. \n\nBut this is another holdover from the M spec that needs to change. If you look at the implementation of the new method in https://review.openstack.org/#/c/367557/9/nova/conductor/manager.py it\u0027s clear that trying to do this in build_instances is going to be a large refactor and a lot of if/else blocks.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2784ab20e968a549cd65552672117451529472f8","unresolved":false,"context_lines":[{"line_number":147,"context_line":"  cast to the cell conductor)."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"* Update the conductor build_instances interface to take a scheduling decision"},{"line_number":150,"context_line":"  and not call the scheduler if it\u0027s provided. This allows for bypassing"},{"line_number":151,"context_line":"  scheduling when it comes from the api conductor but still call the scheduler"},{"line_number":152,"context_line":"  when a compute requests a reschedule."},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a95cdbc_32b6eddc","line":150,"range":{"start_line":150,"start_character":29,"end_line":150,"end_character":45},"in_reply_to":"1a95cdbc_b35f6c71","updated":"2016-10-05 11:14:21.000000000","message":"Its more that you pass the return value from calling the scheduler into the build_instances interface, I assume? So you know its finished because you have given it the answer.","commit_id":"2863ebd76eb3fa9f1da70fc58127c39308c61968"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"24723bbac221c3581cea99e4e6ba0abf90652255","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* Operators want to partition their deployments into cells for scaling, failure"},{"line_number":28,"context_line":"  domain, and buildout reasons. When partitioned, we need to have flexible"},{"line_number":29,"context_line":"  region level scheduling that can make decisions on cells and hosts."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_d35bca85","line":29,"range":{"start_line":29,"start_character":2,"end_line":29,"end_character":8},"updated":"2016-10-12 19:06:04.000000000","message":"I don\u0027t like using \"region\" here because I think some people reading this will think of \"dallas or chicago\".","commit_id":"6f8c8d9a7096e8fec81832711f01e23b6400eab0"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"5ddc70e80e143d143ebe082490e1727701e7ee98","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* Operators want to partition their deployments into cells for scaling, failure"},{"line_number":28,"context_line":"  domain, and buildout reasons. When partitioned, we need to have flexible"},{"line_number":29,"context_line":"  region level scheduling that can make decisions on cells and hosts."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa6399be_45efedaf","line":29,"range":{"start_line":29,"start_character":2,"end_line":29,"end_character":8},"in_reply_to":"fa6399be_d35bca85","updated":"2016-10-12 19:27:08.000000000","message":"Fair point. I mean region as in the Keystone usage and I can clarify if I respin.","commit_id":"6f8c8d9a7096e8fec81832711f01e23b6400eab0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Proposed change"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The scheduler will be queried by Nova at the api level so that it knows which"},{"line_number":36,"context_line":"cell to pass the build to. The instance table exists in a cell and not in the"},{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_a79eb004","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":54},"updated":"2016-10-14 15:56:01.000000000","message":"nit: this reads a bit odd for me, it\u0027s all nova. I think I\u0027d say \"The nova-api service will query the nova-scheduler service...\" Or just \"The API will query the scheduler so...\".","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Proposed change"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The scheduler will be queried by Nova at the api level so that it knows which"},{"line_number":36,"context_line":"cell to pass the build to. The instance table exists in a cell and not in the"},{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_fd7f2364","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":54},"in_reply_to":"fa6399be_a79eb004","updated":"2016-10-17 14:39:34.000000000","message":"It\u0027s not the nova-api service though, it\u0027s the conductor at the api level. Which gets a bit confusing when you consider the next spec in this series which states that the cell conductor and api conductor can be the same one in some conditions.\n\nWe need to find a good terminology to distinguish the conceptual split between API level and cell level, which may not match up with the deployment split when conductors are shared.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The scheduler will be queried by Nova at the api level so that it knows which"},{"line_number":36,"context_line":"cell to pass the build to. The instance table exists in a cell and not in the"},{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_a7b5d07e","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":26},"updated":"2016-10-14 15:56:01.000000000","message":"Is there any reason why the API doesn\u0027t go through conductor to talk to the scheduler to get this info? Maybe the direct communication is best, it\u0027s just new and odd because the API doesn\u0027t talk to the scheduler directly today right?","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd4ba255660ee3fc2ccbee06b8d72a923fb4cb3d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The scheduler will be queried by Nova at the api level so that it knows which"},{"line_number":36,"context_line":"cell to pass the build to. The instance table exists in a cell and not in the"},{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_2d4a7e26","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":26},"in_reply_to":"fa6399be_722e15fc","updated":"2016-10-14 17:25:21.000000000","message":"Yes, after reading the entire spec this is saying the API talks to conductor which talks to scheduler in the \"API layer\" but I was reading it as nova-api talking directly to nova-scheduler. So maybe simply s/Nova/nova-conductor/ in this sentence would help.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1c6a8e74ed21892b660ba893c8a9d7296964c61b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The scheduler will be queried by Nova at the api level so that it knows which"},{"line_number":36,"context_line":"cell to pass the build to. The instance table exists in a cell and not in the"},{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_fc759e63","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":26},"in_reply_to":"fa6399be_a7b5d07e","updated":"2016-10-14 16:05:36.000000000","message":"API does currently pass to the conductor, which talks to the scheduler, which is what will happen going forward. The deal is, API currently creates the instance in the database, and we want to defer that to conductor as well.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ae744b54463dd5d4ab192661a2180e7bd0d55614","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The scheduler will be queried by Nova at the api level so that it knows which"},{"line_number":36,"context_line":"cell to pass the build to. The instance table exists in a cell and not in the"},{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_fcb2fe4a","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":26},"in_reply_to":"fa6399be_a7b5d07e","updated":"2016-10-14 16:21:30.000000000","message":"I thought it was happening in the API level conductor, not the API process. But this doesn\u0027t read like that, now you mention it.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"change_message_id":"51358dd72b0d3607ff57be0832866146ec213f4b","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The scheduler will be queried by Nova at the api level so that it knows which"},{"line_number":36,"context_line":"cell to pass the build to. The instance table exists in a cell and not in the"},{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_722e15fc","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":26},"in_reply_to":"fa6399be_fcb2fe4a","updated":"2016-10-14 17:06:04.000000000","message":"alaski described it such that the scheduler was a stand alone service and the interaction with it was similar to interaction with cinder or glance, speaking to a public API rather than messages passing on a bus. Perhaps some clarity could be given here.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The scheduler will continue to return a (host, node) tuple and the calling"},{"line_number":41,"context_line":"service will look up the host in a mapping table to determine which cell it is"},{"line_number":42,"context_line":"in. This means the current select_destinations interface will not need to"},{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_e728a89c","line":42,"range":{"start_line":40,"start_character":67,"end_line":42,"end_character":3},"updated":"2016-10-14 15:56:01.000000000","message":"So the API calls the scheduler and gets the host/node and then does a direct DB call to get the cell mapping for that host. Again, would it be better for API -\u003e conductor -\u003e scheduler, then conductor can translate the host to the cell mapping and return the cell to the API?","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The scheduler will continue to return a (host, node) tuple and the calling"},{"line_number":41,"context_line":"service will look up the host in a mapping table to determine which cell it is"},{"line_number":42,"context_line":"in. This means the current select_destinations interface will not need to"},{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_ddf17f03","line":42,"range":{"start_line":40,"start_character":67,"end_line":42,"end_character":3},"in_reply_to":"fa6399be_1cf892c2","updated":"2016-10-17 14:39:34.000000000","message":"Yep, what Dan said.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1c6a8e74ed21892b660ba893c8a9d7296964c61b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"api database, so to create an instance we will first need to know which cell to"},{"line_number":38,"context_line":"create it in."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"The scheduler will continue to return a (host, node) tuple and the calling"},{"line_number":41,"context_line":"service will look up the host in a mapping table to determine which cell it is"},{"line_number":42,"context_line":"in. This means the current select_destinations interface will not need to"},{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_1cf892c2","line":42,"range":{"start_line":40,"start_character":67,"end_line":42,"end_character":3},"in_reply_to":"fa6399be_e728a89c","updated":"2016-10-14 16:05:36.000000000","message":"Your first sentence is wrong, the second one is what is being proposed.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":41,"context_line":"service will look up the host in a mapping table to determine which cell it is"},{"line_number":42,"context_line":"in. This means the current select_destinations interface will not need to"},{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_99059412","line":45,"range":{"start_line":44,"start_character":9,"end_line":45,"end_character":40},"updated":"2016-10-14 15:56:01.000000000","message":"How do we tell if the conductor is outside of a cell? I guess I\u0027ve never thought about if conductor is in the cell level or the API level.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"change_message_id":"51358dd72b0d3607ff57be0832866146ec213f4b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"service will look up the host in a mapping table to determine which cell it is"},{"line_number":42,"context_line":"in. This means the current select_destinations interface will not need to"},{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_7215359a","line":45,"range":{"start_line":44,"start_character":9,"end_line":45,"end_character":40},"in_reply_to":"fa6399be_5c012a05","updated":"2016-10-14 17:06:04.000000000","message":"In the other spec it was described. What makes a conductor \"cell\" level vs \"api\" is simply which topic on the/which message bus its listening to.\n\nIf it only listens to a specific cell level topic, then it\u0027s for that cell. If it only listens to the API topic, then it\u0027s API. If it listens to both the cell level and the API level (single cell setup) then its both.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd4ba255660ee3fc2ccbee06b8d72a923fb4cb3d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"service will look up the host in a mapping table to determine which cell it is"},{"line_number":42,"context_line":"in. This means the current select_destinations interface will not need to"},{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_4d6c129c","line":45,"range":{"start_line":44,"start_character":9,"end_line":45,"end_character":40},"in_reply_to":"fa6399be_7215359a","updated":"2016-10-14 17:25:21.000000000","message":"OK, maybe this spec should point to that spec as pre-reading or \u0027if you want more info, see here\u0027 thing. I haven\u0027t read the other yet b/c of how the specs are stacked up.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ae744b54463dd5d4ab192661a2180e7bd0d55614","unresolved":false,"context_lines":[{"line_number":41,"context_line":"service will look up the host in a mapping table to determine which cell it is"},{"line_number":42,"context_line":"in. This means the current select_destinations interface will not need to"},{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_5c012a05","line":45,"range":{"start_line":44,"start_character":9,"end_line":45,"end_character":40},"in_reply_to":"fa6399be_99059412","updated":"2016-10-14 16:21:30.000000000","message":"Its listening to a different rabbit server? I guess this means we need a API level rabbit (well virtual host at least).","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1c6a8e74ed21892b660ba893c8a9d7296964c61b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"service will look up the host in a mapping table to determine which cell it is"},{"line_number":42,"context_line":"in. This means the current select_destinations interface will not need to"},{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_5cfe8aae","line":45,"range":{"start_line":44,"start_character":9,"end_line":45,"end_character":40},"in_reply_to":"fa6399be_99059412","updated":"2016-10-14 16:05:36.000000000","message":"See the next spec which explains it.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"},{"line_number":49,"context_line":"scheduler remains outside of either distinction. It can be thought of as a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_f944d04a","line":46,"range":{"start_line":46,"start_character":41,"end_line":46,"end_character":74},"updated":"2016-10-14 15:56:01.000000000","message":"So the conductor outside the cell passes the build request to conductor in the cell?","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"},{"line_number":49,"context_line":"scheduler remains outside of either distinction. It can be thought of as a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_9d0387be","line":46,"range":{"start_line":46,"start_character":41,"end_line":46,"end_character":74},"in_reply_to":"fa6399be_6dfe36af","updated":"2016-10-17 14:39:34.000000000","message":"I\u0027ve been using \"api level\" and \"cell level\" to qualify things, but if there\u0027s a more clear way to say it I will start doing that.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd4ba255660ee3fc2ccbee06b8d72a923fb4cb3d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"},{"line_number":49,"context_line":"scheduler remains outside of either distinction. It can be thought of as a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_6dfe36af","line":46,"range":{"start_line":46,"start_character":41,"end_line":46,"end_character":74},"in_reply_to":"fa6399be_bcc966ae","updated":"2016-10-14 17:25:21.000000000","message":"OK. Personally when we have the same services in different scopes (layers here), I find it easier to follow if they are qualified for context, i.e. API-layer conductor, or whatever. Just a suggestion, you don\u0027t need to change this for me.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1c6a8e74ed21892b660ba893c8a9d7296964c61b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"},{"line_number":49,"context_line":"scheduler remains outside of either distinction. It can be thought of as a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_dc28da35","line":46,"range":{"start_line":46,"start_character":41,"end_line":46,"end_character":74},"in_reply_to":"fa6399be_f944d04a","updated":"2016-10-14 16:05:36.000000000","message":"Yes, much like the api does today.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ae744b54463dd5d4ab192661a2180e7bd0d55614","unresolved":false,"context_lines":[{"line_number":43,"context_line":"change. Querying the scheduler will take place after the API has returned a"},{"line_number":44,"context_line":"response so the most reasonable thing to do is pass the build request to a"},{"line_number":45,"context_line":"conductor operating outside of any cell. The conductor will call the scheduler"},{"line_number":46,"context_line":"and then create the instance in the cell and pass the build request to it."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"},{"line_number":49,"context_line":"scheduler remains outside of either distinction. It can be thought of as a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_bcc966ae","line":46,"range":{"start_line":46,"start_character":41,"end_line":46,"end_character":74},"in_reply_to":"fa6399be_f944d04a","updated":"2016-10-14 16:21:30.000000000","message":"yeah, I think so.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"},{"line_number":49,"context_line":"scheduler remains outside of either distinction. It can be thought of as a"},{"line_number":50,"context_line":"separate service in the same way that Cinder/Neutron are. As a result the"},{"line_number":51,"context_line":"scheduler will require knowledge of all hosts in all cells. This is different"},{"line_number":52,"context_line":"from the cellsv1 architecture and may be a surprise for those familiar with"},{"line_number":53,"context_line":"that setup. A separate effort can address scalability for the scheduler and the"},{"line_number":54,"context_line":"potential for partitioning it along some boundary, which may be a cell."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_19e6e414","line":51,"range":{"start_line":50,"start_character":58,"end_line":51,"end_character":59},"updated":"2016-10-14 15:56:01.000000000","message":"The paragraph on L81 seems to contradict this.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ae744b54463dd5d4ab192661a2180e7bd0d55614","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"While much of Nova is being split between being api-level or cell-level the"},{"line_number":49,"context_line":"scheduler remains outside of either distinction. It can be thought of as a"},{"line_number":50,"context_line":"separate service in the same way that Cinder/Neutron are. As a result the"},{"line_number":51,"context_line":"scheduler will require knowledge of all hosts in all cells. This is different"},{"line_number":52,"context_line":"from the cellsv1 architecture and may be a surprise for those familiar with"},{"line_number":53,"context_line":"that setup. A separate effort can address scalability for the scheduler and the"},{"line_number":54,"context_line":"potential for partitioning it along some boundary, which may be a cell."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_dc5a9af1","line":51,"range":{"start_line":50,"start_character":58,"end_line":51,"end_character":59},"in_reply_to":"fa6399be_19e6e414","updated":"2016-10-14 16:21:30.000000000","message":"I read L81 as saying the scheduler needs to know what cell each host is in, it still needs to know about all hosts in all cells.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":50,"context_line":"separate service in the same way that Cinder/Neutron are. As a result the"},{"line_number":51,"context_line":"scheduler will require knowledge of all hosts in all cells. This is different"},{"line_number":52,"context_line":"from the cellsv1 architecture and may be a surprise for those familiar with"},{"line_number":53,"context_line":"that setup. A separate effort can address scalability for the scheduler and the"},{"line_number":54,"context_line":"potential for partitioning it along some boundary, which may be a cell."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Because the existing build_instances conductor method assumes that the instance"},{"line_number":57,"context_line":"already exists within a cell database and makes some assumptions about cleaning"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_799e00ba","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":71},"updated":"2016-10-14 15:56:01.000000000","message":"Thinking about performance impact, if you don\u0027t have cells v1 today you\u0027re already paying any penalty on the scheduler needing to know about all compute nodes right? So this is really only a downgrade for people that are already on cells v1 and would be moving to cells v2.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1c6a8e74ed21892b660ba893c8a9d7296964c61b","unresolved":false,"context_lines":[{"line_number":50,"context_line":"separate service in the same way that Cinder/Neutron are. As a result the"},{"line_number":51,"context_line":"scheduler will require knowledge of all hosts in all cells. This is different"},{"line_number":52,"context_line":"from the cellsv1 architecture and may be a surprise for those familiar with"},{"line_number":53,"context_line":"that setup. A separate effort can address scalability for the scheduler and the"},{"line_number":54,"context_line":"potential for partitioning it along some boundary, which may be a cell."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Because the existing build_instances conductor method assumes that the instance"},{"line_number":57,"context_line":"already exists within a cell database and makes some assumptions about cleaning"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_9cc02252","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":71},"in_reply_to":"fa6399be_799e00ba","updated":"2016-10-14 16:05:36.000000000","message":"Yeah, but placement should be a massive gain to offset the cellsv1 people\u0027s penalty.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":50,"context_line":"separate service in the same way that Cinder/Neutron are. As a result the"},{"line_number":51,"context_line":"scheduler will require knowledge of all hosts in all cells. This is different"},{"line_number":52,"context_line":"from the cellsv1 architecture and may be a surprise for those familiar with"},{"line_number":53,"context_line":"that setup. A separate effort can address scalability for the scheduler and the"},{"line_number":54,"context_line":"potential for partitioning it along some boundary, which may be a cell."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Because the existing build_instances conductor method assumes that the instance"},{"line_number":57,"context_line":"already exists within a cell database and makes some assumptions about cleaning"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_1de69716","line":54,"range":{"start_line":53,"start_character":12,"end_line":54,"end_character":71},"in_reply_to":"fa6399be_9cc02252","updated":"2016-10-17 14:39:34.000000000","message":"Correct on both counts.\n\nIt could also be said that ensuring that the scheduler scales is a pre-req for deprecating cellsv1, but that\u0027s still a separate effort to rearchitecting the boot process that\u0027s being proposed here.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":56,"context_line":"Because the existing build_instances conductor method assumes that the instance"},{"line_number":57,"context_line":"already exists within a cell database and makes some assumptions about cleaning"},{"line_number":58,"context_line":"up resources on failure we will not complicate that method with an alternate"},{"line_number":59,"context_line":"path. Instead a new conductor method will be added which can take the task of"},{"line_number":60,"context_line":"querying the scheduler and then creating the instance and associated resources"},{"line_number":61,"context_line":"within the cell indicated by the scheduler."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The new boot workflow would look like the following:"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_59b93c14","line":61,"range":{"start_line":59,"start_character":6,"end_line":61,"end_character":43},"updated":"2016-10-14 15:56:01.000000000","message":"I\u0027m getting this confused with the flow above, so does the compute API call this new conductor method? So the flow is:\n\n1. API calls scheduler to get host.\n2. API gets cell mapping for host.\n3. API calls \u0027external\u0027 conductor (this new method?) which creates the instance rather than the API creating the instance like it does today.\n\nI\u0027m confused because at the beginning of the spec it talks about the API calling the scheduler, but now it\u0027s also talking about conductor calling the scheduler, I guess the latter (new method) is just the new version of build_instances?","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":56,"context_line":"Because the existing build_instances conductor method assumes that the instance"},{"line_number":57,"context_line":"already exists within a cell database and makes some assumptions about cleaning"},{"line_number":58,"context_line":"up resources on failure we will not complicate that method with an alternate"},{"line_number":59,"context_line":"path. Instead a new conductor method will be added which can take the task of"},{"line_number":60,"context_line":"querying the scheduler and then creating the instance and associated resources"},{"line_number":61,"context_line":"within the cell indicated by the scheduler."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The new boot workflow would look like the following:"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_1dd057f7","line":61,"range":{"start_line":59,"start_character":6,"end_line":61,"end_character":43},"in_reply_to":"fa6399be_59b93c14","updated":"2016-10-17 14:39:34.000000000","message":"When I said API above what I meant is the api layer which will consist of nova-api and nova-conductor. However that could have been worded better.\n\nThe flow will be:\n\n1. nova-api receives boot request.\n2. nova-api creates and request spec and build request object and persists them.\n3. nova-api casts to nova-conductor (new method).\n4. nova-conductor calls the scheduler, and receives (host, node).\n4. nova-conductor looks up cell mapping for host to get cell info.\n5. nova-conductor creates the instance in that cell db, and updates the instance mapping in api db.\n6. nova-conductor casts to nova-compute corresponding to the host returned from the scheduler. The boot process is unchanged after this point.\n\nAnd after I type this out I realize it\u0027s written just below...","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":60,"context_line":"querying the scheduler and then creating the instance and associated resources"},{"line_number":61,"context_line":"within the cell indicated by the scheduler."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"The new boot workflow would look like the following:"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_d9438c11","line":63,"updated":"2016-10-14 15:56:01.000000000","message":"Maybe I should have just read this first....","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":63,"context_line":"The new boot workflow would look like the following:"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"},{"line_number":67,"context_line":"   api level conductor is whatever is configured in DEFAULT/transport_url."},{"line_number":68,"context_line":"   - Conductor will call the scheduler once."},{"line_number":69,"context_line":"   - Conductor will create the instance in the proper cell"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_395568c5","line":66,"range":{"start_line":66,"start_character":15,"end_line":66,"end_character":34},"updated":"2016-10-14 15:56:01.000000000","message":"aha","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ae744b54463dd5d4ab192661a2180e7bd0d55614","unresolved":false,"context_lines":[{"line_number":63,"context_line":"The new boot workflow would look like the following:"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"},{"line_number":67,"context_line":"   api level conductor is whatever is configured in DEFAULT/transport_url."},{"line_number":68,"context_line":"   - Conductor will call the scheduler once."},{"line_number":69,"context_line":"   - Conductor will create the instance in the proper cell"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_1c941241","line":66,"range":{"start_line":66,"start_character":15,"end_line":66,"end_character":34},"in_reply_to":"fa6399be_395568c5","updated":"2016-10-14 16:21:30.000000000","message":"yeah, thats there I got that from.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"},{"line_number":67,"context_line":"   api level conductor is whatever is configured in DEFAULT/transport_url."},{"line_number":68,"context_line":"   - Conductor will call the scheduler once."},{"line_number":69,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":70,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":71,"context_line":"     process. This cast will be the same as what is currently done in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_7961a0a8","line":68,"range":{"start_line":68,"start_character":5,"end_line":68,"end_character":44},"updated":"2016-10-14 15:56:01.000000000","message":"to get the host right?","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"change_message_id":"51358dd72b0d3607ff57be0832866146ec213f4b","unresolved":false,"context_lines":[{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"},{"line_number":67,"context_line":"   api level conductor is whatever is configured in DEFAULT/transport_url."},{"line_number":68,"context_line":"   - Conductor will call the scheduler once."},{"line_number":69,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":70,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":71,"context_line":"     process. This cast will be the same as what is currently done in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_b2e7cdaa","line":68,"range":{"start_line":68,"start_character":5,"end_line":68,"end_character":44},"in_reply_to":"fa6399be_7961a0a8","updated":"2016-10-14 17:06:04.000000000","message":"I believe that\u0027s right. The scheduler is choosing not just a cell, but also a host, unlike with v1 where scheduler would pick a cell, and then a cell scheduler would pick a host.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"},{"line_number":67,"context_line":"   api level conductor is whatever is configured in DEFAULT/transport_url."},{"line_number":68,"context_line":"   - Conductor will call the scheduler once."},{"line_number":69,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":70,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":71,"context_line":"     process. This cast will be the same as what is currently done in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_3d699b26","line":68,"range":{"start_line":68,"start_character":5,"end_line":68,"end_character":44},"in_reply_to":"fa6399be_a8e3dcd7","updated":"2016-10-17 14:39:34.000000000","message":"The scheduler does not currently know anything about cells, and it does not need to know anything for this spec to proceed.\n\nHowever, in order to get to multiple cells there will need to be some cells awareness to ensure that a reschedule/migration does not select a host in a different cell from where the instance currently is. Or the issue of moving an instance between cells will need to be solved. But one or the other of those needs to happen.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d300efe706e4049738abe47065344ab600dcb479","unresolved":false,"context_lines":[{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"},{"line_number":67,"context_line":"   api level conductor is whatever is configured in DEFAULT/transport_url."},{"line_number":68,"context_line":"   - Conductor will call the scheduler once."},{"line_number":69,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":70,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":71,"context_line":"     process. This cast will be the same as what is currently done in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_a8e3dcd7","line":68,"range":{"start_line":68,"start_character":5,"end_line":68,"end_character":44},"in_reply_to":"fa6399be_ad504e33","updated":"2016-10-14 17:49:42.000000000","message":"Right, my understanding was what Dan said.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c95dda497a0e2bdf18f670bddf2493eea514c133","unresolved":false,"context_lines":[{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"},{"line_number":67,"context_line":"   api level conductor is whatever is configured in DEFAULT/transport_url."},{"line_number":68,"context_line":"   - Conductor will call the scheduler once."},{"line_number":69,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":70,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":71,"context_line":"     process. This cast will be the same as what is currently done in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_ad504e33","line":68,"range":{"start_line":68,"start_character":5,"end_line":68,"end_character":44},"in_reply_to":"fa6399be_adcdae32","updated":"2016-10-14 17:38:55.000000000","message":"It\u0027s complicated. The scheduler doesn\u0027t really know about cells, it just knows about all the hosts. When it barfs up a host, that implies a cell. I think laski is implying that later we may teach the scheduler about cells as a top-level thing, but right now it only knows about hosts.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd4ba255660ee3fc2ccbee06b8d72a923fb4cb3d","unresolved":false,"context_lines":[{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"},{"line_number":67,"context_line":"   api level conductor is whatever is configured in DEFAULT/transport_url."},{"line_number":68,"context_line":"   - Conductor will call the scheduler once."},{"line_number":69,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":70,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":71,"context_line":"     process. This cast will be the same as what is currently done in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_cdb3c208","line":68,"range":{"start_line":68,"start_character":5,"end_line":68,"end_character":44},"in_reply_to":"fa6399be_b2e7cdaa","updated":"2016-10-14 17:25:21.000000000","message":"But to be clear, in this spec the scheduler is not cells-aware right? It\u0027s conductor that is cells aware based on the host that the scheduler picks.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6589,"name":"Jesse Keating","email":"jkeating@j2solutions.net","username":"jesse-keating"},"change_message_id":"4603184867abbb51294e67fcfcc8bf34ada96d95","unresolved":false,"context_lines":[{"line_number":65,"context_line":" - nova-api creates and persists a BuildRequest object, not an Instance."},{"line_number":66,"context_line":" - Cast to the api level conductor to execute the new method proposed here. The"},{"line_number":67,"context_line":"   api level conductor is whatever is configured in DEFAULT/transport_url."},{"line_number":68,"context_line":"   - Conductor will call the scheduler once."},{"line_number":69,"context_line":"   - Conductor will create the instance in the proper cell"},{"line_number":70,"context_line":"   - Conductor will cast to the proper nova-compute to continue the build"},{"line_number":71,"context_line":"     process. This cast will be the same as what is currently done in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_adcdae32","line":68,"range":{"start_line":68,"start_character":5,"end_line":68,"end_character":44},"in_reply_to":"fa6399be_cdb3c208","updated":"2016-10-14 17:35:50.000000000","message":"Hrm, I don\u0027t think that\u0027s right. The scheduler here is fully aware, and does the scheduling all the way down to the host within a cell. This is a departure from cells v1, and why the scheduler needs to be aware of all the hosts in all the cells.\n\nThere is one schedule per build attempt.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":78,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"},{"line_number":79,"context_line":"rescheduling at a cell level will be a later effort."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Information about cells will need to be fed into the scheduler in order for it"},{"line_number":82,"context_line":"to account for that during its reschedule/migration placement decisions, but"},{"line_number":83,"context_line":"that is outside the scope of this spec."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_79d60029","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":39},"updated":"2016-10-14 15:56:01.000000000","message":"Is this lumped in with the paragraph immediately preceding this one about not rescheduling across cells? If so, I\u0027d probably merge the two paragraphs, unless they are just completely separate and I\u0027m a dumbass.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":78,"context_line":"compute-\u003econductor loop, using the conductors within the cell. Adding"},{"line_number":79,"context_line":"rescheduling at a cell level will be a later effort."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Information about cells will need to be fed into the scheduler in order for it"},{"line_number":82,"context_line":"to account for that during its reschedule/migration placement decisions, but"},{"line_number":83,"context_line":"that is outside the scope of this spec."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_dde6dfaf","line":83,"range":{"start_line":81,"start_character":0,"end_line":83,"end_character":39},"in_reply_to":"fa6399be_79d60029","updated":"2016-10-17 14:39:34.000000000","message":"They could have been merged. I separated them because the first paragraph describes what is going to happen now, and the second describes a future effort. It just made sense to me, but isn\u0027t necessary.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"A reschedule could recreate a BuildRequest object, delete the instance and any"},{"line_number":94,"context_line":"associated resources in a cell, and then let the scheduler pick a new host in"},{"line_number":95,"context_line":"any cell. However there is a fair bit of complexity in doing that cleanup and"},{"line_number":96,"context_line":"resource tracking and I believe that this is an effort best left for a later"},{"line_number":97,"context_line":"time. It should also be noted that any time a build crosses a cell boundary"},{"line_number":98,"context_line":"there are potential races with deletion code so it should be done as little as"},{"line_number":99,"context_line":"possible."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_998e742c","line":96,"range":{"start_line":95,"start_character":10,"end_line":96,"end_character":17},"updated":"2016-10-14 15:56:01.000000000","message":"yeah I was just thinking, getting the resource tracker synced up with the scheduler during something like this, including any external service cleanup like ports or volumes, would be a mess.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":94,"context_line":"associated resources in a cell, and then let the scheduler pick a new host in"},{"line_number":95,"context_line":"any cell. However there is a fair bit of complexity in doing that cleanup and"},{"line_number":96,"context_line":"resource tracking and I believe that this is an effort best left for a later"},{"line_number":97,"context_line":"time. It should also be noted that any time a build crosses a cell boundary"},{"line_number":98,"context_line":"there are potential races with deletion code so it should be done as little as"},{"line_number":99,"context_line":"possible."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":102,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_b998986b","line":99,"range":{"start_line":97,"start_character":6,"end_line":99,"end_character":9},"updated":"2016-10-14 15:56:01.000000000","message":"In a cellsv1 world, but since we\u0027re not rescheduling across cells yet for cells v2 it\u0027s not an issue - but is another reason for not doing it right now.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"838073c99be8e655d2fdb5a43e969a0a7beced63","unresolved":false,"context_lines":[{"line_number":94,"context_line":"associated resources in a cell, and then let the scheduler pick a new host in"},{"line_number":95,"context_line":"any cell. However there is a fair bit of complexity in doing that cleanup and"},{"line_number":96,"context_line":"resource tracking and I believe that this is an effort best left for a later"},{"line_number":97,"context_line":"time. It should also be noted that any time a build crosses a cell boundary"},{"line_number":98,"context_line":"there are potential races with deletion code so it should be done as little as"},{"line_number":99,"context_line":"possible."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":102,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_4b675aea","line":99,"range":{"start_line":97,"start_character":6,"end_line":99,"end_character":9},"in_reply_to":"fa6399be_3d08bb2d","updated":"2016-10-17 18:35:09.000000000","message":"\u003e Cellsv2 was so problematic because there were a lot of places where changes crossed a cell boundary beyond just the boot process.\n\nDo you mean cells v1?","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"86d0020d5b0e48eac4aa9ed01cb94734632b3167","unresolved":false,"context_lines":[{"line_number":94,"context_line":"associated resources in a cell, and then let the scheduler pick a new host in"},{"line_number":95,"context_line":"any cell. However there is a fair bit of complexity in doing that cleanup and"},{"line_number":96,"context_line":"resource tracking and I believe that this is an effort best left for a later"},{"line_number":97,"context_line":"time. It should also be noted that any time a build crosses a cell boundary"},{"line_number":98,"context_line":"there are potential races with deletion code so it should be done as little as"},{"line_number":99,"context_line":"possible."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":102,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_066d57cc","line":99,"range":{"start_line":97,"start_character":6,"end_line":99,"end_character":9},"in_reply_to":"fa6399be_4b675aea","updated":"2016-10-17 18:52:58.000000000","message":"Yep, sorry.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ae744b54463dd5d4ab192661a2180e7bd0d55614","unresolved":false,"context_lines":[{"line_number":94,"context_line":"associated resources in a cell, and then let the scheduler pick a new host in"},{"line_number":95,"context_line":"any cell. However there is a fair bit of complexity in doing that cleanup and"},{"line_number":96,"context_line":"resource tracking and I believe that this is an effort best left for a later"},{"line_number":97,"context_line":"time. It should also be noted that any time a build crosses a cell boundary"},{"line_number":98,"context_line":"there are potential races with deletion code so it should be done as little as"},{"line_number":99,"context_line":"possible."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":102,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_bcb5e67e","line":99,"range":{"start_line":97,"start_character":6,"end_line":99,"end_character":9},"in_reply_to":"fa6399be_b998986b","updated":"2016-10-14 16:21:30.000000000","message":"in cells v1, with nova-network, you couldn\u0027t move the IP address outside the cell.\n\nBut routed networks stuff should replace all that nonsense.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":94,"context_line":"associated resources in a cell, and then let the scheduler pick a new host in"},{"line_number":95,"context_line":"any cell. However there is a fair bit of complexity in doing that cleanup and"},{"line_number":96,"context_line":"resource tracking and I believe that this is an effort best left for a later"},{"line_number":97,"context_line":"time. It should also be noted that any time a build crosses a cell boundary"},{"line_number":98,"context_line":"there are potential races with deletion code so it should be done as little as"},{"line_number":99,"context_line":"possible."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Rather than requiring an api level set of conductor nodes nova-api could"},{"line_number":102,"context_line":"communicate with the conductors within a cell thus simplifying deployment. This"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_3d08bb2d","line":99,"range":{"start_line":97,"start_character":6,"end_line":99,"end_character":9},"in_reply_to":"fa6399be_bcb5e67e","updated":"2016-10-17 14:39:34.000000000","message":"It\u0027s still possible that a race could crop up when the boot process passes from the api level into the cell in v2, but I believe we\u0027ve handled that properly so that there is no race currently. But it\u0027s an area that will need to be treated carefully.\n\nCellsv2 was so problematic because there were a lot of places where changes crossed a cell boundary beyond just the boot process.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":121,"context_line":"Notifications impact"},{"line_number":122,"context_line":"--------------------"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"None"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Other end user impact"},{"line_number":127,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_b9597890","line":124,"updated":"2016-10-14 15:56:01.000000000","message":"What about this happy fellow?\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/compute/api.py#L997\n\nDoes that move to the conductor since the instance won\u0027t yet exist and we could hit an InstanceNotFound while building/sending the notification:\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/notifications/base.py#L183","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ae744b54463dd5d4ab192661a2180e7bd0d55614","unresolved":false,"context_lines":[{"line_number":121,"context_line":"Notifications impact"},{"line_number":122,"context_line":"--------------------"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"None"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Other end user impact"},{"line_number":127,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_bc3a46e5","line":124,"in_reply_to":"fa6399be_b9597890","updated":"2016-10-14 16:21:30.000000000","message":"eww, I guess that moves with the other bits.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":121,"context_line":"Notifications impact"},{"line_number":122,"context_line":"--------------------"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"None"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Other end user impact"},{"line_number":127,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_c077d29d","line":124,"in_reply_to":"fa6399be_bc3a46e5","updated":"2016-10-17 14:39:34.000000000","message":"The notification will move in the code, but from an external pov the notifications should not change. Any that are currently sent should continue to be sent, and no new ones are being added.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Other end user impact"},{"line_number":127,"context_line":"---------------------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"None"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Performance Impact"},{"line_number":132,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_19afc42a","line":129,"updated":"2016-10-14 15:56:01.000000000","message":"Is there any workflow impact to the fact that the instance won\u0027t be created before the API response is sent back? I\u0027m thinking no because when listing instances if the Instance doesn\u0027t exist you get the BuildRequest:\n\nhttps://github.com/openstack/nova/blob/14.0.1/nova/compute/api.py#L2167\n\nMight be worth noting that.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ae744b54463dd5d4ab192661a2180e7bd0d55614","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Other end user impact"},{"line_number":127,"context_line":"---------------------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"None"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Performance Impact"},{"line_number":132,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_9c1e626e","line":129,"in_reply_to":"fa6399be_19afc42a","updated":"2016-10-14 16:21:30.000000000","message":"right, you should still see the instance in the list","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Other end user impact"},{"line_number":127,"context_line":"---------------------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"None"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Performance Impact"},{"line_number":132,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_20aecee7","line":129,"in_reply_to":"fa6399be_9c1e626e","updated":"2016-10-17 14:39:34.000000000","message":"Yep, the whole BuildRequest thing exists almost entirely to satisfy the API response before the instance is in a cell.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":136,"context_line":"Other deployer impact"},{"line_number":137,"context_line":"---------------------"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Nova-conductor will need to be deployed for use by nova-api."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Developer impact"},{"line_number":142,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_f905b045","line":139,"updated":"2016-10-14 15:56:01.000000000","message":"Hmm, local conductor is still a thing people can do, we haven\u0027t dropped/disabled that yet, but wouldn\u0027t it be a pre-requisite for doing this? Since cells v2 is still optional I guess maybe it wouldn\u0027t be required, but if this is going to be the new default code flow for cells v2 and non-cells v2, then it seems we\u0027d need to drop that support.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"b65851b8d06900725869dcbaf50f08f3d4545508","unresolved":false,"context_lines":[{"line_number":136,"context_line":"Other deployer impact"},{"line_number":137,"context_line":"---------------------"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Nova-conductor will need to be deployed for use by nova-api."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Developer impact"},{"line_number":142,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_605446ca","line":139,"in_reply_to":"fa6399be_1c0b322b","updated":"2016-10-17 14:39:34.000000000","message":"We could also take the path of not having this new method work on local conductor. So local conductor could still work for computes doing db proxying, but an actual conductor would need to be deployed for use by nova-api.\n\nOf course it\u0027s high time that local conductor was removed.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ae744b54463dd5d4ab192661a2180e7bd0d55614","unresolved":false,"context_lines":[{"line_number":136,"context_line":"Other deployer impact"},{"line_number":137,"context_line":"---------------------"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Nova-conductor will need to be deployed for use by nova-api."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Developer impact"},{"line_number":142,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_1c0b322b","line":139,"in_reply_to":"fa6399be_f905b045","updated":"2016-10-14 16:21:30.000000000","message":"Good point, we should add a dependency on removing that. We can remove now.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1c6a8e74ed21892b660ba893c8a9d7296964c61b","unresolved":false,"context_lines":[{"line_number":136,"context_line":"Other deployer impact"},{"line_number":137,"context_line":"---------------------"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"Nova-conductor will need to be deployed for use by nova-api."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"Developer impact"},{"line_number":142,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_fc983e7a","line":139,"in_reply_to":"fa6399be_f905b045","updated":"2016-10-14 16:05:36.000000000","message":"We\u0027ve deprecated, so yeah let\u0027s go ahead and remove, IMHO.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":166,"context_line":"* Update the compute api to not create the instance in the db during a build"},{"line_number":167,"context_line":"  request, and change it to cast to the new scheduler method."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* Ensure devstack is configured to that nova-api shares the cell level"},{"line_number":170,"context_line":"  conductors. This makes the single cell setup as simple as possible. A later"},{"line_number":171,"context_line":"  effort can investigate making this configurable in devstack for multiple cell"},{"line_number":172,"context_line":"  setups."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_b96c1809","line":169,"range":{"start_line":169,"start_character":32,"end_line":169,"end_character":34},"updated":"2016-10-14 15:56:01.000000000","message":"so","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"75e3992479aaf965c9abfd8e86fac41bb260699f","unresolved":false,"context_lines":[{"line_number":167,"context_line":"  request, and change it to cast to the new scheduler method."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* Ensure devstack is configured to that nova-api shares the cell level"},{"line_number":170,"context_line":"  conductors. This makes the single cell setup as simple as possible. A later"},{"line_number":171,"context_line":"  effort can investigate making this configurable in devstack for multiple cell"},{"line_number":172,"context_line":"  setups."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_b5199e8a","line":172,"range":{"start_line":170,"start_character":70,"end_line":172,"end_character":9},"updated":"2016-10-13 22:03:56.000000000","message":"I imagine a variable for devstack local.conf, for example, NOVA_CELLS \u003d 2, which would deploy two cells, two conductors (one for api and one for cell), and similarly two message queues. And we could use that config in our testing jobs to fully test against the isolated conductors and message queues.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":167,"context_line":"  request, and change it to cast to the new scheduler method."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* Ensure devstack is configured to that nova-api shares the cell level"},{"line_number":170,"context_line":"  conductors. This makes the single cell setup as simple as possible. A later"},{"line_number":171,"context_line":"  effort can investigate making this configurable in devstack for multiple cell"},{"line_number":172,"context_line":"  setups."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_b93a58e5","line":172,"range":{"start_line":170,"start_character":70,"end_line":172,"end_character":9},"in_reply_to":"fa6399be_b5199e8a","updated":"2016-10-14 15:56:01.000000000","message":"I think I\u0027d just work it into the multinode job - we\u0027re going to need a cellsv2 multinode job for the multicell case, but we could also just do that today where one primary node is the API node with api/conductor/scheduler and the other node is the single-cell node.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9b330f1891df83b94f8f1a174dbddec013ce0588","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Since this is designed to be an internal re-architecting of Nova with no user"},{"line_number":185,"context_line":"visible changes the current suite of Tempest or functional tests should"},{"line_number":186,"context_line":"suffice. At some point we will want to look at how to test multiple cells or"},{"line_number":187,"context_line":"potentially exposing the concept of a cell in the API and we will tackle"},{"line_number":188,"context_line":"testing requirements then."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa6399be_7c298e89","line":188,"range":{"start_line":186,"start_character":9,"end_line":188,"end_character":26},"updated":"2016-10-14 15:56:01.000000000","message":"I think the point about a cells v2 multinode job above would go a long way in covering the changes here.","commit_id":"37288c16c1bbc8db347e1435a66ce90940ec201e"}]}
