)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3fb13d3e08fe246a2363800480e5471cc27509f0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add node.resource_class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Related-Bug: #1604916"},{"line_number":10,"context_line":"Change-Id: Ic5daf0d31207b7c123cb8b4228dae624383a48ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"dada55a8_8bb2404a","line":9,"updated":"2016-07-21 20:42:44.000000000","message":"i think it might be \u0027Partial-Bug\u0027 (but I don\u0027t care)","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"10097edd3a896d7e62869f9026b1601ea2c3c6ee","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add node.resource_class"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Related-Bug: #1604916"},{"line_number":10,"context_line":"Change-Id: Ic5daf0d31207b7c123cb8b4228dae624383a48ab"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"dada55a8_e36e77fe","line":9,"in_reply_to":"dada55a8_8bb2404a","updated":"2016-07-25 10:37:37.000000000","message":"Both will link the bug, afaik, but only if it\u0027s on the first patchset so either way it won\u0027t work now :)","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"}],"specs/approved/node-resource-class.rst":[{"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":"aa10754d535a9dcfd2faf4703206ac1862eeb24b","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1604916"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova has a plan for scheduling Ironic resources the same way as other Nova"},{"line_number":14,"context_line":"resources, that involves making each Ironic node a \"resource provider\","},{"line_number":15,"context_line":"which has a \"resource class\". That resource class is referenced by the"},{"line_number":16,"context_line":"Nova flavor, in short saying that the flavor requires exactly one thing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_e94ce3c9","line":13,"updated":"2016-07-20 21:18:48.000000000","message":"nit: ironic, nova -- throughout","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"dd8d4f540ea96d09b6ce1fe9150e41d0998d3ed6","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1604916"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova has a plan for scheduling Ironic resources the same way as other Nova"},{"line_number":14,"context_line":"resources, that involves making each Ironic node a \"resource provider\","},{"line_number":15,"context_line":"which has a \"resource class\". That resource class is referenced by the"},{"line_number":16,"context_line":"Nova flavor, in short saying that the flavor requires exactly one thing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_12e32eda","line":13,"in_reply_to":"dada55a8_11f4d058","updated":"2016-07-21 17:54:20.000000000","message":"Done","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"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":"ae10bc7518bf4cd8f04433eb856467d0cc199ddd","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1604916"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova has a plan for scheduling Ironic resources the same way as other Nova"},{"line_number":14,"context_line":"resources, that involves making each Ironic node a \"resource provider\","},{"line_number":15,"context_line":"which has a \"resource class\". That resource class is referenced by the"},{"line_number":16,"context_line":"Nova flavor, in short saying that the flavor requires exactly one thing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_e3a97225","line":13,"in_reply_to":"dada55a8_23d38a61","updated":"2016-07-21 16:18:26.000000000","message":"We typically have been asking spec writers to follow those guidelines w/r/t capitalization, and I do think specs are a form of documentation. Considered me bothered, but at a \"nit\" level.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"699899b3837f4f8e68108a817e107bb45d402220","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1604916"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova has a plan for scheduling Ironic resources the same way as other Nova"},{"line_number":14,"context_line":"resources, that involves making each Ironic node a \"resource provider\","},{"line_number":15,"context_line":"which has a \"resource class\". That resource class is referenced by the"},{"line_number":16,"context_line":"Nova flavor, in short saying that the flavor requires exactly one thing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_11f4d058","line":13,"in_reply_to":"dada55a8_e3a97225","updated":"2016-07-21 16:50:36.000000000","message":"And I think doing that is quite silly, it doesn\u0027t change the meaning of the spec, and lots of little things like this is what pile up and slow us down getting meaningful things done.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d40d0b286fa2a58cb96deba4f819fe7b39239100","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/ironic/+bug/1604916"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova has a plan for scheduling Ironic resources the same way as other Nova"},{"line_number":14,"context_line":"resources, that involves making each Ironic node a \"resource provider\","},{"line_number":15,"context_line":"which has a \"resource class\". That resource class is referenced by the"},{"line_number":16,"context_line":"Nova flavor, in short saying that the flavor requires exactly one thing"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_23d38a61","line":13,"in_reply_to":"dada55a8_e94ce3c9","updated":"2016-07-21 16:15:57.000000000","message":"It\u0027s not docs so I prefer to capitalize, but I can change it if folks are bothered.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"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":"aa10754d535a9dcfd2faf4703206ac1862eeb24b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"Adds a \"resource_class\" field to the nodes table. This will be a VARCHAR(100)"},{"line_number":105,"context_line":"because that matches Nova\u0027s table structure. There will be data migrations"},{"line_number":106,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":107,"context_line":"a corresponding version bump."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"State Machine Impact"},{"line_number":110,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_892447c5","line":107,"updated":"2016-07-20 21:18:48.000000000","message":"Should we default the new field to anything? I\u0027m presuming no, but we\u0027ll have to be damn sure to document this in upgrade impact once it\u0027s required in Nova.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"dd8d4f540ea96d09b6ce1fe9150e41d0998d3ed6","unresolved":false,"context_lines":[{"line_number":104,"context_line":"Adds a \"resource_class\" field to the nodes table. This will be a VARCHAR(100)"},{"line_number":105,"context_line":"because that matches Nova\u0027s table structure. There will be data migrations"},{"line_number":106,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":107,"context_line":"a corresponding version bump."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"State Machine Impact"},{"line_number":110,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_52e926b6","line":107,"in_reply_to":"dada55a8_2308aad9","updated":"2016-07-21 17:54:20.000000000","message":"Going to note it should default to an empty string, done","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d40d0b286fa2a58cb96deba4f819fe7b39239100","unresolved":false,"context_lines":[{"line_number":104,"context_line":"Adds a \"resource_class\" field to the nodes table. This will be a VARCHAR(100)"},{"line_number":105,"context_line":"because that matches Nova\u0027s table structure. There will be data migrations"},{"line_number":106,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":107,"context_line":"a corresponding version bump."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"State Machine Impact"},{"line_number":110,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_2308aad9","line":107,"in_reply_to":"dada55a8_892447c5","updated":"2016-07-21 16:15:57.000000000","message":"Agree, don\u0027t think we should default (since it will need to be added to the flavor anyway, so a default doesn\u0027t do much).","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ff64600d8f08eda5814960371645a3ae740a3b3c","unresolved":false,"context_lines":[{"line_number":105,"context_line":"because that matches Nova\u0027s table structure. There will be data migrations"},{"line_number":106,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":107,"context_line":"a corresponding version bump."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"State Machine Impact"},{"line_number":110,"context_line":"--------------------"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_0c54e5fc","line":108,"updated":"2016-07-20 21:24:04.000000000","message":"A couple alternatives here:\n- use a \"tag\" for this, instead of another field\n- use a referential table (eg, CREATE TABLE resource_classes (id INT, name VARCHAR(100))) and store a foreign key in nodes.resource_class\n\nNot sure either of these are better. Let\u0027s discuss.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d40d0b286fa2a58cb96deba4f819fe7b39239100","unresolved":false,"context_lines":[{"line_number":105,"context_line":"because that matches Nova\u0027s table structure. There will be data migrations"},{"line_number":106,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":107,"context_line":"a corresponding version bump."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"State Machine Impact"},{"line_number":110,"context_line":"--------------------"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_e354d2ca","line":108,"in_reply_to":"dada55a8_0c54e5fc","updated":"2016-07-21 16:15:57.000000000","message":"RIght, I\u0027m trying to keep this simple - I don\u0027t want it to be a special tag (it needs to be a first-class field in the API). I\u0027m not opposed to moving it to another table, but I\u0027m not sure I see a huge benefit.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6755114fac3597cc3e6128cd5e495e7baf017aa8","unresolved":false,"context_lines":[{"line_number":105,"context_line":"because that matches Nova\u0027s table structure. There will be data migrations"},{"line_number":106,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":107,"context_line":"a corresponding version bump."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"State Machine Impact"},{"line_number":110,"context_line":"--------------------"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_fcd58c1b","line":108,"in_reply_to":"dada55a8_e354d2ca","updated":"2016-07-21 18:40:55.000000000","message":"possible benefit to using a separate table: as an operator, I could query the Ironic API for a list of resource_classes, eg. \"GET /v1/resource_classes\", to ensure that this matches the set of flavors I want exposed in Nova.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ff64600d8f08eda5814960371645a3ae740a3b3c","unresolved":false,"context_lines":[{"line_number":114,"context_line":"REST API impact"},{"line_number":115,"context_line":"---------------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The new \"resource_class\" field will be exposed in the API, just like any"},{"line_number":118,"context_line":"other string field, with the same semantics."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"There will be a microversion bump, as usual."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_4c71bda7","line":117,"updated":"2016-07-20 21:24:04.000000000","message":"Will we need to enable searching by this field? Eg, \"GET /v1/nodes?resource_class\u003dironic-gold\"\n\nIf so, that should be described here, too","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6755114fac3597cc3e6128cd5e495e7baf017aa8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"REST API impact"},{"line_number":115,"context_line":"---------------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The new \"resource_class\" field will be exposed in the API, just like any"},{"line_number":118,"context_line":"other string field, with the same semantics."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"There will be a microversion bump, as usual."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_bcacb48c","line":117,"in_reply_to":"dada55a8_0332c6a6","updated":"2016-07-21 18:40:55.000000000","message":"cool. \n\nWe\u0027re going to need to do an API version bump for this regardless. Adding it to filtering/sorting supported parameter list isn\u0027t a lot of work, so let\u0027s do it all at once.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d40d0b286fa2a58cb96deba4f819fe7b39239100","unresolved":false,"context_lines":[{"line_number":114,"context_line":"REST API impact"},{"line_number":115,"context_line":"---------------"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"The new \"resource_class\" field will be exposed in the API, just like any"},{"line_number":118,"context_line":"other string field, with the same semantics."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"There will be a microversion bump, as usual."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_0332c6a6","line":117,"in_reply_to":"dada55a8_4c71bda7","updated":"2016-07-21 16:15:57.000000000","message":"We won\u0027t need to, for the Nova things to work. It can\u0027t hurt to go ahead and add it to filtering and sorting now, or we could do that later.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ff64600d8f08eda5814960371645a3ae740a3b3c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"The new \"resource_class\" field will be exposed in the API, just like any"},{"line_number":118,"context_line":"other string field, with the same semantics."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"There will be a microversion bump, as usual."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Client (CLI) impact"},{"line_number":123,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_ecb7d137","line":120,"updated":"2016-07-20 21:24:04.000000000","message":"as I\u0027m implementing policy, I\u0027d like to also ask... what default policy should be enforced on this resource?","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"dd8d4f540ea96d09b6ce1fe9150e41d0998d3ed6","unresolved":false,"context_lines":[{"line_number":117,"context_line":"The new \"resource_class\" field will be exposed in the API, just like any"},{"line_number":118,"context_line":"other string field, with the same semantics."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"There will be a microversion bump, as usual."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Client (CLI) impact"},{"line_number":123,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_f2c3fa35","line":120,"in_reply_to":"dada55a8_831eb609","updated":"2016-07-21 17:54:20.000000000","message":"Done","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6755114fac3597cc3e6128cd5e495e7baf017aa8","unresolved":false,"context_lines":[{"line_number":117,"context_line":"The new \"resource_class\" field will be exposed in the API, just like any"},{"line_number":118,"context_line":"other string field, with the same semantics."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"There will be a microversion bump, as usual."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Client (CLI) impact"},{"line_number":123,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_fc2d8cfe","line":120,"in_reply_to":"dada55a8_831eb609","updated":"2016-07-21 18:40:55.000000000","message":"interesting.\n\nIn my first pass, I haven\u0027t put policies on what fields are returned. (I just started doing that for driver_internal_info).","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d40d0b286fa2a58cb96deba4f819fe7b39239100","unresolved":false,"context_lines":[{"line_number":117,"context_line":"The new \"resource_class\" field will be exposed in the API, just like any"},{"line_number":118,"context_line":"other string field, with the same semantics."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"There will be a microversion bump, as usual."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Client (CLI) impact"},{"line_number":123,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_831eb609","line":120,"in_reply_to":"dada55a8_ecb7d137","updated":"2016-07-21 16:15:57.000000000","message":"Probably same as driver, *_interface, etc","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"ff64600d8f08eda5814960371645a3ae740a3b3c","unresolved":false,"context_lines":[{"line_number":127,"context_line":"\"ironic\" CLI"},{"line_number":128,"context_line":"~~~~~~~~~~~~"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"The CLI will be updated to add the field."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"\"openstack baremetal\" CLI"},{"line_number":133,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_2c9d69bc","line":130,"updated":"2016-07-20 21:24:04.000000000","message":"and filtering on the field?\n\n(and hiding this when the client talks to older servers?)","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"6755114fac3597cc3e6128cd5e495e7baf017aa8","unresolved":false,"context_lines":[{"line_number":127,"context_line":"\"ironic\" CLI"},{"line_number":128,"context_line":"~~~~~~~~~~~~"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"The CLI will be updated to add the field."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"\"openstack baremetal\" CLI"},{"line_number":133,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_5c6bf81d","line":130,"in_reply_to":"dada55a8_23ca6a1b","updated":"2016-07-21 18:40:55.000000000","message":"Yea, we don\u0027t do that today for anything in the client.\n\nMy previous attempts to do that got stuck in bikeshedding, but it came up in the Nova meeting yesterday so I am bringing it up again.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d40d0b286fa2a58cb96deba4f819fe7b39239100","unresolved":false,"context_lines":[{"line_number":127,"context_line":"\"ironic\" CLI"},{"line_number":128,"context_line":"~~~~~~~~~~~~"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"The CLI will be updated to add the field."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"\"openstack baremetal\" CLI"},{"line_number":133,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_23ca6a1b","line":130,"in_reply_to":"dada55a8_2c9d69bc","updated":"2016-07-21 16:15:57.000000000","message":"I think hiding it in the API will handle hiding it in the client, if it only prints the fields that come back from the API. I\u0027m not 100% sure it does, if it doesn\u0027t, do we do this for fields we\u0027ve recently added?\n\nIf we add filtering in the api, naturally we\u0027ll add it here.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"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":"aa10754d535a9dcfd2faf4703206ac1862eeb24b","unresolved":false,"context_lines":[{"line_number":225,"context_line":"Documentation Impact"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Add the new field to the API reference."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_c9011f08","line":228,"updated":"2016-07-20 21:18:48.000000000","message":"I think we\u0027ll also need to change all the documentation around how to setup nova\u003c-\u003eironic to reference what resource_class does, but I will presume that\u0027s implied.","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"dd8d4f540ea96d09b6ce1fe9150e41d0998d3ed6","unresolved":false,"context_lines":[{"line_number":225,"context_line":"Documentation Impact"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Add the new field to the API reference."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_468207c9","line":228,"in_reply_to":"dada55a8_23f1ca6b","updated":"2016-07-21 17:54:20.000000000","message":"Done","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d40d0b286fa2a58cb96deba4f819fe7b39239100","unresolved":false,"context_lines":[{"line_number":225,"context_line":"Documentation Impact"},{"line_number":226,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"Add the new field to the API reference."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_23f1ca6b","line":228,"in_reply_to":"dada55a8_c9011f08","updated":"2016-07-21 16:15:57.000000000","message":"Yeah, I\u0027ll add that here because I didn\u0027t think about it as I was writing this spec","commit_id":"8ea52d419ec3bab60b2399e8c716ebe0b2ca71fc"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"603d9d5cb48507b26af783632bc1bc543552216f","unresolved":false,"context_lines":[{"line_number":101,"context_line":"Data model impact"},{"line_number":102,"context_line":"-----------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Adds a \"resource_class\" field to the nodes table. This will be a VARCHAR(100)"},{"line_number":105,"context_line":"because that matches nova\u0027s table structure. There will be data migrations"},{"line_number":106,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":107,"context_line":"a corresponding version bump. This will default to the empty string."}],"source_content_type":"text/x-rst","patch_set":4,"id":"dada55a8_9c7bb0bd","line":104,"updated":"2016-07-21 18:42:55.000000000","message":"VARCHAR(80)\n\nbecause unicode is 3 bytes","commit_id":"3389fbbbc118ed0bf6044eff9056f1c5f41cbe11"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3fb13d3e08fe246a2363800480e5471cc27509f0","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The current proposal in nova is to make each ironic node a \"resource provider\","},{"line_number":39,"context_line":"which is associated with a \"resource class\". A nova flavor may declare that"},{"line_number":40,"context_line":"it requires some amount of a given resource class; in ironic\u0027s case it would"},{"line_number":41,"context_line":"require one and only one. The resource provider record for a node will"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_0b6130a9","line":38,"updated":"2016-07-21 20:42:44.000000000","message":"please add a link to the nova proposal (or the resource * stuff)","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"10097edd3a896d7e62869f9026b1601ea2c3c6ee","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Proposed change"},{"line_number":36,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The current proposal in nova is to make each ironic node a \"resource provider\","},{"line_number":39,"context_line":"which is associated with a \"resource class\". A nova flavor may declare that"},{"line_number":40,"context_line":"it requires some amount of a given resource class; in ironic\u0027s case it would"},{"line_number":41,"context_line":"require one and only one. The resource provider record for a node will"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_eed0c5cb","line":38,"in_reply_to":"dada55a8_0b6130a9","updated":"2016-07-25 10:37:37.000000000","message":"Done","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3fb13d3e08fe246a2363800480e5471cc27509f0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"The current proposal in nova is to make each ironic node a \"resource provider\","},{"line_number":39,"context_line":"which is associated with a \"resource class\". A nova flavor may declare that"},{"line_number":40,"context_line":"it requires some amount of a given resource class; in ironic\u0027s case it would"},{"line_number":41,"context_line":"require one and only one. The resource provider record for a node will"},{"line_number":42,"context_line":"declare that it provides exactly 1 (or 0, if it is in maintenance or similar)"},{"line_number":43,"context_line":"of the resource class for that provider record."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_abfd84b2","line":41,"updated":"2016-07-21 20:42:44.000000000","message":"s/for a node/for a BM node in nova/ ?","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"10097edd3a896d7e62869f9026b1601ea2c3c6ee","unresolved":false,"context_lines":[{"line_number":38,"context_line":"The current proposal in nova is to make each ironic node a \"resource provider\","},{"line_number":39,"context_line":"which is associated with a \"resource class\". A nova flavor may declare that"},{"line_number":40,"context_line":"it requires some amount of a given resource class; in ironic\u0027s case it would"},{"line_number":41,"context_line":"require one and only one. The resource provider record for a node will"},{"line_number":42,"context_line":"declare that it provides exactly 1 (or 0, if it is in maintenance or similar)"},{"line_number":43,"context_line":"of the resource class for that provider record."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_2e777dd5","line":41,"in_reply_to":"dada55a8_abfd84b2","updated":"2016-07-25 10:37:37.000000000","message":"Well, I think eventually we do this even without Nova, but I\u0027ve made it \"ironic node\"","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3fb13d3e08fe246a2363800480e5471cc27509f0","unresolved":false,"context_lines":[{"line_number":43,"context_line":"of the resource class for that provider record."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This proposal still allows nodes to be scheduled to based on qualitative"},{"line_number":46,"context_line":"properties, such as capabilities or affinity rules."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"To do so, nova needs to know which resource class the resource provider record"},{"line_number":49,"context_line":"needs to be associated with. As operators manage the flavors that will be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_4baa0886","line":46,"updated":"2016-07-21 20:42:44.000000000","message":"in addition to a node being in the specified resource class, right?","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"10097edd3a896d7e62869f9026b1601ea2c3c6ee","unresolved":false,"context_lines":[{"line_number":43,"context_line":"of the resource class for that provider record."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"This proposal still allows nodes to be scheduled to based on qualitative"},{"line_number":46,"context_line":"properties, such as capabilities or affinity rules."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"To do so, nova needs to know which resource class the resource provider record"},{"line_number":49,"context_line":"needs to be associated with. As operators manage the flavors that will be"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_ae308d08","line":46,"in_reply_to":"dada55a8_4baa0886","updated":"2016-07-25 10:37:37.000000000","message":"Yep, added some words.","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3fb13d3e08fe246a2363800480e5471cc27509f0","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        ironic-gold: 1"},{"line_number":75,"context_line":"      extra_specs:"},{"line_number":76,"context_line":"        capabilities: boot_mode:bios"},{"line_number":77,"context_line":"    - baremetal-gold-uefi"},{"line_number":78,"context_line":"      resources:"},{"line_number":79,"context_line":"        ironic-gold: 1"},{"line_number":80,"context_line":"      extra_specs:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_cbc39836","line":77,"updated":"2016-07-21 20:42:44.000000000","message":"maybe make this baremetal-silver-uefi or change ironic inventory, otherwise nothing will match the uefi capability.","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"10097edd3a896d7e62869f9026b1601ea2c3c6ee","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        ironic-gold: 1"},{"line_number":75,"context_line":"      extra_specs:"},{"line_number":76,"context_line":"        capabilities: boot_mode:bios"},{"line_number":77,"context_line":"    - baremetal-gold-uefi"},{"line_number":78,"context_line":"      resources:"},{"line_number":79,"context_line":"        ironic-gold: 1"},{"line_number":80,"context_line":"      extra_specs:"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_8e330913","line":77,"in_reply_to":"dada55a8_cbc39836","updated":"2016-07-25 10:37:37.000000000","message":"Oops, done","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3fb13d3e08fe246a2363800480e5471cc27509f0","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Keep doing the (host, node) thing long enough such that the nova team"},{"line_number":98,"context_line":"decides they want to remove our driver from nova, and subsequently remove"},{"line_number":99,"context_line":"the (host, node) tuple and break our driver horribly."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data model impact"},{"line_number":102,"context_line":"-----------------"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_4be7a8ab","line":100,"updated":"2016-07-21 20:42:44.000000000","message":"I am thinking of alternatives to node.resource_class. It seems obvious that we need to have some sort of match between nova\u0027s resource_class and ironic\u0027s stuff. Why not use node tagging or some other name than \u0027resource_class\u0027?\n\nI\u0027m fine with a new field for this, but it\u0027d like to see tagging being used somehow (even though that feature hasn\u0027t landed yet!)\n\nI don\u0027t like \u0027resource_class\u0027 because it seems nova-centric, but I can\u0027t think of anything better right now. I mean, it is just a \u0027classification\u0027, (category, group), right?","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"151538ca9320850cf39217236bf5ed4c30b7f04e","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Keep doing the (host, node) thing long enough such that the nova team"},{"line_number":98,"context_line":"decides they want to remove our driver from nova, and subsequently remove"},{"line_number":99,"context_line":"the (host, node) tuple and break our driver horribly."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data model impact"},{"line_number":102,"context_line":"-----------------"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_6bd42beb","line":100,"in_reply_to":"dada55a8_4be7a8ab","updated":"2016-07-21 20:56:16.000000000","message":"Ruby, I had the same thought and mentioned it on an earlier rev / in f2f discussions, but...\n\nAs Jay pointed out, the key difference is that each Node can have exactly one value for this field, which is a necessary aspect of the interaction with Nova / their new Placement Engine.","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"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":"fa1c651a5c445c5d2764af4e24482e0798108903","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Keep doing the (host, node) thing long enough such that the nova team"},{"line_number":98,"context_line":"decides they want to remove our driver from nova, and subsequently remove"},{"line_number":99,"context_line":"the (host, node) tuple and break our driver horribly."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data model impact"},{"line_number":102,"context_line":"-----------------"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_4b704772","line":100,"in_reply_to":"dada55a8_4be7a8ab","updated":"2016-07-21 20:46:12.000000000","message":"The key differences with this vs tags or groups in general is that there\u0027s exactly 1.\n\nI sorta agree with you I don\u0027t love the name, but I couldn\u0027t think of anything better (and resource class is better than the original proposal in the room here, \"flavor\"... blegh!)","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"10097edd3a896d7e62869f9026b1601ea2c3c6ee","unresolved":false,"context_lines":[{"line_number":104,"context_line":"Adds a \"resource_class\" field to the nodes table. This will be a VARCHAR(80)"},{"line_number":105,"context_line":"because that matches nova\u0027s table structure. There will be data migrations"},{"line_number":106,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":107,"context_line":"a corresponding version bump. This will default to the empty string."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"State Machine Impact"},{"line_number":110,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_c69338f9","line":107,"updated":"2016-07-25 10:37:37.000000000","message":"I\u0027d like to make this default to NULL, now that I\u0027ve thought more about it.","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3fb13d3e08fe246a2363800480e5471cc27509f0","unresolved":false,"context_lines":[{"line_number":153,"context_line":"------------------"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"No direct impact in scope here, but the new field will be used by the resource"},{"line_number":156,"context_line":"tracker in the future."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Ramdisk impact"},{"line_number":159,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_8b61a007","line":156,"updated":"2016-07-21 20:42:44.000000000","message":"so no need to change the ironic-driver? Is it because nova\u0027s resource tracker is looking for the node\u0027s \"resource_class\" attribute?","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"151538ca9320850cf39217236bf5ed4c30b7f04e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"------------------"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"No direct impact in scope here, but the new field will be used by the resource"},{"line_number":156,"context_line":"tracker in the future."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Ramdisk impact"},{"line_number":159,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_eb2dbbfe","line":156,"in_reply_to":"dada55a8_8b61a007","updated":"2016-07-21 20:56:16.000000000","message":"there will be a patch to Nova, but it won\u0027t be large.\n\nThe plan is for larger changes in Ocata to use the placement engine. (not described or within the scope of this proposal)","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"10097edd3a896d7e62869f9026b1601ea2c3c6ee","unresolved":false,"context_lines":[{"line_number":153,"context_line":"------------------"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"No direct impact in scope here, but the new field will be used by the resource"},{"line_number":156,"context_line":"tracker in the future."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Ramdisk impact"},{"line_number":159,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_ce14e14e","line":156,"in_reply_to":"dada55a8_eb2dbbfe","updated":"2016-07-25 10:37:37.000000000","message":"Right, I\u0027ll add words here.","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"3fb13d3e08fe246a2363800480e5471cc27509f0","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"After the deployment of the Newton version of nova, deployers will"},{"line_number":187,"context_line":"need to populate the resource_class field in ironic, and associate the"},{"line_number":188,"context_line":"flavors, before deploying the Ocata version of nova."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Developer impact"},{"line_number":191,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_ab33c3f4","line":188,"updated":"2016-07-21 20:42:44.000000000","message":"what happens if a node has an empty resource_class field? Does it mean it won\u0027t match any flavors that specify a resource_class? For existing flavors (that didn\u0027t specify resource_classes), will they match any nodes with resource_class\u003dX, or will they only match nodes with resource_class\u003d\"\"? (Sorry, this might be a \u0027bigger picture\u0027 question.)","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"10097edd3a896d7e62869f9026b1601ea2c3c6ee","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"After the deployment of the Newton version of nova, deployers will"},{"line_number":187,"context_line":"need to populate the resource_class field in ironic, and associate the"},{"line_number":188,"context_line":"flavors, before deploying the Ocata version of nova."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Developer impact"},{"line_number":191,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"dada55a8_794b015a","line":188,"in_reply_to":"dada55a8_ab33c3f4","updated":"2016-07-25 10:37:37.000000000","message":"Yeah, there\u0027s some edge cases here that I haven\u0027t fully formed my thoughts on - I\u0027d like to chat with the Nova folks about that.","commit_id":"90704348e4972d8d5ff5205993c0d987331771eb"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"6619deb6ea9714eff39f08f892c0fbcfd3bb43d8","unresolved":false,"context_lines":[{"line_number":89,"context_line":"used when this is implemented."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"A nova user booting an instance with either the baremetal-gold or"},{"line_number":92,"context_line":"baremetal-gold-uefi flavor would land on node-1, because capabilities can"},{"line_number":93,"context_line":"still be passed down to ironic, and the resource_class on the node matches"},{"line_number":94,"context_line":"what is required by flavor. The baremetal-silver flavor would match node-2."},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"dada55a8_70f654fa","line":92,"updated":"2016-07-25 21:27:34.000000000","message":"I\u0027m not sure this is true, because baremetal-gold flavor has bios capability and node-1 has uefi capability. I think that initially, the first \u0027filter\u0027 of resource \u0027ironic-gold\u0027 would match, but the capabiliities would not match.","commit_id":"56103637ffffbaf0e2078b42efb0dee6fb864c59"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"6619deb6ea9714eff39f08f892c0fbcfd3bb43d8","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Adds a \"resource_class\" field to the nodes table. This will be a VARCHAR(80)"},{"line_number":107,"context_line":"because that matches nova\u0027s table structure. There will be data migrations"},{"line_number":108,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":109,"context_line":"a corresponding version bump. This will default to NULL."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"State Machine Impact"},{"line_number":112,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dada55a8_d072a07b","line":109,"updated":"2016-07-25 21:27:34.000000000","message":"I don\u0027t want to forget this. Whatever the default value is (NULL here), I\u0027d like to know what happens when the nova scheduling starts using the placement stuff. What will happen with ironic nodes where node.resource_class is NULL (ie the operator didn\u0027t specify a value. What if all the bm nodes are the same; are we going to force the operator to actually stick a non-NULL value there just so it\u0027ll work with nova?) Is nova going to force all flavors to include a resource-class?\n\nEven if we don\u0027t have the answer now, maybe add a note that addressing this is out of scope of this spec but will be addressed (where?)","commit_id":"56103637ffffbaf0e2078b42efb0dee6fb864c59"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"8715ed04078069a9a881533503bf82a74f2d613b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Adds a \"resource_class\" field to the nodes table. This will be a VARCHAR(80)"},{"line_number":107,"context_line":"because that matches nova\u0027s table structure. There will be data migrations"},{"line_number":108,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":109,"context_line":"a corresponding version bump. This will default to NULL."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"State Machine Impact"},{"line_number":112,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dada55a8_0c66a550","line":109,"in_reply_to":"dada55a8_9afde23d","updated":"2016-07-26 20:00:45.000000000","message":"@Jay, thanks for clarifying this!","commit_id":"56103637ffffbaf0e2078b42efb0dee6fb864c59"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c6c3b74494257dd37837aed849a16a500145fe90","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Adds a \"resource_class\" field to the nodes table. This will be a VARCHAR(80)"},{"line_number":107,"context_line":"because that matches nova\u0027s table structure. There will be data migrations"},{"line_number":108,"context_line":"provided for this change. The objects API will also take this change, with"},{"line_number":109,"context_line":"a corresponding version bump. This will default to NULL."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"State Machine Impact"},{"line_number":112,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dada55a8_9afde23d","line":109,"in_reply_to":"dada55a8_d072a07b","updated":"2016-07-25 22:44:36.000000000","message":"Hi Ruby!\n\nSo, the plan at this point is to duplicate the code paths in Nova\u0027s resource tracker so that if the operator does absolutely nothing, things will continue to behave exactly as they have been. That will give Ironic operators the time and freedom to set their node resource class attributes to a non-NULL value during some extended period of time in Ocata.\n\nBest,\n\n-jay","commit_id":"56103637ffffbaf0e2078b42efb0dee6fb864c59"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"d2f7d2371dbf3ab531edde48e36452a7e26c8eab","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Immediately, we\u0027ll pass the `resource_class` field back up to the resource"},{"line_number":158,"context_line":"tracker, so that nova can put these resources in the placement database in"},{"line_number":159,"context_line":"Newton. There will be a small patch that bumps the API version we\u0027re using"},{"line_number":160,"context_line":"and passes the field back in the resource_dict."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"During Ocata, work will be done on the scheduler to use this for scheduling,"}],"source_content_type":"text/x-rst","patch_set":9,"id":"dada55a8_e95223dd","line":159,"updated":"2016-07-26 19:24:16.000000000","message":"this will have an impact on the upgrade / backwards compat story for the nova.virt.ironic driver, and I think it\u0027s worth calling it out explicitly in the spec.\n\neg: This change necessitates that the nova.virt.ironic driver included in the Newton release of Nova is only compatible with the Newton release of Ironic.\n\nOR, we will need to add some code handling backwards compatibility (eg, if the resource_class field is not present in Ironic\u0027s API, because the deployer didn\u0027t upgrade Ironic yet)","commit_id":"70044d732e4288b5a5cba513b8b1a3d0b58cd839"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"9dcac1d00ebc34581db8920c69c5ad4d5e340cf3","unresolved":false,"context_lines":[{"line_number":249,"context_line":"We\u0027ll also need to update the install guide and any other docs that talk"},{"line_number":250,"context_line":"about setting up nova with ironic, to make sure that deployers are setting"},{"line_number":251,"context_line":"this field when adding nodes. This will also need to be communicated"},{"line_number":252,"context_line":"extremely hard via release notes (and probably ops list emails)."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dada55a8_6c32c15f","line":252,"updated":"2016-07-26 19:59:10.000000000","message":"Do we document in several phases? First one indicating it exists and can be populated but won\u0027t be used until... ? Then when it is actually used, update to indicate that, and how to modify flavors?\n\nAnyway, have fun documenting this :)","commit_id":"7825196baaa4e8d9c95a04b2b748d03ea7526883"}]}
