)]}'
{"specs/juno/generic-hardware-discovery.rst":[{"author":{"_account_id":6899,"name":"Sirushti Murugesan","email":"sirushtim@gmail.com","username":"sirushtim"},"change_message_id":"ca68ea55dae525ac54151cc18356434b6c0f4ba3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Several approaches are expected to arrive for solving these, including,"},{"line_number":23,"context_line":"but not limited to, Ironic Python Agent."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use cases for hardware discovery may include:"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* Enrollment of new servers in data center"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_724d10c5","line":25,"updated":"2014-06-26 10:40:33.000000000","message":"Would perhaps Chassis Discovery also fall into this category? It\u0027d be very cool if one could discover servers and have them automatically tagged/categorized with the chassis they belong to.","commit_id":"e72395825ccdaea8242d03d8a748dd9b8be047ac"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"09c921bb36695972880f3add52df7a0305fccb03","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Several approaches are expected to arrive for solving these, including,"},{"line_number":23,"context_line":"but not limited to, Ironic Python Agent."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Use cases for hardware discovery may include:"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"* Enrollment of new servers in data center"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae5cdf2_0ce491a6","line":25,"in_reply_to":"1ae5cdf2_724d10c5","updated":"2014-06-26 11:15:21.000000000","message":"that\u0027s an interesting idea, but I\u0027m afraid we already have too much here :)","commit_id":"e72395825ccdaea8242d03d8a748dd9b8be047ac"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"fbe88cf3eefbde37761b9e150df1e2c8ba67c1fe","unresolved":false,"context_lines":[{"line_number":132,"context_line":"       \"extra\": {...}"},{"line_number":133,"context_line":"     }"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    Where `extra` is a free-form dictionary to pass to driver."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  * JSON schema definition for the response data::"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_f552bc34","line":135,"updated":"2014-06-26 18:00:42.000000000","message":"I think I\u0027d like an example of what sort of things might go in the `extra` dictionary.","commit_id":"b74deea077e95acebf8e2e4c33fda614df683ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dc1bea607b27174f28b0298edafb4807bb08abf6","unresolved":false,"context_lines":[{"line_number":132,"context_line":"       \"extra\": {...}"},{"line_number":133,"context_line":"     }"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    Where `extra` is a free-form dictionary to pass to driver."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  * JSON schema definition for the response data::"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_7e21294e","line":135,"in_reply_to":"1ae5cdf2_f552bc34","updated":"2014-06-26 18:28:41.000000000","message":"Done","commit_id":"b74deea077e95acebf8e2e4c33fda614df683ff7"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"fbe88cf3eefbde37761b9e150df1e2c8ba67c1fe","unresolved":false,"context_lines":[{"line_number":143,"context_line":"       \"extra\": {...}"},{"line_number":144,"context_line":"     }"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    Where `extra` is a free-form dictionary, returned from driver."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Driver API impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_3530a406","line":146,"updated":"2014-06-26 18:00:42.000000000","message":"Ditto","commit_id":"b74deea077e95acebf8e2e4c33fda614df683ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dc1bea607b27174f28b0298edafb4807bb08abf6","unresolved":false,"context_lines":[{"line_number":143,"context_line":"       \"extra\": {...}"},{"line_number":144,"context_line":"     }"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    Where `extra` is a free-form dictionary, returned from driver."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Driver API impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_9e26f565","line":146,"in_reply_to":"1ae5cdf2_3530a406","updated":"2014-06-26 18:28:41.000000000","message":"Done","commit_id":"b74deea077e95acebf8e2e4c33fda614df683ff7"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"fbe88cf3eefbde37761b9e150df1e2c8ba67c1fe","unresolved":false,"context_lines":[{"line_number":154,"context_line":"  existing node it will be called on it\u0027s driver. For newly discovered node"},{"line_number":155,"context_line":"  it will be called on a default driver, which should be set via new"},{"line_number":156,"context_line":"  configuration option `discovery.default_driver`, which won\u0027t have"},{"line_number":157,"context_line":"  any default value."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"  Function signature::"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_a37c7e72","line":157,"updated":"2014-06-26 18:00:42.000000000","message":"I\u0027m skeptical as to how well this will work in a heterogeneous environment. Think half Dell, half HP. Is there a management driver that could work for both, as a default?","commit_id":"b74deea077e95acebf8e2e4c33fda614df683ff7"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"fbe88cf3eefbde37761b9e150df1e2c8ba67c1fe","unresolved":false,"context_lines":[{"line_number":175,"context_line":"* Add new method `find_node` to `ManagementInterface`, which will be called"},{"line_number":176,"context_line":"  for a `Node` after ramdisk call to `/nodes/autodiscovery` to find `Node`"},{"line_number":177,"context_line":"  uuid. Unlike `node_discovered`, it will be called on"},{"line_number":178,"context_line":"  `discovery.default_driver`, as associated driver is not known yet."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  Function signature::"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_e3f3e69c","line":178,"updated":"2014-06-26 18:00:42.000000000","message":"Ditto.","commit_id":"b74deea077e95acebf8e2e4c33fda614df683ff7"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"fbe88cf3eefbde37761b9e150df1e2c8ba67c1fe","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Other contributors:"},{"line_number":265,"context_line":"  Lucas Alvares Gomes, LP: lucasagomes, IRC: lucasagomes"},{"line_number":266,"context_line":"  Jim Rollenhagen, LP: TODO, IRC: jroll"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"Work Items"},{"line_number":269,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_a312be5e","line":266,"updated":"2014-06-26 18:00:42.000000000","message":"LP is jimrollenhagen :)","commit_id":"b74deea077e95acebf8e2e4c33fda614df683ff7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dc1bea607b27174f28b0298edafb4807bb08abf6","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Other contributors:"},{"line_number":265,"context_line":"  Lucas Alvares Gomes, LP: lucasagomes, IRC: lucasagomes"},{"line_number":266,"context_line":"  Jim Rollenhagen, LP: TODO, IRC: jroll"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"Work Items"},{"line_number":269,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ae5cdf2_bee5710b","line":266,"in_reply_to":"1ae5cdf2_a312be5e","updated":"2014-06-26 18:28:41.000000000","message":"Done","commit_id":"b74deea077e95acebf8e2e4c33fda614df683ff7"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ace23bb967a9c7187067a385dd7a4872c21c4b0c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"NOTE: Some of these changes were shamelessly borrowed from IPA spec:"},{"line_number":49,"context_line":"https://review.openstack.org/#/c/98506/"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* Write common code for storing hardware inventories in Node.extra field."},{"line_number":52,"context_line":"  Format is dicussed in `Data model impact` section."},{"line_number":53,"context_line":"  Any external agent, performing hardware discovery of new hardware"},{"line_number":54,"context_line":"  (or when it does not know the ID) will issue request to a new endpoint"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_bb0ad1ce","line":51,"updated":"2014-06-27 06:02:13.000000000","message":"The basic properties which are needed by ironic nova scheduler are cpus, memory and disks. These are manually required to be populated in Node.properties filed instead of Node.extra field.","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7fe8408ab21d0cb3ca5a97697dd4f009b6141678","unresolved":false,"context_lines":[{"line_number":48,"context_line":"NOTE: Some of these changes were shamelessly borrowed from IPA spec:"},{"line_number":49,"context_line":"https://review.openstack.org/#/c/98506/"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"* Write common code for storing hardware inventories in Node.extra field."},{"line_number":52,"context_line":"  Format is dicussed in `Data model impact` section."},{"line_number":53,"context_line":"  Any external agent, performing hardware discovery of new hardware"},{"line_number":54,"context_line":"  (or when it does not know the ID) will issue request to a new endpoint"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_6f623eae","line":51,"in_reply_to":"1ae5cdf2_bb0ad1ce","updated":"2014-06-27 11:08:18.000000000","message":"Good point, will update. I guess you expect to use this code as well, right?","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ace23bb967a9c7187067a385dd7a4872c21c4b0c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"  Format is dicussed in `Data model impact` section."},{"line_number":53,"context_line":"  Any external agent, performing hardware discovery of new hardware"},{"line_number":54,"context_line":"  (or when it does not know the ID) will issue request to a new endpoint"},{"line_number":55,"context_line":"  `/{api_version}/nodes/autodiscovery` (see below)."},{"line_number":56,"context_line":"  Any external agent, performing hardware specs update for the Node,"},{"line_number":57,"context_line":"  which ID it knows, will just send `node-update` request,"},{"line_number":58,"context_line":"  changing `Node.extras`."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_5bfb8dbd","line":55,"updated":"2014-06-27 06:02:13.000000000","message":"this can be done at node-create, correct?","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7fe8408ab21d0cb3ca5a97697dd4f009b6141678","unresolved":false,"context_lines":[{"line_number":52,"context_line":"  Format is dicussed in `Data model impact` section."},{"line_number":53,"context_line":"  Any external agent, performing hardware discovery of new hardware"},{"line_number":54,"context_line":"  (or when it does not know the ID) will issue request to a new endpoint"},{"line_number":55,"context_line":"  `/{api_version}/nodes/autodiscovery` (see below)."},{"line_number":56,"context_line":"  Any external agent, performing hardware specs update for the Node,"},{"line_number":57,"context_line":"  which ID it knows, will just send `node-update` request,"},{"line_number":58,"context_line":"  changing `Node.extras`."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_6f3b1e9c","line":55,"in_reply_to":"1ae5cdf2_5bfb8dbd","updated":"2014-06-27 11:08:18.000000000","message":"of course, if someone is enrolling nodes manually, which is not going to happen (at least for us)","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ace23bb967a9c7187067a385dd7a4872c21c4b0c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"  which ID it knows, will just send `node-update` request,"},{"line_number":58,"context_line":"  changing `Node.extras`."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* Create new boolean field `Node.newly_discovered` and make possible"},{"line_number":61,"context_line":"  filtering by it in API. This field must be cleaned on unsetting"},{"line_number":62,"context_line":"  maintenance flag and may also be cleaned separately e.g. by TripleO UI."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_1be3c505","line":60,"updated":"2014-06-27 06:02:13.000000000","message":"This is when node is discovered? or when node properties are discovered. I believe this shall be set when node is discovered.","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7fe8408ab21d0cb3ca5a97697dd4f009b6141678","unresolved":false,"context_lines":[{"line_number":57,"context_line":"  which ID it knows, will just send `node-update` request,"},{"line_number":58,"context_line":"  changing `Node.extras`."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"* Create new boolean field `Node.newly_discovered` and make possible"},{"line_number":61,"context_line":"  filtering by it in API. This field must be cleaned on unsetting"},{"line_number":62,"context_line":"  maintenance flag and may also be cleaned separately e.g. by TripleO UI."},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_af58c6f9","line":60,"in_reply_to":"1ae5cdf2_1be3c505","updated":"2014-06-27 11:08:18.000000000","message":"When node is discovered. Will clarify.","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ace23bb967a9c7187067a385dd7a4872c21c4b0c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  Enrolling new nodes can be disabled via new boolean option"},{"line_number":67,"context_line":"  `discovery.enabled`, defaulting to `False` for the sake of security."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* Add new methods `node_discovered` and `find_node` to `ManagementInterface`,"},{"line_number":70,"context_line":"  which should be called for a `Node` after ramdisk call to"},{"line_number":71,"context_line":"  `/{api_version}/nodes/autodiscovery`."},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_bbaf319c","line":69,"updated":"2014-06-27 06:02:13.000000000","message":"Could you explain what each function will do?","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7fe8408ab21d0cb3ca5a97697dd4f009b6141678","unresolved":false,"context_lines":[{"line_number":66,"context_line":"  Enrolling new nodes can be disabled via new boolean option"},{"line_number":67,"context_line":"  `discovery.enabled`, defaulting to `False` for the sake of security."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* Add new methods `node_discovered` and `find_node` to `ManagementInterface`,"},{"line_number":70,"context_line":"  which should be called for a `Node` after ramdisk call to"},{"line_number":71,"context_line":"  `/{api_version}/nodes/autodiscovery`."},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_cf70b275","line":69,"in_reply_to":"1ae5cdf2_bbaf319c","updated":"2014-06-27 11:08:18.000000000","message":"See \"Driver API impact\"","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ace23bb967a9c7187067a385dd7a4872c21c4b0c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"* Inside `extra` dict hardware specs will be stored under `hardware` key."},{"line_number":89,"context_line":"  Precise format of data is following (TODO: borrow from IPA)."},{"line_number":90,"context_line":"  Minimum set of hardware specs is following (TODO: cpu, mem, net, ..."},{"line_number":91,"context_line":"  also borrow from IPA)."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"REST API impact"},{"line_number":94,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_bba651be","line":91,"updated":"2014-06-27 06:02:13.000000000","message":"this doesnt look a generic proposal, rather seems to be specific for IPA.","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7fe8408ab21d0cb3ca5a97697dd4f009b6141678","unresolved":false,"context_lines":[{"line_number":88,"context_line":"* Inside `extra` dict hardware specs will be stored under `hardware` key."},{"line_number":89,"context_line":"  Precise format of data is following (TODO: borrow from IPA)."},{"line_number":90,"context_line":"  Minimum set of hardware specs is following (TODO: cpu, mem, net, ..."},{"line_number":91,"context_line":"  also borrow from IPA)."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"REST API impact"},{"line_number":94,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_6f095edc","line":91,"in_reply_to":"1ae5cdf2_bba651be","updated":"2014-06-27 11:08:18.000000000","message":"IPA is just the only already existing implementation, so we can borrow formats from it.","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"ace23bb967a9c7187067a385dd7a4872c21c4b0c","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    * Node is not known to Ironic. Ironic will create a new Node object with"},{"line_number":104,"context_line":"      given specs and set `maintenance\u003dTrue`, `discovered\u003dTrue`."},{"line_number":105,"context_line":"      Result of call is new Node UUID."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    * Node is already known to Ironic. Hardware specs for this Node are"},{"line_number":108,"context_line":"      updated with new data. Result is again Node UUID."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_dbb07dde","line":105,"updated":"2014-06-27 06:02:13.000000000","message":"The node uuid will be returned after discovering or the discovery will be asynchronous? You may want to consider performance impact at this.\n\nYou plan to introduce it via existing CLIs?","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7fe8408ab21d0cb3ca5a97697dd4f009b6141678","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    * Node is not known to Ironic. Ironic will create a new Node object with"},{"line_number":104,"context_line":"      given specs and set `maintenance\u003dTrue`, `discovered\u003dTrue`."},{"line_number":105,"context_line":"      Result of call is new Node UUID."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    * Node is already known to Ironic. Hardware specs for this Node are"},{"line_number":108,"context_line":"      updated with new data. Result is again Node UUID."}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_6f307e9e","line":105,"in_reply_to":"1ae5cdf2_dbb07dde","updated":"2014-06-27 11:08:18.000000000","message":"1. Synchronous. Performance impact for a new node is minimal, as locking new node won\u0027t interfere with existing processes.\n\n2. Do you need it?","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"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":"4236f3b642606a2e8652f3a6d4c3ae9053a580e8","unresolved":false,"context_lines":[{"line_number":175,"context_line":"  existing node it will be called on it\u0027s driver. For newly discovered node"},{"line_number":176,"context_line":"  it will be called on a default driver, which should be set via new"},{"line_number":177,"context_line":"  configuration option `discovery.default_driver`, which won\u0027t have"},{"line_number":178,"context_line":"  any default value."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  Function signature::"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_c7d6edc2","line":178,"updated":"2014-06-26 22:40:36.000000000","message":"Jim\u0027s concern from last patchset wasn\u0027t addressed, and I think it\u0027s sensible. Ironic may be run in a hetrogenous environment so a global config option for this may not be ideal.","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7fe8408ab21d0cb3ca5a97697dd4f009b6141678","unresolved":false,"context_lines":[{"line_number":175,"context_line":"  existing node it will be called on it\u0027s driver. For newly discovered node"},{"line_number":176,"context_line":"  it will be called on a default driver, which should be set via new"},{"line_number":177,"context_line":"  configuration option `discovery.default_driver`, which won\u0027t have"},{"line_number":178,"context_line":"  any default value."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"  Function signature::"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_ef1bae19","line":178,"in_reply_to":"1ae5cdf2_c7d6edc2","updated":"2014-06-27 11:08:18.000000000","message":"See introduction. Purpose of this spec is to be _minimal_, not covering everything possible.","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"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":"4236f3b642606a2e8652f3a6d4c3ae9053a580e8","unresolved":false,"context_lines":[{"line_number":266,"context_line":"  hardware is enabled, newly created nodes will be assigned to this driver."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"It should be noted, that if NIC is replaced on a node, it\u0027s ports should be"},{"line_number":269,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"Developer impact"},{"line_number":272,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_87d145ce","line":269,"updated":"2014-06-26 22:40:36.000000000","message":"We should try very hard to key on other information so this doesn\u0027t happen, IMO.","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"09b92343207bb8b216cb1d5b9f67616d5a496209","unresolved":false,"context_lines":[{"line_number":266,"context_line":"  hardware is enabled, newly created nodes will be assigned to this driver."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"It should be noted, that if NIC is replaced on a node, it\u0027s ports should be"},{"line_number":269,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"Developer impact"},{"line_number":272,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_0fd61af2","line":269,"in_reply_to":"1ae5cdf2_87d145ce","updated":"2014-06-27 11:15:32.000000000","message":".. forgot to add: we didn\u0027t figured out better ways, so we left it up to driver, if it can (e.g. via S/N)","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7fe8408ab21d0cb3ca5a97697dd4f009b6141678","unresolved":false,"context_lines":[{"line_number":266,"context_line":"  hardware is enabled, newly created nodes will be assigned to this driver."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"It should be noted, that if NIC is replaced on a node, it\u0027s ports should be"},{"line_number":269,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen."},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"Developer impact"},{"line_number":272,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1ae5cdf2_6fd79e23","line":269,"in_reply_to":"1ae5cdf2_87d145ce","updated":"2014-06-27 11:08:18.000000000","message":"In discussion on IRC it was decided, that we should warn a user.","commit_id":"d3c2197af02ab4535745397b568be66363c9edde"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"21d4c2c01b1c4e62da76ba4fdecc9e1da75e78c5","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"* PXE/iPXE configuration for sending ramdisk for every unknown hardware"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"* Hardware discovery in highly geterogeneous environment, with multiple"},{"line_number":23,"context_line":"  vendors and multiple drivers"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"* Exact ramdisk to use for hardware discovery/auto-discovery"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_a92b617a","line":22,"updated":"2014-06-27 12:56:06.000000000","message":"Nit: heterogeneous environments","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"21d4c2c01b1c4e62da76ba4fdecc9e1da75e78c5","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* Write common code for storing hardware inventories in Node.extra field."},{"line_number":53,"context_line":"  Format is dicussed in `Data model impact` section. This code should also"},{"line_number":54,"context_line":"  update the following fields in `Node.properties`: `memory_mb`, `cpu_arch`,"},{"line_number":55,"context_line":"  `cpus` and `local_gb` to appropriate values from hardware inventory."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_897dc5b4","line":52,"updated":"2014-06-27 12:56:06.000000000","message":"I\u0027m not terribly familiar with Ironic, so this may be a non-issue.\n\nFrom how this spec reads, the extra field is used to communicate information to a driver, likely for special considerations by that driver.\n\nIt\u0027s free-form, which carries a danger for conflicts in shoving your own data in there. I\u0027m guessing this is significantly simpler than adding an explicit inventory attribute, but if that\u0027s not possible and the extras dict is manipulated, consider namespacing the fields you are adding and documenting that they are reserved. Something like ironic_cpu or even just __cpu should be enough to be realistically safe from conflicting with data being shoved in there elsewhere.","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0ff0d41e09b8782f2af6eebc5b794a5064ee27d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"Proposed change"},{"line_number":50,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* Write common code for storing hardware inventories in Node.extra field."},{"line_number":53,"context_line":"  Format is dicussed in `Data model impact` section. This code should also"},{"line_number":54,"context_line":"  update the following fields in `Node.properties`: `memory_mb`, `cpu_arch`,"},{"line_number":55,"context_line":"  `cpus` and `local_gb` to appropriate values from hardware inventory."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_ec50170c","line":52,"in_reply_to":"1ae5cdf2_897dc5b4","updated":"2014-06-27 13:04:56.000000000","message":"Ok, will consider","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"21d4c2c01b1c4e62da76ba4fdecc9e1da75e78c5","unresolved":false,"context_lines":[{"line_number":56,"context_line":"  Suggested prototype for appropriate function in a new"},{"line_number":57,"context_line":"  `ironic.common.discovery` module::"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def store_inventory(node, inventory):"},{"line_number":60,"context_line":"        \"\"\"Stores hardware inventory for a node."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        :param node: the Node instance"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_494bbd2a","line":59,"updated":"2014-06-27 12:56:06.000000000","message":"This implies that the full inventory is stored every time. Is that the intention?\n\nIt might be, I could see that the node always sends a complete list of its inventory rather than a delta of the changes, but I just wanted to double check that this is explicitly the desired behavior.","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0ff0d41e09b8782f2af6eebc5b794a5064ee27d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"  Suggested prototype for appropriate function in a new"},{"line_number":57,"context_line":"  `ironic.common.discovery` module::"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def store_inventory(node, inventory):"},{"line_number":60,"context_line":"        \"\"\"Stores hardware inventory for a node."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        :param node: the Node instance"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_ac2b6f7a","line":59,"in_reply_to":"1ae5cdf2_494bbd2a","updated":"2014-06-27 13:04:56.000000000","message":"yes, this is intention for now","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"21d4c2c01b1c4e62da76ba4fdecc9e1da75e78c5","unresolved":false,"context_lines":[{"line_number":70,"context_line":"  filtering by it in API. This field is set to `True` for nodes, that"},{"line_number":71,"context_line":"  we just discovered and were not known to Ironic before. This field must be"},{"line_number":72,"context_line":"  cleaned on unsetting maintenance flag and may also be cleaned separately"},{"line_number":73,"context_line":"  e.g. by TripleO UI."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* Create endpoint `/nodes/autodiscovery`. Ramdisk agent will post all known"},{"line_number":76,"context_line":"  hardware specs to it and learn node UUID from it for future use."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_89ff85aa","line":73,"updated":"2014-06-27 12:56:06.000000000","message":"The use cases above describe this feature being used to detect changes to the hardware configuration of an existing node (\"Responding to basic hardware changes\").\n\nThat sort of change isn\u0027t captured by this flag. Nor should it, but I can see it being useful to track that a change has occurred. Alternatively, a timestamp of the last time the inventory was updated.","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0ff0d41e09b8782f2af6eebc5b794a5064ee27d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"  filtering by it in API. This field is set to `True` for nodes, that"},{"line_number":71,"context_line":"  we just discovered and were not known to Ironic before. This field must be"},{"line_number":72,"context_line":"  cleaned on unsetting maintenance flag and may also be cleaned separately"},{"line_number":73,"context_line":"  e.g. by TripleO UI."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* Create endpoint `/nodes/autodiscovery`. Ramdisk agent will post all known"},{"line_number":76,"context_line":"  hardware specs to it and learn node UUID from it for future use."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_cc827b51","line":73,"in_reply_to":"1ae5cdf2_89ff85aa","updated":"2014-06-27 13:04:56.000000000","message":"putting timestamp is a good idea, thank you!","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"21d4c2c01b1c4e62da76ba4fdecc9e1da75e78c5","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    There can be two kinds of outcome:"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    * Node is not known to Ironic. Ironic will create a new Node object with"},{"line_number":118,"context_line":"      given specs and set `maintenance\u003dTrue`, `discovered\u003dTrue`."},{"line_number":119,"context_line":"      Result of call is new Node UUID."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    * Node is already known to Ironic. Hardware specs for this Node are"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_a9960147","line":118,"updated":"2014-06-27 12:56:06.000000000","message":"Is discovered\u003dTrue the same as the aforementioned newly_discovered flag?","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0ff0d41e09b8782f2af6eebc5b794a5064ee27d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    There can be two kinds of outcome:"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    * Node is not known to Ironic. Ironic will create a new Node object with"},{"line_number":118,"context_line":"      given specs and set `maintenance\u003dTrue`, `discovered\u003dTrue`."},{"line_number":119,"context_line":"      Result of call is new Node UUID."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    * Node is already known to Ironic. Hardware specs for this Node are"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_4c966b95","line":118,"in_reply_to":"1ae5cdf2_a9960147","updated":"2014-06-27 13:04:56.000000000","message":"mistake, will fix","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"21d4c2c01b1c4e62da76ba4fdecc9e1da75e78c5","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    * Node is already known to Ironic. Hardware specs for this Node are"},{"line_number":122,"context_line":"      updated with new data. Result is again Node UUID."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    Whether node is known to Ironic or not will be detected by two methods:"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    * If the default driver `ManagementInterface.find_node` does not raise"},{"line_number":127,"context_line":"      NotImplementedError, it\u0027s result will be used."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_6977993b","line":124,"updated":"2014-06-27 12:56:06.000000000","message":"I\u0027m glad you included these, I\u0027ve been wondering about that since the idempotent API was first suggested.","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"21d4c2c01b1c4e62da76ba4fdecc9e1da75e78c5","unresolved":false,"context_lines":[{"line_number":209,"context_line":"  it will be called on a default driver, which should be set via new"},{"line_number":210,"context_line":"  configuration option `discovery.default_driver`, which won\u0027t have"},{"line_number":211,"context_line":"  any default value. As stated in the introduction, more complex cases (like"},{"line_number":212,"context_line":"  heterogenous enrionments) will be addresses separately."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"  Function signature::"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_e92e49f9","line":212,"updated":"2014-06-27 12:56:06.000000000","message":"Nit: typo in environments\n\nNit: s/addresses/addressed","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0ff0d41e09b8782f2af6eebc5b794a5064ee27d","unresolved":false,"context_lines":[{"line_number":209,"context_line":"  it will be called on a default driver, which should be set via new"},{"line_number":210,"context_line":"  configuration option `discovery.default_driver`, which won\u0027t have"},{"line_number":211,"context_line":"  any default value. As stated in the introduction, more complex cases (like"},{"line_number":212,"context_line":"  heterogenous enrionments) will be addresses separately."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"  Function signature::"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_0cf0e3fb","line":212,"in_reply_to":"1ae5cdf2_e92e49f9","updated":"2014-06-27 13:04:56.000000000","message":"Done","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"21d4c2c01b1c4e62da76ba4fdecc9e1da75e78c5","unresolved":false,"context_lines":[{"line_number":211,"context_line":"  any default value. As stated in the introduction, more complex cases (like"},{"line_number":212,"context_line":"  heterogenous enrionments) will be addresses separately."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"  Function signature::"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"   def node_discovered(task, extra):"},{"line_number":217,"context_line":"       \"\"\"Called on node hardware discovery."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_692159fb","line":214,"updated":"2014-06-27 12:56:06.000000000","message":"FYI, in sphinx you can do:\n\n.. code-block:: python\n\nto get syntax highlighting. Not a huge deal in this case, but it\u0027s a neat feature to at least know about.","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0ff0d41e09b8782f2af6eebc5b794a5064ee27d","unresolved":false,"context_lines":[{"line_number":211,"context_line":"  any default value. As stated in the introduction, more complex cases (like"},{"line_number":212,"context_line":"  heterogenous enrionments) will be addresses separately."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"  Function signature::"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"   def node_discovered(task, extra):"},{"line_number":217,"context_line":"       \"\"\"Called on node hardware discovery."}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_6cd8877f","line":214,"in_reply_to":"1ae5cdf2_692159fb","updated":"2014-06-27 13:04:56.000000000","message":"Actually, rendered docs got syntax highlighting :)","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":8399,"name":"Jay Dobies","email":"jason.dobies@redhat.com","username":"jdob"},"change_message_id":"21d4c2c01b1c4e62da76ba4fdecc9e1da75e78c5","unresolved":false,"context_lines":[{"line_number":217,"context_line":"       \"\"\"Called on node hardware discovery."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"       Inspect `task.node.newly_discovered` to see, whether this node is"},{"line_number":220,"context_line":"       completely new to Ironic and was just added."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"       :param task: Task"},{"line_number":223,"context_line":"       :param extra: Freeform data passed by ramdisk"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_49549d53","line":220,"updated":"2014-06-27 12:56:06.000000000","message":"Consider having the caller pull this value out and pass it as an explicit parameter. It seems like pretty crucial information to the execution of the method, which to me says it should be part of the signature to help readability.","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c0ff0d41e09b8782f2af6eebc5b794a5064ee27d","unresolved":false,"context_lines":[{"line_number":217,"context_line":"       \"\"\"Called on node hardware discovery."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"       Inspect `task.node.newly_discovered` to see, whether this node is"},{"line_number":220,"context_line":"       completely new to Ironic and was just added."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"       :param task: Task"},{"line_number":223,"context_line":"       :param extra: Freeform data passed by ramdisk"}],"source_content_type":"text/x-rst","patch_set":9,"id":"1ae5cdf2_ec61f7a8","line":220,"in_reply_to":"1ae5cdf2_49549d53","updated":"2014-06-27 13:04:56.000000000","message":"hmmm... don\u0027t know, our folks don\u0027t like redudancy...","commit_id":"f3307f4795b79f67978edc45932fc12fa1cd1939"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"060882be02725530a4d4bc8aaa06cee435c333d1","unresolved":false,"context_lines":[{"line_number":73,"context_line":"  filtering by it in API. This field is set to `True` for nodes, that"},{"line_number":74,"context_line":"  we just discovered and were not known to Ironic before. This field must be"},{"line_number":75,"context_line":"  cleaned on unsetting maintenance flag and may also be cleaned separately"},{"line_number":76,"context_line":"  e.g. by TripleO UI."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* Create endpoint `/nodes/autodiscovery`. Ramdisk agent will post all known"},{"line_number":79,"context_line":"  hardware specs to it and learn node UUID from it for future use."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_cc4fd68a","line":76,"updated":"2014-06-27 15:35:22.000000000","message":"Is it really needed? I know we want to filter but perhaps tuskar could add a layer on top of Ironic for the newly discovery nodes? (diff from old list of nodes)","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"356638462079a16a36808cb5d446e87a82d3bc7d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"  filtering by it in API. This field is set to `True` for nodes, that"},{"line_number":74,"context_line":"  we just discovered and were not known to Ironic before. This field must be"},{"line_number":75,"context_line":"  cleaned on unsetting maintenance flag and may also be cleaned separately"},{"line_number":76,"context_line":"  e.g. by TripleO UI."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* Create endpoint `/nodes/autodiscovery`. Ramdisk agent will post all known"},{"line_number":79,"context_line":"  hardware specs to it and learn node UUID from it for future use."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_42b0efdb","line":76,"in_reply_to":"1ae5cdf2_cc4fd68a","updated":"2014-06-27 16:19:19.000000000","message":"Are you suggesting that TripleO UI/Tuskar should cache list of nodes? What to do with nodes enrolled manually? It\u0027s much easier for us.","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"060882be02725530a4d4bc8aaa06cee435c333d1","unresolved":false,"context_lines":[{"line_number":75,"context_line":"  cleaned on unsetting maintenance flag and may also be cleaned separately"},{"line_number":76,"context_line":"  e.g. by TripleO UI."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* Create endpoint `/nodes/autodiscovery`. Ramdisk agent will post all known"},{"line_number":79,"context_line":"  hardware specs to it and learn node UUID from it for future use."},{"line_number":80,"context_line":"  Enrolling new nodes can be disabled via new boolean option"},{"line_number":81,"context_line":"  `discovery.enabled`, defaulting to `False` for the sake of security."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_ecbc926e","line":78,"updated":"2014-06-27 15:35:22.000000000","message":"I thought this endpoint was to admins to tell Ironic to prepare the enviroment for the autodiscovery (e.g create the default PXE configuration to answer requests where the MAC is not registered, fetch the autodiscovery ramdisk and kernel from glance etc...) not to register the discovered nodes. Why we need a new endpoint to register nodes? We already can do it by using POST -d \u003cdata\u003e /nodes\n\nI imagined this trigger to be something like, let\u0027s say u want to enable autodiscovery, you would:\n\nPOST -d {\u0027autodiscovery_kernel_id\u0027: ..., \u0027autodiscovery_ramdisk_id\u0027:..., \u0027default_driver\u0027: ...} /nodes/autodiscovery (that would also set the discovery.enabled \u003d True)\n\nthe \"default_driver\" can be passed to the node via the kernel CMD line so the ramdisk can use it when registering the node via the Ironic API.\n\nYou don\u0027t want to have autodiscovery anymore so we should get rid of the enviroment (and mainly get rid of the default PXE config file)\n\nDELETE /nodes/autodiscovery","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"356638462079a16a36808cb5d446e87a82d3bc7d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"  cleaned on unsetting maintenance flag and may also be cleaned separately"},{"line_number":76,"context_line":"  e.g. by TripleO UI."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"* Create endpoint `/nodes/autodiscovery`. Ramdisk agent will post all known"},{"line_number":79,"context_line":"  hardware specs to it and learn node UUID from it for future use."},{"line_number":80,"context_line":"  Enrolling new nodes can be disabled via new boolean option"},{"line_number":81,"context_line":"  `discovery.enabled`, defaulting to `False` for the sake of security."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_c2e95fac","line":78,"in_reply_to":"1ae5cdf2_ecbc926e","updated":"2014-06-27 16:19:19.000000000","message":"\u003e I thought this endpoint was to admins to tell Ironic to prepare the enviroment for the autodiscovery\n\nAs I stated in the intro, preparing environment is out of scope of this spec.\n\n\u003e Why we need a new endpoint to register nodes?\n\nHow are you going to check, whether it\u0027s a new node or existing one? Just to remind you: ramdisk has no idea of node ID.","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"060882be02725530a4d4bc8aaa06cee435c333d1","unresolved":false,"context_lines":[{"line_number":223,"context_line":"  it will be called on a default driver, which should be set via new"},{"line_number":224,"context_line":"  configuration option `discovery.default_driver`, which won\u0027t have"},{"line_number":225,"context_line":"  any default value. As stated in the introduction, more complex cases (like"},{"line_number":226,"context_line":"  heterogenous environments) will be addressed separately."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"  Function signature::"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_ef74849d","line":226,"updated":"2014-06-27 15:35:22.000000000","message":"I\u0027m failing to understand about what this method is suppose to do? Is it some kind of post-discovery hook which users can do whatever they need after the discovery?","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"356638462079a16a36808cb5d446e87a82d3bc7d","unresolved":false,"context_lines":[{"line_number":223,"context_line":"  it will be called on a default driver, which should be set via new"},{"line_number":224,"context_line":"  configuration option `discovery.default_driver`, which won\u0027t have"},{"line_number":225,"context_line":"  any default value. As stated in the introduction, more complex cases (like"},{"line_number":226,"context_line":"  heterogenous environments) will be addressed separately."},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"  Function signature::"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_a24533b5","line":226,"in_reply_to":"1ae5cdf2_ef74849d","updated":"2014-06-27 16:19:19.000000000","message":"yes. E.g. IPA folks do some more business, concerning heart beat.","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"060882be02725530a4d4bc8aaa06cee435c333d1","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"  Function signature::"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def find_node(inventory, extras):"},{"line_number":255,"context_line":"        \"\"\"Find node matching given hardware specs."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        :param inventory: hardware specs, as passed by the ramdisk."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_8faa20d0","line":254,"updated":"2014-06-27 15:35:22.000000000","message":"We are not using the MAC addresses to find out the node?\n\nGET /ports/?address\u003d\u003cMAC\u003e","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"356638462079a16a36808cb5d446e87a82d3bc7d","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"  Function signature::"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    def find_node(inventory, extras):"},{"line_number":255,"context_line":"        \"\"\"Find node matching given hardware specs."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        :param inventory: hardware specs, as passed by the ramdisk."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_c2179f9b","line":254,"in_reply_to":"1ae5cdf2_8faa20d0","updated":"2014-06-27 16:19:19.000000000","message":"There were requests for e.g. using IPMI, using S/N and so on. I don\u0027t insist on this method, but than others will not be pleased with just using MAC...\n\nAlso this should be actually a loop over all MAC\u0027s","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"060882be02725530a4d4bc8aaa06cee435c333d1","unresolved":false,"context_lines":[{"line_number":311,"context_line":"Added are the following config options:"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"* `discovery.enabled`, boolean, default `False`: whether discovery of new"},{"line_number":314,"context_line":"  hardware is enabled."},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"* `discovery.default_driver`, string, no default: if discovery of new"},{"line_number":317,"context_line":"  hardware is enabled, newly created nodes will be assigned to this driver."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_4fcad8a0","line":314,"updated":"2014-06-27 15:35:22.000000000","message":"So by enabling this Ironic conductor will already setup the enviroment to do the autodiscovery?\n\nThe problem with this approach is that when you want to disable it you then have to change this option and restart all the conductors (since KILL -HUP doesn\u0027t work for openstack services)","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"356638462079a16a36808cb5d446e87a82d3bc7d","unresolved":false,"context_lines":[{"line_number":311,"context_line":"Added are the following config options:"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"* `discovery.enabled`, boolean, default `False`: whether discovery of new"},{"line_number":314,"context_line":"  hardware is enabled."},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"* `discovery.default_driver`, string, no default: if discovery of new"},{"line_number":317,"context_line":"  hardware is enabled, newly created nodes will be assigned to this driver."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1ae5cdf2_c2dcffe3","line":314,"in_reply_to":"1ae5cdf2_4fcad8a0","updated":"2014-06-27 16:19:19.000000000","message":"Depending on what you mean by environment. As I stated already, configuring DHCP/PXE/whatever is out of scope for now","commit_id":"11ab5c019dd17806834c6d637c0d3a6a4fa5fff8"},{"author":{"_account_id":10202,"name":"Wan-yen Hsu","email":"wanyenhsu@gmail.com"},"change_message_id":"3ad3d35f8c1cfd6c82e9fef5eaade96cdb3463e7","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"* User-driven hardware discovery (e.g. as a result of `node-create` call)"},{"line_number":30,"context_line":"  is possible with this spec, but will be addressed in details separately"},{"line_number":31,"context_line":"  (see references)."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Problem description"},{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_ba5b2986","line":31,"updated":"2014-07-02 06:26:03.000000000","message":"Wan-yen: Will this cover user-driven node discovery?  For instance an Ironic node-discovery CLI that uses IPMI, iLO or other out-of-band mechanism to discovery nodes?","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dd41c460a53b32fda1ecc3cfca527f983c5ff2d6","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"* User-driven hardware discovery (e.g. as a result of `node-create` call)"},{"line_number":30,"context_line":"  is possible with this spec, but will be addressed in details separately"},{"line_number":31,"context_line":"  (see references)."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Problem description"},{"line_number":34,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_cc7c3623","line":31,"in_reply_to":"baada198_ba5b2986","updated":"2014-07-14 08:21:15.000000000","message":"Probably answer is: yes, at least some basic cases.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"e3d4ce6750e63e1519deacb1fb611690b152b65c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"  Precise format for `inventory` parameter is the same as for new endpoint"},{"line_number":63,"context_line":"  described in `REST API Impact` section."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"  On each update, `inventory_timestamp` will be updated in `Node.extras`"},{"line_number":66,"context_line":"  with the current timestamp."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"* Create new boolean field `Node.newly_discovered` and make possible"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ae5cdf2_31b32b9b","line":65,"updated":"2014-06-27 19:04:20.000000000","message":"would we want this timestamp  searchable for any reason. Items in extras field are not searchable currently, So this may need to be moved to a searchable location if we ever wanted to do something like scan my hardware every three months for changes.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10202,"name":"Wan-yen Hsu","email":"wanyenhsu@gmail.com"},"change_message_id":"3ad3d35f8c1cfd6c82e9fef5eaade96cdb3463e7","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* Add new method `node_discovered` to `ManagementInterface`,"},{"line_number":83,"context_line":"  which should be called for a `Node` after ramdisk call to"},{"line_number":84,"context_line":"  `/{api_version}/nodes/autodiscovery` (see `Driver API Impact` for details)."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Alternatives"},{"line_number":87,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_354c8a70","line":84,"updated":"2014-07-02 06:26:03.000000000","message":"Wan-yen:  For out-of-band node discovery, a ramdisk call may not be applicable.   Out-of-band node discovery is possbile to discover multiple nodes at a time (e.g., discover all nodes on the same subnet or in a multicast domain).  Does node_discovered take multiple nodes as input?","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dd41c460a53b32fda1ecc3cfca527f983c5ff2d6","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* Add new method `node_discovered` to `ManagementInterface`,"},{"line_number":83,"context_line":"  which should be called for a `Node` after ramdisk call to"},{"line_number":84,"context_line":"  `/{api_version}/nodes/autodiscovery` (see `Driver API Impact` for details)."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Alternatives"},{"line_number":87,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_cca3569c","line":84,"in_reply_to":"baada198_354c8a70","updated":"2014-07-14 08:21:15.000000000","message":"No, for the sake of simplicity. You can always make several calls of course.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10202,"name":"Wan-yen Hsu","email":"wanyenhsu@gmail.com"},"change_message_id":"3ad3d35f8c1cfd6c82e9fef5eaade96cdb3463e7","unresolved":false,"context_lines":[{"line_number":107,"context_line":"  * Ramdisk agent, after hardware discovery on a unknown system, will send"},{"line_number":108,"context_line":"    a request to this endpoint. Purpose of it is both update/add hardware"},{"line_number":109,"context_line":"    information about the node and get UUID for this node."},{"line_number":110,"context_line":"    There can be two kinds of outcome:"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    * Node is not known to Ironic. Ironic will create a new Node object with"},{"line_number":113,"context_line":"      given specs and set `maintenance\u003dTrue`, `newly_discovered\u003dTrue`."}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_d59d0e5b","line":110,"updated":"2014-07-02 06:26:03.000000000","message":"Wan-yen:  Is this call to discover one node at a time or can this call be used to discover multiple nodes?   For instance, a user may want to use one call to discover all nodes on the same subnet  or in the same multicast domain.  Also, a ramdisk may not be applicable for out-of-band node discovery.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10202,"name":"Wan-yen Hsu","email":"wanyenhsu@gmail.com"},"change_message_id":"3ad3d35f8c1cfd6c82e9fef5eaade96cdb3463e7","unresolved":false,"context_lines":[{"line_number":117,"context_line":"      updated with new data. Result is again Node UUID."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    Whether node is known to Ironic or not will be detected by matching"},{"line_number":120,"context_line":"    all NIC of the node against all known ports."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    Currently, this method will be synchronous. We will consider asynchronous"},{"line_number":123,"context_line":"    implementation later as part of global asynchronous transition."}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_67bad90b","line":120,"updated":"2014-07-02 06:26:03.000000000","message":"Wan-yen:  This may take non-trivia amount of time if there are  a lot of known ports in the data base.   I wonder if it\u0027s possible to have seperate REST APIs to handle each case.  For instance, AutoNodeDiscovery API for new nodes and AutoSpecDiscovery API with node uuid for existing nodes.   For the ramdisk agents or out-of-band drivers that know the node uuid can call AutoSpecDiscovery to update node\u0027s hardware spec.  For the ramdisk agents (e.g., IPA) that uses nodeless vendor passthru will probably need to call AutoNodeDiscovery.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dd41c460a53b32fda1ecc3cfca527f983c5ff2d6","unresolved":false,"context_lines":[{"line_number":117,"context_line":"      updated with new data. Result is again Node UUID."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    Whether node is known to Ironic or not will be detected by matching"},{"line_number":120,"context_line":"    all NIC of the node against all known ports."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    Currently, this method will be synchronous. We will consider asynchronous"},{"line_number":123,"context_line":"    implementation later as part of global asynchronous transition."}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_0cc1ce2e","line":120,"in_reply_to":"baada198_67bad90b","updated":"2014-07-14 08:21:15.000000000","message":"I\u0027m against 2 API\u0027s, but it\u0027s a good idea to give ability to actually provide Node UUID, if it is known.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":7537,"name":"Matthew Macdonald-Wallace","email":"mmw@hp.com","username":"macdomat"},"change_message_id":"d4fe0085220e729aada6dfcf16b646cbeda475e5","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    Whether node is known to Ironic or not will be detected by matching"},{"line_number":120,"context_line":"    all NIC of the node against all known ports."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    Currently, this method will be synchronous. We will consider asynchronous"},{"line_number":123,"context_line":"    implementation later as part of global asynchronous transition."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_7cecf1f3","line":121,"updated":"2014-07-03 14:31:52.000000000","message":"What if a node only has one NIC (unlikely in a datacentre of thousands but perfectly possible in a small startup) and the NIC gets replaced? \n\nWill we still be able to track the node in this instance?","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":7419,"name":"Imre Farkas","email":"farkas.imre@gmail.com","username":"ifarkas"},"change_message_id":"0713784d4beda9f8b7536821b031f6117f876b14","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    Whether node is known to Ironic or not will be detected by matching"},{"line_number":120,"context_line":"    all NIC of the node against all known ports."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    Currently, this method will be synchronous. We will consider asynchronous"},{"line_number":123,"context_line":"    implementation later as part of global asynchronous transition."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_5746e37b","line":121,"in_reply_to":"baada198_7cecf1f3","updated":"2014-07-14 13:22:01.000000000","message":"I think that\u0027s highly unlikely that all NICs will get replaced. For cases when it happens, the documentation should cover workaround.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"5c8e5090751b6eb491ffc75c4ff70b1b63d9d348","unresolved":false,"context_lines":[{"line_number":146,"context_line":"         \"interfaces\": [{"},{"line_number":147,"context_line":"             \"name\": \"...\","},{"line_number":148,"context_line":"             \"mac_address\": \"...\","},{"line_number":149,"context_line":"             \"ip_address\": \"...\"  // or null"},{"line_number":150,"context_line":"           },"},{"line_number":151,"context_line":"           ...],"},{"line_number":152,"context_line":"         \"cpu\": {"}],"source_content_type":"text/x-rst","patch_set":11,"id":"1ae5cdf2_95ff8a00","line":149,"updated":"2014-06-27 19:18:05.000000000","message":"You may want to consider adding a field for port uuid which may be updated when port creation is done.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dd41c460a53b32fda1ecc3cfca527f983c5ff2d6","unresolved":false,"context_lines":[{"line_number":146,"context_line":"         \"interfaces\": [{"},{"line_number":147,"context_line":"             \"name\": \"...\","},{"line_number":148,"context_line":"             \"mac_address\": \"...\","},{"line_number":149,"context_line":"             \"ip_address\": \"...\"  // or null"},{"line_number":150,"context_line":"           },"},{"line_number":151,"context_line":"           ...],"},{"line_number":152,"context_line":"         \"cpu\": {"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_ace9c2b8","line":149,"in_reply_to":"1ae5cdf2_95ff8a00","updated":"2014-07-14 08:21:15.000000000","message":"this is request body for API, how can something be updated here?","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10202,"name":"Wan-yen Hsu","email":"wanyenhsu@gmail.com"},"change_message_id":"3ad3d35f8c1cfd6c82e9fef5eaade96cdb3463e7","unresolved":false,"context_lines":[{"line_number":161,"context_line":"           ...],"},{"line_number":162,"context_line":"         \"memory\": {"},{"line_number":163,"context_line":"           \"total\": NN  // unit: MiB"},{"line_number":164,"context_line":"         }"},{"line_number":165,"context_line":"       },"},{"line_number":166,"context_line":"       \"extra\": {...}"},{"line_number":167,"context_line":"     }"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_9562b6ab","line":164,"updated":"2014-07-02 06:26:03.000000000","message":"Wan-yen:  You may want to consider adding \"supported boot modes\" and \"current_boot_mode\" into inventory.  These info are needed for supporting UEFI boot.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dd41c460a53b32fda1ecc3cfca527f983c5ff2d6","unresolved":false,"context_lines":[{"line_number":161,"context_line":"           ...],"},{"line_number":162,"context_line":"         \"memory\": {"},{"line_number":163,"context_line":"           \"total\": NN  // unit: MiB"},{"line_number":164,"context_line":"         }"},{"line_number":165,"context_line":"       },"},{"line_number":166,"context_line":"       \"extra\": {...}"},{"line_number":167,"context_line":"     }"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_ecf57a83","line":164,"in_reply_to":"baada198_9562b6ab","updated":"2014-07-14 08:21:15.000000000","message":"Let us have a separate spec for this (and I guess Nisha is prototyping it), this spec only updated already existing in Ironic fields.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":7537,"name":"Matthew Macdonald-Wallace","email":"mmw@hp.com","username":"macdomat"},"change_message_id":"d4fe0085220e729aada6dfcf16b646cbeda475e5","unresolved":false,"context_lines":[{"line_number":162,"context_line":"         \"memory\": {"},{"line_number":163,"context_line":"           \"total\": NN  // unit: MiB"},{"line_number":164,"context_line":"         }"},{"line_number":165,"context_line":"       },"},{"line_number":166,"context_line":"       \"extra\": {...}"},{"line_number":167,"context_line":"     }"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_bc8f6929","line":165,"updated":"2014-07-03 14:31:52.000000000","message":"I think we could also do with having a \"timestamp\" field that allows tracking of systems configuration changes across time.  \n\nThe ability to search a node\u0027s hardware replacement history has always been invaluable in the past with other cfgmgmnt software and adding this here would be awesome.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dd41c460a53b32fda1ecc3cfca527f983c5ff2d6","unresolved":false,"context_lines":[{"line_number":162,"context_line":"         \"memory\": {"},{"line_number":163,"context_line":"           \"total\": NN  // unit: MiB"},{"line_number":164,"context_line":"         }"},{"line_number":165,"context_line":"       },"},{"line_number":166,"context_line":"       \"extra\": {...}"},{"line_number":167,"context_line":"     }"},{"line_number":168,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_cc3fd623","line":165,"in_reply_to":"baada198_bc8f6929","updated":"2014-07-14 08:21:15.000000000","message":"What timestamp will it be? You can use timestamp of the request. But! searching node\u0027s hardware replacement history is very unlikely to happen, as there is strong opposition of cores to turning Ironic into hardware manager. Maybe I need to add it to the intro...","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"cec1a3d94072773e90ad7fd74f2f4d1fab2eaf6c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"       \"extra\": {...}"},{"line_number":185,"context_line":"     }"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    Where `extra` is a free-form dictionary, returned from driver. Possible"},{"line_number":188,"context_line":"    use cases for this field include:"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    * Runtime configuration for the ramdisk (e.g. heartbeat timeout for IPA)."}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_d46e1fc9","line":187,"updated":"2014-07-01 04:57:07.000000000","message":"Why is the extra field required when \"inventory\" is being proposed to be added as a new field? The driver can go ahead and update the \"inventory\" field itself along with properties field.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dd41c460a53b32fda1ecc3cfca527f983c5ff2d6","unresolved":false,"context_lines":[{"line_number":184,"context_line":"       \"extra\": {...}"},{"line_number":185,"context_line":"     }"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    Where `extra` is a free-form dictionary, returned from driver. Possible"},{"line_number":188,"context_line":"    use cases for this field include:"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    * Runtime configuration for the ramdisk (e.g. heartbeat timeout for IPA)."}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_ac0e228a","line":187,"in_reply_to":"baada198_d46e1fc9","updated":"2014-07-14 08:21:15.000000000","message":"See a few lines below. `extra` is not _required_, but can be of value for some cases (e.g. IPA)","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":7537,"name":"Matthew Macdonald-Wallace","email":"mmw@hp.com","username":"macdomat"},"change_message_id":"d4fe0085220e729aada6dfcf16b646cbeda475e5","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"* Hardware discovery should not happen often, except for enrolling large"},{"line_number":260,"context_line":"  amount of new hardware, which should be more-or-less exceptional case."},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"* However, any call to `autodiscovery` endpoint will require locking a node."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_d2516137","line":261,"updated":"2014-07-03 14:31:52.000000000","message":"Surely every new node added to a \"cluster\" (And I use that loaded term in it\u0027s loosest sense!) will require HW Discovery?\n\nI\u0027d like to see us remove as much manual work for as many installation/setup tasks as we can with this.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":7537,"name":"Matthew Macdonald-Wallace","email":"mmw@hp.com","username":"macdomat"},"change_message_id":"d4fe0085220e729aada6dfcf16b646cbeda475e5","unresolved":false,"context_lines":[{"line_number":276,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen. More compex"},{"line_number":277,"context_line":"way to detect existing node may be introduced in the future, which will solve"},{"line_number":278,"context_line":"this problem."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Developer impact"},{"line_number":281,"context_line":"----------------"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_a514a9a0","line":279,"updated":"2014-07-03 14:31:52.000000000","message":"How about a base-64 ID (so we can decrypt it if needed!) containing the MACs, vendor, model and serial from the output of lshw:\n\nfe-bc-a3-cd-0b-c4:fe-bc-a3-cd-0b-c5:fe-bc-a3-cd-0b-c6:Hewlett-Packard:C1C152T37Z\n\n(serial numbers and MAC addresses have been changed to protect the innocent!)\n\nThis gives us a unique ID that we can use before the Nova UUID is granted and to ensure that if a MAC address changes then we can still keep track of the node based on the other information that we have in the hash.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"dd41c460a53b32fda1ecc3cfca527f983c5ff2d6","unresolved":false,"context_lines":[{"line_number":276,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen. More compex"},{"line_number":277,"context_line":"way to detect existing node may be introduced in the future, which will solve"},{"line_number":278,"context_line":"this problem."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Developer impact"},{"line_number":281,"context_line":"----------------"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_0cf9ce4d","line":279,"in_reply_to":"baada198_a514a9a0","updated":"2014-07-14 08:21:15.000000000","message":"hmm... we should discuss it on IRC, there were some objections to using serial numbers. I personally like your proposal.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f92363b8d38fa90c0c3b8a114ffce72829c70eda","unresolved":false,"context_lines":[{"line_number":276,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen. More compex"},{"line_number":277,"context_line":"way to detect existing node may be introduced in the future, which will solve"},{"line_number":278,"context_line":"this problem."},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Developer impact"},{"line_number":281,"context_line":"----------------"},{"line_number":282,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"baada198_c2415d3a","line":279,"in_reply_to":"baada198_a514a9a0","updated":"2014-07-14 08:56:30.000000000","message":"ok I remembered. This will at least require vendor,model,serial to be stored in a searchable way, which we\u0027re trying to avoid (as we\u0027re not a HW manager). So, for now we\u0027ll use NIC and will be looking for better ways in the future.","commit_id":"d51c2343175fdbf54fa7a5106145f19bd2c8835f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"37d3a95101ea9f0cba43d9902064f48390a6577c","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    * Network endpoint to access node ramdisk API later"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    Field `node` should be filled with Node UUID if it\u0027s known to the caller."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  * JSON schema definition for the response data::"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_7a4d8e3d","line":191,"updated":"2014-07-14 13:50:03.000000000","message":"I\u0027m guessing that this will end up calling `Node.update`? Might be nice to call this out.","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7120559bda6be00a6f492ec4707a6bf852836bf9","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    * Network endpoint to access node ramdisk API later"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    Field `node` should be filled with Node UUID if it\u0027s known to the caller."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  * JSON schema definition for the response data::"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_ad1e12b9","line":191,"in_reply_to":"baada198_7a4d8e3d","updated":"2014-07-14 14:05:18.000000000","message":"Done","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"37d3a95101ea9f0cba43d9902064f48390a6577c","unresolved":false,"context_lines":[{"line_number":247,"context_line":"* Implementing hardware discovery will require authentication to access"},{"line_number":248,"context_line":"  new endpoint. This should be suggested by follow-up specs."},{"line_number":249,"context_line":"  This spec assumes that standard authentication is used for a new"},{"line_number":250,"context_line":"  endpoint."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"* Allowing any hardware to be auto-enrolled poses risk, if the environment"},{"line_number":253,"context_line":"  is not physically protected from unauthorized hardware. For this reason"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_ba4726bb","line":250,"updated":"2014-07-14 13:50:03.000000000","message":"This assumption means that admin credentials will be available to the ramdisk. Which means:\n\n* credentials are served in PXE configs and anything that can DHCP can get credentials.\n\n* credentials are embedded in the ramdisk, and anyone that can access said ramdisk can get credentials.\n\nMaybe I\u0027m missing another method... but this seems dangerous. :/\n\nMaybe it\u0027s time to talk about client certificates? \n\n(and yes, I realize this is excluded for simplicity... but I don\u0027t think I\u0027d want to accept an implementation that does \"standard auth\")","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7120559bda6be00a6f492ec4707a6bf852836bf9","unresolved":false,"context_lines":[{"line_number":247,"context_line":"* Implementing hardware discovery will require authentication to access"},{"line_number":248,"context_line":"  new endpoint. This should be suggested by follow-up specs."},{"line_number":249,"context_line":"  This spec assumes that standard authentication is used for a new"},{"line_number":250,"context_line":"  endpoint."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"* Allowing any hardware to be auto-enrolled poses risk, if the environment"},{"line_number":253,"context_line":"  is not physically protected from unauthorized hardware. For this reason"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_3a11565d","line":250,"in_reply_to":"baada198_ba4726bb","updated":"2014-07-14 14:05:18.000000000","message":"Well, it\u0027s what we have now and I\u0027m all for inventing a good authentication procedure, but this will increase this spec twice or more. Let us postpone it for a proper spec and proper discussion.","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"37d3a95101ea9f0cba43d9902064f48390a6577c","unresolved":false,"context_lines":[{"line_number":281,"context_line":"Other deployer impact"},{"line_number":282,"context_line":"---------------------"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"Added are the following config options:"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"* `discovery.enabled`, boolean, default `False`: whether discovery of new"},{"line_number":287,"context_line":"  hardware is enabled."}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_bac64666","line":284,"updated":"2014-07-14 13:50:03.000000000","message":"Might also be nice to call these out in the \"proposed change\" section.","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7120559bda6be00a6f492ec4707a6bf852836bf9","unresolved":false,"context_lines":[{"line_number":281,"context_line":"Other deployer impact"},{"line_number":282,"context_line":"---------------------"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"Added are the following config options:"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"* `discovery.enabled`, boolean, default `False`: whether discovery of new"},{"line_number":287,"context_line":"  hardware is enabled."}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_2d6cc207","line":284,"in_reply_to":"baada198_bac64666","updated":"2014-07-14 14:05:18.000000000","message":"Done","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"37d3a95101ea9f0cba43d9902064f48390a6577c","unresolved":false,"context_lines":[{"line_number":287,"context_line":"  hardware is enabled."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* `discovery.default_driver`, string, no default: if discovery of new"},{"line_number":290,"context_line":"  hardware is enabled, newly created nodes will be assigned to this driver."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"It should be noted, that if NIC is replaced on a node, it\u0027s ports should be"},{"line_number":293,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen. More compex"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_9a86e2b7","line":290,"updated":"2014-07-14 13:50:03.000000000","message":"What\u0027s the behavior if this option is None or \"\"?","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7120559bda6be00a6f492ec4707a6bf852836bf9","unresolved":false,"context_lines":[{"line_number":287,"context_line":"  hardware is enabled."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"* `discovery.default_driver`, string, no default: if discovery of new"},{"line_number":290,"context_line":"  hardware is enabled, newly created nodes will be assigned to this driver."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"It should be noted, that if NIC is replaced on a node, it\u0027s ports should be"},{"line_number":293,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen. More compex"}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_2d9e8207","line":290,"in_reply_to":"baada198_9a86e2b7","updated":"2014-07-14 14:05:18.000000000","message":"Done","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"37d3a95101ea9f0cba43d9902064f48390a6577c","unresolved":false,"context_lines":[{"line_number":290,"context_line":"  hardware is enabled, newly created nodes will be assigned to this driver."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"It should be noted, that if NIC is replaced on a node, it\u0027s ports should be"},{"line_number":293,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen. More compex"},{"line_number":294,"context_line":"way to detect existing node may be introduced in the future, which will solve"},{"line_number":295,"context_line":"this problem."},{"line_number":296,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_fabefe63","line":293,"updated":"2014-07-14 13:50:03.000000000","message":"nit: s/compex/complex/","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7120559bda6be00a6f492ec4707a6bf852836bf9","unresolved":false,"context_lines":[{"line_number":290,"context_line":"  hardware is enabled, newly created nodes will be assigned to this driver."},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"It should be noted, that if NIC is replaced on a node, it\u0027s ports should be"},{"line_number":293,"context_line":"updated in advance, otherwise incorrect autodiscovery may happen. More compex"},{"line_number":294,"context_line":"way to detect existing node may be introduced in the future, which will solve"},{"line_number":295,"context_line":"this problem."},{"line_number":296,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"baada198_9a098233","line":293,"in_reply_to":"baada198_fabefe63","updated":"2014-07-14 14:05:18.000000000","message":"Done","commit_id":"8bf94952ce54f5d0cc57050b537826e1dc50d257"}]}
