)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29925,"name":"Loan Harrouin","email":"loan.harrouin@gmail.com","username":"LoanH"},"change_message_id":"b79adee525d6daaf82009bdffdf87db1692ce355","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d3845c32_c06b99c0","updated":"2026-05-05 15:36:29.000000000","message":"recheck","commit_id":"5d84e2d61de88719eae62281785103f20e9c6359"},{"author":{"_account_id":29925,"name":"Loan Harrouin","email":"loan.harrouin@gmail.com","username":"LoanH"},"change_message_id":"bf04348ed5a3d3e24858a1c1c30f698fdaabe573","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"432b8172_690448c4","updated":"2026-05-05 16:29:49.000000000","message":"recheck - pipeline keep failing for issues out of this fix.","commit_id":"5d84e2d61de88719eae62281785103f20e9c6359"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"3f6fdc821eac3144757900fc87cafc769c817a59","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7ff58ac7_f784d59e","updated":"2026-05-11 09:06:39.000000000","message":"is it only a docker issue ? or is the podman api returning the same ? \n\nif only docker, I\u0027d rewrite this in the docker worker instead.\n\nalso, there should be tests for podman","commit_id":"8274a2aa5b5cdda303aa9fbaa28d132f139929ac"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"c8f928495d29a30d04b266a588b79648318ff23b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"457bf640_c611bacd","in_reply_to":"0913662c_305cf993","updated":"2026-05-21 12:51:22.000000000","message":"Done","commit_id":"8274a2aa5b5cdda303aa9fbaa28d132f139929ac"},{"author":{"_account_id":29925,"name":"Loan Harrouin","email":"loan.harrouin@gmail.com","username":"LoanH"},"change_message_id":"6b6e296261a8b8388d820285e27b26571bb1f063","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0913662c_305cf993","in_reply_to":"35152f86_1f6f0768","updated":"2026-05-11 12:18:10.000000000","message":"I got your point Bertrand.\n\n- Tested on podman and it\u0027s working fine. The regression is only on docker.\n- Moved the fix in docker worker and simplify it with an overload.","commit_id":"8274a2aa5b5cdda303aa9fbaa28d132f139929ac"},{"author":{"_account_id":29925,"name":"Loan Harrouin","email":"loan.harrouin@gmail.com","username":"LoanH"},"change_message_id":"409cf9de7222f3ab861939ffca79f213ce7857f6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"35152f86_1f6f0768","in_reply_to":"7ff58ac7_f784d59e","updated":"2026-05-11 09:19:17.000000000","message":"The problem is only on docker because podman overload the default compare_dimensions method (https://github.com/openstack/kolla-ansible/blob/master/ansible/module_utils/kolla_podman_worker.py#L441C9-L441C27).\nSo the default should still stay in container_worker and there is no need to add tests for podman.","commit_id":"8274a2aa5b5cdda303aa9fbaa28d132f139929ac"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"8d6ba4c27ef797fb1656a198e0a7ce8721b2e0be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"589a03d4_3eb7a61c","updated":"2026-05-21 13:48:46.000000000","message":"+1 which can be a +2 once I get an answer","commit_id":"be4c8f3006d2f04c52860ad3a4037a49790ee3d0"},{"author":{"_account_id":37203,"name":"Bertrand Lanson","display_name":"Bertrand Lanson","email":"bertrand.lanson@infomaniak.com","username":"lanson","status":"Infomaniak Network SA"},"change_message_id":"99b982a8922477b879fa8b50a8445fd18d533e36","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"dfaf00dc_5244cf23","updated":"2026-05-21 13:41:16.000000000","message":"LGTM","commit_id":"be4c8f3006d2f04c52860ad3a4037a49790ee3d0"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"efd19a3df72df757dd92e8a313628c4e85978417","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"30c1ec5b_23f4e3d6","updated":"2026-05-21 15:48:34.000000000","message":"nice job!","commit_id":"8304bb3884237bf5aee1c60715d097e88561d56d"},{"author":{"_account_id":29925,"name":"Loan Harrouin","email":"loan.harrouin@gmail.com","username":"LoanH"},"change_message_id":"7d338715c8d6011049bcc54444e1f9496f8d5282","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"99998acb_d71e5e21","updated":"2026-05-25 18:34:20.000000000","message":"recheck\n\nCI failure is unrelated to this change — j2lint fails on ansible/roles/loadbalancer/templates/haproxy/haproxy.json.j2:43 which is not part of this patch.","commit_id":"8304bb3884237bf5aee1c60715d097e88561d56d"}],"ansible/module_utils/kolla_docker_worker.py":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"8d6ba4c27ef797fb1656a198e0a7ce8721b2e0be","unresolved":true,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def dimensions_differ(self, a, b, key):"},{"line_number":184,"context_line":"        if key in (\u0027cpuset_cpus\u0027, \u0027cpuset_mems\u0027):"},{"line_number":185,"context_line":"            a \u003d \u0027\u0027 if a is None else str(a)"},{"line_number":186,"context_line":"            b \u003d \u0027\u0027 if b is None else str(b)"},{"line_number":187,"context_line":"            return a !\u003d b"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"c8f6c15a_0ac1bf76","line":185,"range":{"start_line":185,"start_character":12,"end_line":185,"end_character":43},"updated":"2026-05-21 13:48:46.000000000","message":"Wouldn\u0027t str(a or \u0027\u0027) be better readable and shorter?","commit_id":"be4c8f3006d2f04c52860ad3a4037a49790ee3d0"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"026709bd8be072dffdc4e8dbe121905cb05513c0","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def dimensions_differ(self, a, b, key):"},{"line_number":184,"context_line":"        if key in (\u0027cpuset_cpus\u0027, \u0027cpuset_mems\u0027):"},{"line_number":185,"context_line":"            a \u003d \u0027\u0027 if a is None else str(a)"},{"line_number":186,"context_line":"            b \u003d \u0027\u0027 if b is None else str(b)"},{"line_number":187,"context_line":"            return a !\u003d b"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"978d838e_c7e4939b","line":185,"range":{"start_line":185,"start_character":12,"end_line":185,"end_character":43},"in_reply_to":"c8f6c15a_0ac1bf76","updated":"2026-05-21 14:43:52.000000000","message":"Done","commit_id":"be4c8f3006d2f04c52860ad3a4037a49790ee3d0"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"efd19a3df72df757dd92e8a313628c4e85978417","unresolved":true,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def dimensions_differ(self, a, b, key):"},{"line_number":184,"context_line":"        if key in (\u0027cpuset_cpus\u0027, \u0027cpuset_mems\u0027):"},{"line_number":185,"context_line":"            a \u003d str(a or \u0027\u0027)"},{"line_number":186,"context_line":"            b \u003d str(b or \u0027\u0027)"},{"line_number":187,"context_line":"            return a !\u003d b"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"a59b37ab_957c7fec","line":185,"updated":"2026-05-21 15:48:34.000000000","message":"nit: You could support expanding ranges here. Eg. \u00270-3\u0027 and \u00270,1,2,3\u0027 both mean the same thing but would fail comparison [1].\n\nI don\u0027t know if Docker normalises them? I think, pragmatically, it isn\u0027t a big deal.\n\n[1] https://docs.docker.com/engine/containers/resource_constraints/","commit_id":"8304bb3884237bf5aee1c60715d097e88561d56d"},{"author":{"_account_id":29925,"name":"Loan Harrouin","email":"loan.harrouin@gmail.com","username":"LoanH"},"change_message_id":"f6b719f82a8c2d6767851d5493feee5b16170417","unresolved":true,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def dimensions_differ(self, a, b, key):"},{"line_number":184,"context_line":"        if key in (\u0027cpuset_cpus\u0027, \u0027cpuset_mems\u0027):"},{"line_number":185,"context_line":"            a \u003d str(a or \u0027\u0027)"},{"line_number":186,"context_line":"            b \u003d str(b or \u0027\u0027)"},{"line_number":187,"context_line":"            return a !\u003d b"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ab3db6d8_e58ee879","line":185,"in_reply_to":"a59b37ab_957c7fec","updated":"2026-05-22 07:29:19.000000000","message":"Docker doesn\u0027t normalize cpuset strings, so \u00270-3\u0027 and \u00270,1,2,3\u0027 are stored as-is and will be considered different by this code.\nSupporting normalization would go beyond this bug fix, but here\u0027s what it could look like:\n\n    def expand_cpuset(cpuset_str):\n        \"\"\"Expand a cpuset string into a frozenset of integers.\n        Supports comma-separated values and hyphen-separated ranges.\n        E.g. \u00270,2,4-6\u0027 -\u003e frozenset({0, 2, 4, 5, 6})\n        \"\"\"\n        result \u003d set()\n        for part in cpuset_str.split(\u0027,\u0027):\n            if \u0027-\u0027 in part:\n                start, end \u003d part.split(\u0027-\u0027)\n                result.update(range(int(start), int(end) + 1))\n            else:\n                result.add(int(part))\n        return frozenset(result)\n\nThat said, expanding large ranges could produce very verbose output, which may not be desirable. Given that Docker treats these as opaque strings, I think it\u0027s reasonable to keep the current behavior and require consistent formatting — triggering a redeploy if the format changes. Happy to add normalization as a follow-up if needed.","commit_id":"8304bb3884237bf5aee1c60715d097e88561d56d"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"98222871821373a77e343d384ab1e8b12ad737f8","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def dimensions_differ(self, a, b, key):"},{"line_number":184,"context_line":"        if key in (\u0027cpuset_cpus\u0027, \u0027cpuset_mems\u0027):"},{"line_number":185,"context_line":"            a \u003d str(a or \u0027\u0027)"},{"line_number":186,"context_line":"            b \u003d str(b or \u0027\u0027)"},{"line_number":187,"context_line":"            return a !\u003d b"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3361fa7e_978b3f78","line":185,"in_reply_to":"ab3db6d8_e58ee879","updated":"2026-05-22 13:31:41.000000000","message":"Thanks for the reply, yeah, let\u0027s not worry about it.","commit_id":"8304bb3884237bf5aee1c60715d097e88561d56d"}]}
