)]}'
{"doc/source/dev/drivers.rst":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4ad919fca8eab9d242429f41e88fc304fb9e61b5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Vendor Passthru"},{"line_number":44,"context_line":"---------------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Drivers may implement a \"vendor passthrough\" API, which becomes accessible via"},{"line_number":47,"context_line":"POST to the /v1/{NODE}/vendor_passthru/method\u003d{METHOD} endpoint. Beyond basic"},{"line_number":48,"context_line":"checking, Ironic does not introspect the message body and simply passes it to"},{"line_number":49,"context_line":"the Node\u0027s driver."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa98f980_ad36cf4e","line":46,"updated":"2014-09-15 22:05:27.000000000","message":"Do we want to make this \"vendor passthru\" for consistency?","commit_id":"11df1001cc8fdbb904f0aece8c92df3de7180ea5"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4ad919fca8eab9d242429f41e88fc304fb9e61b5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"---------------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Drivers may implement a \"vendor passthrough\" API, which becomes accessible via"},{"line_number":47,"context_line":"POST to the /v1/{NODE}/vendor_passthru/method\u003d{METHOD} endpoint. Beyond basic"},{"line_number":48,"context_line":"checking, Ironic does not introspect the message body and simply passes it to"},{"line_number":49,"context_line":"the Node\u0027s driver."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa98f980_8d582b8b","line":47,"updated":"2014-09-15 22:05:27.000000000","message":"s/passthru\\/method/passthru?method/","commit_id":"11df1001cc8fdbb904f0aece8c92df3de7180ea5"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4ad919fca8eab9d242429f41e88fc304fb9e61b5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"checking, Ironic does not introspect the message body and simply passes it to"},{"line_number":49,"context_line":"the Node\u0027s driver."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"It should be noted that this API end point is synchronous and blocking, and"},{"line_number":52,"context_line":"therefor serialized.  An API call will return when the Node\u0027s driver has"},{"line_number":53,"context_line":"finished processing the request; during that time, other calls to this endpoint"},{"line_number":54,"context_line":"for this node will return a 409 CONFLICT error."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa98f980_2d473fa4","line":51,"updated":"2014-09-15 22:05:27.000000000","message":"This isn\u0027t true, this endpoint is async (though it does lock the node)","commit_id":"11df1001cc8fdbb904f0aece8c92df3de7180ea5"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4ad919fca8eab9d242429f41e88fc304fb9e61b5","unresolved":false,"context_lines":[{"line_number":49,"context_line":"the Node\u0027s driver."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"It should be noted that this API end point is synchronous and blocking, and"},{"line_number":52,"context_line":"therefor serialized.  An API call will return when the Node\u0027s driver has"},{"line_number":53,"context_line":"finished processing the request; during that time, other calls to this endpoint"},{"line_number":54,"context_line":"for this node will return a 409 CONFLICT error."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa98f980_4d7ba3f4","line":52,"updated":"2014-09-15 22:05:27.000000000","message":"Might be nice to note that the API returns a 202 for success, it also returns immediately as this is async.","commit_id":"11df1001cc8fdbb904f0aece8c92df3de7180ea5"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"d100bf6b6a9a903e4708bc008b5a80b05b7eb840","unresolved":false,"context_lines":[{"line_number":49,"context_line":"the Node\u0027s driver."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"It should be noted that this API end point is synchronous and blocking, and"},{"line_number":52,"context_line":"therefor serialized.  An API call will return when the Node\u0027s driver has"},{"line_number":53,"context_line":"finished processing the request; during that time, other calls to this endpoint"},{"line_number":54,"context_line":"for this node will return a 409 CONFLICT error."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa98f980_0defdbe9","line":52,"updated":"2014-09-15 21:47:26.000000000","message":"therefore","commit_id":"11df1001cc8fdbb904f0aece8c92df3de7180ea5"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d33795b683b6be246bea2d29e860336c4db89596","unresolved":false,"context_lines":[{"line_number":44,"context_line":"--------------------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Drivers may implement a passthrough API, which becomes accessible via"},{"line_number":47,"context_line":"HTTP POST at the `/v1/{NODE}/vendor_passthru?method\u003d{METHOD}` endpoint. Beyond"},{"line_number":48,"context_line":"basic checking, Ironic does not introspect the message body and simply \"passes"},{"line_number":49,"context_line":"it through\" to the relevant driver."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa98f980_1ad2a85b","line":47,"updated":"2014-09-16 07:29:22.000000000","message":"isn\u0027t it `/v1/{NODE}/vendor_passthru/{METHOD}`? or both are possible? if so, I would prefer this variant to be stated","commit_id":"13b37aaf9cf0ba63ec785d23d933732907c778f1"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f54025f5c0f5bde0342fc32baf762366599f4ba8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"--------------------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Drivers may implement a passthrough API, which becomes accessible via"},{"line_number":47,"context_line":"HTTP POST at the `/v1/{NODE}/vendor_passthru?method\u003d{METHOD}` endpoint. Beyond"},{"line_number":48,"context_line":"basic checking, Ironic does not introspect the message body and simply \"passes"},{"line_number":49,"context_line":"it through\" to the relevant driver."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa98f980_90d2f7fd","line":47,"in_reply_to":"fa98f980_1ad2a85b","updated":"2014-09-16 09:16:50.000000000","message":"both are supported.\n\nI\u0027m also +1 for the /v1/{NODE}/vendor_passthru/{METHOD} syntax","commit_id":"13b37aaf9cf0ba63ec785d23d933732907c778f1"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"bf19630c61e8205d531ca5a9285a3295309fbc1e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"--------------------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Drivers may implement a passthrough API, which becomes accessible via"},{"line_number":47,"context_line":"HTTP POST at the `/v1/{NODE}/vendor_passthru?method\u003d{METHOD}` endpoint. Beyond"},{"line_number":48,"context_line":"basic checking, Ironic does not introspect the message body and simply \"passes"},{"line_number":49,"context_line":"it through\" to the relevant driver."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa98f980_39805049","line":47,"in_reply_to":"fa98f980_90d2f7fd","updated":"2014-09-16 14:39:07.000000000","message":"Perhaps we should document both ways for complete transparency?","commit_id":"13b37aaf9cf0ba63ec785d23d933732907c778f1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d33795b683b6be246bea2d29e860336c4db89596","unresolved":false,"context_lines":[{"line_number":52,"context_line":"serialized.  Requests will return an HTTP status code 202 to indicate the"},{"line_number":53,"context_line":"request was received and is being acted upon, but the request can not return a"},{"line_number":54,"context_line":"BODY. While performing the request, a lock is held on the node, and other"},{"line_number":55,"context_line":"requests will fail with an HTTP 409 CONFLICT error."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"This endpoint is exposing a node\u0027s driver directly, and as such, it is"},{"line_number":58,"context_line":"expressly not part of Ironic\u0027s standard REST API. There is only a single HTTP"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa98f980_fa88846c","line":55,"updated":"2014-09-16 07:29:22.000000000","message":"I would call it \u0027may\u0027 fail, because we now retry locking","commit_id":"13b37aaf9cf0ba63ec785d23d933732907c778f1"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"bf19630c61e8205d531ca5a9285a3295309fbc1e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"serialized.  Requests will return an HTTP status code 202 to indicate the"},{"line_number":53,"context_line":"request was received and is being acted upon, but the request can not return a"},{"line_number":54,"context_line":"BODY. While performing the request, a lock is held on the node, and other"},{"line_number":55,"context_line":"requests will fail with an HTTP 409 CONFLICT error."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"This endpoint is exposing a node\u0027s driver directly, and as such, it is"},{"line_number":58,"context_line":"expressly not part of Ironic\u0027s standard REST API. There is only a single HTTP"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa98f980_19670cb9","line":55,"in_reply_to":"fa98f980_fa88846c","updated":"2014-09-16 14:39:07.000000000","message":"++ to this. Perhaps \"may fail with an HTTP 409 CONFLICT error if all node lock attempts fail\", or similar.","commit_id":"13b37aaf9cf0ba63ec785d23d933732907c778f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bfe74bd81cb9967615d98a4164d51f2e09b80448","unresolved":false,"context_lines":[{"line_number":57,"context_line":"This endpoint is exposing a node\u0027s driver directly, and as such, it is"},{"line_number":58,"context_line":"expressly not part of Ironic\u0027s standard REST API. There is only a single HTTP"},{"line_number":59,"context_line":"endpoint exposed, and the semantics of the message BODY are determined solely"},{"line_number":60,"context_line":"by the driver. Ironic makes no guarantees about backwards compatiblity; this is"},{"line_number":61,"context_line":"solely up to the discretion of each driver\u0027s author."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Driver Vendor Passthru"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa98f980_fe1ddfbe","line":60,"updated":"2014-09-16 00:36:33.000000000","message":"typo: compatibility","commit_id":"13b37aaf9cf0ba63ec785d23d933732907c778f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bfe74bd81cb9967615d98a4164d51f2e09b80448","unresolved":false,"context_lines":[{"line_number":64,"context_line":"----------------------"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Drivers may also implement a similar API for requests not related to any node"},{"line_number":67,"context_line":"at `/v1/drivers/{DRIVER}/vendor_passthru?method\u003d{METHOD}` - however, this API"},{"line_number":68,"context_line":"endpoint is *synchronous*. Calls are passed to the driver, and return a BODY"},{"line_number":69,"context_line":"with the response from the driver once the request is completed."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa98f980_7e81efc1","line":67,"updated":"2014-09-16 00:36:33.000000000","message":"I probably would have started a new sentence at \"However, ...","commit_id":"13b37aaf9cf0ba63ec785d23d933732907c778f1"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d33795b683b6be246bea2d29e860336c4db89596","unresolved":false,"context_lines":[{"line_number":64,"context_line":"----------------------"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Drivers may also implement a similar API for requests not related to any node"},{"line_number":67,"context_line":"at `/v1/drivers/{DRIVER}/vendor_passthru?method\u003d{METHOD}` - however, this API"},{"line_number":68,"context_line":"endpoint is *synchronous*. Calls are passed to the driver, and return a BODY"},{"line_number":69,"context_line":"with the response from the driver once the request is completed."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa98f980_3ad5ac42","line":67,"updated":"2014-09-16 07:29:22.000000000","message":"ditto about URL","commit_id":"13b37aaf9cf0ba63ec785d23d933732907c778f1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bfe74bd81cb9967615d98a4164d51f2e09b80448","unresolved":false,"context_lines":[{"line_number":68,"context_line":"endpoint is *synchronous*. Calls are passed to the driver, and return a BODY"},{"line_number":69,"context_line":"with the response from the driver once the request is completed."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"*NOTE* Each open request to this endpoint consumes a worker thread within the"},{"line_number":72,"context_line":"ironic-conductor process. This can lead to starvation of the threadpool, and a"},{"line_number":73,"context_line":"denial of service. Driver authors are encouraged to avoid using this endpoint,"},{"line_number":74,"context_line":"and, when necessary, make all requests to it return as quickly as possible."}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa98f980_9e5bf384","line":71,"updated":"2014-09-16 00:36:33.000000000","message":"The generated doc looks a bit odd. Don\u0027t know if \"Note: \" or \"Note: each\" might help. Or maybe making it bold instead of italic?","commit_id":"13b37aaf9cf0ba63ec785d23d933732907c778f1"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"7bc52005517f4f658ac147b263f6045dfcd3e8a7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"--------------------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Drivers may implement a passthrough API, which becomes accessible via"},{"line_number":47,"context_line":"HTTP POST at the `/v1/{NODE}/vendor_passthru?method\u003d{METHOD}` endpoint. Beyond"},{"line_number":48,"context_line":"basic checking, Ironic does not introspect the message body and simply \"passes"},{"line_number":49,"context_line":"it through\" to the relevant driver."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa98f980_da6c6ed3","line":47,"updated":"2014-09-17 17:01:08.000000000","message":"I like the /v1/{NODE}/vendor_passthru/{METHOD} syntax more, but... that\u0027s not a reason to block this patch","commit_id":"b6681528700b4bdd89d1b2939412a90f61444dd1"}]}
