)]}'
{"specs/approved/evolve-discoverable-actions.rst":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71428f2f2b20000d593fbc47189fb9490d85d289","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   curl -X PUT http://127.0.0.1:6385/v1/nodes/example/states/power \\"},{"line_number":48,"context_line":"        -d \u0027{\"target\": \"power on\"}\u0027"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_ffe07398","line":49,"updated":"2016-10-13 11:25:45.000000000","message":"Even worse: we also have states in the node structure, and they also cannot be updated there. Are we going to do anything about that? Should we maybe deprecate the whole /states endpoint and just allow updates to these fields in the regular node endpoint?","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"6cdebf19e7a30d329d603c457e458cc6a07dce1c","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   curl -X PUT http://127.0.0.1:6385/v1/nodes/example/states/power \\"},{"line_number":48,"context_line":"        -d \u0027{\"target\": \"power on\"}\u0027"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_e5661dec","line":49,"in_reply_to":"fa6399be_25b4e0f0","updated":"2016-10-20 12:06:35.000000000","message":"++ worse, we have also *raid_config fields in the states and a separate PUT endpoint.","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c712f5708afbe6da963290063500c8cc4be10a","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"   curl -X PUT http://127.0.0.1:6385/v1/nodes/example/states/power \\"},{"line_number":48,"context_line":"        -d \u0027{\"target\": \"power on\"}\u0027"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Proposed change"},{"line_number":52,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_25b4e0f0","line":49,"in_reply_to":"fa6399be_ffe07398","updated":"2016-10-18 20:40:42.000000000","message":"I think we should consider this. Why did we add v1/nodes/example/states? I\u0027ve already forgotten but I think it made sense at the time (and may still make sense).","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71428f2f2b20000d593fbc47189fb9490d85d289","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"After the introduction of ETAG identifiers [0] is implemented, another"},{"line_number":55,"context_line":"microversion shall be introduced which allows the ``/nodes/NNNN/states``"},{"line_number":56,"context_line":"endpoint to begin to accept PUT requests that contain the full representation"},{"line_number":57,"context_line":"of the state, in the same format as is returned from a GET request, so long as"},{"line_number":58,"context_line":"the PUT request includes both a sufficient microversion header and the correct"},{"line_number":59,"context_line":"ETAG identifier in the request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_1ff0c766","line":56,"updated":"2016-10-13 11:25:45.000000000","message":"are partially representations explicitly forbidden in PUT? that would be more practical IMO","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"7220e99e28dd7ad4fd0abf7da7c99d5630d5fbfa","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"After the introduction of ETAG identifiers [0] is implemented, another"},{"line_number":55,"context_line":"microversion shall be introduced which allows the ``/nodes/NNNN/states``"},{"line_number":56,"context_line":"endpoint to begin to accept PUT requests that contain the full representation"},{"line_number":57,"context_line":"of the state, in the same format as is returned from a GET request, so long as"},{"line_number":58,"context_line":"the PUT request includes both a sufficient microversion header and the correct"},{"line_number":59,"context_line":"ETAG identifier in the request."}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_692d78fd","line":56,"in_reply_to":"fa6399be_1ff0c766","updated":"2016-10-13 18:46:16.000000000","message":"Wouldn\u0027t partial representations be better supported through PATCH?","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":2506,"name":"devdatta-kulkarni","email":"kulkarni.devdatta@gmail.com","username":"devdatta-kulkarni"},"change_message_id":"7220e99e28dd7ad4fd0abf7da7c99d5630d5fbfa","unresolved":false,"context_lines":[{"line_number":66,"context_line":"Races between multiple clients are prevented because the request that"},{"line_number":67,"context_line":"includes the current ETAG identifier is the only one that will succeed. Other"},{"line_number":68,"context_line":"requests will receive an"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Here is a trivial example, using bash, of manipulating the Node state::"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"   curl -X GET http://127.0.0.1:6385/v1/nodes/example/states \\"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_c901246c","line":69,"updated":"2016-10-13 18:46:16.000000000","message":"seems like the sentence is incomplete.\n\nshould it be: will receive an error?","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":19213,"name":"Szymon Borkowski","email":"szymon.borkowski@intel.com","username":"sborkows"},"change_message_id":"35cb13735f27383e8dacd1cfc53d48d55a7145b0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        -H \"X-OpenStack-Ironic-API-Version: 1.20\" \\"},{"line_number":84,"context_line":"        -H \"Content-Type: application/json\" \\"},{"line_number":85,"context_line":"        -H \"X-Auth-Token: 8ec8ff5e8b6a48b8a0df573761572928\" \\"},{"line_number":86,"context_line":"        -H \"ETAG: $etag\" \\"},{"line_number":87,"context_line":"        -d body"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_e1ad9189","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":17},"updated":"2016-11-15 13:21:47.000000000","message":"According to ETAG spec ( https://review.openstack.org/#/c/381991/ ), this header should be called \u0027If-Match\u0027","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"34d5d33ffc1c6ebc26b199aecf042393f7231a01","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        -H \"X-OpenStack-Ironic-API-Version: 1.20\" \\"},{"line_number":84,"context_line":"        -H \"Content-Type: application/json\" \\"},{"line_number":85,"context_line":"        -H \"X-Auth-Token: 8ec8ff5e8b6a48b8a0df573761572928\" \\"},{"line_number":86,"context_line":"        -H \"ETAG: $etag\" \\"},{"line_number":87,"context_line":"        -d body"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da4df55a_68787ec5","line":86,"range":{"start_line":86,"start_character":7,"end_line":86,"end_character":26},"updated":"2016-12-23 08:42:03.000000000","message":"According to ETag spec we do not have to have neither ETag, nor If-Match in a POST request. ETag will be generated on server-side when POST request is processing, just before adding resource to the database.\nI think, this should be done even not checking api version. Because someone can add a resource in older api, and another user comes and wants ETag option in etag version API. In this case he will not have it. Of course, it can be generated in this case, but it would be faster just to get it from db (But this is just my IMO)","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":19213,"name":"Szymon Borkowski","email":"szymon.borkowski@intel.com","username":"sborkows"},"change_message_id":"9f88feb741cdd9192fd7d853d6009961aea79cbf","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        -H \"X-OpenStack-Ironic-API-Version: 1.20\" \\"},{"line_number":84,"context_line":"        -H \"Content-Type: application/json\" \\"},{"line_number":85,"context_line":"        -H \"X-Auth-Token: 8ec8ff5e8b6a48b8a0df573761572928\" \\"},{"line_number":86,"context_line":"        -H \"ETAG: $etag\" \\"},{"line_number":87,"context_line":"        -d body"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"da4df55a_376412e4","line":86,"range":{"start_line":86,"start_character":7,"end_line":86,"end_character":26},"in_reply_to":"da4df55a_68787ec5","updated":"2016-12-23 11:12:37.000000000","message":"Yes, I haven\u0027t noticed it earlier. This header should be removed here.","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"6cdebf19e7a30d329d603c457e458cc6a07dce1c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        -H \"Content-Type: application/json\" \\"},{"line_number":85,"context_line":"        -H \"X-Auth-Token: 8ec8ff5e8b6a48b8a0df573761572928\" \\"},{"line_number":86,"context_line":"        -H \"ETAG: $etag\" \\"},{"line_number":87,"context_line":"        -d body"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_65c04d51","line":87,"range":{"start_line":87,"start_character":11,"end_line":87,"end_character":15},"updated":"2016-10-20 12:06:35.000000000","message":"Sorry if I misunderstand something, but we can not manipulate with full representations of the states because target* states and \"last_error\" are not (and should be not) user-writable. Maybe to remove them in v2 API?","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"08a23d90960c46384c3262be59c49c78ea3fd827","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        -H \"Content-Type: application/json\" \\"},{"line_number":85,"context_line":"        -H \"X-Auth-Token: 8ec8ff5e8b6a48b8a0df573761572928\" \\"},{"line_number":86,"context_line":"        -H \"ETAG: $etag\" \\"},{"line_number":87,"context_line":"        -d body"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_b57fe915","line":87,"range":{"start_line":87,"start_character":11,"end_line":87,"end_character":15},"in_reply_to":"fa6399be_65c04d51","updated":"2016-10-20 17:28:06.000000000","message":"And about \"target_provision_state\" field. I\u0027m not sure that it will be needed after \"task resource\" implementation at all.","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"d0f2414226f3ee9bb6fbfcba0fdbf723a0696b7b","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        -H \"Content-Type: application/json\" \\"},{"line_number":85,"context_line":"        -H \"X-Auth-Token: 8ec8ff5e8b6a48b8a0df573761572928\" \\"},{"line_number":86,"context_line":"        -H \"ETAG: $etag\" \\"},{"line_number":87,"context_line":"        -d body"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_18d69ac5","line":87,"range":{"start_line":87,"start_character":11,"end_line":87,"end_character":15},"in_reply_to":"fa6399be_b57fe915","updated":"2016-10-26 12:56:23.000000000","message":"I think it\u0027s a separate thing - for now, we can just forbid the updates to those fields, and as of now, target_* states are useful, so maybe doing PATCH makes more sense here?","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c712f5708afbe6da963290063500c8cc4be10a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        -H \"X-Auth-Token: 8ec8ff5e8b6a48b8a0df573761572928\" \\"},{"line_number":86,"context_line":"        -H \"ETAG: $etag\" \\"},{"line_number":87,"context_line":"        -d body"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternatives"},{"line_number":91,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_28f3d70b","line":88,"updated":"2016-10-18 20:40:42.000000000","message":"Maybe this is a nit, but by \u0027discoverable resource actions\u0027, I thought it meant that this would propose new APIs that returned in the response, what resource actions were possible\u0027.","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c712f5708afbe6da963290063500c8cc4be10a","unresolved":false,"context_lines":[{"line_number":90,"context_line":"Alternatives"},{"line_number":91,"context_line":"------------"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"xxx"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Data model impact"},{"line_number":96,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_25e780e5","line":93,"updated":"2016-10-18 20:40:42.000000000","message":"status quo; look at the documentation.","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71428f2f2b20000d593fbc47189fb9490d85d289","unresolved":false,"context_lines":[{"line_number":105,"context_line":"REST API impact"},{"line_number":106,"context_line":"---------------"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"xxx"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Client (CLI) impact"},{"line_number":111,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_3ff58b56","line":108,"updated":"2016-10-13 11:25:45.000000000","message":"please finish :)","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"71428f2f2b20000d593fbc47189fb9490d85d289","unresolved":false,"context_lines":[{"line_number":110,"context_line":"Client (CLI) impact"},{"line_number":111,"context_line":"-------------------"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"xxx"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"\"ironic\" CLI"},{"line_number":116,"context_line":"~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_5fe6bfb0","line":113,"updated":"2016-10-13 11:25:45.000000000","message":"I guess now we don\u0027t have to do GET request for setting power and provision states, right? After this change we will, unless you allow for partial PUT requests.","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"d0f2414226f3ee9bb6fbfcba0fdbf723a0696b7b","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Nova driver impact"},{"line_number":132,"context_line":"------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"None"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Ramdisk impact"},{"line_number":137,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_981d4ac0","line":134,"updated":"2016-10-26 12:56:23.000000000","message":"Small thing - nova calls to an old endpoint, the ironic driver will have to be updated.","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"65401e1405af2f8f1426fe948643f30fd21535d0","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Nova driver impact"},{"line_number":132,"context_line":"------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"None"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Ramdisk impact"},{"line_number":137,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_98554a1f","line":134,"in_reply_to":"ba5da102_981d4ac0","updated":"2016-10-26 13:03:18.000000000","message":"I assume we will update ironicclient node_set_provsion_state() to use new endpoint and we need only bump ironicclient microversion in nova.","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c712f5708afbe6da963290063500c8cc4be10a","unresolved":false,"context_lines":[{"line_number":189,"context_line":""},{"line_number":190,"context_line":".. note: We shall continue to support the custom actions of \u0027power\u0027,"},{"line_number":191,"context_line":"  \u0027provision\u0027, \u0027raid\u0027 which currently exist within the"},{"line_number":192,"context_line":"  ironic.api.controllers.v1.node.NodeStatesController class."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"* Update API reference material to document these changes."},{"line_number":195,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"fa6399be_88bf83fb","line":192,"updated":"2016-10-18 20:40:42.000000000","message":"do we want to deprecate them?","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"65401e1405af2f8f1426fe948643f30fd21535d0","unresolved":false,"context_lines":[{"line_number":210,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":211,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Documentation Impact"},{"line_number":215,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_98ef0ab0","line":213,"updated":"2016-10-26 13:03:18.000000000","message":"As Ruby pointed at L192 we should decide if we are going to deprecate current state/port etc endpoints.","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"65401e1405af2f8f1426fe948643f30fd21535d0","unresolved":false,"context_lines":[{"line_number":214,"context_line":"Documentation Impact"},{"line_number":215,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"None"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"References"},{"line_number":220,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba5da102_5879f22e","line":217,"updated":"2016-10-26 13:03:18.000000000","message":"API documentation is affected by this spec","commit_id":"a2334045ffef62c61c789f6d9ab9d2b11c4d7c7a"}]}
