)]}'
{"specs/juno/generic-hardware-discovery.rst":[{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"327805115a48ab52380ab9c3726b9fb1403efb0f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"   `/{api_version}/drivers/{driver_name}/discovery`"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"#. The driver will set up the environment, so that all unknown (or just"},{"line_number":83,"context_line":"   unexpected) nodes boot some specific ramdisk."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   .. note::"},{"line_number":86,"context_line":"      Out-of-band discovery may be also possible by similar algorithm,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_f5ef68e7","line":83,"updated":"2014-07-17 09:22:12.000000000","message":"Let\u0027s call it discovery ramdisk here.","commit_id":"561c3a2799f94cb51c2d4e572539419480698106"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0d87d611b08187800029361f3f8fcc916642c9a3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"   `/{api_version}/drivers/{driver_name}/discovery`"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"#. The driver will set up the environment, so that all unknown (or just"},{"line_number":83,"context_line":"   unexpected) nodes boot some specific ramdisk."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"   .. note::"},{"line_number":86,"context_line":"      Out-of-band discovery may be also possible by similar algorithm,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_4676aca4","line":83,"in_reply_to":"baada198_f5ef68e7","updated":"2014-07-17 10:02:37.000000000","message":"Done","commit_id":"561c3a2799f94cb51c2d4e572539419480698106"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b93cd6d2bef3784d64d6dbe22105dd271ab8bdb0","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"  * Method: PUT"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"  * Normal http response code: 200"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  * Expected error http codes:"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_f8183f20","line":145,"updated":"2014-07-17 09:33:25.000000000","message":"Can we make it async (HTTP 202)? As some OOB methods may need to talk to the BMC.","commit_id":"561c3a2799f94cb51c2d4e572539419480698106"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0d87d611b08187800029361f3f8fcc916642c9a3","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"  * Method: PUT"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"  * Normal http response code: 200"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  * Expected error http codes:"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_666d70cc","line":145,"in_reply_to":"baada198_f8183f20","updated":"2014-07-17 10:02:37.000000000","message":"Done","commit_id":"561c3a2799f94cb51c2d4e572539419480698106"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b93cd6d2bef3784d64d6dbe22105dd271ab8bdb0","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  * Expected error http codes:"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    * 409 - another driver is already doing discovery, cannot enable it"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  * URL: `/{api_version}/drivers/{driver_name}/discovery`"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_d89c5b5e","line":149,"updated":"2014-07-17 09:33:25.000000000","message":"Right how we are detecting it? Maybe we should have a discovery_enabled field at the driver\u0027s model which will be reflected by the API object?\n\n[1] https://github.com/openstack/ironic/blob/master/ironic/api/controllers/v1/driver.py#L28","commit_id":"561c3a2799f94cb51c2d4e572539419480698106"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f18afd110674171b05ba12f7ab3497966d65af64","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  * Expected error http codes:"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    * 409 - another driver is already doing discovery, cannot enable it"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  * URL: `/{api_version}/drivers/{driver_name}/discovery`"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_c6447c1b","line":149,"in_reply_to":"baada198_46d22c5c","updated":"2014-07-17 10:06:39.000000000","message":"Yeah, I only can think about having it in the DB :/","commit_id":"561c3a2799f94cb51c2d4e572539419480698106"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0d87d611b08187800029361f3f8fcc916642c9a3","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  * Expected error http codes:"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    * 409 - another driver is already doing discovery, cannot enable it"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"  * URL: `/{api_version}/drivers/{driver_name}/discovery`"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_46d22c5c","line":149,"in_reply_to":"baada198_d89c5b5e","updated":"2014-07-17 10:02:37.000000000","message":"I don\u0027t know, how. API object is ok to push information to a user, but how we know it internally... Any suggestions?","commit_id":"561c3a2799f94cb51c2d4e572539419480698106"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"384ac8121f53fe5f1a90c5b8a2491e4452ec121d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  cleaned on unsetting maintenance flag and may also be cleaned separately"},{"line_number":56,"context_line":"  e.g. by TripleO UI."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* Create new configuration values: `discovery.enabled` and `discovery.driver`,"},{"line_number":59,"context_line":"  that will enable the discovery and set the driver, which will be responsible"},{"line_number":60,"context_line":"  for it."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_8c677b24","line":58,"updated":"2014-07-21 22:18:39.000000000","message":"Disabling hardware discovery by default is good(as mentioned in security impact), but I think there can also be a use-case where the operator needs to enable hardware discovery only for a specified amount of time considering this security impact.\n\nChange of a config to enable/disable hardware discovery requires a restart of the conductor node.  Can there an easier way to do this ?","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4426f5b00ffad38ca8031bffbd001819d5f1a22e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  cleaned on unsetting maintenance flag and may also be cleaned separately"},{"line_number":56,"context_line":"  e.g. by TripleO UI."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"* Create new configuration values: `discovery.enabled` and `discovery.driver`,"},{"line_number":59,"context_line":"  that will enable the discovery and set the driver, which will be responsible"},{"line_number":60,"context_line":"  for it."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_bb21bafd","line":58,"in_reply_to":"baada198_8c677b24","updated":"2014-07-22 07:21:24.000000000","message":"It was discusses yesterday on IRC, that while we want it eventually, it\u0027s out of scope right now. So - later.","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"384ac8121f53fe5f1a90c5b8a2491e4452ec121d","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"     .. note::"},{"line_number":94,"context_line":"        It is up to the driver to decide, what hard drive information"},{"line_number":95,"context_line":"        to present in case of several hard drivers on the machine."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   * MAC addresses for all NIC"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_0f3d1dbb","line":95,"updated":"2014-07-21 22:18:39.000000000","message":"s/drivers/drives","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4426f5b00ffad38ca8031bffbd001819d5f1a22e","unresolved":false,"context_lines":[{"line_number":92,"context_line":""},{"line_number":93,"context_line":"     .. note::"},{"line_number":94,"context_line":"        It is up to the driver to decide, what hard drive information"},{"line_number":95,"context_line":"        to present in case of several hard drivers on the machine."},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"   * MAC addresses for all NIC"},{"line_number":98,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_3b7daae7","line":95,"in_reply_to":"baada198_0f3d1dbb","updated":"2014-07-22 07:21:24.000000000","message":"Done","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"384ac8121f53fe5f1a90c5b8a2491e4452ec121d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"      This specification does not cover updating of existing nodes."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"#. The ramdisk creates a new node, using POST to `/{api_version}/nodes`."},{"line_number":107,"context_line":"   Collected hardware data is stored in `properties` structure,"},{"line_number":108,"context_line":"   `maintenance` and `newly_discovered` fields are set to `True`,"},{"line_number":109,"context_line":"   `driver` field - to appropriate driver name."},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_6f005901","line":107,"updated":"2014-07-21 22:18:39.000000000","message":"We don\u0027t specify what happens when a node tries to POST some information and discovery.enabled is set to false. Do we reject such a case ? If so, we can reject the API call when discovery.enabled\u003dFalse and newly_discovered\u003dTrue.  This may happen when a node accidentally boots to the ramdisk which does hardware discovery.\n\nIf so, we might need discovery.enabled set on the ironic-api server instead of the ironic-conductor node.","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4426f5b00ffad38ca8031bffbd001819d5f1a22e","unresolved":false,"context_lines":[{"line_number":104,"context_line":"      This specification does not cover updating of existing nodes."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"#. The ramdisk creates a new node, using POST to `/{api_version}/nodes`."},{"line_number":107,"context_line":"   Collected hardware data is stored in `properties` structure,"},{"line_number":108,"context_line":"   `maintenance` and `newly_discovered` fields are set to `True`,"},{"line_number":109,"context_line":"   `driver` field - to appropriate driver name."},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_dbf82e4c","line":107,"in_reply_to":"baada198_6f005901","updated":"2014-07-22 07:21:24.000000000","message":"Well, that\u0027s a possibility for future enhancements, but currently (with static configuration) it\u0027s unlikely that a node will \"accidentally boot\" into the discovery ramdisk","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"384ac8121f53fe5f1a90c5b8a2491e4452ec121d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"#. The ramdisk creates a new node, using POST to `/{api_version}/nodes`."},{"line_number":107,"context_line":"   Collected hardware data is stored in `properties` structure,"},{"line_number":108,"context_line":"   `maintenance` and `newly_discovered` fields are set to `True`,"},{"line_number":109,"context_line":"   `driver` field - to appropriate driver name."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"   .. note::"},{"line_number":112,"context_line":"      Driver may provide more parameters to set on a new node, e.g."}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_4c79e3c3","line":109,"updated":"2014-07-21 22:18:39.000000000","message":"I think this is `discovery.driver`.  This may be specified here.","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4426f5b00ffad38ca8031bffbd001819d5f1a22e","unresolved":false,"context_lines":[{"line_number":106,"context_line":"#. The ramdisk creates a new node, using POST to `/{api_version}/nodes`."},{"line_number":107,"context_line":"   Collected hardware data is stored in `properties` structure,"},{"line_number":108,"context_line":"   `maintenance` and `newly_discovered` fields are set to `True`,"},{"line_number":109,"context_line":"   `driver` field - to appropriate driver name."},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"   .. note::"},{"line_number":112,"context_line":"      Driver may provide more parameters to set on a new node, e.g."}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_1bbd4668","line":109,"in_reply_to":"baada198_4c79e3c3","updated":"2014-07-22 07:21:24.000000000","message":"Done","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"384ac8121f53fe5f1a90c5b8a2491e4452ec121d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"      Driver may provide more parameters to set on a new node, e.g."},{"line_number":113,"context_line":"      some specific params in driver_info structure."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"#. The ramdisk creates appropriate ports for every NIC, using POST to"},{"line_number":116,"context_line":"   `/{api_version}/ports`."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_cf26c566","line":115,"updated":"2014-07-21 22:18:39.000000000","message":"It\u0027s upto the ramdisk, but may be create ports for only NICs whose link status is up ??","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4426f5b00ffad38ca8031bffbd001819d5f1a22e","unresolved":false,"context_lines":[{"line_number":112,"context_line":"      Driver may provide more parameters to set on a new node, e.g."},{"line_number":113,"context_line":"      some specific params in driver_info structure."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"#. The ramdisk creates appropriate ports for every NIC, using POST to"},{"line_number":116,"context_line":"   `/{api_version}/ports`."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_1b32a60f","line":115,"in_reply_to":"baada198_cf26c566","updated":"2014-07-22 07:21:24.000000000","message":"Sounds reasonable to me, but I\u0027m not sure. Should we really specify it here in a generic spec?","commit_id":"52def4b0d99296cfd84a1718efa31281d4bc115b"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"6921f8a349252fc9c29fad8c7f8e178919fc2792","unresolved":false,"context_lines":[{"line_number":69,"context_line":"  discovery: either driver name, if discovery was enabled on some driver,"},{"line_number":70,"context_line":"  or `NULL`."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"  As a special simlification for this first implementation, only one conductor"},{"line_number":73,"context_line":"  will be allowed to do the discovery. This is a limitation for scaling"},{"line_number":74,"context_line":"  and must be resolved later. We accept this, because it\u0027s a baby-step for"},{"line_number":75,"context_line":"  having a full-featured discovery."}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_427183aa","line":72,"updated":"2014-07-22 10:31:08.000000000","message":"NIT: typo in simplification.","commit_id":"e913bb4be27258d0b8d1729d6749e2c7de63dcc7"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"6921f8a349252fc9c29fad8c7f8e178919fc2792","unresolved":false,"context_lines":[{"line_number":225,"context_line":"* Implementing hardware discovery will require authentication to access"},{"line_number":226,"context_line":"  the API. This spec assumes that standard authentication is used for it."},{"line_number":227,"context_line":"  This is a bad approach, but it\u0027s already in use, and should be"},{"line_number":228,"context_line":"  fixed Ironic-wide separately."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"* Allowing any hardware to be auto-enrolled poses risk, if the environment"},{"line_number":231,"context_line":"  is not physically protected from unauthorized hardware. For this reason"}],"source_content_type":"text/x-rst","patch_set":7,"id":"baada198_627687a5","line":228,"updated":"2014-07-22 10:31:08.000000000","message":"I don\u0027t agree with this statement: there is a significant difference between hardware the admin knows about \nand hardware the admin doesn\u0027t know about getting Ironic credential access. This really must use a very limited token or a dedicated account or something IMO - or discuss why this mitigation isn\u0027t needed.","commit_id":"e913bb4be27258d0b8d1729d6749e2c7de63dcc7"},{"author":{"_account_id":6623,"name":"Roman Prykhodchenko","email":"me@romcheg.me","username":"prykhodchenko"},"change_message_id":"59b4faa5f7e6b3df78401fc9bf4c8b31942fa13a","unresolved":false,"context_lines":[{"line_number":200,"context_line":"  during automatic discovery."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"* New field `discovery_driver` of string type defaulting to `NULL` should be"},{"line_number":203,"context_line":"  added to `Conductor` model. Thos field will hold the current state of"},{"line_number":204,"context_line":"  discovery: either driver name, if discovery was enabled on some driver,"},{"line_number":205,"context_line":"  or `NULL`."},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"baada198_4c041418","line":203,"updated":"2014-07-23 12:55:16.000000000","message":"s/Thos/That/","commit_id":"788a618ac5d9c2ad0a908eb57ad09640611441fd"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3e334ecebc5d6611b685eb4d226d30661207a9b0","unresolved":false,"context_lines":[{"line_number":200,"context_line":"  during automatic discovery."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"* New field `discovery_driver` of string type defaulting to `NULL` should be"},{"line_number":203,"context_line":"  added to `Conductor` model. Thos field will hold the current state of"},{"line_number":204,"context_line":"  discovery: either driver name, if discovery was enabled on some driver,"},{"line_number":205,"context_line":"  or `NULL`."},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"baada198_d518a421","line":203,"in_reply_to":"baada198_4c041418","updated":"2014-07-23 12:58:15.000000000","message":"Done","commit_id":"788a618ac5d9c2ad0a908eb57ad09640611441fd"}]}
