)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"2b2a2860deb15af17b87a7bad19054b2537040bf","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9946cc0f_7502b7e3","updated":"2025-11-30 15:55:40.000000000","message":"@dcu995@gmail.com\n\nI think we can include this in doc/source/user/aio/quickstart.rst - too if OS detect not work (may be anyone have use... Oracle Linux ;))","commit_id":"bb42a7408cc530f3d24cfd61b12bc598c2c21fd6"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"a6100caf7f0e4ebeda2b9f7185f2dd7892c13998","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d9a74281_14d2411a","updated":"2025-11-30 15:03:32.000000000","message":"LGTM","commit_id":"bb42a7408cc530f3d24cfd61b12bc598c2c21fd6"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"3918a276a6d8d46bff683f08ff56b1e6a42fd254","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"fa06a8c0_450bc522","updated":"2025-11-30 16:31:45.000000000","message":"maybe there is some more common identifier which would be same for the whole family?\nas somehow Ansible does get them all under same os_family...","commit_id":"bb42a7408cc530f3d24cfd61b12bc598c2c21fd6"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1c15e9f02f9d285ad5d5c02229140748a22ef060","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6414dd3f_f6a4b5bb","in_reply_to":"38a053e5_d05e67c2","updated":"2025-12-01 11:06:02.000000000","message":"I\u0027d say we don\u0027t need special case for rocky/alma 😊\n\nCheck this one out: https://review.opendev.org/c/openstack/openstack-ansible/+/969028","commit_id":"bb42a7408cc530f3d24cfd61b12bc598c2c21fd6"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"7568572dd4fe0ec0f82a0b03e9965ca538b20cda","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2b4b999e_1faf060e","in_reply_to":"6414dd3f_f6a4b5bb","updated":"2025-12-01 11:17:29.000000000","message":"Look\u0027s more interesting now, thanks-)\nI\u0027ll try to rebase on top and implement new common identifier.","commit_id":"bb42a7408cc530f3d24cfd61b12bc598c2c21fd6"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"1adc23baa539744aed4606c850c4017e2ea9e985","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f4789b01_3b00e338","in_reply_to":"9946cc0f_7502b7e3","updated":"2025-12-02 16:33:48.000000000","message":"Not need after https://review.opendev.org/c/openstack/openstack-ansible/+/969028","commit_id":"bb42a7408cc530f3d24cfd61b12bc598c2c21fd6"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"504774a85391ed9777b9dee3e3edd504e0adb8ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"38a053e5_d05e67c2","in_reply_to":"fa06a8c0_450bc522","updated":"2025-11-30 18:36:17.000000000","message":"The same identifier probably could be PLATFORM_ID, which is \"platform:el{version}\".\nBut does we need it, if we\u0027re trying to install python interpreters specifically for rocky/alma?","commit_id":"bb42a7408cc530f3d24cfd61b12bc598c2c21fd6"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"5420d1a6e6a0a11a5f8175f6fef5dc532878f66c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"a56580e2_f6ea0c75","updated":"2025-12-01 18:55:16.000000000","message":"I think you also need to rebase, sorry...","commit_id":"5fb62b46baf41d2afdacf2b546a14014a6105c2b"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"f4ccee16851e345ed25d4024f5482d4a9adc7447","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"00fefd9f_5a525773","updated":"2025-12-02 15:23:19.000000000","message":"sorry, it was kinda easier to patch then explain 😊","commit_id":"5df7667d47b43c5e3f50b978c5edc5cebea1c187"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"01f4d5b2c885e805d77b57e04445e81cda82e53c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"9e06c22b_a9de7f4d","in_reply_to":"00fefd9f_5a525773","updated":"2025-12-02 15:28:10.000000000","message":"No problem, I\u0027ve got it:)\nThis would be safer option I guess.","commit_id":"5df7667d47b43c5e3f50b978c5edc5cebea1c187"}],"scripts/bootstrap-ansible.sh":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"73c522827eeb05ff93b378f58e4a30c1d5445740","unresolved":true,"context_lines":[{"line_number":66,"context_line":"determine_distro"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Install the python interpreters"},{"line_number":69,"context_line":"case ${DISTRO_PLATFORM} in"},{"line_number":70,"context_line":"    platform:el)"},{"line_number":71,"context_line":"        case ${DISTRO_PLATFORM_VERSION} in"},{"line_number":72,"context_line":"            10|10.[0-9]*)"},{"line_number":73,"context_line":"                dnf -y install python3 python3-devel python3-libselinux"},{"line_number":74,"context_line":"            ;;"},{"line_number":75,"context_line":"        esac"},{"line_number":76,"context_line":"        ;;"},{"line_number":77,"context_line":"esac"},{"line_number":78,"context_line":"case ${DISTRO_ID} in"},{"line_number":79,"context_line":"    ubuntu|debian)"},{"line_number":80,"context_line":"        apt-get update"},{"line_number":81,"context_line":"        DEBIAN_FRONTEND\u003dnoninteractive apt-get -y install \\"},{"line_number":82,"context_line":"          python3 python3-dev \\"},{"line_number":83,"context_line":"          python3-minimal python3-apt \\"},{"line_number":84,"context_line":"          python3-venv"},{"line_number":85,"context_line":"        ;;"},{"line_number":86,"context_line":"esac"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"# Install the base packages"},{"line_number":89,"context_line":"case ${DISTRO_PLATFORM} in"}],"source_content_type":"text/x-sh","patch_set":10,"id":"b0816b7a_a0149ad6","line":86,"range":{"start_line":69,"start_character":0,"end_line":86,"end_character":4},"updated":"2025-12-01 17:02:00.000000000","message":"So, what if we do even smarter...\n\n```suggestion\nOS_FAMILY\u003d\"${ID_LIKE} ${ID}\"\n\ncase ${OS_FAMILY} in\n    *\"rhel\"*)\n        dnf -y install python3 python3-devel python3-libselinux\n        ;;\n    *\"debian\"*)\n        apt-get update\n        DEBIAN_FRONTEND\u003dnoninteractive apt-get -y install \\\n          python3 python3-dev \\\n          python3-minimal python3-apt \\\n          python3-venv\n        ;;\nesac\n```","commit_id":"6e529d4f920f44a561b443b13dc76dbbb065e15b"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"47b6e253d3ad93053b1d6cffbf433a5c3493a5e8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"determine_distro"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Install the python interpreters"},{"line_number":69,"context_line":"case ${DISTRO_PLATFORM} in"},{"line_number":70,"context_line":"    platform:el)"},{"line_number":71,"context_line":"        case ${DISTRO_PLATFORM_VERSION} in"},{"line_number":72,"context_line":"            10|10.[0-9]*)"},{"line_number":73,"context_line":"                dnf -y install python3 python3-devel python3-libselinux"},{"line_number":74,"context_line":"            ;;"},{"line_number":75,"context_line":"        esac"},{"line_number":76,"context_line":"        ;;"},{"line_number":77,"context_line":"esac"},{"line_number":78,"context_line":"case ${DISTRO_ID} in"},{"line_number":79,"context_line":"    ubuntu|debian)"},{"line_number":80,"context_line":"        apt-get update"},{"line_number":81,"context_line":"        DEBIAN_FRONTEND\u003dnoninteractive apt-get -y install \\"},{"line_number":82,"context_line":"          python3 python3-dev \\"},{"line_number":83,"context_line":"          python3-minimal python3-apt \\"},{"line_number":84,"context_line":"          python3-venv"},{"line_number":85,"context_line":"        ;;"},{"line_number":86,"context_line":"esac"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"# Install the base packages"},{"line_number":89,"context_line":"case ${DISTRO_PLATFORM} in"}],"source_content_type":"text/x-sh","patch_set":10,"id":"2a2ebd9b_02cd0501","line":86,"range":{"start_line":69,"start_character":0,"end_line":86,"end_character":4},"in_reply_to":"41b11d7f_7d318719","updated":"2025-12-01 18:50:09.000000000","message":"As I\u0027ve discovered Debian hasn\u0027t got id_like parameter, so i\u0027ve me some corrections to avoid unbound variable errors.","commit_id":"6e529d4f920f44a561b443b13dc76dbbb065e15b"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"bb2d4f39381bd4ca169d2fd156e71df1ab8364ff","unresolved":false,"context_lines":[{"line_number":66,"context_line":"determine_distro"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"# Install the python interpreters"},{"line_number":69,"context_line":"case ${DISTRO_PLATFORM} in"},{"line_number":70,"context_line":"    platform:el)"},{"line_number":71,"context_line":"        case ${DISTRO_PLATFORM_VERSION} in"},{"line_number":72,"context_line":"            10|10.[0-9]*)"},{"line_number":73,"context_line":"                dnf -y install python3 python3-devel python3-libselinux"},{"line_number":74,"context_line":"            ;;"},{"line_number":75,"context_line":"        esac"},{"line_number":76,"context_line":"        ;;"},{"line_number":77,"context_line":"esac"},{"line_number":78,"context_line":"case ${DISTRO_ID} in"},{"line_number":79,"context_line":"    ubuntu|debian)"},{"line_number":80,"context_line":"        apt-get update"},{"line_number":81,"context_line":"        DEBIAN_FRONTEND\u003dnoninteractive apt-get -y install \\"},{"line_number":82,"context_line":"          python3 python3-dev \\"},{"line_number":83,"context_line":"          python3-minimal python3-apt \\"},{"line_number":84,"context_line":"          python3-venv"},{"line_number":85,"context_line":"        ;;"},{"line_number":86,"context_line":"esac"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"# Install the base packages"},{"line_number":89,"context_line":"case ${DISTRO_PLATFORM} in"}],"source_content_type":"text/x-sh","patch_set":10,"id":"41b11d7f_7d318719","line":86,"range":{"start_line":69,"start_character":0,"end_line":86,"end_character":4},"in_reply_to":"b0816b7a_a0149ad6","updated":"2025-12-01 17:24:47.000000000","message":"Thanks, looks better now:)","commit_id":"6e529d4f920f44a561b443b13dc76dbbb065e15b"}],"scripts/scripts-library.sh":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"5420d1a6e6a0a11a5f8175f6fef5dc532878f66c","unresolved":true,"context_lines":[{"line_number":95,"context_line":"    export DISTRO_ID\u003d\"${ID}\""},{"line_number":96,"context_line":"    export DISTRO_NAME\u003d\"${NAME}\""},{"line_number":97,"context_line":"    export DISTRO_VERSION_ID\u003d${VERSION_ID}"},{"line_number":98,"context_line":"    # ID_LIKE is optional (e.g. missing on Debian), so use fallback to"},{"line_number":99,"context_line":"    # avoid unbound variable."},{"line_number":100,"context_line":"    if [[ -n \"${ID_LIKE:-}\" ]]; then"},{"line_number":101,"context_line":"    export OS_FAMILY\u003d\"$ID_LIKE $ID\""},{"line_number":102,"context_line":"    else"},{"line_number":103,"context_line":"    export OS_FAMILY\u003d\"$ID\""},{"line_number":104,"context_line":"    fi"},{"line_number":105,"context_line":"}"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"function ssh_key_create {"}],"source_content_type":"text/x-sh","patch_set":17,"id":"44fd2e19_97c2d681","line":104,"range":{"start_line":98,"start_character":0,"end_line":104,"end_character":6},"updated":"2025-12-01 18:55:16.000000000","message":"According to my test this check was not really required - did that on Debian 12 though:\n\n```\ndebian@server-1201-1948:~$ bash test.sh \nSystem identified as Debian/Ubuntu family.\ndebian@server-1201-1948:~$ cat test.sh \n#!/bin/bash\n\nif [ -f /etc/os-release ]; then\n    . /etc/os-release\nelse\n    echo \"Cannot determine OS release info.\" \u003e\u00262\n    exit 1\nfi\n\nOS_FAMILY\u003d\"${ID_LIKE} ${ID}\"\ncase \" ${OS_FAMILY} \" in\n    *\"rhel\"* )\n        echo \"System identified as RHEL/CentOS/Fedora family.\"\n        ;;\n\n    *\"debian\"* )\n        echo \"System identified as Debian/Ubuntu family.\"\n        ;;\n\n    * )\n        echo \"System has unknown or unsupported ID: ${ID} and ID_LIKE: ${ID_LIKE}\"\n        ;;\nesac\ndebian@server-1201-1948:~$ echo ${ID_LIKE}\n\ndebian@server-1201-1948:~$ \n```\n\nI think at worst we can simply do `OS_FAMILY\u003d\"${ID_LIKE:-} ${ID}\"`","commit_id":"5fb62b46baf41d2afdacf2b546a14014a6105c2b"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"4d2542a4347b9fb559f69c14e8adbd0eeaf69260","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    export DISTRO_ID\u003d\"${ID}\""},{"line_number":96,"context_line":"    export DISTRO_NAME\u003d\"${NAME}\""},{"line_number":97,"context_line":"    export DISTRO_VERSION_ID\u003d${VERSION_ID}"},{"line_number":98,"context_line":"    # ID_LIKE is optional (e.g. missing on Debian), so use fallback to"},{"line_number":99,"context_line":"    # avoid unbound variable."},{"line_number":100,"context_line":"    if [[ -n \"${ID_LIKE:-}\" ]]; then"},{"line_number":101,"context_line":"    export OS_FAMILY\u003d\"$ID_LIKE $ID\""},{"line_number":102,"context_line":"    else"},{"line_number":103,"context_line":"    export OS_FAMILY\u003d\"$ID\""},{"line_number":104,"context_line":"    fi"},{"line_number":105,"context_line":"}"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"function ssh_key_create {"}],"source_content_type":"text/x-sh","patch_set":17,"id":"2abfb0da_52773366","line":104,"range":{"start_line":98,"start_character":0,"end_line":104,"end_character":6},"in_reply_to":"44fd2e19_97c2d681","updated":"2025-12-01 23:10:16.000000000","message":"Thanks, probably error was coming from set -u, which was breaking script execution because of undefined variable, now it\u0027s should be fine 😊","commit_id":"5fb62b46baf41d2afdacf2b546a14014a6105c2b"}]}
