)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"f5905e18f5dce5d45c64bdcee005b414a015b33d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"12097889_3da83e5f","updated":"2024-08-09 08:01:40.000000000","message":"LGTM, might be possible to remove a special case for openeuler as well, see comment.","commit_id":"6a5f6dec23458c3c07592b84ed2a2131bd4c4691"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"83510ae26d442ba0e18558aaa406e9677763423d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1e483991_689eef35","updated":"2024-08-19 06:07:39.000000000","message":"Actually it\u0027s not about python-version, but existence of of /usr/lib/python[version]/EXTERNALLY-MANAGED file - let me rework","commit_id":"b67fa74f225ea51bd1b33cc93325a8aff3f04070"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"1d82adf84a4dee68130991f34afe95f4b851d565","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"aff1273e_976c090e","updated":"2024-08-16 11:52:46.000000000","message":"Reno missing - users should know how it\u0027s changed starting with python3.11","commit_id":"b67fa74f225ea51bd1b33cc93325a8aff3f04070"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"2b602de1c5fa1e857aea3aa9f790381d8c76b3b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"53a78e22_7eedb9f2","in_reply_to":"aff1273e_976c090e","updated":"2024-09-06 08:28:45.000000000","message":"Nothing changes really - it\u0027s a no-op from user perspective - we still do not install using pip on Bookworm (when venv is not set)","commit_id":"b67fa74f225ea51bd1b33cc93325a8aff3f04070"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"f720995818032c31f3c2607ec34a874ee18a504f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"97315dbe_e48ade9a","updated":"2024-09-06 11:11:22.000000000","message":"it is hanging here for a while, merging","commit_id":"2ee3e850f13a0bcbe2b6a5e9d85847c13588bb26"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"184fbbb671418abc600807a0300cebccb2ad03da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"b3991412_3851e888","updated":"2024-09-06 08:30:51.000000000","message":"recheck - get new logs","commit_id":"2ee3e850f13a0bcbe2b6a5e9d85847c13588bb26"}],"roles/docker_sdk/defaults/main.yml":[{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"f5905e18f5dce5d45c64bdcee005b414a015b33d","unresolved":true,"context_lines":[{"line_number":3,"context_line":"docker_sdk_packages:"},{"line_number":4,"context_line":"  - \"python3-setuptools\""},{"line_number":5,"context_line":"  - \"python3-pip\""},{"line_number":6,"context_line":"  - \"{% if ansible_facts.python.version.major \u003d\u003d 3 and ansible_facts.python.version.minor \u003e\u003d 11 and virtualenv is none %}python3-docker{% endif %}\""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# List of Python packages to install via Pip."},{"line_number":9,"context_line":"# NOTE(mnasiadka) docker 3.0.0 is in kolla-ansible requirements"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"d6c0797d_3b5343fa","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":2},"updated":"2024-08-09 08:01:40.000000000","message":"can we then also remove this special python3-docker install pkg from openeuler?\nhttps://github.com/openstack/ansible-collection-kolla/blob/master/roles/packages/defaults/main.yml#L17","commit_id":"6a5f6dec23458c3c07592b84ed2a2131bd4c4691"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"5b8dfba9ff328124c2a1962eddefa0c90281cbdc","unresolved":false,"context_lines":[{"line_number":3,"context_line":"docker_sdk_packages:"},{"line_number":4,"context_line":"  - \"python3-setuptools\""},{"line_number":5,"context_line":"  - \"python3-pip\""},{"line_number":6,"context_line":"  - \"{% if ansible_facts.python.version.major \u003d\u003d 3 and ansible_facts.python.version.minor \u003e\u003d 11 and virtualenv is none %}python3-docker{% endif %}\""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# List of Python packages to install via Pip."},{"line_number":9,"context_line":"# NOTE(mnasiadka) docker 3.0.0 is in kolla-ansible requirements"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"8cdda151_7a02832a","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":2},"in_reply_to":"4e487e78_8dd93be4","updated":"2024-08-09 12:37:10.000000000","message":"And then it will be Rocky and some other... python3.11+ will not allow installing via pip without a venv.","commit_id":"6a5f6dec23458c3c07592b84ed2a2131bd4c4691"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"e59212b8cf4dd32758b2b5620ad27825bd151ff1","unresolved":true,"context_lines":[{"line_number":3,"context_line":"docker_sdk_packages:"},{"line_number":4,"context_line":"  - \"python3-setuptools\""},{"line_number":5,"context_line":"  - \"python3-pip\""},{"line_number":6,"context_line":"  - \"{% if ansible_facts.python.version.major \u003d\u003d 3 and ansible_facts.python.version.minor \u003e\u003d 11 and virtualenv is none %}python3-docker{% endif %}\""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# List of Python packages to install via Pip."},{"line_number":9,"context_line":"# NOTE(mnasiadka) docker 3.0.0 is in kolla-ansible requirements"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"4e487e78_8dd93be4","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":2},"in_reply_to":"d6c0797d_3b5343fa","updated":"2024-08-09 11:38:05.000000000","message":"Before it was bookworm only, but now it\u0027s also noble. Why to not use conditional ansible_family or how it is ?","commit_id":"6a5f6dec23458c3c07592b84ed2a2131bd4c4691"}],"roles/docker_sdk/tasks/main.yml":[{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"de419b51ecfbfa1d70f67b4f0e4f0583b80c290a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Check if Python environment is externally managed"},{"line_number":3,"context_line":"  ansible.builtin.stat:"},{"line_number":4,"context_line":"    path: \"/usr/lib/python{{ ansible_facts.python.version.major }}{{ ansible_facts.python.version.minor }}/EXTERNALLY-MANAGED\""},{"line_number":5,"context_line":"  register: python_externally_managed"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- name: Set docker_sdk_python_externally_managed fact"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"17b0e7c8_233e0b7e","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":2},"updated":"2024-08-19 10:31:54.000000000","message":"according to:\nhttps://packaging.python.org/en/latest/specifications/externally-managed-environments/\nthe path specified here should be:\n```\nsysconfig.get_path(\"stdlib\", sysconfig.get_default_scheme())\n```\n\nwhich evaluates locally on my fedora machine to:\n```\n\u003e\u003e\u003e import sysconfig\n\u003e\u003e\u003e print(sysconfig.get_path(\"stdlib\", sysconfig.get_default_scheme()))\n/usr/lib64/python3.12\n\n```\n\nrockylinux container with python 3.12 from dnf repo:\n\n```\n[root@92c9a1aec62e /]# python3.12 \nPython 3.12.1 (main, May  3 2024, 00:00:00) [GCC 11.4.1 20231218 (Red Hat 11.4.1-3)] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e import sysconfig\n\u003e\u003e\u003e print(sysconfig.get_path(\"stdlib\", sysconfig.get_default_scheme()))\n/usr/lib64/python3.12\n\n```\n\nubuntu 24.04:\n\n```\nprint(sysconfig.get_path(\"stdlib\", sysconfig.get_default_scheme()))\n/usr/lib/python3.12\n```\n\nI think we should just use the path returned by python for this, instead of a hardcoded path.\n\nThere is a util function for this in pip itself, but it seems it\u0027s not really callable by a user, as far as I can see:\n\nhttps://github.com/pypa/pip/blob/858a515bb5b7dbc3256ca4beed527dfc227434ab/src/pip/_internal/utils/misc.py#L601","commit_id":"299cac3b86e0c7f3972b4cb79671d0f63bbac6a6"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"2279ab96b71ebdd9251c82f1f1d439e7582693c8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Check if Python environment is externally managed"},{"line_number":3,"context_line":"  ansible.builtin.stat:"},{"line_number":4,"context_line":"    path: \"/usr/lib/python{{ ansible_facts.python.version.major }}{{ ansible_facts.python.version.minor }}/EXTERNALLY-MANAGED\""},{"line_number":5,"context_line":"  register: python_externally_managed"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"- name: Set docker_sdk_python_externally_managed fact"}],"source_content_type":"text/x-yaml","patch_set":20,"id":"d116bcbd_406403e9","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":2},"in_reply_to":"17b0e7c8_233e0b7e","updated":"2024-08-19 14:42:30.000000000","message":"Done","commit_id":"299cac3b86e0c7f3972b4cb79671d0f63bbac6a6"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"7c48695d11a33faaf96f83a6886c19a9f4b210fa","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        filename: osbpo"},{"line_number":48,"context_line":"      become: True"},{"line_number":49,"context_line":"  when:"},{"line_number":50,"context_line":"    - docker_sdk_python_externally_managed | default(false)"},{"line_number":51,"context_line":"    - virtualenv is none"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"- name: Install packages"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"2e86e241_4ec04b57","line":50,"updated":"2024-08-20 10:53:08.000000000","message":"it looks like it can enable apt repo on externally managed python on Rocky - the same in podman role","commit_id":"d6c00c5daa6188630c112c71bcd5d20926de03b0"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"a15f9f7bfdbce93f1efbafa0b9c34e53a7c79520","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        filename: osbpo"},{"line_number":48,"context_line":"      become: True"},{"line_number":49,"context_line":"  when:"},{"line_number":50,"context_line":"    - docker_sdk_python_externally_managed | default(false)"},{"line_number":51,"context_line":"    - virtualenv is none"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"- name: Install packages"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"289db384_6ead67e2","line":50,"in_reply_to":"2e86e241_4ec04b57","updated":"2024-08-20 12:50:11.000000000","message":"Done","commit_id":"d6c00c5daa6188630c112c71bcd5d20926de03b0"}],"roles/podman_sdk/tasks/main.yml":[{"author":{"_account_id":32553,"name":"Sven Kieske","email":"sven_oss@posteo.de","username":"skieske"},"change_message_id":"a74db88e43515df53ea411b6169a7007f40c83f7","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Get Python"},{"line_number":3,"context_line":"  ansible.builtin.command: \"{{ ansible_facts.python.executable }} -c \u0027import sysconfig; print(sysconfig.get_path(\\\"stdlib\\\", sysconfig.get_default_scheme()))\u0027\""},{"line_number":4,"context_line":"  changed_when: false"},{"line_number":5,"context_line":"  register: python_default_scheme_path"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":26,"id":"e1281b37_eff8de22","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":2},"updated":"2024-08-19 12:43:34.000000000","message":"did you test this on rocky linux 9? the default python there is 3.9, which doesn\u0027t support `get_default_scheme()`, you need to explicitly install and call python3.12 there for this to work. :/\nThough I\u0027m not sure if we set the python interpreter version maybe already correctly somewhere else in the ansible environment.","commit_id":"529dab6fa6b9dfea3a550b3e894943ac596b55cb"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"bb76ab4bf844f8711b97fe21e72e21cffdab4e02","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Get Python"},{"line_number":3,"context_line":"  ansible.builtin.command: \"{{ ansible_facts.python.executable }} -c \u0027import sysconfig; print(sysconfig.get_path(\\\"stdlib\\\", sysconfig.get_default_scheme()))\u0027\""},{"line_number":4,"context_line":"  changed_when: false"},{"line_number":5,"context_line":"  register: python_default_scheme_path"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":26,"id":"bcba263e_3775e288","line":3,"range":{"start_line":3,"start_character":0,"end_line":3,"end_character":2},"in_reply_to":"e1281b37_eff8de22","updated":"2024-08-19 14:52:28.000000000","message":"Yeah, it fails there, we could use _get_default_scheme() - but we basically need it for Python3.10+ (or even 3.11+) - so I created a block and run it only for 3.10+.","commit_id":"529dab6fa6b9dfea3a550b3e894943ac596b55cb"}]}
