)]}'
{"specs/approved/available-clean-steps.rst":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"881c71ecfec51fb462a4785f2af0a8301832f1e6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"The biggest problem is that all the clean steps (for a particular node) are"},{"line_number":35,"context_line":"not always known by the conductor service. This is because a remote agent"},{"line_number":36,"context_line":"(for example, IPA ramdisk) may have knowledge of the clean steps. In addition,"},{"line_number":37,"context_line":"that ramdisk (and possibly the clean steps) could change over time."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Original API"},{"line_number":40,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_4155f44f","line":37,"updated":"2017-09-09 16:46:38.000000000","message":"yeah but i suppose ipa can not add new clean steps, only make the ones it does not support \u0027unavailable\u0027?","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"cda364bdc9ac3f24fb043fb09f7566c9d47ec3fe","unresolved":false,"context_lines":[{"line_number":34,"context_line":"The biggest problem is that all the clean steps (for a particular node) are"},{"line_number":35,"context_line":"not always known by the conductor service. This is because a remote agent"},{"line_number":36,"context_line":"(for example, IPA ramdisk) may have knowledge of the clean steps. In addition,"},{"line_number":37,"context_line":"that ramdisk (and possibly the clean steps) could change over time."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Original API"},{"line_number":40,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_536ca135","line":37,"in_reply_to":"5f2577a7_4155f44f","updated":"2017-09-11 03:55:27.000000000","message":"Hardware manager can add new clean steps into the IPA. We could change the IPA ramdisk after caching the steps.","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f02393ea41ffb162aaf9541d7e5361abdc898c37","unresolved":false,"context_lines":[{"line_number":52,"context_line":"  the driver MAY raise an error, which should be translated by the API service"},{"line_number":53,"context_line":"  into:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    * an HTTP 202"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    * a new (we created this) HTTP header \u0027Retry-Request-After\u0027, indicating"},{"line_number":58,"context_line":"      to the client how long in seconds the client should wait to retry. A \u0027-1\u0027"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_a076c0d7","line":55,"updated":"2017-09-11 15:55:11.000000000","message":"an HTTP 202 (Accepted)","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f02393ea41ffb162aaf9541d7e5361abdc898c37","unresolved":false,"context_lines":[{"line_number":70,"context_line":"For dealing with lack of clean step data, people did not like (see"},{"line_number":71,"context_line":"`IRC questioning the original API`_):"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* the HTTP 202, especially when \u0027Retry-After\u0027 header is typically used for"},{"line_number":74,"context_line":"  HTTP 503. However, no other HTTP response status code seemed to work either."},{"line_number":75,"context_line":"* the new \u0027Retry-Request-After\u0027 header since isn\u0027t a standard header"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_8073c4e7","line":73,"range":{"start_line":73,"start_character":6,"end_line":73,"end_character":14},"updated":"2017-09-11 15:55:11.000000000","message":"HTTP 202 (Accepted),","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f02393ea41ffb162aaf9541d7e5361abdc898c37","unresolved":false,"context_lines":[{"line_number":71,"context_line":"`IRC questioning the original API`_):"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* the HTTP 202, especially when \u0027Retry-After\u0027 header is typically used for"},{"line_number":74,"context_line":"  HTTP 503. However, no other HTTP response status code seemed to work either."},{"line_number":75,"context_line":"* the new \u0027Retry-Request-After\u0027 header since isn\u0027t a standard header"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_a05fe03f","line":74,"range":{"start_line":74,"start_character":2,"end_line":74,"end_character":10},"updated":"2017-09-11 15:55:11.000000000","message":"HTTP 503 (Service Unavailable).","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"881c71ecfec51fb462a4785f2af0a8301832f1e6","unresolved":false,"context_lines":[{"line_number":100,"context_line":"  to do this is already available in the conductor service."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"  The API details are described below in the"},{"line_number":103,"context_line":"  `POST /nodes/\u003cnode\u003e/cleaning/steps`_ section."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"  QUESTION: will the user be confused by this, if they see that the node is"},{"line_number":106,"context_line":"  in \u0027cleaning\u0027 or \u0027clean wait\u0027 state? If so, the only other choice would be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_01fdac39","line":103,"updated":"2017-09-09 16:46:38.000000000","message":"so where is the result of such async call going to be stored? if in the same field as synchronous result, the problem Shivanand mentions indeed will exist.","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1827ce0477ad373206e7653a68808622b51da628","unresolved":false,"context_lines":[{"line_number":100,"context_line":"  to do this is already available in the conductor service."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"  The API details are described below in the"},{"line_number":103,"context_line":"  `POST /nodes/\u003cnode\u003e/cleaning/steps`_ section."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"  QUESTION: will the user be confused by this, if they see that the node is"},{"line_number":106,"context_line":"  in \u0027cleaning\u0027 or \u0027clean wait\u0027 state? If so, the only other choice would be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_259542e5","line":103,"in_reply_to":"5f2577a7_01fdac39","updated":"2017-09-11 14:35:02.000000000","message":"Yes, in the same field(s) as the sync. Cuz the plan is to use similar code (eg, go into cleaning with 0 clean steps) although I haven\u0027t actually coded it. In Theory, it should work :)\n\nIf there is an issue with using the same fields, we could add new ones, they are all in driver_internal_info anyway. And/or expose in new first-class node fields?\n\nRemind me again, what\u0027s the problem that Shiv mentioned, that would preclude using the same fields again?","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"41565f9d272c58a035191e3edcfe82876dc33289","unresolved":false,"context_lines":[{"line_number":156,"context_line":"* \"steps\": list of clean steps sorted in decreasing priority"},{"line_number":157,"context_line":"* \"fetched_at\": date/time when the steps were most recently fetched. NULL if"},{"line_number":158,"context_line":"  they haven\u0027t been fetched yet."},{"line_number":159,"context_line":"* \"complete\": A Boolean. True if this is a complete list of steps; False if"},{"line_number":160,"context_line":"  it is unknown or potentially partial list of steps."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"A clean step will include the following information::"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f287b81_92196e7b","line":160,"range":{"start_line":159,"start_character":2,"end_line":160,"end_character":53},"updated":"2017-09-07 05:12:27.000000000","message":"What would determine value of \u0027complete\u0027? Will the \u0027complete\u0027 be False if \u0027POST /nodes/\u003cnode\u003e/cleaning/steps\u0027 in progress?","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e6923c6b9e62267f1aeab683ed9bfa8520baade0","unresolved":false,"context_lines":[{"line_number":156,"context_line":"* \"steps\": list of clean steps sorted in decreasing priority"},{"line_number":157,"context_line":"* \"fetched_at\": date/time when the steps were most recently fetched. NULL if"},{"line_number":158,"context_line":"  they haven\u0027t been fetched yet."},{"line_number":159,"context_line":"* \"complete\": A Boolean. True if this is a complete list of steps; False if"},{"line_number":160,"context_line":"  it is unknown or potentially partial list of steps."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"A clean step will include the following information::"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f287b81_f6be4663","line":160,"range":{"start_line":159,"start_character":2,"end_line":160,"end_character":53},"in_reply_to":"7f287b81_425b26f5","updated":"2017-09-08 04:34:30.000000000","message":"We never clear cached clean steps and just overwrite them. In this manner \u0027complete\u0027 would be \u0027False\u0027 for the first time and it would \u0027True\u0027 subsequently. Isn\u0027t it?","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f0bb52de2cdf56b975b6511fc8c1de94f35296bb","unresolved":false,"context_lines":[{"line_number":156,"context_line":"* \"steps\": list of clean steps sorted in decreasing priority"},{"line_number":157,"context_line":"* \"fetched_at\": date/time when the steps were most recently fetched. NULL if"},{"line_number":158,"context_line":"  they haven\u0027t been fetched yet."},{"line_number":159,"context_line":"* \"complete\": A Boolean. True if this is a complete list of steps; False if"},{"line_number":160,"context_line":"  it is unknown or potentially partial list of steps."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"A clean step will include the following information::"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f287b81_425b26f5","line":160,"range":{"start_line":159,"start_character":2,"end_line":160,"end_character":53},"in_reply_to":"7f287b81_92196e7b","updated":"2017-09-07 14:29:56.000000000","message":"Good question. I haven\u0027t totally thought this through; it was one of the things mentioned in the IRC discussions (that I was not a part of).\n\nOff the top of my head. The \u0027complete\u0027 most likely will not come/know about the POST request. It will look at the node\u0027s driver_internal_info field to see if there is cached clean steps. If there is, it will be True. If there isn\u0027t, and the driver interface knows (or thinks, this is where the \u0027unknown\u0027 comes from) that there might be clean steps on a ramdisk, then it will be False.\n\nIf that makes sense, it is worth mentioning in the spec. I wasn\u0027t sure if it was too detailed to mention in the spec.","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1827ce0477ad373206e7653a68808622b51da628","unresolved":false,"context_lines":[{"line_number":156,"context_line":"* \"steps\": list of clean steps sorted in decreasing priority"},{"line_number":157,"context_line":"* \"fetched_at\": date/time when the steps were most recently fetched. NULL if"},{"line_number":158,"context_line":"  they haven\u0027t been fetched yet."},{"line_number":159,"context_line":"* \"complete\": A Boolean. True if this is a complete list of steps; False if"},{"line_number":160,"context_line":"  it is unknown or potentially partial list of steps."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"A clean step will include the following information::"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_654fcabd","line":160,"range":{"start_line":159,"start_character":2,"end_line":160,"end_character":53},"in_reply_to":"7f287b81_f6be4663","updated":"2017-09-11 14:35:02.000000000","message":"Yes.","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"41565f9d272c58a035191e3edcfe82876dc33289","unresolved":false,"context_lines":[{"line_number":212,"context_line":"POST /nodes/\u003cnode\u003e/cleaning/steps"},{"line_number":213,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This is an asynchronous call and will initiate the fetching of the clean steps."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"The normal (successful) HTTP response code is 200."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"This request can only be issued for a node in the ``manageable`` state."},{"line_number":220,"context_line":"Otherwise, the HTTP response code will be 400 (Bad Request)."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f287b81_d26a56b1","line":217,"range":{"start_line":215,"start_character":0,"end_line":217,"end_character":50},"updated":"2017-09-07 05:12:27.000000000","message":"How would user know if post is complete?\nIs it by performing \u0027Get\u0027 request till \u0027Complete\u0027 flag returns \u0027True\u0027?","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f02393ea41ffb162aaf9541d7e5361abdc898c37","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This is an asynchronous call and will initiate the fetching of the clean steps."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"The normal (successful) HTTP response code is 200."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"This request can only be issued for a node in the ``manageable`` state."},{"line_number":220,"context_line":"Otherwise, the HTTP response code will be 400 (Bad Request)."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_ab6901bf","line":217,"in_reply_to":"5f2577a7_85d756c0","updated":"2017-09-11 15:55:11.000000000","message":"If asynchronous, shouldn\u0027t it be 202 (Accepted)?\n\n202 Accepted\n    The request has been accepted for processing, but the processing has not been completed. The request might or might not be eventually acted upon, and may be disallowed when processing occurs.\n\nhttps://en.wikipedia.org/wiki/List_of_HTTP_status_codes","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1827ce0477ad373206e7653a68808622b51da628","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This is an asynchronous call and will initiate the fetching of the clean steps."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"The normal (successful) HTTP response code is 200."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"This request can only be issued for a node in the ``manageable`` state."},{"line_number":220,"context_line":"Otherwise, the HTTP response code will be 400 (Bad Request)."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_85d756c0","line":217,"in_reply_to":"5f2577a7_a167f825","updated":"2017-09-11 14:35:02.000000000","message":"I suppose we could do it (as a followup, it is separate from this spec I think). The cleaning code checks some version (of the manager or something) and if the version changes, cleaning is restarted (or something). Vague cuz I forgot the details and too lazy to look it up right now.","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0dd277685694a84c9a0831207ca423f6aa80ea1","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This is an asynchronous call and will initiate the fetching of the clean steps."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"The normal (successful) HTTP response code is 200."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"This request can only be issued for a node in the ``manageable`` state."},{"line_number":220,"context_line":"Otherwise, the HTTP response code will be 400 (Bad Request)."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_53090e93","line":217,"in_reply_to":"5f2577a7_ab6901bf","updated":"2017-09-27 17:37:40.000000000","message":"Whoops, yup, should be 202. (I think I copy/pasted from irc discussion.)","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"e6923c6b9e62267f1aeab683ed9bfa8520baade0","unresolved":false,"context_lines":[{"line_number":212,"context_line":"POST /nodes/\u003cnode\u003e/cleaning/steps"},{"line_number":213,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This is an asynchronous call and will initiate the fetching of the clean steps."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"The normal (successful) HTTP response code is 200."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"This request can only be issued for a node in the ``manageable`` state."},{"line_number":220,"context_line":"Otherwise, the HTTP response code will be 400 (Bad Request)."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f287b81_b642fe66","line":217,"range":{"start_line":215,"start_character":0,"end_line":217,"end_character":50},"in_reply_to":"7f287b81_62d98254","updated":"2017-09-08 04:34:30.000000000","message":"Agree.","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"881c71ecfec51fb462a4785f2af0a8301832f1e6","unresolved":false,"context_lines":[{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This is an asynchronous call and will initiate the fetching of the clean steps."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"The normal (successful) HTTP response code is 200."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"This request can only be issued for a node in the ``manageable`` state."},{"line_number":220,"context_line":"Otherwise, the HTTP response code will be 400 (Bad Request)."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_a167f825","line":217,"in_reply_to":"7f287b81_b642fe66","updated":"2017-09-09 16:46:38.000000000","message":"I wonder if we change the deploy ramdisk, should we clear the cached steps?","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f0bb52de2cdf56b975b6511fc8c1de94f35296bb","unresolved":false,"context_lines":[{"line_number":212,"context_line":"POST /nodes/\u003cnode\u003e/cleaning/steps"},{"line_number":213,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"This is an asynchronous call and will initiate the fetching of the clean steps."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"The normal (successful) HTTP response code is 200."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"This request can only be issued for a node in the ``manageable`` state."},{"line_number":220,"context_line":"Otherwise, the HTTP response code will be 400 (Bad Request)."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7f287b81_62d98254","line":217,"range":{"start_line":215,"start_character":0,"end_line":217,"end_character":50},"in_reply_to":"7f287b81_d26a56b1","updated":"2017-09-07 14:29:56.000000000","message":"That is one way to do it although that probably isn\u0027t a guarantee because the steps may be complete (from a previous fetch) and the operator (for whatever reason, issues a POST). Probably a \u0027node show\u0027 and check the state of the node (if we go with implementation being manageable -\u003e cleaning  -\u003e cleanwait -\u003e ... manageable). Could also look at the node\u0027s driver_internal_info \u0026 the timestamp of when the data was fetched.","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"881c71ecfec51fb462a4785f2af0a8301832f1e6","unresolved":false,"context_lines":[{"line_number":310,"context_line":"* for the GET request::"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    policy.RuleDefault(\u0027baremetal:node:cleaning:get_steps\u0027,"},{"line_number":313,"context_line":"                       \u0027rule:is_admin or rule:is_observer\u0027,"},{"line_number":314,"context_line":"                       description\u003d\u0027Retrieve Node cleaning steps\u0027),"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"* for the POST request::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_816cfc08","line":313,"updated":"2017-09-09 16:46:38.000000000","message":"not sure what\u0027s the point for allowing observer to see it, to actually use the result you\u0027ll have to be an admin anyway right?","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1827ce0477ad373206e7653a68808622b51da628","unresolved":false,"context_lines":[{"line_number":310,"context_line":"* for the GET request::"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    policy.RuleDefault(\u0027baremetal:node:cleaning:get_steps\u0027,"},{"line_number":313,"context_line":"                       \u0027rule:is_admin or rule:is_observer\u0027,"},{"line_number":314,"context_line":"                       description\u003d\u0027Retrieve Node cleaning steps\u0027),"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"* for the POST request::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_e5d05acc","line":313,"in_reply_to":"5f2577a7_816cfc08","updated":"2017-09-11 14:35:02.000000000","message":"Dunno, but it is a \u0027get\u0027 and I don\u0027t think there are any security risks/info here. Who does a \u0027node list\u0027 or a \u0027port show\u0027? Ironic is mostly for admin anyway? I suppose someone could have diff levels/privileges for diff admin folks...","commit_id":"59b8b8e722ba2e8f63423188689788f55961cd52"}]}
