)]}'
{"specs/liberty/approved/ironic-multiple-compute-hosts.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"db6c8119c44d45626ab90751e8076dccb74e558a","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/ironic-multiple-compute-hosts"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Today, the Ironic virt driver is only supported. This is clearly not viable"},{"line_number":14,"context_line":"for an environment of any interesting scale; there\u0027s no HA, everything"},{"line_number":15,"context_line":"fails if the compute host goes down. Let\u0027s fix that."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_2c3e7f8b","line":13,"updated":"2015-06-23 14:22:17.000000000","message":"Sorry, I can\u0027t get this phrase \"Ironic virt driver is only supported\". Did you mean to say that only one compute process is supported? Or did you mean something about Ironic driver support level? :)","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"606de37e21d94f57f4bba043ca119b288c3aeb93","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/ironic-multiple-compute-hosts"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Today, the Ironic virt driver is only supported. This is clearly not viable"},{"line_number":14,"context_line":"for an environment of any interesting scale; there\u0027s no HA, everything"},{"line_number":15,"context_line":"fails if the compute host goes down. Let\u0027s fix that."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_f9e858e4","line":13,"in_reply_to":"fa32b979_2c3e7f8b","updated":"2015-06-23 14:54:40.000000000","message":"Words are hard. Will fix.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"a162472dcf6760c3940dbf38ce010e9e31ceed7b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Computers suck. They die sometimes. They crash processes at random. Solar"},{"line_number":22,"context_line":"flares can make bad things happen."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Running only one instance of nova-compute for an entire Ironic environment"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_ad04ca17","line":21,"updated":"2015-07-01 14:56:46.000000000","message":"maybe just me, but I\u0027d prefer if you used some other word here. How about s/suck/are unreliable:)/?","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"40dbd0b33d9d75e88302bf2b523a263c3eb6d835","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Problem description"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Computers suck. They die sometimes. They crash processes at random. Solar"},{"line_number":22,"context_line":"flares can make bad things happen."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Running only one instance of nova-compute for an entire Ironic environment"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_478b7968","line":21,"in_reply_to":"ba3cc151_ad04ca17","updated":"2015-07-02 02:40:28.000000000","message":"Fair, thank you for calling me out on this :)","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"db6c8119c44d45626ab90751e8076dccb74e558a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Computers suck. They die sometimes. They crash processes at random. Solar"},{"line_number":22,"context_line":"flares can make bad things happen."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Running only one instance of nova-compute for an entire Ironic environment"},{"line_number":25,"context_line":"is going to be a bad time. The Ironic virt driver currently assumes that only"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_4c5ae3f3","line":22,"updated":"2015-06-23 14:22:17.000000000","message":"The best problem description ever, you could just finish here :D","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"110fc651d0dc250590fea9ea7a3caf61fc83e6e4","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Computers suck. They die sometimes. They crash processes at random. Solar"},{"line_number":22,"context_line":"flares can make bad things happen."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Running only one instance of nova-compute for an entire Ironic environment"},{"line_number":25,"context_line":"is going to be a bad time. The Ironic virt driver currently assumes that only"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_fabefbac","line":22,"in_reply_to":"fa32b979_4c5ae3f3","updated":"2015-06-23 20:12:09.000000000","message":"agreed :)","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"110fc651d0dc250590fea9ea7a3caf61fc83e6e4","unresolved":false,"context_lines":[{"line_number":25,"context_line":"is going to be a bad time. The Ironic virt driver currently assumes that only"},{"line_number":26,"context_line":"one nova-compute process can run at once. It exposes all resources from an"},{"line_number":27,"context_line":"Ironic installation to the resource tracker, without the ability to split"},{"line_number":28,"context_line":"those resources out into many compute hosts."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_5a092783","line":28,"updated":"2015-06-23 20:12:09.000000000","message":"Here, and elsewhere, I would avoid using the term \"compute host\" when actually describing the nova-compute daemon. In Nova, a compute host generally means \"the hypervisor that is providing compute resources\". So, you will want to be specific here that you mean \"the nova-compute daemon\" or \"the nova-compute service\"","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c1cbc22e8e54e53bcd835a5de46bd1d3aa0e6a8d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"is going to be a bad time. The Ironic virt driver currently assumes that only"},{"line_number":26,"context_line":"one nova-compute process can run at once. It exposes all resources from an"},{"line_number":27,"context_line":"Ironic installation to the resource tracker, without the ability to split"},{"line_number":28,"context_line":"those resources out into many compute hosts."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Use Cases"},{"line_number":31,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_62ec72bb","line":28,"in_reply_to":"fa32b979_5a092783","updated":"2015-06-24 04:17:29.000000000","message":"Got it.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"110fc651d0dc250590fea9ea7a3caf61fc83e6e4","unresolved":false,"context_lines":[{"line_number":41,"context_line":"This falls into a couple of priorities:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"* Scheduler: this will help the Ironic driver fit into the new scheduler"},{"line_number":44,"context_line":"  model by simplifying how resources are reported (more on that later)."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Upgrades: The ability to upgrade a nova-compute host without bringing down"},{"line_number":47,"context_line":"  the cloud seems important."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_3a254308","line":44,"updated":"2015-06-23 20:12:09.000000000","message":"Eh, kinda :)","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"110fc651d0dc250590fea9ea7a3caf61fc83e6e4","unresolved":false,"context_lines":[{"line_number":44,"context_line":"  model by simplifying how resources are reported (more on that later)."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Upgrades: The ability to upgrade a nova-compute host without bringing down"},{"line_number":47,"context_line":"  the cloud seems important."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* Fixing more bugs: Ironic breaking Nova\u0027s model of the world (specifically"},{"line_number":50,"context_line":"  around failure domains) seems like a good bug to fix."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_bacdd332","line":47,"updated":"2015-06-23 20:12:09.000000000","message":"It is indeed, important, and it is on the priority list:\n\nhttps://etherpad.openstack.org/p/liberty-nova-priorities-tracking","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c1cbc22e8e54e53bcd835a5de46bd1d3aa0e6a8d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"  model by simplifying how resources are reported (more on that later)."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Upgrades: The ability to upgrade a nova-compute host without bringing down"},{"line_number":47,"context_line":"  the cloud seems important."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"* Fixing more bugs: Ironic breaking Nova\u0027s model of the world (specifically"},{"line_number":50,"context_line":"  around failure domains) seems like a good bug to fix."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_42efeeb0","line":47,"in_reply_to":"fa32b979_bacdd332","updated":"2015-06-24 04:17:29.000000000","message":"Yep, that\u0027s why I mentioned it here :)","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"110fc651d0dc250590fea9ea7a3caf61fc83e6e4","unresolved":false,"context_lines":[{"line_number":53,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"In general, a nova-compute running the Ironic virt driver should expose"},{"line_number":56,"context_line":"(total resources)/(number of compute hosts). This allows for resources to be"},{"line_number":57,"context_line":"sharded across multiple compute hosts without over-reporting resources. Any"},{"line_number":58,"context_line":"compute host may build to any Ironic node; once an instance is placed on a"},{"line_number":59,"context_line":"compute host it is locked to that host."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_5a6a87ee","line":56,"updated":"2015-06-23 20:12:09.000000000","message":"Let\u0027s be more specific :)\n\nHow about this instead?\n\n A nova-compute service running the Ironic virt driver should advertise\n that it manages a subset of the total number of bare-metal nodes that\n the deployment of Ironic provides. This means that each nova-compute service\u0027s\n resource tracker object should advertise **at most** (TOT / X) available resources,\n where TOT \u003d total number of bare metal nodes, and X i\u003d \n number of nova-compute service daemons running the Ironic virt driver.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c1cbc22e8e54e53bcd835a5de46bd1d3aa0e6a8d","unresolved":false,"context_lines":[{"line_number":53,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"In general, a nova-compute running the Ironic virt driver should expose"},{"line_number":56,"context_line":"(total resources)/(number of compute hosts). This allows for resources to be"},{"line_number":57,"context_line":"sharded across multiple compute hosts without over-reporting resources. Any"},{"line_number":58,"context_line":"compute host may build to any Ironic node; once an instance is placed on a"},{"line_number":59,"context_line":"compute host it is locked to that host."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_ecef1eaf","line":56,"in_reply_to":"fa32b979_5a6a87ee","updated":"2015-06-24 04:17:29.000000000","message":"Sounds good to me :)","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"92a25bcbeaafe781b5e15f419f95d4a2d822cb6e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"(total resources)/(number of compute hosts). This allows for resources to be"},{"line_number":57,"context_line":"sharded across multiple compute hosts without over-reporting resources. Any"},{"line_number":58,"context_line":"compute host may build to any Ironic node; once an instance is placed on a"},{"line_number":59,"context_line":"compute host it is locked to that host."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"This gives us a case where losing one compute host in the cluster fails no"},{"line_number":62,"context_line":"builds, and only fails actions for existing instances that host manages."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_4995e784","line":59,"updated":"2015-06-23 18:15:03.000000000","message":"Ironic is not unique in this issue, we have other cluserted \u0027virt\u0027 drivers. Lets solve for the general case instead of making ironic even more of a special case.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c1cbc22e8e54e53bcd835a5de46bd1d3aa0e6a8d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"(total resources)/(number of compute hosts). This allows for resources to be"},{"line_number":57,"context_line":"sharded across multiple compute hosts without over-reporting resources. Any"},{"line_number":58,"context_line":"compute host may build to any Ironic node; once an instance is placed on a"},{"line_number":59,"context_line":"compute host it is locked to that host."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"This gives us a case where losing one compute host in the cluster fails no"},{"line_number":62,"context_line":"builds, and only fails actions for existing instances that host manages."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_6c322e60","line":59,"in_reply_to":"fa32b979_4995e784","updated":"2015-06-24 04:17:29.000000000","message":"Okay; shall we change the entire document I guess?","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a7cb736da4d15ccc8cb62094607915b2670365e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"(total resources)/(number of compute hosts). This allows for resources to be"},{"line_number":57,"context_line":"sharded across multiple compute hosts without over-reporting resources. Any"},{"line_number":58,"context_line":"compute host may build to any Ironic node; once an instance is placed on a"},{"line_number":59,"context_line":"compute host it is locked to that host."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"This gives us a case where losing one compute host in the cluster fails no"},{"line_number":62,"context_line":"builds, and only fails actions for existing instances that host manages."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_e20de28f","line":59,"in_reply_to":"fa32b979_6c322e60","updated":"2015-06-24 04:19:53.000000000","message":"Actually, going back a bit; these changes are all in the virt driver. I don\u0027t think it\u0027s reasonable to discuss changes to two virt drivers here.\n\nIf other clustered virt drivers want to do the same thing, that\u0027s fine, they can. However they have external schedulers, etc. Presumably there\u0027s better ways to solve this problem for those drivers.\n\nI\u0027d prefer to keep this simple, and thus limited to the ironic case.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"110fc651d0dc250590fea9ea7a3caf61fc83e6e4","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Now, Ironic is unique in that it must match flavors exactly to a given Ironic"},{"line_number":65,"context_line":"node. For example, an instance with 4 GB of RAM may not be built on a node"},{"line_number":66,"context_line":"with 8 GB of RAM. The previous proposal fails here; a host reporting a pool of"},{"line_number":67,"context_line":"resources may not have an exact match available."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"To solve this, we can restrict a compute host to a given type of hardware; for"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_5a3847ee","line":66,"updated":"2015-06-23 20:12:09.000000000","message":"Might be good to link to the previous proposal.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c1cbc22e8e54e53bcd835a5de46bd1d3aa0e6a8d","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Now, Ironic is unique in that it must match flavors exactly to a given Ironic"},{"line_number":65,"context_line":"node. For example, an instance with 4 GB of RAM may not be built on a node"},{"line_number":66,"context_line":"with 8 GB of RAM. The previous proposal fails here; a host reporting a pool of"},{"line_number":67,"context_line":"resources may not have an exact match available."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"To solve this, we can restrict a compute host to a given type of hardware; for"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_acdef60e","line":66,"in_reply_to":"fa32b979_5a3847ee","updated":"2015-06-24 04:17:29.000000000","message":"By previous proposal, I mean the proposal so far. Can change.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"110fc651d0dc250590fea9ea7a3caf61fc83e6e4","unresolved":false,"context_lines":[{"line_number":69,"context_line":"To solve this, we can restrict a compute host to a given type of hardware; for"},{"line_number":70,"context_line":"the sake of this document let\u0027s call that a flavor (the definition may be"},{"line_number":71,"context_line":"fuzzier in reality). We then can set limits on the compute host for what sorts"},{"line_number":72,"context_line":"of builds that host can do, to lock it in to only building that flavor."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Now we have the same failure case as before; but only one flavor lost instead"},{"line_number":75,"context_line":"of the entire cloud. Now we can go back to reporting the \"average\" resources"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_7a3d0bdc","line":72,"updated":"2015-06-23 20:12:09.000000000","message":"++","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"db6c8119c44d45626ab90751e8076dccb74e558a","unresolved":false,"context_lines":[{"line_number":76,"context_line":"available from each host (total resources for flavor x)/(number of computes)."},{"line_number":77,"context_line":"Lock those in to a host aggregate for that flavor, and now builds go through"},{"line_number":78,"context_line":"to the right compute easily, and the host aggregate gives us a way to query how"},{"line_number":79,"context_line":"many compute hosts are available."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_0c7b7b29","line":79,"updated":"2015-06-23 14:22:17.000000000","message":"So if there is only one flavor, it will be served by exactly one compute node? Or do you allow further split? For tripleo having one flavor for all nodes is not something really surprising..","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"40dbd0b33d9d75e88302bf2b523a263c3eb6d835","unresolved":false,"context_lines":[{"line_number":76,"context_line":"available from each host (total resources for flavor x)/(number of computes)."},{"line_number":77,"context_line":"Lock those in to a host aggregate for that flavor, and now builds go through"},{"line_number":78,"context_line":"to the right compute easily, and the host aggregate gives us a way to query how"},{"line_number":79,"context_line":"many compute hosts are available."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_67df9d69","line":79,"in_reply_to":"ba3cc151_8b39aea6","updated":"2015-07-02 02:40:28.000000000","message":"Indeed. I don\u0027t love it. But I think it\u0027s the best way to do it.\n\nWill update words to be clearer.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"606de37e21d94f57f4bba043ca119b288c3aeb93","unresolved":false,"context_lines":[{"line_number":76,"context_line":"available from each host (total resources for flavor x)/(number of computes)."},{"line_number":77,"context_line":"Lock those in to a host aggregate for that flavor, and now builds go through"},{"line_number":78,"context_line":"to the right compute easily, and the host aggregate gives us a way to query how"},{"line_number":79,"context_line":"many compute hosts are available."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_f996184b","line":79,"in_reply_to":"fa32b979_0c7b7b29","updated":"2015-06-23 14:54:40.000000000","message":"This paragraph details how one may run a cluster of compute hosts for each flavor. Might need better words.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"a162472dcf6760c3940dbf38ce010e9e31ceed7b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"available from each host (total resources for flavor x)/(number of computes)."},{"line_number":77,"context_line":"Lock those in to a host aggregate for that flavor, and now builds go through"},{"line_number":78,"context_line":"to the right compute easily, and the host aggregate gives us a way to query how"},{"line_number":79,"context_line":"many compute hosts are available."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_8b39aea6","line":79,"in_reply_to":"fa32b979_f996184b","updated":"2015-07-01 14:56:46.000000000","message":"I don\u0027t understand this paragraph but maybe that\u0027s cuz it needs better words :)\n\nIf you have 5 nova-compute services and each service handles a different flavor, is the \u0027average\u0027 resources for nova-compute-1 \u003d \u003ctotal-resources-for-flavor-A\u003e / 5? Or maybe you mean the number of nova-computes in a host aggregate (that represents one flavour).\n\nThat\u0027s a lot of host aggregates if you have a lot of flavours. Apparently, some companies have a lot ;)","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"a162472dcf6760c3940dbf38ce010e9e31ceed7b","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"We should fall back to the original model if a host aggregate isn\u0027t found,"},{"line_number":84,"context_line":"for backwards compatibility and making this usable without host aggregates"},{"line_number":85,"context_line":"configured properly."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_cb3256f2","line":83,"updated":"2015-07-01 14:56:46.000000000","message":"by \u0027original model\u0027, do you mean the \u0027previous proposal\u0027 or w/o what is proposed in this spec?","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"40dbd0b33d9d75e88302bf2b523a263c3eb6d835","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"We should fall back to the original model if a host aggregate isn\u0027t found,"},{"line_number":84,"context_line":"for backwards compatibility and making this usable without host aggregates"},{"line_number":85,"context_line":"configured properly."},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_a7f045fe","line":83,"in_reply_to":"ba3cc151_cb3256f2","updated":"2015-07-02 02:40:28.000000000","message":"\"Before this spec\"","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"db6c8119c44d45626ab90751e8076dccb74e558a","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Add a host aggregate for each flavor"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"* Deploy at least one, preferably more, compute hosts per flavor."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Having zero host aggregates (or lack of necessary data) configured will fall"},{"line_number":147,"context_line":"back to the old behavior for compatibility."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_ecd2d7ff","line":144,"updated":"2015-06-23 14:22:17.000000000","message":"ah, so many hosts per flavor are possible... how do you shard between them (sorry if it\u0027s something obvious for people who know Nova better...)","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"606de37e21d94f57f4bba043ca119b288c3aeb93","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Add a host aggregate for each flavor"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"* Deploy at least one, preferably more, compute hosts per flavor."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Having zero host aggregates (or lack of necessary data) configured will fall"},{"line_number":147,"context_line":"back to the old behavior for compatibility."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa32b979_397fa018","line":144,"in_reply_to":"fa32b979_ecd2d7ff","updated":"2015-06-23 14:54:40.000000000","message":"See lines 74-79, though I could word it better.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"a162472dcf6760c3940dbf38ce010e9e31ceed7b","unresolved":false,"context_lines":[{"line_number":144,"context_line":"* Deploy at least one, preferably more, compute hosts per flavor."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Having zero host aggregates (or lack of necessary data) configured will fall"},{"line_number":147,"context_line":"back to the old behavior for compatibility."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Developer impact"},{"line_number":150,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_2102013e","line":147,"updated":"2015-07-01 14:56:46.000000000","message":"I was wondering what would happen if there was a flavour that wasn\u0027t supported by any host aggregate. Presumably we\u0027ll fail politely if there are misconfigured host aggregates, and maybe that\u0027s what we\u0027d do if a requested flavor isn\u0027t supported by a host aggregate. And/or can we have a mix of host aggregates and free-agent-nova-computes for the \u0027rest of the flavors\u0027?\n\nI wasn\u0027t going to admit it but I will :) I don\u0027t know how host aggregates work in Nova. So if any of my comments/questions seem \u0027not useful\u0027...","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"40dbd0b33d9d75e88302bf2b523a263c3eb6d835","unresolved":false,"context_lines":[{"line_number":144,"context_line":"* Deploy at least one, preferably more, compute hosts per flavor."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Having zero host aggregates (or lack of necessary data) configured will fall"},{"line_number":147,"context_line":"back to the old behavior for compatibility."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Developer impact"},{"line_number":150,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_e7388da2","line":147,"in_reply_to":"ba3cc151_2102013e","updated":"2015-07-02 02:40:28.000000000","message":"I think it\u0027s going to have to be all-or-nothing. Nova would report \"no valid host\" for this request as it won\u0027t be able to find something to schedule to.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"7fd9c14cd036b3fc7ed9042a28a3aaac7e22b643","unresolved":false,"context_lines":[{"line_number":144,"context_line":"* Deploy at least one, preferably more, compute hosts per flavor."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Having zero host aggregates (or lack of necessary data) configured will fall"},{"line_number":147,"context_line":"back to the old behavior for compatibility."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Developer impact"},{"line_number":150,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_a7e4c5df","line":147,"in_reply_to":"ba3cc151_e7388da2","updated":"2015-07-02 02:53:57.000000000","message":"This might be doable. Need to research it more.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"a162472dcf6760c3940dbf38ce010e9e31ceed7b","unresolved":false,"context_lines":[{"line_number":171,"context_line":"* Teach driver about host aggregates and other compute hosts."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"* Change driver to report resources for a single flavor based on host"},{"line_number":174,"context_line":"  aggregate information, if that information is present."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"* Write deployer documentation around the feature."},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_c647abba","line":174,"updated":"2015-07-01 14:56:46.000000000","message":"It isn\u0027t explicit except here, that we\u0027re only going to make changes to the ironic virt driver. (Don\u0027t know whether it is worth mentioning this in the \"Proposed change\" section.)","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"40dbd0b33d9d75e88302bf2b523a263c3eb6d835","unresolved":false,"context_lines":[{"line_number":171,"context_line":"* Teach driver about host aggregates and other compute hosts."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"* Change driver to report resources for a single flavor based on host"},{"line_number":174,"context_line":"  aggregate information, if that information is present."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"* Write deployer documentation around the feature."},{"line_number":177,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba3cc151_c7430912","line":174,"in_reply_to":"ba3cc151_c647abba","updated":"2015-07-02 02:40:28.000000000","message":"+1, thanks.","commit_id":"c44cbf8c1ae1652dfff30ed300b4dc20e6198aaf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"38ee474acc301d78ff5d3a25a441e8bdf0487ec4","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Operators running imperfect code on imperfect computers in imperfect"},{"line_number":35,"context_line":"environments (i.e. all operators) need to be able to keep their cloud up when"},{"line_number":36,"context_line":"a nova-compute process goes down, whether intentional (upgrades) or"},{"line_number":37,"context_line":"unintentional (everything else)."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Project Priority"},{"line_number":40,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_7aec808f","line":37,"updated":"2015-07-06 20:36:56.000000000","message":"I feel like most specs could just say this and not say more.\n\nCould you maybe just put words here about not having a single compute for an ironic deployment? I think that\u0027s relatively self-obvious as a bad thing.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a5e2fe46d7f8b7cd0ff5da72d27271c562e595b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Operators running imperfect code on imperfect computers in imperfect"},{"line_number":35,"context_line":"environments (i.e. all operators) need to be able to keep their cloud up when"},{"line_number":36,"context_line":"a nova-compute process goes down, whether intentional (upgrades) or"},{"line_number":37,"context_line":"unintentional (everything else)."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Project Priority"},{"line_number":40,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_a64de49a","line":37,"in_reply_to":"ba3cc151_7aec808f","updated":"2015-07-07 17:18:54.000000000","message":"Does the above not cover that? I\u0027m fine with changing this if you\u0027d like :)","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"6fe2a5790af74e4c3becbd3925ab8be5b6751088","unresolved":false,"context_lines":[{"line_number":34,"context_line":"Operators running imperfect code on imperfect computers in imperfect"},{"line_number":35,"context_line":"environments (i.e. all operators) need to be able to keep their cloud up when"},{"line_number":36,"context_line":"a nova-compute process goes down, whether intentional (upgrades) or"},{"line_number":37,"context_line":"unintentional (everything else)."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Project Priority"},{"line_number":40,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a41bdd9_313a01e8","line":37,"in_reply_to":"ba3cc151_a64de49a","updated":"2015-07-15 23:54:45.000000000","message":"Done","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"38ee474acc301d78ff5d3a25a441e8bdf0487ec4","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  model by simplifying how resources are reported (more on that later)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Upgrades: The ability to upgrade a nova-compute service without bringing down"},{"line_number":48,"context_line":"  the cloud seems important."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Fixing more bugs: Ironic breaking Nova\u0027s model of the world (specifically"},{"line_number":51,"context_line":"  around failure domains) seems like a good bug to fix."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_ba8c4836","line":48,"updated":"2015-07-06 20:36:56.000000000","message":"I don\u0027t think you can claim this. Nova\u0027s compute service is completely non-HA, and any/all upgrades require restarting it. That\u0027s fine because Nova\u0027s model is that any one compute has such a small scope that restarting one at a time doesn\u0027t matter. That ironic\u0027s design makes this problematic is really the problem, IMHO.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"6fe2a5790af74e4c3becbd3925ab8be5b6751088","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  model by simplifying how resources are reported (more on that later)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Upgrades: The ability to upgrade a nova-compute service without bringing down"},{"line_number":48,"context_line":"  the cloud seems important."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Fixing more bugs: Ironic breaking Nova\u0027s model of the world (specifically"},{"line_number":51,"context_line":"  around failure domains) seems like a good bug to fix."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a41bdd9_91374dfe","line":48,"in_reply_to":"9a41bdd9_328cc734","updated":"2015-07-15 23:54:45.000000000","message":"Done","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eb695bae195745662afc28b2872dd9884f2fabd0","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  model by simplifying how resources are reported (more on that later)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Upgrades: The ability to upgrade a nova-compute service without bringing down"},{"line_number":48,"context_line":"  the cloud seems important."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Fixing more bugs: Ironic breaking Nova\u0027s model of the world (specifically"},{"line_number":51,"context_line":"  around failure domains) seems like a good bug to fix."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a41bdd9_328cc734","line":48,"in_reply_to":"ba3cc151_8631c00d","updated":"2015-07-13 19:37:04.000000000","message":"I probably said this before I had read all the way to the bottom. Changing it to this would probably be more clear:\n\n I want to upgrade my nova-computes in a way that doesn\u0027t require \n downtime because the entire cloud sits behind a single nova-compute","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a5e2fe46d7f8b7cd0ff5da72d27271c562e595b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  model by simplifying how resources are reported (more on that later)."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* Upgrades: The ability to upgrade a nova-compute service without bringing down"},{"line_number":48,"context_line":"  the cloud seems important."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Fixing more bugs: Ironic breaking Nova\u0027s model of the world (specifically"},{"line_number":51,"context_line":"  around failure domains) seems like a good bug to fix."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_8631c00d","line":48,"in_reply_to":"ba3cc151_ba8c4836","updated":"2015-07-07 17:18:54.000000000","message":"Would s/the cloud/the entire cloud/ make this more clear?","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"12b39e474256842070a891aeb6cc66fd36e2a913","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  the cloud seems important."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Fixing more bugs: Ironic breaking Nova\u0027s model of the world (specifically"},{"line_number":51,"context_line":"  around failure domains) seems like a good bug to fix."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Proposed change"},{"line_number":54,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_e28c7437","line":51,"updated":"2015-07-06 16:40:39.000000000","message":"so this doesn\u0027t seem quite correct, but we can fix that in a follow up patch.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a5e2fe46d7f8b7cd0ff5da72d27271c562e595b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  the cloud seems important."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* Fixing more bugs: Ironic breaking Nova\u0027s model of the world (specifically"},{"line_number":51,"context_line":"  around failure domains) seems like a good bug to fix."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Proposed change"},{"line_number":54,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_c62fc89f","line":51,"in_reply_to":"ba3cc151_e28c7437","updated":"2015-07-07 17:18:54.000000000","message":"What isn\u0027t correct here?","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"12b39e474256842070a891aeb6cc66fd36e2a913","unresolved":false,"context_lines":[{"line_number":57,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":58,"context_line":"sharded across multiple compute services without over-reporting resources. Any"},{"line_number":59,"context_line":"compute service may build to any Ironic node; once an instance is placed on a"},{"line_number":60,"context_line":"compute service it is locked to that host."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"A nova-compute service running the Ironic virt driver should advertise that"},{"line_number":63,"context_line":"it manages a subset of the total number of bare metal nodes that the Ironic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_dde111d2","line":60,"updated":"2015-07-06 16:40:39.000000000","message":"It does feel like this sharing of resources breaks the resource tracker locking, as you might end up locking the same node on two different compute processes.\n\nNow its not likely to cause too many problems, in right now, but it does violate some assumptions in that code.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"6fe2a5790af74e4c3becbd3925ab8be5b6751088","unresolved":false,"context_lines":[{"line_number":57,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":58,"context_line":"sharded across multiple compute services without over-reporting resources. Any"},{"line_number":59,"context_line":"compute service may build to any Ironic node; once an instance is placed on a"},{"line_number":60,"context_line":"compute service it is locked to that host."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"A nova-compute service running the Ironic virt driver should advertise that"},{"line_number":63,"context_line":"it manages a subset of the total number of bare metal nodes that the Ironic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a41bdd9_713409fb","line":60,"in_reply_to":"9a41bdd9_12b743d9","updated":"2015-07-15 23:54:45.000000000","message":"Clarifying this in next patch.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a5e2fe46d7f8b7cd0ff5da72d27271c562e595b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":58,"context_line":"sharded across multiple compute services without over-reporting resources. Any"},{"line_number":59,"context_line":"compute service may build to any Ironic node; once an instance is placed on a"},{"line_number":60,"context_line":"compute service it is locked to that host."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"A nova-compute service running the Ironic virt driver should advertise that"},{"line_number":63,"context_line":"it manages a subset of the total number of bare metal nodes that the Ironic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_c934bbdf","line":60,"in_reply_to":"ba3cc151_91ffbf00","updated":"2015-07-07 17:18:54.000000000","message":"For more clarity: nodes would only be shared while unprovisioned. Once provisioned, they will be tied to a single compute daemon.\n\nAs far as computes racing to build two instance on the same node, I\u0027m told this is handled by the conductor, and one of those builds will be failed and rescheduled.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eb695bae195745662afc28b2872dd9884f2fabd0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":58,"context_line":"sharded across multiple compute services without over-reporting resources. Any"},{"line_number":59,"context_line":"compute service may build to any Ironic node; once an instance is placed on a"},{"line_number":60,"context_line":"compute service it is locked to that host."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"A nova-compute service running the Ironic virt driver should advertise that"},{"line_number":63,"context_line":"it manages a subset of the total number of bare metal nodes that the Ironic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a41bdd9_12b743d9","line":60,"in_reply_to":"ba3cc151_c934bbdf","updated":"2015-07-13 19:37:04.000000000","message":"I don\u0027t understand how that works. If the scheduler picks a node to put an instance on, then it needs to know what compute service is responsible for that node. Unless I\u0027m misunderstanding what you mean by unprovisioned, I think I\u0027m confused here.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"13e0dec2cdb86f4740d173f77b99a962d0f1452d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":58,"context_line":"sharded across multiple compute services without over-reporting resources. Any"},{"line_number":59,"context_line":"compute service may build to any Ironic node; once an instance is placed on a"},{"line_number":60,"context_line":"compute service it is locked to that host."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"A nova-compute service running the Ironic virt driver should advertise that"},{"line_number":63,"context_line":"it manages a subset of the total number of bare metal nodes that the Ironic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_91ffbf00","line":60,"in_reply_to":"ba3cc151_dde111d2","updated":"2015-07-07 15:28:02.000000000","message":"John, it\u0027s not sharing of resources. it\u0027s *sharding* of resources across multiple nova-compute workers running the Ironic virt driver. Only a single nova-compute would ever be responsible for a single Ironic baremetal instance.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"64a6aaeedf0b30630f45ae5543c78992fe852067","unresolved":false,"context_lines":[{"line_number":67,"context_line":"daemons running the Ironic virt driver."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This gives us a case where losing one compute service in the cluster fails no"},{"line_number":70,"context_line":"builds, and only fails actions for existing instances that host manages."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Now, Ironic is unique in that it must match flavors exactly to a given Ironic"},{"line_number":73,"context_line":"node. For example, an instance with 4 GB of RAM may not be built on a node"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_f4e192d1","line":70,"updated":"2015-07-06 15:57:41.000000000","message":"right. ++","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a5e2fe46d7f8b7cd0ff5da72d27271c562e595b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"daemons running the Ironic virt driver."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This gives us a case where losing one compute service in the cluster fails no"},{"line_number":70,"context_line":"builds, and only fails actions for existing instances that host manages."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Now, Ironic is unique in that it must match flavors exactly to a given Ironic"},{"line_number":73,"context_line":"node. For example, an instance with 4 GB of RAM may not be built on a node"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_e92f3f86","line":70,"in_reply_to":"ba3cc151_9126dfb8","updated":"2015-07-07 17:18:54.000000000","message":"Of course :)","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"38ee474acc301d78ff5d3a25a441e8bdf0487ec4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"daemons running the Ironic virt driver."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This gives us a case where losing one compute service in the cluster fails no"},{"line_number":70,"context_line":"builds, and only fails actions for existing instances that host manages."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Now, Ironic is unique in that it must match flavors exactly to a given Ironic"},{"line_number":73,"context_line":"node. For example, an instance with 4 GB of RAM may not be built on a node"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_fac0902c","line":70,"in_reply_to":"ba3cc151_f4e192d1","updated":"2015-07-06 20:36:56.000000000","message":"Well, it fails builds that are in progress on that node, but I assume that\u0027s not what you meant.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"13e0dec2cdb86f4740d173f77b99a962d0f1452d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"daemons running the Ironic virt driver."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"This gives us a case where losing one compute service in the cluster fails no"},{"line_number":70,"context_line":"builds, and only fails actions for existing instances that host manages."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Now, Ironic is unique in that it must match flavors exactly to a given Ironic"},{"line_number":73,"context_line":"node. For example, an instance with 4 GB of RAM may not be built on a node"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_9126dfb8","line":70,"in_reply_to":"ba3cc151_fac0902c","updated":"2015-07-07 15:28:02.000000000","message":"Right. Jim is referring to *new* build requests not failing due to a single downed nova-compute.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10202,"name":"Wan-yen Hsu","email":"wanyenhsu@gmail.com"},"change_message_id":"8057bffc9b8ffa1dba08c75c4858ca8a5a679724","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"To solve this, we can restrict a compute service to a given type of hardware;"},{"line_number":78,"context_line":"for the sake of this document let\u0027s call that a flavor (the definition may be"},{"line_number":79,"context_line":"fuzzier in reality). We then can set limits on the compute service for what"},{"line_number":80,"context_line":"sorts of builds that host can do, to lock it in to only building that flavor."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Now we have the same failure case as before; but only one flavor lost instead"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_33a857db","line":79,"updated":"2015-07-07 04:36:16.000000000","message":"Is this the flavor used in nova boot?  Does it include user-defined capabilities?  I am just trying to understand what flavor means here?  There could be many flavors if user-defined capabilities are included.  IMO, user-defined capabilities should be included since they are part of the scheduling criteria.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"13e0dec2cdb86f4740d173f77b99a962d0f1452d","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"To solve this, we can restrict a compute service to a given type of hardware;"},{"line_number":78,"context_line":"for the sake of this document let\u0027s call that a flavor (the definition may be"},{"line_number":79,"context_line":"fuzzier in reality). We then can set limits on the compute service for what"},{"line_number":80,"context_line":"sorts of builds that host can do, to lock it in to only building that flavor."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Now we have the same failure case as before; but only one flavor lost instead"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_1142cf3e","line":79,"in_reply_to":"ba3cc151_33a857db","updated":"2015-07-07 15:28:02.000000000","message":"This flavor is used in nova boot, yes. Flavors are monolithic things at the moment, unfortunately, so the amount of resources AND capabilities are all jammed into a single thing called a flavor. *user-specified* capabilities are not separately set by the user.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10202,"name":"Wan-yen Hsu","email":"wanyenhsu@gmail.com"},"change_message_id":"8057bffc9b8ffa1dba08c75c4858ca8a5a679724","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Now we have the same failure case as before; but only one flavor lost instead"},{"line_number":83,"context_line":"of the entire cloud. Now we can run one or more compute service daemons for"},{"line_number":84,"context_line":"a given flavor with the rules above: The resource tracker object should"},{"line_number":85,"context_line":"advertise at most (TOT / X) available resources, where TOT \u003d number of bare"},{"line_number":86,"context_line":"metal nodes that match the given flavor, and X \u003d number of nova-compute"},{"line_number":87,"context_line":"service daemons running the Ironic virt driver and limited to the given"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_b3b9c717","line":84,"updated":"2015-07-07 04:36:16.000000000","message":"Since there maybe many flavors, will there be any concerns that too many compute service daemons are running concurrently?","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a5e2fe46d7f8b7cd0ff5da72d27271c562e595b","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Now we have the same failure case as before; but only one flavor lost instead"},{"line_number":83,"context_line":"of the entire cloud. Now we can run one or more compute service daemons for"},{"line_number":84,"context_line":"a given flavor with the rules above: The resource tracker object should"},{"line_number":85,"context_line":"advertise at most (TOT / X) available resources, where TOT \u003d number of bare"},{"line_number":86,"context_line":"metal nodes that match the given flavor, and X \u003d number of nova-compute"},{"line_number":87,"context_line":"service daemons running the Ironic virt driver and limited to the given"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_e95dff15","line":84,"in_reply_to":"ba3cc151_b3b9c717","updated":"2015-07-07 17:18:54.000000000","message":"Why would that be a concern? There are clouds running tens of thousands of compute daemons. We have cells for scaling things if needed.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"38ee474acc301d78ff5d3a25a441e8bdf0487ec4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"advertise at most (TOT / X) available resources, where TOT \u003d number of bare"},{"line_number":86,"context_line":"metal nodes that match the given flavor, and X \u003d number of nova-compute"},{"line_number":87,"context_line":"service daemons running the Ironic virt driver and limited to the given"},{"line_number":88,"context_line":"flavor."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"If we lock all compute daemons for the given flavor into a host aggregate for"},{"line_number":91,"context_line":"that flavor, now builds will be routed to a supported compute, and we can"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_ba676824","line":88,"updated":"2015-07-06 20:36:56.000000000","message":"So this means instances get an actual .host\u003dironic-flavor-foo-server-2 and not the crazy every-host-uses-the-same-hostname hack, right?","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"13e0dec2cdb86f4740d173f77b99a962d0f1452d","unresolved":false,"context_lines":[{"line_number":85,"context_line":"advertise at most (TOT / X) available resources, where TOT \u003d number of bare"},{"line_number":86,"context_line":"metal nodes that match the given flavor, and X \u003d number of nova-compute"},{"line_number":87,"context_line":"service daemons running the Ironic virt driver and limited to the given"},{"line_number":88,"context_line":"flavor."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"If we lock all compute daemons for the given flavor into a host aggregate for"},{"line_number":91,"context_line":"that flavor, now builds will be routed to a supported compute, and we can"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_3178332b","line":88,"in_reply_to":"ba3cc151_ba676824","updated":"2015-07-07 15:28:02.000000000","message":"yup.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"38ee474acc301d78ff5d3a25a441e8bdf0487ec4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"If we lock all compute daemons for the given flavor into a host aggregate for"},{"line_number":91,"context_line":"that flavor, now builds will be routed to a supported compute, and we can"},{"line_number":92,"context_line":"use the host aggregate to query how many compute services are available for"},{"line_number":93,"context_line":"the flavor."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_daf10c97","line":93,"updated":"2015-07-06 20:36:56.000000000","message":"I thought there was serious opposition to this approach in the room at summit?","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"6fe2a5790af74e4c3becbd3925ab8be5b6751088","unresolved":false,"context_lines":[{"line_number":90,"context_line":"If we lock all compute daemons for the given flavor into a host aggregate for"},{"line_number":91,"context_line":"that flavor, now builds will be routed to a supported compute, and we can"},{"line_number":92,"context_line":"use the host aggregate to query how many compute services are available for"},{"line_number":93,"context_line":"the flavor."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a41bdd9_115d7d46","line":93,"in_reply_to":"9a41bdd9_32084791","updated":"2015-07-15 23:54:45.000000000","message":"I don\u0027t recall this, but I can see why. I\u0027d really like to investigate if this is possible without this (it almost certainly is if we give compute hosts access to the compute_nodes table). In which case I think it\u0027s mostly solvable.\n\nWith my operator hat on, I don\u0027t personally have a problem with this, though :)","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a5e2fe46d7f8b7cd0ff5da72d27271c562e595b","unresolved":false,"context_lines":[{"line_number":90,"context_line":"If we lock all compute daemons for the given flavor into a host aggregate for"},{"line_number":91,"context_line":"that flavor, now builds will be routed to a supported compute, and we can"},{"line_number":92,"context_line":"use the host aggregate to query how many compute services are available for"},{"line_number":93,"context_line":"the flavor."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_a99e17b6","line":93,"in_reply_to":"ba3cc151_5135b743","updated":"2015-07-07 17:18:54.000000000","message":"I also don\u0027t remember this being brought up.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eb695bae195745662afc28b2872dd9884f2fabd0","unresolved":false,"context_lines":[{"line_number":90,"context_line":"If we lock all compute daemons for the given flavor into a host aggregate for"},{"line_number":91,"context_line":"that flavor, now builds will be routed to a supported compute, and we can"},{"line_number":92,"context_line":"use the host aggregate to query how many compute services are available for"},{"line_number":93,"context_line":"the flavor."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a41bdd9_32084791","line":93,"in_reply_to":"ba3cc151_a99e17b6","updated":"2015-07-13 19:37:04.000000000","message":"It was the general thought of sharding machines by type or characteristic that was brought up at summit and which saw a lot of concern from operator types, as I recall.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"13e0dec2cdb86f4740d173f77b99a962d0f1452d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"If we lock all compute daemons for the given flavor into a host aggregate for"},{"line_number":91,"context_line":"that flavor, now builds will be routed to a supported compute, and we can"},{"line_number":92,"context_line":"use the host aggregate to query how many compute services are available for"},{"line_number":93,"context_line":"the flavor."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"And now we have Nova\u0027s failure domain model for the Ironic driver."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_5135b743","line":93,"in_reply_to":"ba3cc151_daf10c97","updated":"2015-07-07 15:28:02.000000000","message":"I don\u0027t remember this idea actually being brought up at the summit. I came up with the idea of tying host aggregates to Ironic nova-computes in a followup conversation I had with JIm...","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"38ee474acc301d78ff5d3a25a441e8bdf0487ec4","unresolved":false,"context_lines":[{"line_number":163,"context_line":"flavor. We should research if it\u0027s possible to have compute services with"},{"line_number":164,"context_line":"and without host aggregates, those without used for flavors that do not have"},{"line_number":165,"context_line":"a host aggregate defined."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Developer impact"},{"line_number":168,"context_line":"----------------"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_1adbf4ee","line":166,"updated":"2015-07-06 20:36:56.000000000","message":"How do the ironic-driver-running nodes find each other, know which physical hosts to own, and generally decide how to calculate the TOT/X number?","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"13e0dec2cdb86f4740d173f77b99a962d0f1452d","unresolved":false,"context_lines":[{"line_number":163,"context_line":"flavor. We should research if it\u0027s possible to have compute services with"},{"line_number":164,"context_line":"and without host aggregates, those without used for flavors that do not have"},{"line_number":165,"context_line":"a host aggregate defined."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Developer impact"},{"line_number":168,"context_line":"----------------"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_91125fb3","line":166,"in_reply_to":"ba3cc151_1adbf4ee","updated":"2015-07-07 15:28:02.000000000","message":"Via a call to Ironic\u0027s API from within the ironic virt driver.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"6fe2a5790af74e4c3becbd3925ab8be5b6751088","unresolved":false,"context_lines":[{"line_number":163,"context_line":"flavor. We should research if it\u0027s possible to have compute services with"},{"line_number":164,"context_line":"and without host aggregates, those without used for flavors that do not have"},{"line_number":165,"context_line":"a host aggregate defined."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Developer impact"},{"line_number":168,"context_line":"----------------"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a41bdd9_f17a59bc","line":166,"in_reply_to":"ba3cc151_89823351","updated":"2015-07-15 23:54:45.000000000","message":"Clearing this up a bit in the proposed change section.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a5e2fe46d7f8b7cd0ff5da72d27271c562e595b","unresolved":false,"context_lines":[{"line_number":163,"context_line":"flavor. We should research if it\u0027s possible to have compute services with"},{"line_number":164,"context_line":"and without host aggregates, those without used for flavors that do not have"},{"line_number":165,"context_line":"a host aggregate defined."},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Developer impact"},{"line_number":168,"context_line":"----------------"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba3cc151_89823351","line":166,"in_reply_to":"ba3cc151_91125fb3","updated":"2015-07-07 17:18:54.000000000","message":"And host aggregates will provide the data to know about other nova-compute services running in the same aggregate.","commit_id":"3b26daf417ab30bc4640e73ee234e9bebe54574e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"eeefc9f3e2f68e5fe09abaf65c45bdeb89d4bbe1","unresolved":false,"context_lines":[{"line_number":41,"context_line":"This falls into a couple of priorities:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"* Scheduler: this will help the Ironic driver fit into the new scheduler"},{"line_number":44,"context_line":"  model by simplifying how resources are reported (more on that later)."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Upgrades: Operators should be able to upgrade nova-compute services within"},{"line_number":47,"context_line":"  an Ironic deployment without requiring downtime, which requires more than"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a50d1a3_0b9e9062","line":44,"updated":"2015-07-23 19:18:17.000000000","message":"aiui the scheduler priority is to clean up the interfaces and it\u0027s not clear to me how this fits into that goal. IE work is not priority simply because it touches scheduler.\n\nThis sounds like an important feature, I just want it to be prioritised for the right reasons not the wrong ones.","commit_id":"bd2328133f3c04afdcf60e5666cfdb4a9e71ad73"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"946dc06e389836ee0265056fdeca0e8a0aacd554","unresolved":false,"context_lines":[{"line_number":41,"context_line":"This falls into a couple of priorities:"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"* Scheduler: this will help the Ironic driver fit into the new scheduler"},{"line_number":44,"context_line":"  model by simplifying how resources are reported (more on that later)."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"* Upgrades: Operators should be able to upgrade nova-compute services within"},{"line_number":47,"context_line":"  an Ironic deployment without requiring downtime, which requires more than"}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_0750cf30","line":44,"in_reply_to":"3a50d1a3_0b9e9062","updated":"2015-10-10 16:26:19.000000000","message":"Ironic is the only driver that requires the node object for scheduling (as opposed to just the host). As such, it\u0027s a blocker for removing the node concept.","commit_id":"bd2328133f3c04afdcf60e5666cfdb4a9e71ad73"},{"author":{"_account_id":7455,"name":"Meghal Gosalia","username":"meghal"},"change_message_id":"bc31904af0d18b0605531fbc841a42eb8b8946aa","unresolved":false,"context_lines":[{"line_number":55,"context_line":"sharded across multiple compute services without over-reporting resources."},{"line_number":56,"context_line":"This compute daemon should only register as a single row in the"},{"line_number":57,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"},{"line_number":58,"context_line":"next paragraph."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":61,"context_line":"choose an Ironic node itself, from the nodes that match the request."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a4dcd0f_f9589733","line":58,"updated":"2015-08-14 18:54:56.000000000","message":"What will be the criteria for sharding ?\nAlso, if ironic virt driver underneath nova-compute will take care of scheduling an ironic node and nova.compute_nodes table will show only nova-compute nodes and not ironic nodes, do we even need to run the resource tracker. Shouldn\u0027t there be a flag to disable resource tracker or have each nova-compute report -1 for all scheduler resources without querying underlying inventory at all.","commit_id":"bd2328133f3c04afdcf60e5666cfdb4a9e71ad73"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"946dc06e389836ee0265056fdeca0e8a0aacd554","unresolved":false,"context_lines":[{"line_number":55,"context_line":"sharded across multiple compute services without over-reporting resources."},{"line_number":56,"context_line":"This compute daemon should only register as a single row in the"},{"line_number":57,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"},{"line_number":58,"context_line":"next paragraph."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":61,"context_line":"choose an Ironic node itself, from the nodes that match the request."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_4729e799","line":58,"in_reply_to":"1a4dcd0f_f9589733","updated":"2015-10-10 16:26:19.000000000","message":"I\u0027m not sure what you mean by \"criteria for sharding\"  here.\n\nWe do need to think about the resource tracker. I\u0027d love to just disable it altogether, if that won\u0027t cause too many problems. Otherwise, as you say (and as we\u0027ve discussed at some midcycles), we can just report -1.","commit_id":"bd2328133f3c04afdcf60e5666cfdb4a9e71ad73"},{"author":{"_account_id":7455,"name":"Meghal Gosalia","username":"meghal"},"change_message_id":"dc02d45a2b1b1032dd4babbd24f4613f1a584b90","unresolved":false,"context_lines":[{"line_number":55,"context_line":"sharded across multiple compute services without over-reporting resources."},{"line_number":56,"context_line":"This compute daemon should only register as a single row in the"},{"line_number":57,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"},{"line_number":58,"context_line":"next paragraph."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":61,"context_line":"choose an Ironic node itself, from the nodes that match the request."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_64787d90","line":58,"in_reply_to":"7a2fa921_4729e799","updated":"2015-10-12 15:24:18.000000000","message":"By sharding, I meant the distribution of ironic inventory across multiple nova-compute.\nBut, based on what you described in patch set 8, scheduler would just be selecting nova-compute at random and nova-compute would be calling ironic endpoint for scheduling. So,sharding is not needed then.","commit_id":"bd2328133f3c04afdcf60e5666cfdb4a9e71ad73"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"663ce524910c037f8aa39958416517cd4cb5a3c9","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":63,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":66,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":67,"context_line":"return that node. The virt driver will then deploy the instance to this node."},{"line_number":68,"context_line":"When the instance is destroyed, the reservation should also be destroyed."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a4dcd0f_94950334","line":65,"updated":"2015-08-07 02:16:38.000000000","message":"It might be worth noting the filters that Ironic virt driver could pass to ironic-api.  This should include cpu, memory, disk size, compute capabilities and probably the \u003ccinder-volume-type\u003e_boot\u003dtrue if boot from a cinder volume was requested (as per the spec https://review.openstack.org/#/c/200496/)","commit_id":"bd2328133f3c04afdcf60e5666cfdb4a9e71ad73"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"946dc06e389836ee0265056fdeca0e8a0aacd554","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":63,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":66,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":67,"context_line":"return that node. The virt driver will then deploy the instance to this node."},{"line_number":68,"context_line":"When the instance is destroyed, the reservation should also be destroyed."}],"source_content_type":"text/x-rst","patch_set":7,"id":"7a2fa921_875cdf4b","line":65,"in_reply_to":"1a4dcd0f_795c8719","updated":"2015-10-10 16:26:19.000000000","message":"Right, we should add some detail here. Working on that on the ironic side: https://review.openstack.org/#/c/204641/","commit_id":"bd2328133f3c04afdcf60e5666cfdb4a9e71ad73"},{"author":{"_account_id":7455,"name":"Meghal Gosalia","username":"meghal"},"change_message_id":"bc31904af0d18b0605531fbc841a42eb8b8946aa","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":63,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":66,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":67,"context_line":"return that node. The virt driver will then deploy the instance to this node."},{"line_number":68,"context_line":"When the instance is destroyed, the reservation should also be destroyed."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a4dcd0f_795c8719","line":65,"in_reply_to":"1a4dcd0f_94950334","updated":"2015-08-14 18:54:56.000000000","message":"+1.","commit_id":"bd2328133f3c04afdcf60e5666cfdb4a9e71ad73"}],"specs/mitaka/approved/ironic-multiple-compute-hosts.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ee20b77f1fb9ee185fa63f755d1aa9261914279f","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"This allows operators to avoid having a single nova-compute service for an"},{"line_number":35,"context_line":"Ironic deployment, so that the deployment may continue to function if a"},{"line_number":36,"context_line":"compute service goes down."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_754829cd","line":36,"updated":"2015-10-12 16:37:39.000000000","message":"So are we assuming a single ironic cluster per Nova deployment here? Or at least not having the same flavor available from two ironic clusters?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"3edbf7751515bf724c77326c38f9279987719922","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"This allows operators to avoid having a single nova-compute service for an"},{"line_number":35,"context_line":"Ironic deployment, so that the deployment may continue to function if a"},{"line_number":36,"context_line":"compute service goes down."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_c45e2312","line":36,"in_reply_to":"7a2fa921_4edc7746","updated":"2015-10-12 21:43:02.000000000","message":"That\u0027s a good question, actually. I think today an operator could have multiple nova-compute services for multiple Ironic clusters. However, \"what bauzas said\". I\u0027ll clarify further in the next round.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"61a6f1cfab8149a846ab6bd533542de0550ee444","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"This allows operators to avoid having a single nova-compute service for an"},{"line_number":35,"context_line":"Ironic deployment, so that the deployment may continue to function if a"},{"line_number":36,"context_line":"compute service goes down."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_4edc7746","line":36,"in_reply_to":"7a2fa921_754829cd","updated":"2015-10-12 19:55:48.000000000","message":"I remember some discussion with Jim about that, but for the moment, I\u0027m assuming one single failure domain of the whole Ironic deployment, given the Ironic default scheduler not running all the filters IIRC. Anyway, that point should be clarified in a respin, I guess.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ee8eb923aa2ce0ac178546dcb8c774cb816f2969","unresolved":false,"context_lines":[{"line_number":46,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"},{"line_number":47,"context_line":"next paragraph."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_4b2b1434","line":50,"range":{"start_line":49,"start_character":0,"end_line":50,"end_character":68},"updated":"2015-10-12 14:46:49.000000000","message":"This is how I wanted this to work in the beginning, FWIW :)","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"61a6f1cfab8149a846ab6bd533542de0550ee444","unresolved":false,"context_lines":[{"line_number":46,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"},{"line_number":47,"context_line":"next paragraph."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_ce75e732","line":50,"range":{"start_line":49,"start_character":0,"end_line":50,"end_character":68},"in_reply_to":"7a2fa921_4b2b1434","updated":"2015-10-12 19:55:48.000000000","message":"That\u0027s a bit unclear on how you route between a compute service and an Ironic node. I guess it\u0027s further explained below ?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"3edbf7751515bf724c77326c38f9279987719922","unresolved":false,"context_lines":[{"line_number":47,"context_line":"next paragraph."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_0122cdb9","line":50,"in_reply_to":"7a2fa921_ce75e732","updated":"2015-10-12 21:43:02.000000000","message":"Yes.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ee8eb923aa2ce0ac178546dcb8c774cb816f2969","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_cb3e4429","line":52,"updated":"2015-10-12 14:46:49.000000000","message":"This probably means that there is some ideal scheduler config that just round-robins the compute nodes, or merely chooses the compute host with the fewest number of instances, right?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"2264b97f56490ede41f9e5af46009272360d6a21","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_4beafc10","line":52,"in_reply_to":"5a2ca52d_1c80d445","updated":"2015-10-14 17:04:50.000000000","message":"++","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7b95a04df6262321a7479de1a10a3d4e0b54d8e9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_1c80d445","line":52,"in_reply_to":"7a2fa921_413f65d6","updated":"2015-10-14 15:26:56.000000000","message":"Well, I just feel we should somehow document what could be supported with that new model, and what\u0027s not.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"61a6f1cfab8149a846ab6bd533542de0550ee444","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_c9572125","line":52,"in_reply_to":"7a2fa921_647ddde6","updated":"2015-10-12 19:55:48.000000000","message":"To be clear, that would mean that we don\u0027t support any migration, right? I\u0027m not opposed to that, since it\u0027s already not supported AFAICT but I\u0027d like to make sure it\u0027s correctly documented.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ee20b77f1fb9ee185fa63f755d1aa9261914279f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_647ddde6","line":52,"in_reply_to":"7a2fa921_64eddd24","updated":"2015-10-12 16:37:39.000000000","message":"so ironic picks the real host, and we just use the instance count filter to pick the ironic nova-compute, then I guess there is nothing more to pick. seems reasonable to me.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7455,"name":"Meghal Gosalia","username":"meghal"},"change_message_id":"09185389e6a7c6705fe4d94c756e268e3143757a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_e108ff2f","line":52,"in_reply_to":"7a2fa921_81610bd6","updated":"2015-10-12 15:20:17.000000000","message":"How will different scheduler filters be applied in this case ?\nWould the new ironic endpoint be responsible for filtering based on the request spec ?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"3edbf7751515bf724c77326c38f9279987719922","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_413f65d6","line":52,"in_reply_to":"7a2fa921_c9572125","updated":"2015-10-12 21:43:02.000000000","message":"Nova\u0027s scheduler will essentially not be used here. Ironic will do the filtering/scheduling. Haven\u0027t thought about the vm_state at that point, but I doubt we want to try to muck with that.\n\nSylvain, so migrate is an interesting case, right? The nova-compute service actually has nothing to do with the migration in this case. I think we could still support migrate via the same mechanism (once the pieces are in place on the ironic side). Also, live-migrate will never be supported in Ironic unless there\u0027s some really magic hardware released. :)","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"811d15da53e48e95d868ed3a1636f5227661006b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_81610bd6","line":52,"in_reply_to":"7a2fa921_cb3e4429","updated":"2015-10-12 15:06:29.000000000","message":"Correct.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7455,"name":"Meghal Gosalia","username":"meghal"},"change_message_id":"fbf7a64d09f5fee711069b81a0c902ee1872bb85","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"},{"line_number":50,"context_line":"choose an Ironic node itself, from the nodes that match the request."},{"line_number":51,"context_line":"Once an instance is placed on a given nova-compute service host, that host"},{"line_number":52,"context_line":"will always manage other requests for that instance (delete, etc)."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_64eddd24","line":52,"in_reply_to":"7a2fa921_e108ff2f","updated":"2015-10-12 15:27:18.000000000","message":"Also, will the state when nova-compute is querying ironic endpoint be still called \u0027scheduling\u0027 from user point of view ?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"61a6f1cfab8149a846ab6bd533542de0550ee444","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":56,"context_line":"return that node. The virt driver will then deploy the instance to this node."},{"line_number":57,"context_line":"When the instance is destroyed, the reservation should also be destroyed."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"TODO(jroll): add some words about what sort of things can be passed to this"},{"line_number":60,"context_line":"API, with a reference to https://review.openstack.org/#/c/204641/4"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_143a10ce","line":57,"updated":"2015-10-12 19:55:48.000000000","message":"I guess that the failure domain becomes the compute node right? If one compute is failing, then all nodes behind that compute are failing too ?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"20f7a40476d5c8df9fed2a5aa0f9c290f836ca4a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":56,"context_line":"return that node. The virt driver will then deploy the instance to this node."},{"line_number":57,"context_line":"When the instance is destroyed, the reservation should also be destroyed."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"TODO(jroll): add some words about what sort of things can be passed to this"},{"line_number":60,"context_line":"API, with a reference to https://review.openstack.org/#/c/204641/4"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_1f6d1d98","line":57,"in_reply_to":"5a2ca52d_eb47481b","updated":"2015-10-14 19:22:08.000000000","message":"So, an evacuation goes to the compute manager which calls the driver to see if it can evacuate or not. If the driver doesn\u0027t support a rebuild, it will trigger a respawn, see :\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L2854-L2860","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"2264b97f56490ede41f9e5af46009272360d6a21","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":56,"context_line":"return that node. The virt driver will then deploy the instance to this node."},{"line_number":57,"context_line":"When the instance is destroyed, the reservation should also be destroyed."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"TODO(jroll): add some words about what sort of things can be passed to this"},{"line_number":60,"context_line":"API, with a reference to https://review.openstack.org/#/c/204641/4"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_eb47481b","line":57,"in_reply_to":"5a2ca52d_fc5878fc","updated":"2015-10-14 17:04:50.000000000","message":"Right, I wouldn\u0027t want to respawn. Maybe there\u0027s something besides evacuate that does this that I don\u0027t know about, maybe that\u0027s our implementation of live-migrate, maybe it\u0027s just an automatic thing? Not sure what\u0027s best to do here. :)","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"3edbf7751515bf724c77326c38f9279987719922","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":56,"context_line":"return that node. The virt driver will then deploy the instance to this node."},{"line_number":57,"context_line":"When the instance is destroyed, the reservation should also be destroyed."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"TODO(jroll): add some words about what sort of things can be passed to this"},{"line_number":60,"context_line":"API, with a reference to https://review.openstack.org/#/c/204641/4"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_246cb707","line":57,"in_reply_to":"7a2fa921_143a10ce","updated":"2015-10-12 21:43:02.000000000","message":"A compute host isn\u0027t tied to any given set of nodes here, generally. So if a compute host fails, builds will just go to other compute hosts.\n\nThe failure domain does come into play with existing instances, which are tied to a single compute host - deletes and other actions won\u0027t work. However I think at this point we could easily implement a hacky version of evacuate that just changes instance.host in the DB, to unstick that.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"7d1fee79c4e4b8ebb0bf6f8710710818cec67347","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":56,"context_line":"return that node. The virt driver will then deploy the instance to this node."},{"line_number":57,"context_line":"When the instance is destroyed, the reservation should also be destroyed."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"TODO(jroll): add some words about what sort of things can be passed to this"},{"line_number":60,"context_line":"API, with a reference to https://review.openstack.org/#/c/204641/4"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_70ed898d","line":57,"in_reply_to":"7a2fa921_246cb707","updated":"2015-10-12 23:00:13.000000000","message":"I think this failure behavior needs to be more clearly specified. Would instances be evacuated automatically to another compute if one goes down?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7b95a04df6262321a7479de1a10a3d4e0b54d8e9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":55,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":56,"context_line":"return that node. The virt driver will then deploy the instance to this node."},{"line_number":57,"context_line":"When the instance is destroyed, the reservation should also be destroyed."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"TODO(jroll): add some words about what sort of things can be passed to this"},{"line_number":60,"context_line":"API, with a reference to https://review.openstack.org/#/c/204641/4"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5a2ca52d_fc5878fc","line":57,"in_reply_to":"7a2fa921_70ed898d","updated":"2015-10-14 15:26:56.000000000","message":"Jim, yup my point was about existing instances. I\u0027m fine with an evacuate method rebalancing the instances, but again it needs to be documented. Will it respawn the instances/nodes like evacuate already does ?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ee20b77f1fb9ee185fa63f755d1aa9261914279f","unresolved":false,"context_lines":[{"line_number":57,"context_line":"When the instance is destroyed, the reservation should also be destroyed."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"TODO(jroll): add some words about what sort of things can be passed to this"},{"line_number":60,"context_line":"API, with a reference to https://review.openstack.org/#/c/204641/4"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"TODO(jroll): add some words here about the possibility of disabling the"},{"line_number":63,"context_line":"resource tracker, or alternatively reporting -1 resources from each compute."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_35b5d1cf","line":60,"updated":"2015-10-12 16:37:39.000000000","message":"Yeah, this bit is interesting, as it has implications for flavor extra specs, and image properties, I guess?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"61a6f1cfab8149a846ab6bd533542de0550ee444","unresolved":false,"context_lines":[{"line_number":57,"context_line":"When the instance is destroyed, the reservation should also be destroyed."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"TODO(jroll): add some words about what sort of things can be passed to this"},{"line_number":60,"context_line":"API, with a reference to https://review.openstack.org/#/c/204641/4"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"TODO(jroll): add some words here about the possibility of disabling the"},{"line_number":63,"context_line":"resource tracker, or alternatively reporting -1 resources from each compute."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_947380b4","line":60,"in_reply_to":"7a2fa921_35b5d1cf","updated":"2015-10-12 19:55:48.000000000","message":"Agreed, I\u0027d like to see more about what could be the interface for providing the request spec to Ironic.\n\nAlso, please note that until the spec is persisted, no migrations can be done - again it\u0027s not a problem now, just that needs to be documented.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"3edbf7751515bf724c77326c38f9279987719922","unresolved":false,"context_lines":[{"line_number":57,"context_line":"When the instance is destroyed, the reservation should also be destroyed."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"TODO(jroll): add some words about what sort of things can be passed to this"},{"line_number":60,"context_line":"API, with a reference to https://review.openstack.org/#/c/204641/4"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"TODO(jroll): add some words here about the possibility of disabling the"},{"line_number":63,"context_line":"resource tracker, or alternatively reporting -1 resources from each compute."}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_e4247fc7","line":60,"in_reply_to":"7a2fa921_947380b4","updated":"2015-10-12 21:43:02.000000000","message":"I agree, I still need to investigate more as to what Nova has there, and what Ironic cares about. I suspect it will be some transformation of the request spec, something like:\n\n    {\n        \"memory_mb\": 123,\n        \"extra_specs\": [\"has_uefi\"]\n    }","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ee20b77f1fb9ee185fa63f755d1aa9261914279f","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"TODO(jroll): add some words here about the possibility of disabling the"},{"line_number":63,"context_line":"resource tracker, or alternatively reporting -1 resources from each compute."},{"line_number":64,"context_line":"Need to look at the effects this has on the rest of the system."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Alternatives"},{"line_number":67,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_b5e6c114","line":64,"updated":"2015-10-12 16:37:39.000000000","message":"Many turn this on its head, what you want is to report the number of instance, and not track other resources I guess?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c7233a55a5cce388ecc60dba1d4e65f5a7f5322b","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"TODO(jroll): add some words here about the possibility of disabling the"},{"line_number":63,"context_line":"resource tracker, or alternatively reporting -1 resources from each compute."},{"line_number":64,"context_line":"Need to look at the effects this has on the rest of the system."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Alternatives"},{"line_number":67,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_dd4a83ac","line":64,"in_reply_to":"7a2fa921_b5e6c114","updated":"2015-10-12 17:47:24.000000000","message":"Well, seems like we might as well still report it, to avoid removing one ironic-only thing and replacing it with another. But yeah, you could certainly report it less often or something.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"3edbf7751515bf724c77326c38f9279987719922","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"TODO(jroll): add some words here about the possibility of disabling the"},{"line_number":63,"context_line":"resource tracker, or alternatively reporting -1 resources from each compute."},{"line_number":64,"context_line":"Need to look at the effects this has on the rest of the system."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Alternatives"},{"line_number":67,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_5773a7b4","line":64,"in_reply_to":"7a2fa921_dd4a83ac","updated":"2015-10-12 21:43:02.000000000","message":"Yeah, the weird part is that all nova-computes would see the view of ironic as a whole, so it\u0027s impossible to report accurately, right?\n\nAfter talking with Ironic folks, including some operators, people were cool with \"maybe later\" on this - the idea being that ironic should be the source of truth for capacity/resource tracking.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"61a6f1cfab8149a846ab6bd533542de0550ee444","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Doing active/passive failover well is not an easy task, and doesn\u0027t account for"},{"line_number":72,"context_line":"all possible failures. This also does not follow Nova\u0027s prescribed model for"},{"line_number":73,"context_line":"compute failure. Furthermore, the resource tracker initialization is slow"},{"line_number":74,"context_line":"with many Ironic nodes, and so a cold failover could take minutes."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Data model impact"},{"line_number":77,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_c905e114","line":74,"updated":"2015-10-12 19:55:48.000000000","message":"I\u0027d also see how https://review.openstack.org/#/c/225546/ could be helpful with the usecase","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"3edbf7751515bf724c77326c38f9279987719922","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Doing active/passive failover well is not an easy task, and doesn\u0027t account for"},{"line_number":72,"context_line":"all possible failures. This also does not follow Nova\u0027s prescribed model for"},{"line_number":73,"context_line":"compute failure. Furthermore, the resource tracker initialization is slow"},{"line_number":74,"context_line":"with many Ironic nodes, and so a cold failover could take minutes."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Data model impact"},{"line_number":77,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_570407c5","line":74,"in_reply_to":"7a2fa921_c905e114","updated":"2015-10-12 21:43:02.000000000","message":"I agree, maybe I can write some words on it. I don\u0027t want a hard dependency on that, though.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ee8eb923aa2ce0ac178546dcb8c774cb816f2969","unresolved":false,"context_lines":[{"line_number":111,"context_line":"A version of Ironic that supports the reservation endpoint must be deployed"},{"line_number":112,"context_line":"before a version of Nova with this change is deployed."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"TODO(jroll) should we have a config to use the old way?"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Developer impact"},{"line_number":117,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_0be75cad","line":114,"updated":"2015-10-12 14:46:49.000000000","message":"Ideally nova would fail gracefully if the reservation thing is not supported by ironic. Can we just fall back to the older behavior?\n\nAlso, this means we\u0027ll be dropping the special scheduler bits, right? like the dedicated ironic host manager? If so, we\u0027ll need to make sure that we document what people need to do to roll forward, ideally supporting the current mechanism as a deprecated config in mitaka, and providing them some graceful way to move to the new mechanism inside of mitaka, so we can remove it for N. Perhaps that alleviates some need to roll nova and ironic in a specific order?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"811d15da53e48e95d868ed3a1636f5227661006b","unresolved":false,"context_lines":[{"line_number":111,"context_line":"A version of Ironic that supports the reservation endpoint must be deployed"},{"line_number":112,"context_line":"before a version of Nova with this change is deployed."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"TODO(jroll) should we have a config to use the old way?"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Developer impact"},{"line_number":117,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_a1ba0709","line":114,"in_reply_to":"7a2fa921_0be75cad","updated":"2015-10-12 15:06:29.000000000","message":"Yeah, that\u0027s kinda my thought, I need to see what the code looks like.\n\nAlso, since this will be a new Ironic API, we could use the API version as a signal that the reservation thing is supported by Ironic. https://review.openstack.org/#/c/221848/","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"3edbf7751515bf724c77326c38f9279987719922","unresolved":false,"context_lines":[{"line_number":111,"context_line":"A version of Ironic that supports the reservation endpoint must be deployed"},{"line_number":112,"context_line":"before a version of Nova with this change is deployed."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"TODO(jroll) should we have a config to use the old way?"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Developer impact"},{"line_number":117,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_dac35e89","line":114,"in_reply_to":"7a2fa921_75758930","updated":"2015-10-12 21:43:02.000000000","message":"Totally, I\u0027m just not sure on the \u0027how\u0027 yet without writing some code.","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ee20b77f1fb9ee185fa63f755d1aa9261914279f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"A version of Ironic that supports the reservation endpoint must be deployed"},{"line_number":112,"context_line":"before a version of Nova with this change is deployed."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"TODO(jroll) should we have a config to use the old way?"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"Developer impact"},{"line_number":117,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7a2fa921_75758930","line":114,"in_reply_to":"7a2fa921_a1ba0709","updated":"2015-10-12 16:37:39.000000000","message":"I guess we might want to deprecate the old method, or something like that?","commit_id":"587f93915c69c58b8a0e93d95301f4a52823efae"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"39ad7f3070fdc8fa41f32c8b0d16aff3ef4e57d5","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Ironic deployment, so that the deployment may continue to function if a"},{"line_number":36,"context_line":"compute service goes down. Note that this assumes a single Ironic cluster"},{"line_number":37,"context_line":"per Nova deployment; this is not unreasonable in most cases, as Ironic should"},{"line_number":38,"context_line":"be able to scale to 10^5 nodes."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_592f3cf6","line":38,"updated":"2015-10-20 00:05:01.000000000","message":"Updating the resource_tracker with that many nodes must be fun ;)","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":9452,"name":"James Penick","email":"penick@verizonmedia.com","username":"epim"},"change_message_id":"6e32030365a17cd4ad21fbab47940c1fcefd04a8","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Ironic deployment, so that the deployment may continue to function if a"},{"line_number":36,"context_line":"compute service goes down. Note that this assumes a single Ironic cluster"},{"line_number":37,"context_line":"per Nova deployment; this is not unreasonable in most cases, as Ironic should"},{"line_number":38,"context_line":"be able to scale to 10^5 nodes."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_b846514d","line":38,"in_reply_to":"3a29b11f_592f3cf6","updated":"2015-10-21 00:11:20.000000000","message":"That doesn\u0027t seem relevant to this spec.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"39ad7f3070fdc8fa41f32c8b0d16aff3ef4e57d5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":46,"context_line":"sharded across multiple compute services without over-reporting resources."},{"line_number":47,"context_line":"This compute daemon should only register as a single row in the"},{"line_number":48,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"},{"line_number":49,"context_line":"next paragraph."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_99e1549d","line":48,"updated":"2015-10-20 00:05:01.000000000","message":"This is interesting, so what would this single row look like?\n\nSeeing that the compute_nodes table schema is like:\n\nhttp://paste.openstack.org/show/476782/\n\nWould \u0027memory_mb\u0027 and \u0027free_ram_mb\u0027 and such (which I thought are used during scheduling) be a sum of all the ironic nodes that are managed by that ironic driver?","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2eeff505c77c7ca1da2cb1cd24b04898b7a67fe2","unresolved":false,"context_lines":[{"line_number":45,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":46,"context_line":"sharded across multiple compute services without over-reporting resources."},{"line_number":47,"context_line":"This compute daemon should only register as a single row in the"},{"line_number":48,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"},{"line_number":49,"context_line":"next paragraph."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_52160356","line":48,"in_reply_to":"3a29b11f_0fc70846","updated":"2015-10-20 19:52:28.000000000","message":"But there\u0027s really no reason to schedule on those things in an ironic world, AFAIK.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0ef2d1353ece768b26b8439592e2a1d387873290","unresolved":false,"context_lines":[{"line_number":45,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":46,"context_line":"sharded across multiple compute services without over-reporting resources."},{"line_number":47,"context_line":"This compute daemon should only register as a single row in the"},{"line_number":48,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"},{"line_number":49,"context_line":"next paragraph."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_f85e1b11","line":48,"in_reply_to":"3a29b11f_99e1549d","updated":"2015-10-20 17:38:16.000000000","message":"No, each compute service would register one node (currently they report multiple when using ironic). Each compute node would be M/N of the total set of resources for that thing, where N is the number of compute services and M is the total for that resource across all ironic machines. That would require the driver to periodically check to see what N is.\n\nAnd yes, it means that scheduling would be fooled. However, as was mentioned earlier, scheduling across computes would be basically \"least number of instances\" for any compute in the deployment. Scheduling against used/free resources would be pointless and unnecessary.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"e7fe3a6564591fbd2ed64b1d3bedf306e6d7d136","unresolved":false,"context_lines":[{"line_number":45,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":46,"context_line":"sharded across multiple compute services without over-reporting resources."},{"line_number":47,"context_line":"This compute daemon should only register as a single row in the"},{"line_number":48,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"},{"line_number":49,"context_line":"next paragraph."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Nova\u0027s scheduler should schedule only to a nova-compute host; the host will"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_0fc70846","line":48,"in_reply_to":"3a29b11f_f85e1b11","updated":"2015-10-20 19:21:02.000000000","message":"Ok, resources that aren\u0027t countable (and dividable) I guess won\u0027t be included in, \u0027cpu_info\u0027 seems like one of those, or any other one based on cpu utilization (aka things that u can\u0027t sum up and divide by N)","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":7455,"name":"Meghal Gosalia","username":"meghal"},"change_message_id":"5491cf2e8b8f3fa7201c79ec98d7923a4d4e2830","unresolved":false,"context_lines":[{"line_number":52,"context_line":"choose an Ironic node itself, from the nodes that match the request (explained"},{"line_number":53,"context_line":"further below).  Once an instance is placed on a given nova-compute service"},{"line_number":54,"context_line":"host, that host will always manage other requests for that instance (delete,"},{"line_number":55,"context_line":"etc). So the instance count scheduler filter can just be used here to equally"},{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_3a076bcb","line":55,"updated":"2015-10-21 17:37:12.000000000","message":"Does an instance count filter already exist ? Or does it need to be written ?","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1c3ea2bac173d0ee9716439f79d67e06f4a155cc","unresolved":false,"context_lines":[{"line_number":52,"context_line":"choose an Ironic node itself, from the nodes that match the request (explained"},{"line_number":53,"context_line":"further below).  Once an instance is placed on a given nova-compute service"},{"line_number":54,"context_line":"host, that host will always manage other requests for that instance (delete,"},{"line_number":55,"context_line":"etc). So the instance count scheduler filter can just be used here to equally"},{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_3033ffac","line":55,"in_reply_to":"3a29b11f_3a076bcb","updated":"2015-10-22 01:33:08.000000000","message":"I believe it exists, though it may be a weigher.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":7455,"name":"Meghal Gosalia","username":"meghal"},"change_message_id":"5491cf2e8b8f3fa7201c79ec98d7923a4d4e2830","unresolved":false,"context_lines":[{"line_number":55,"context_line":"etc). So the instance count scheduler filter can just be used here to equally"},{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_5ad7c74a","line":58,"updated":"2015-10-21 17:37:12.000000000","message":"Would it be possible to associate the ironic node with the nova instance in some way ? Currently it is done with hypervisor_hostname. With the host,node mapping going away, will it still be possible ?\nIt is good to have something on the nova side to quickly figure out which ironic node is associated with an active instance.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":7455,"name":"Meghal Gosalia","username":"meghal"},"change_message_id":"2dae9cb4e04552e46e867dc946831c039d1e7d43","unresolved":false,"context_lines":[{"line_number":55,"context_line":"etc). So the instance count scheduler filter can just be used here to equally"},{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_f05564f9","line":58,"in_reply_to":"3a29b11f_590b2a24","updated":"2015-10-22 17:23:31.000000000","message":"Why would the mapping on nova side help -\nDuring nova reboot, rebuild, stop, start and any other action that needs to be translated from nova to ironic, will we always query ironic api to look up ironic node by instance uuid or should we store the ironic node information locally so that we can directly take appropriate action on ironic node ?\nAnd I guess uuids would be better than name, because I am not sure what is the policy on node names. Are duplicate names allowed ?","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"1c3ea2bac173d0ee9716439f79d67e06f4a155cc","unresolved":false,"context_lines":[{"line_number":55,"context_line":"etc). So the instance count scheduler filter can just be used here to equally"},{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_b01f0f07","line":58,"in_reply_to":"3a29b11f_5ad7c74a","updated":"2015-10-22 01:33:08.000000000","message":"There\u0027s always \"ironic node-show --instance $instance_uuid\", but no I don\u0027t believe there\u0027s a good way to do that. Please correct me if I\u0027m wrong.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"610a0586fb92c04d5ffd4083855145c08f662a15","unresolved":false,"context_lines":[{"line_number":55,"context_line":"etc). So the instance count scheduler filter can just be used here to equally"},{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_590b2a24","line":58,"in_reply_to":"3a29b11f_b01f0f07","updated":"2015-10-22 15:44:24.000000000","message":"Meghal, I just saw this bug: \"Use ironic\u0027s node name as the instance hostname\" [0], which could be one way to get the info you want on the nova side.\n\n[0] https://bugs.launchpad.net/nova/+bug/1508970","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":7455,"name":"Meghal Gosalia","username":"meghal"},"change_message_id":"c499a4ff347a49654491737ccfad2add1c4b248b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"etc). So the instance count scheduler filter can just be used here to equally"},{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_0a56ab05","line":58,"in_reply_to":"3a29b11f_f05564f9","updated":"2015-10-22 20:23:23.000000000","message":"This is something to think about and does not need to be hashed out as part of this spec itself. Basically using some xyz field somewhere to store this information locally would be good instead of making api calls to figure out the mapping.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"39ad7f3070fdc8fa41f32c8b0d16aff3ef4e57d5","unresolved":false,"context_lines":[{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":62,"context_line":"return that node. The virt driver will then deploy the instance to this node."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_b903f041","line":59,"updated":"2015-10-20 00:05:01.000000000","message":"How does rescheduling work in this case? Does nova reschedule, or does ironic?","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"e7fe3a6564591fbd2ed64b1d3bedf306e6d7d136","unresolved":false,"context_lines":[{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":62,"context_line":"return that node. The virt driver will then deploy the instance to this node."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_8f8c7836","line":59,"in_reply_to":"3a29b11f_2179be2f","updated":"2015-10-20 19:21:02.000000000","message":"Ok, perhaps a section on rescheduling would be useful that can explain it to folks, since it seems somewhat worthwhile to document how it will work (if it will do anything at all).","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"2554b36e7ebdcc698afe07feefeeebadd7cb5e9f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":62,"context_line":"return that node. The virt driver will then deploy the instance to this node."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_cf735014","line":59,"in_reply_to":"3a29b11f_2179be2f","updated":"2015-10-20 19:25:35.000000000","message":"Right, so a reschedule could happen because deployment failure, and would still be handled via the normal Nova code path. Nova would pick a different host (or even the same host would be fine, though I\u0027m not sure it\u0027s worth modifying the code to do so). That host would then let Ironic pick the node, and presumably a different node would be chosen since the previous one will be in some failure state.\n\nThis brings up a good point, though - deployers should probably ensure that (# of reschedules allowed) \u003e (# of compute hosts), since Nova won\u0027t be aware that the hosts have many choices behind them.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2eeff505c77c7ca1da2cb1cd24b04898b7a67fe2","unresolved":false,"context_lines":[{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":62,"context_line":"return that node. The virt driver will then deploy the instance to this node."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_b259975c","line":59,"in_reply_to":"3a29b11f_52ecc38e","updated":"2015-10-20 19:52:28.000000000","message":"Or ironic does that itself. If a deploy fails on a node for a fatal reason, that node should probably be taken out of rotation. Nova will pass the request-id to ironic, so if ironic wants to not try the same node for a single request again, there should be enough information to exclude it for a retry I think.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a1719900422a316ddb152eb10cbc457976aec1c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":62,"context_line":"return that node. The virt driver will then deploy the instance to this node."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_eddc14e6","line":59,"in_reply_to":"3a29b11f_b259975c","updated":"2015-10-20 20:35:34.000000000","message":"Yup (unless there\u0027s a bug, but that rarely happens :-)), if a deploy fails, the node will be put in a failed state and won\u0027t be available to be deployed again until it has been fixed.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0ef2d1353ece768b26b8439592e2a1d387873290","unresolved":false,"context_lines":[{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":62,"context_line":"return that node. The virt driver will then deploy the instance to this node."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_2179be2f","line":59,"in_reply_to":"3a29b11f_b903f041","updated":"2015-10-20 17:38:16.000000000","message":"Why would we need to reschedule? Right now we reschedule because of some failure to claim the resources we wanted, or because we failed to deploy the instance for some other reason and have some (often mis-guided) belief that another compute will succeed where we failed.\n\nIn this case, I\u0027m not sure reschedules will happen, or at least, they\u0027ll just let another compute  try to deploy the instance.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"b4f81671fa190534e91e4113e95b533d0026243b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":62,"context_line":"return that node. The virt driver will then deploy the instance to this node."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_52ecc38e","line":59,"in_reply_to":"3a29b11f_cf735014","updated":"2015-10-20 19:48:18.000000000","message":"Right, also ironic needs to know what the previous nodes picked were right? So when nova picks a different host which causes ironic to try again, nova needs to tell ironic information about the previous selections so that ironic can figure out what didn\u0027t work, a bread-crumb-trail in a way... Right now that bread-crumb-trail is in nova compute and nova scheduler and via the retry filter.\n\nHow would nova (who knows the bread-crumb trail that has been attempted) pass it to ironc?","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":9452,"name":"James Penick","email":"penick@verizonmedia.com","username":"epim"},"change_message_id":"6e32030365a17cd4ad21fbab47940c1fcefd04a8","unresolved":false,"context_lines":[{"line_number":56,"context_line":"distribute instances between compute hosts. This reduces the failure domain to"},{"line_number":57,"context_line":"failing actions for existing instances on a compute host, if a compute host"},{"line_number":58,"context_line":"happens to fail."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"The Ironic virt driver should be modified to call an Ironic endpoint with"},{"line_number":61,"context_line":"the request spec for the instance. This endpoint will reserve a node, and"},{"line_number":62,"context_line":"return that node. The virt driver will then deploy the instance to this node."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_d898edc2","line":59,"in_reply_to":"3a29b11f_eddc14e6","updated":"2015-10-21 00:11:20.000000000","message":"\u003eWhy would we need to reschedule? \n\nTo give context on this, we\u0027ve seen instances where IPMI firmware crashes on a specific node. In that case disabling the host in question, and rescheduling the request onto another machine would be ideal.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f2765cb1a3f10d9f6825d43446f32f7152952e6f","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"We will also need to disable the resource tracker, or report some negative"},{"line_number":89,"context_line":"available resources from each compute host. It isn\u0027t possible, nor necessary,"},{"line_number":90,"context_line":"to track available resources per compute host, as each would only be capable"},{"line_number":91,"context_line":"of reporting Ironic\u0027s full amount of resources. Compute hosts should still"},{"line_number":92,"context_line":"accurately report the number of instances managed by that host."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_d6dae74b","line":89,"updated":"2015-10-21 16:18:13.000000000","message":"This section is a little light. What precisely do you mean by \"disable the resource tracker\"? I think you mean \"remove the need to have a separate resource tracker instance for each compute host - node name combination?","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5baaf83157a856f129a0ffd931b7605c120722df","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"We will also need to disable the resource tracker, or report some negative"},{"line_number":89,"context_line":"available resources from each compute host. It isn\u0027t possible, nor necessary,"},{"line_number":90,"context_line":"to track available resources per compute host, as each would only be capable"},{"line_number":91,"context_line":"of reporting Ironic\u0027s full amount of resources. Compute hosts should still"},{"line_number":92,"context_line":"accurately report the number of instances managed by that host."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_aa03a275","line":89,"in_reply_to":"3a29b11f_136f7f93","updated":"2015-10-27 00:12:24.000000000","message":"I was under the impression that each nova-compute process using the ironic virt driver would report M/N resources as well, with the ironic virt driver able to ask the Ironic API endpoint for the \"N\" number there.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1416417b34b7ce1f6f8e9e7003c3c4aebb3958dd","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"We will also need to disable the resource tracker, or report some negative"},{"line_number":89,"context_line":"available resources from each compute host. It isn\u0027t possible, nor necessary,"},{"line_number":90,"context_line":"to track available resources per compute host, as each would only be capable"},{"line_number":91,"context_line":"of reporting Ironic\u0027s full amount of resources. Compute hosts should still"},{"line_number":92,"context_line":"accurately report the number of instances managed by that host."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_136f7f93","line":89,"in_reply_to":"3a29b11f_1e2dc6a7","updated":"2015-10-26 11:17:08.000000000","message":"Hmm, I guess I missed this the first time I read through this. As I indicated above, I was expecting that we would report N/M of the total resources, where N is the total for a resource and M is the number of computes. However, I guess that won\u0027t work as soon as one compute ends up with more than (N/M) resources assigned to it in terms of what the resource tracker reports for total and used, huh?\n\nWe probably should figure out what we\u0027re going to do about that before we approve this spec I think...","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"ef7f00963a1bd21fef8e8dba1eff8d67e808cd83","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"We will also need to disable the resource tracker, or report some negative"},{"line_number":89,"context_line":"available resources from each compute host. It isn\u0027t possible, nor necessary,"},{"line_number":90,"context_line":"to track available resources per compute host, as each would only be capable"},{"line_number":91,"context_line":"of reporting Ironic\u0027s full amount of resources. Compute hosts should still"},{"line_number":92,"context_line":"accurately report the number of instances managed by that host."}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_1e2dc6a7","line":89,"in_reply_to":"3a29b11f_d6dae74b","updated":"2015-10-21 16:53:30.000000000","message":"That too; but we can\u0027t accurately report resources with multiple computes running, since a compute won\u0027t know about other computes. If there\u0027s a clean way to disable the resource tracker, that\u0027s perfect; otherwise we\u0027ll need to report an obviously wrong answer like -1. Still need to investigate how some of this will work.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0ef2d1353ece768b26b8439592e2a1d387873290","unresolved":false,"context_lines":[{"line_number":145,"context_line":"the old behavior behind a config option, as deployers will need to configure"},{"line_number":146,"context_line":"different scheduler filters and host managers than the current recommendation"},{"line_number":147,"context_line":"for this to work correctly. We should investigate if this can be done"},{"line_number":148,"context_line":"gracefully without a new config option, however I\u0027m not sure it\u0027s possible."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Developer impact"},{"line_number":151,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_0cb15947","line":148,"range":{"start_line":148,"start_character":0,"end_line":148,"end_character":74},"updated":"2015-10-20 17:38:16.000000000","message":"Can\u0027t we probe the ironic api version for the one where you added this reserve function?","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a1719900422a316ddb152eb10cbc457976aec1c","unresolved":false,"context_lines":[{"line_number":145,"context_line":"the old behavior behind a config option, as deployers will need to configure"},{"line_number":146,"context_line":"different scheduler filters and host managers than the current recommendation"},{"line_number":147,"context_line":"for this to work correctly. We should investigate if this can be done"},{"line_number":148,"context_line":"gracefully without a new config option, however I\u0027m not sure it\u0027s possible."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Developer impact"},{"line_number":151,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_e8e882e4","line":148,"updated":"2015-10-20 20:35:34.000000000","message":"Whether or not we add a new config option to say use old or new behaviour, the deployer will STILL need to make sure the other configs are correct [0]. Unless we decide that we will ignore those other configs and hardcode what to use if this new config option existed.\n\nI think we may need/use both of these (to specify ironic API version[1] and python-ironicclient version[2]) instead of a new config option to implicitly decide whether to do the old behaviour or the new behaviour.\n\n[0] http://docs.openstack.org/developer/ironic/4.2.0/deploy/install-guide.html#configure-compute-to-use-the-bare-metal-service\n[1] https://bugs.launchpad.net/nova/+bug/1493094\n[2] https://bugs.launchpad.net/nova/+bug/1355820","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"2554b36e7ebdcc698afe07feefeeebadd7cb5e9f","unresolved":false,"context_lines":[{"line_number":145,"context_line":"the old behavior behind a config option, as deployers will need to configure"},{"line_number":146,"context_line":"different scheduler filters and host managers than the current recommendation"},{"line_number":147,"context_line":"for this to work correctly. We should investigate if this can be done"},{"line_number":148,"context_line":"gracefully without a new config option, however I\u0027m not sure it\u0027s possible."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Developer impact"},{"line_number":151,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_cfe1109c","line":148,"in_reply_to":"3a29b11f_0cb15947","updated":"2015-10-20 19:25:35.000000000","message":"Yes, however the scheduler won\u0027t be aware of this and can\u0027t tell the deployer \"hey, this isn\u0027t going to work AT ALL with those filters you\u0027ve configured\". Possibly ditto for the host manager, I\u0027m not sure.\n\nSo I\u0027m not sure what\u0027s best here.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"ef7f00963a1bd21fef8e8dba1eff8d67e808cd83","unresolved":false,"context_lines":[{"line_number":145,"context_line":"the old behavior behind a config option, as deployers will need to configure"},{"line_number":146,"context_line":"different scheduler filters and host managers than the current recommendation"},{"line_number":147,"context_line":"for this to work correctly. We should investigate if this can be done"},{"line_number":148,"context_line":"gracefully without a new config option, however I\u0027m not sure it\u0027s possible."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Developer impact"},{"line_number":151,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_7e7bc18c","line":148,"in_reply_to":"3a29b11f_e8e882e4","updated":"2015-10-21 16:53:30.000000000","message":"The problem here is that some of those options are actually scheduler options, and we must assume that the scheduler and compute services run on different hosts, possibly with different config files. So we can\u0027t ignore e.g. use_baremetal_scheduler_filters based on a compute config or something in Ironic.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f2765cb1a3f10d9f6825d43446f32f7152952e6f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Work Items"},{"line_number":170,"context_line":"----------"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"* Change the Ironic driver to be a 1:1 host:node mapping."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"* Change the Ironic driver to get reservations from Ironic."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_035491fc","line":172,"updated":"2015-10-21 16:18:13.000000000","message":"++\n\nThis right here is the biggest benefit (for Nova) from this work, since it means we can eventually remove the hypervisor_nodename field entirely from the instances table and remove the need to have a resource tracker instance per compute host - node name combination.","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a1719900422a316ddb152eb10cbc457976aec1c","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Deployer documentation will need updates to specify how this works, since it"},{"line_number":193,"context_line":"is different than most drivers."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"References"},{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"3a29b11f_88930e4f","line":194,"updated":"2015-10-20 20:35:34.000000000","message":"Do we need to worry about upgrades and ordering of. (between old/new ironics, old/new nova-ironic-driver/)","commit_id":"bf96cb41b1e905383c63b15faeab141ad8a9a817"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9cdecb575dae7ef452f493e01c9ce3ca88e6a496","unresolved":false,"context_lines":[{"line_number":92,"context_line":"* Report (total ironic capacity)/(number of compute hosts) from each compute"},{"line_number":93,"context_line":"  host. This is more \"right\", but has the possibility of a compute host"},{"line_number":94,"context_line":"  reporting (usage) \u003e (max capacity), and therefore becoming unable to perform"},{"line_number":95,"context_line":"  new biuld actions."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"* Report some arbitrary incorrect number for total capacity, and try to make"},{"line_number":98,"context_line":"  the scheduler ignore it. This reports numbers more incorrectly, and also"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a29b11f_80456518","line":95,"range":{"start_line":95,"start_character":6,"end_line":95,"end_character":11},"updated":"2015-10-27 01:25:56.000000000","message":"Build is misspelled.","commit_id":"2bfd18c60747c25fb749b85e40a2478c9e0787a2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9cdecb575dae7ef452f493e01c9ce3ca88e6a496","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"* Report some arbitrary incorrect number for total capacity, and try to make"},{"line_number":98,"context_line":"  the scheduler ignore it. This reports numbers more incorrectly, and also"},{"line_number":99,"context_line":"  takes more code and has more room for error."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Alternatives"},{"line_number":102,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3a29b11f_6057e9ca","line":99,"updated":"2015-10-27 01:25:56.000000000","message":"I agree that this is the least wrong thing to do and is in line with other hypervisors for which we don\u0027t properly reflect the real state of things.","commit_id":"2bfd18c60747c25fb749b85e40a2478c9e0787a2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1363030349a7337f2508e658b316a7b85c89ef48","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/ironic-multiple-compute-hosts"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Today, the Ironic virt driver only supports a single nova-compute service."},{"line_number":14,"context_line":"This is clearly not viable for an environment of any interesting scale;"},{"line_number":15,"context_line":"there\u0027s no HA, everything fails if the compute service goes down. Let\u0027s fix"},{"line_number":16,"context_line":"that."}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_6ebf00d1","line":13,"updated":"2015-10-27 22:19:11.000000000","message":"nit: ironic (yes, I know it\u0027s weird, but the design guide says lowercase \"i\")","commit_id":"296d8e46686af7d6534d2244ed4305cbf3d2f359"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"a708b85eef98788322bd607802b62b8ecec84f16","unresolved":false,"context_lines":[{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"In general, a nova-compute running the Ironic virt driver should expose"},{"line_number":45,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":46,"context_line":"sharded across multiple compute services without over-reporting resources."},{"line_number":47,"context_line":"This compute daemon should only register as a single row in the"},{"line_number":48,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_a2ee89ea","line":45,"updated":"2015-10-28 01:49:10.000000000","message":"What happens to the remainder? I\u0027m wondering if there\u0027s a case where we might not be able provision to 1 node if all other resources are provisioned, unless we allow handling of a special edge case. \n\nThat can be discussed during implementation, though.","commit_id":"296d8e46686af7d6534d2244ed4305cbf3d2f359"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"c3e983538eac9d3e62d80941fea36db7bf7954fc","unresolved":false,"context_lines":[{"line_number":42,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"In general, a nova-compute running the Ironic virt driver should expose"},{"line_number":45,"context_line":"(total resources)/(number of compute services). This allows for resources to be"},{"line_number":46,"context_line":"sharded across multiple compute services without over-reporting resources."},{"line_number":47,"context_line":"This compute daemon should only register as a single row in the"},{"line_number":48,"context_line":"compute_nodes table, rather than many rows, accomplishing the goal of the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_5d3194a1","line":45,"in_reply_to":"1a26ad4f_a2ee89ea","updated":"2015-10-28 02:30:54.000000000","message":"This actually isn\u0027t true and should be fixed - see line 88","commit_id":"296d8e46686af7d6534d2244ed4305cbf3d2f359"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b5092580e9094674b196c20cd274da76c2a6a3e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \"id\": \"some-uuid\","},{"line_number":83,"context_line":"            \"properties\": {...},"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"    }"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"We will report (total ironic capacity) into the resource tracker for each"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_d69a82c5","line":85,"updated":"2015-10-27 06:57:47.000000000","message":"I\u0027m a bit concerned with providing a flatten dict to Ironic given all the efforts we do with blueprint request-spec-object-mitaka but that can be discussed in the implementation phase","commit_id":"296d8e46686af7d6534d2244ed4305cbf3d2f359"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d30e4ec901fbbee5402b4cfdd1dbfc4d1b33de43","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \"id\": \"some-uuid\","},{"line_number":83,"context_line":"            \"properties\": {...},"},{"line_number":84,"context_line":"        },"},{"line_number":85,"context_line":"    }"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"We will report (total ironic capacity) into the resource tracker for each"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_6e52a015","line":85,"in_reply_to":"1a26ad4f_d69a82c5","updated":"2015-10-27 22:01:22.000000000","message":"Yeah, we should discuss it more... many of the RequestSpec fields don\u0027t apply here though, so it\u0027s weird.","commit_id":"296d8e46686af7d6534d2244ed4305cbf3d2f359"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b5092580e9094674b196c20cd274da76c2a6a3e","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"We will report (total ironic capacity) into the resource tracker for each"},{"line_number":89,"context_line":"compute host. This will end up over-reporting total available capacity to Nova,"},{"line_number":90,"context_line":"however is the least wrong option here. Other (worse) options are:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"* Report (total ironic capacity)/(number of compute hosts) from each compute"},{"line_number":93,"context_line":"  host. This is more \"right\", but has the possibility of a compute host"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_b6a906e2","line":90,"range":{"start_line":90,"start_character":11,"end_line":90,"end_character":38},"updated":"2015-10-27 06:57:47.000000000","message":"I agree, the 2 below options are worst to me","commit_id":"296d8e46686af7d6534d2244ed4305cbf3d2f359"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b5092580e9094674b196c20cd274da76c2a6a3e","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"This should improve performance a bit. Currently the resource tracker is"},{"line_number":143,"context_line":"responsible for every node in an Ironic deployment. This will make that group"},{"line_number":144,"context_line":"smaller and improve the performance of the resource tracker loop."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Other deployer impact"},{"line_number":147,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_563af2ce","line":144,"updated":"2015-10-27 06:57:47.000000000","message":"there is an extra lookup to Ironic (see L60) but that seems to me acceptable","commit_id":"296d8e46686af7d6534d2244ed4305cbf3d2f359"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d30e4ec901fbbee5402b4cfdd1dbfc4d1b33de43","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"This should improve performance a bit. Currently the resource tracker is"},{"line_number":143,"context_line":"responsible for every node in an Ironic deployment. This will make that group"},{"line_number":144,"context_line":"smaller and improve the performance of the resource tracker loop."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Other deployer impact"},{"line_number":147,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1a26ad4f_4e4d6471","line":144,"in_reply_to":"1a26ad4f_563af2ce","updated":"2015-10-27 22:01:22.000000000","message":"Yep. We do remove the \"1000 nodes takes 5m to run resource tracker part\" which is the main impact here. :)","commit_id":"296d8e46686af7d6534d2244ed4305cbf3d2f359"}]}
