)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"03a634b746e2efae19cf60441ba125965cd7e5ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3e49cf82_25b5b509","updated":"2023-04-20 11:04:04.000000000","message":"I\u0027ll fix the typos in a new revision or a follow-up. Thanks!","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"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":"9dd9aa90b12fb790e3abf115a7a83fadf74db19f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cd0d72da_7686fe3b","updated":"2023-04-25 20:02:48.000000000","message":"This seems fine to me? I\u0027m not as well versed on Inspector as the rest of Ironic though, you may want additional reviews.","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"}],"specs/approved/inspection-rules.rst":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"df96025794b08395597e70fa333877af2282216f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"These useful features are added on top of what Inspector provides:"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Built-in rules"},{"line_number":43,"context_line":"  Allow operators to load rules from a YAML file. These rules will be always"},{"line_number":44,"context_line":"  present, won\u0027t be stored in the database and won\u0027t be deletable."},{"line_number":45,"context_line":"  Such rules are both an easier way to write hooks and a replacement for"},{"line_number":46,"context_line":"  awkward Inspector\u0027s configuration options such as"}],"source_content_type":"text/x-rst","patch_set":5,"id":"fdb19c76_715d0020","line":43,"updated":"2023-04-27 14:16:50.000000000","message":"This feels like a separate minor RFE on top of the base need. I get you guys likely don\u0027t want to have to carry it over in Metal3. Then again, this is likely just a few lines of code in the grand scheme of things.","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"756bdb41057986cfcd4f648ffbda8bd2528ff024","unresolved":true,"context_lines":[{"line_number":73,"context_line":"  In Inspector, rules are always run in the creation order. This is obviously"},{"line_number":74,"context_line":"  inconvenient, so in Ironic we\u0027ll add priorities to them. Priorities between 0"},{"line_number":75,"context_line":"  and 9999 can be used by all rules, negative value and values above 10000 are"},{"line_number":76,"context_line":"  reserved for built-in rules. The default priority is 0. Rules within the same"},{"line_number":77,"context_line":"  priority are still run in the creation order for compatibility."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Database storage"},{"line_number":80,"context_line":"  Currently, Inspector spreads each rule into three tables (rules, conditions"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1e891751_162f3928","line":77,"range":{"start_line":76,"start_character":58,"end_line":77,"end_character":65},"updated":"2023-04-06 14:21:49.000000000","message":"wondering if we should not allow rules with the same priority in the future\nmaybe it\u0027s out of scope here since we\u0027re just migrating from inspector","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"03a634b746e2efae19cf60441ba125965cd7e5ec","unresolved":true,"context_lines":[{"line_number":73,"context_line":"  In Inspector, rules are always run in the creation order. This is obviously"},{"line_number":74,"context_line":"  inconvenient, so in Ironic we\u0027ll add priorities to them. Priorities between 0"},{"line_number":75,"context_line":"  and 9999 can be used by all rules, negative value and values above 10000 are"},{"line_number":76,"context_line":"  reserved for built-in rules. The default priority is 0. Rules within the same"},{"line_number":77,"context_line":"  priority are still run in the creation order for compatibility."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Database storage"},{"line_number":80,"context_line":"  Currently, Inspector spreads each rule into three tables (rules, conditions"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5dc58c78_eacbe05d","line":77,"range":{"start_line":76,"start_character":58,"end_line":77,"end_character":65},"in_reply_to":"1e891751_162f3928","updated":"2023-04-20 11:04:04.000000000","message":"Yeah, Priority was not a thing in inspector, so forcing them may be a large change. I don\u0027t mind it though, curious what the others think.","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"756bdb41057986cfcd4f648ffbda8bd2528ff024","unresolved":true,"context_lines":[{"line_number":81,"context_line":"  and actions). This may be more correct from the database design perspective,"},{"line_number":82,"context_line":"  but is actually inconvenient to work with, since conditions and actions are"},{"line_number":83,"context_line":"  never accessed outside of a Rule context. Nor are rules ever accessed without"},{"line_number":84,"context_line":"  their conditions and actions. This specification buts them as JSON fields"},{"line_number":85,"context_line":"  inside the Rule table."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Consistent arguments for conditions and actions"}],"source_content_type":"text/x-rst","patch_set":5,"id":"ffe57cc4_43517d7e","line":84,"range":{"start_line":84,"start_character":51,"end_line":84,"end_character":55},"updated":"2023-04-06 14:21:49.000000000","message":"nit: puts","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"03a634b746e2efae19cf60441ba125965cd7e5ec","unresolved":false,"context_lines":[{"line_number":81,"context_line":"  and actions). This may be more correct from the database design perspective,"},{"line_number":82,"context_line":"  but is actually inconvenient to work with, since conditions and actions are"},{"line_number":83,"context_line":"  never accessed outside of a Rule context. Nor are rules ever accessed without"},{"line_number":84,"context_line":"  their conditions and actions. This specification buts them as JSON fields"},{"line_number":85,"context_line":"  inside the Rule table."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Consistent arguments for conditions and actions"}],"source_content_type":"text/x-rst","patch_set":5,"id":"990c2fe9_5a680639","line":84,"range":{"start_line":84,"start_character":51,"end_line":84,"end_character":55},"in_reply_to":"ffe57cc4_43517d7e","updated":"2023-04-20 11:04:04.000000000","message":"Ack","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"df96025794b08395597e70fa333877af2282216f","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"* Radically change the rules DSL to something less awkward, e.g. Ansible-like"},{"line_number":101,"context_line":"  miniscript_. While I still want to do it eventually, I think such an"},{"line_number":102,"context_line":"  undertaking will increate the scope of this already large work too much."},{"line_number":103,"context_line":"  With API versioning in place, we can always change the language under the"},{"line_number":104,"context_line":"  hood."},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"db01ebc0_7c8f48d8","line":102,"updated":"2023-04-27 14:16:50.000000000","message":"An additional consideration is packaging, that the requirements for it to be gotten in might be cumbersome/onerous if not already consumed by distributions.","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"756bdb41057986cfcd4f648ffbda8bd2528ff024","unresolved":true,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"* Radically change the rules DSL to something less awkward, e.g. Ansible-like"},{"line_number":101,"context_line":"  miniscript_. While I still want to do it eventually, I think such an"},{"line_number":102,"context_line":"  undertaking will increate the scope of this already large work too much."},{"line_number":103,"context_line":"  With API versioning in place, we can always change the language under the"},{"line_number":104,"context_line":"  hood."},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"93d25235_328a89f9","line":102,"range":{"start_line":102,"start_character":19,"end_line":102,"end_character":27},"updated":"2023-04-06 14:21:49.000000000","message":"nit: increase","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"03a634b746e2efae19cf60441ba125965cd7e5ec","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"* Radically change the rules DSL to something less awkward, e.g. Ansible-like"},{"line_number":101,"context_line":"  miniscript_. While I still want to do it eventually, I think such an"},{"line_number":102,"context_line":"  undertaking will increate the scope of this already large work too much."},{"line_number":103,"context_line":"  With API versioning in place, we can always change the language under the"},{"line_number":104,"context_line":"  hood."},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"c3112167_b99af553","line":102,"range":{"start_line":102,"start_character":19,"end_line":102,"end_character":27},"in_reply_to":"93d25235_328a89f9","updated":"2023-04-20 11:04:04.000000000","message":"Ack","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"756bdb41057986cfcd4f648ffbda8bd2528ff024","unresolved":true,"context_lines":[{"line_number":103,"context_line":"  With API versioning in place, we can always change the language under the"},{"line_number":104,"context_line":"  hood."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"* Allow API users to upload Python code. No comments."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"* Seriously, though, write the rules in `Lua \u003chttps://pypi.org/project/lupa/\u003e`_"},{"line_number":109,"context_line":"  or any other \"grown-up\" embedded language. I haven\u0027t researched this option"}],"source_content_type":"text/x-rst","patch_set":5,"id":"16d327f6_4cc20022","line":106,"range":{"start_line":106,"start_character":41,"end_line":106,"end_character":53},"updated":"2023-04-06 14:21:49.000000000","message":"I add my \"no comment\" here :)","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"756bdb41057986cfcd4f648ffbda8bd2528ff024","unresolved":true,"context_lines":[{"line_number":277,"context_line":"Examples"},{"line_number":278,"context_line":"~~~~~~~~"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Partly taked from the Inspector docs, using YAML format."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":".. code-block:: yaml"},{"line_number":283,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"553e3db0_802a93bd","line":280,"range":{"start_line":280,"start_character":7,"end_line":280,"end_character":12},"updated":"2023-04-06 14:21:49.000000000","message":"nit: taken","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"03a634b746e2efae19cf60441ba125965cd7e5ec","unresolved":false,"context_lines":[{"line_number":277,"context_line":"Examples"},{"line_number":278,"context_line":"~~~~~~~~"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"Partly taked from the Inspector docs, using YAML format."},{"line_number":281,"context_line":""},{"line_number":282,"context_line":".. code-block:: yaml"},{"line_number":283,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"a2aca123_9a8287e7","line":280,"range":{"start_line":280,"start_character":7,"end_line":280,"end_character":12},"in_reply_to":"553e3db0_802a93bd","updated":"2023-04-20 11:04:04.000000000","message":"Ack","commit_id":"224b13b4d489de48121ecdfe2b6186d74912230f"}]}
