)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"a1a9b1234aae01cf30df759adad4624aa8a66d4d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a7eeb560_56c6de5f","updated":"2025-01-14 12:52:26.000000000","message":"I don\u0027t know if removing -kl and -kt is what I would do - there are some ,,kolla-ansible knowledgable\u0027\u0027 people out there, that would still like to use it (like me I guess) - I\u0027m fine with doing --tags and making it work for the confused people 😊","commit_id":"425e39318d522c0acdb23b0b0133bef0fc9658b8"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"d2ffce95ba475d5e119e1e4cea12378322cff629","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d6536fbd_ae773707","in_reply_to":"43141592_0b5b91c7","updated":"2025-01-14 14:17:50.000000000","message":"I think we need now to pay more attention to ,,syncing\u0027\u0027 tags for kayobe roles and kolla-ansible roles, and still using tags is not tested anywhere","commit_id":"425e39318d522c0acdb23b0b0133bef0fc9658b8"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"d565504dbb3a80654f9b3b8a049a711151d9456e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d2052e6d_cd77b1f5","in_reply_to":"a7eeb560_56c6de5f","updated":"2025-01-14 13:03:11.000000000","message":"Wasn\u0027t clear from the commit message so I\u0027ve updated it now. --tags and --limit is now passed through to Kolla-Ansible, so you can still use these to limit what runs in KA.\nI\u0027m keen to make sure KA experts are inhibited by this patch, so do let me know if you see something you\u0027d be stopped from doing now.","commit_id":"425e39318d522c0acdb23b0b0133bef0fc9658b8"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"8a2c9df17da7a2bec76f02cb8ec98b1521a56788","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"43141592_0b5b91c7","in_reply_to":"d2052e6d_cd77b1f5","updated":"2025-01-14 13:04:14.000000000","message":"*are not inhibited","commit_id":"425e39318d522c0acdb23b0b0133bef0fc9658b8"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"6a37599085874bae641ea49097160478c109b855","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"91dd8310_030a19cf","in_reply_to":"d6536fbd_ae773707","updated":"2025-08-21 10:23:51.000000000","message":"Do you have any roles in particular that you\u0027re thinking of? I\u0027m not sure which you mean.","commit_id":"425e39318d522c0acdb23b0b0133bef0fc9658b8"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"4890479aa3fd5ba34e203be337633e17b9cd3403","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9193c7cb_038f4781","updated":"2025-01-14 13:49:58.000000000","message":"Overall looks good and seems to implement the design discussed at the design summit: https://etherpad.opendev.org/p/kolla-epoxy-ptg","commit_id":"73a45f7c47911e2bf1cef2fd548f0813530e8d72"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"01348b90915bab9ee5d1c85fddc2014fe1ed7cbe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"0c5b9f3b_eb05ed3c","updated":"2025-05-09 09:49:24.000000000","message":"We are targeting Flamingo for this change.","commit_id":"3347ef57dd495c5e49be53df959f40f077986829"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"137eac2f4d1855909389dcb255ca9fa6ec9135b8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"6003b2e7_81efc2e2","updated":"2025-08-27 09:14:15.000000000","message":"Not that I\u0027m ruining the fun - but shouldn\u0027t we change such major defaults in a SLURP cycle, so people don\u0027t have to read non-SLURP cycle release notes?","commit_id":"99d3f0e35316ab6e796756b3b46bf82bd5e199c5"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"5812220a3555d814df64eececc71c8658117b7db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"c917b3fd_9e411670","in_reply_to":"4eb4956d_4d2649d7","updated":"2026-03-18 10:31:59.000000000","message":"Done","commit_id":"99d3f0e35316ab6e796756b3b46bf82bd5e199c5"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"195184da0f18195c818ec886d7e594d87c436472","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"4eb4956d_4d2649d7","in_reply_to":"6003b2e7_81efc2e2","updated":"2025-08-27 09:33:57.000000000","message":"Yes, you\u0027re right","commit_id":"99d3f0e35316ab6e796756b3b46bf82bd5e199c5"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"df9e2791274d158fc2382ce5bcdd293201724570","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"d5dcb20a_e632f1d1","updated":"2026-01-26 14:42:17.000000000","message":"recheck: ansible galaxy should be fixed","commit_id":"b99702732f5810df51474f42aa4ec573a4ef1d62"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"e63af59e50e26ffa5613d40cbea47a6f1183d17a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":24,"id":"6e960df1_6afdc600","updated":"2026-02-11 17:36:01.000000000","message":"I think this has something to do with the fact cache. We must some how be caching a subset of the facts such that ansible_facts is truthy","commit_id":"0aceb06f6e718efb1a329d924c2c15394eec669d"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"0cf224610e266a4e685747a2102f2abb79b9b3d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"b2998dd3_38f813b4","updated":"2026-02-11 15:45:48.000000000","message":"recheck: Issue with ansible_facts on overcloud host upgrade in slurp upgrade. Why are other jobs passing?","commit_id":"0aceb06f6e718efb1a329d924c2c15394eec669d"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"061442ca2ce6e31866bd54cd5752b9065da73a52","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"49b32b1a_3165168e","updated":"2026-02-02 16:54:39.000000000","message":"recheck: host clock sync failure","commit_id":"0aceb06f6e718efb1a329d924c2c15394eec669d"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"3d53f459e7cb3238d8c37687000553ad574a7035","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"b9b8633a_c8c1b7c8","updated":"2026-02-03 09:02:07.000000000","message":"recheck: ubuntu jobs failed on time sync again","commit_id":"0aceb06f6e718efb1a329d924c2c15394eec669d"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"2bd7ee936fd2f3cf3e0f58d12c3cdd184b612aba","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":24,"id":"7836f563_3dff69ac","in_reply_to":"6e960df1_6afdc600","updated":"2026-03-03 11:38:45.000000000","message":"Facts were indeed being cached and getting in the way.\nIt\u0027s only happening in this patch because I introduced the new tag kayobe-generate-config, which means kolla-ansible.yml and therefore kolla-ansible-host-vars is now always run when it previously wasn\u0027t.\nI\u0027ve updated kayobe-target-venv to gather facts always (when the venv is defined), rather than checking that no facts exist first. IMO it doesn\u0027t hurt to gather facts once more here, and is a cleaner solution than finding places to clear cached facts.","commit_id":"0aceb06f6e718efb1a329d924c2c15394eec669d"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"519ca7acbaf200cdebeeab7b36f69ef765e76f10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"7316502b_9825709d","in_reply_to":"7836f563_3dff69ac","updated":"2026-03-19 14:01:49.000000000","message":"Done","commit_id":"0aceb06f6e718efb1a329d924c2c15394eec669d"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"4fa6655292a5d4e8493cd1614736f06180457e8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"f3e09cb0_b9cce554","updated":"2026-03-04 09:53:11.000000000","message":"recheck: CI should be fixed after https://review.opendev.org/c/openstack/kayobe/+/978855","commit_id":"315492a199b78e40bf05cc198797d88ac0e718ea"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"31988e67b315d57889be5eaef15466581808b022","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"d03c6edc_750691cd","updated":"2026-03-04 12:06:38.000000000","message":"recheck: download error","commit_id":"315492a199b78e40bf05cc198797d88ac0e718ea"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"6af6ed0b5142193a25a5ddb30947ba945f7e928f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"c3914a80_9c9d2519","updated":"2026-03-19 14:13:30.000000000","message":"Thanks for this. I think it\u0027s more intuitive for new users.","commit_id":"fb1767ad7f42235f576ec5ae3fd6f623f207e512"}],"ansible/kayobe-target-venv.yml":[{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"84ba34876b31253d4be18f12f584fd6ba67945a8","unresolved":true,"context_lines":[{"line_number":26,"context_line":"        filter: \"{{ kayobe_ansible_setup_filter }}\""},{"line_number":27,"context_line":"        gather_subset: \"{{ kayobe_ansible_setup_gather_subset }}\""},{"line_number":28,"context_line":"      when:"},{"line_number":29,"context_line":"        - ansible_facts is undefined or ansible_facts is falsy"},{"line_number":30,"context_line":"        - kayobe_virtualenv is defined"},{"line_number":31,"context_line":"      register: gather_facts_result"},{"line_number":32,"context_line":"      # Before any facts are gathered, ansible doesn\u0027t know about"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"54a0609a_d2716a5c","side":"PARENT","line":29,"updated":"2026-03-04 15:57:47.000000000","message":"Need to check that this still uses the fact cache otherwise we are essentially collecting facts during each host configure","commit_id":"aa230f9d05eea695f2aaa09a348f56a2079e6eda"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"d36f8c83abe79dfe86c34a0a0f3979d6194f25ff","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        filter: \"{{ kayobe_ansible_setup_filter }}\""},{"line_number":27,"context_line":"        gather_subset: \"{{ kayobe_ansible_setup_gather_subset }}\""},{"line_number":28,"context_line":"      when:"},{"line_number":29,"context_line":"        - ansible_facts is undefined or ansible_facts is falsy"},{"line_number":30,"context_line":"        - kayobe_virtualenv is defined"},{"line_number":31,"context_line":"      register: gather_facts_result"},{"line_number":32,"context_line":"      # Before any facts are gathered, ansible doesn\u0027t know about"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"aa935799_dd1bc200","side":"PARENT","line":29,"in_reply_to":"54a0609a_d2716a5c","updated":"2026-03-09 13:16:13.000000000","message":"Matt says this is already respecting the cache.","commit_id":"aa230f9d05eea695f2aaa09a348f56a2079e6eda"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"3e4b814825b88d96d6378efef51467a20279a283","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        filter: \"{{ kayobe_ansible_setup_filter }}\""},{"line_number":27,"context_line":"        gather_subset: \"{{ kayobe_ansible_setup_gather_subset }}\""},{"line_number":28,"context_line":"      when:"},{"line_number":29,"context_line":"        - ansible_facts is undefined or ansible_facts is falsy"},{"line_number":30,"context_line":"        - kayobe_virtualenv is defined"},{"line_number":31,"context_line":"      register: gather_facts_result"},{"line_number":32,"context_line":"      # Before any facts are gathered, ansible doesn\u0027t know about"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"2150e493_026e9d18","side":"PARENT","line":29,"in_reply_to":"9b993d5c_2410574a","updated":"2026-03-17 09:33:55.000000000","message":"Nice, I think it is perfectly acceptable to fix this in a follow up patch since this change did not introduce the bug, but just exposed it.","commit_id":"aa230f9d05eea695f2aaa09a348f56a2079e6eda"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"7e7c1765aadb0aec547f6515b3df40e3a96f468b","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        filter: \"{{ kayobe_ansible_setup_filter }}\""},{"line_number":27,"context_line":"        gather_subset: \"{{ kayobe_ansible_setup_gather_subset }}\""},{"line_number":28,"context_line":"      when:"},{"line_number":29,"context_line":"        - ansible_facts is undefined or ansible_facts is falsy"},{"line_number":30,"context_line":"        - kayobe_virtualenv is defined"},{"line_number":31,"context_line":"      register: gather_facts_result"},{"line_number":32,"context_line":"      # Before any facts are gathered, ansible doesn\u0027t know about"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"9b993d5c_2410574a","side":"PARENT","line":29,"in_reply_to":"aa935799_dd1bc200","updated":"2026-03-16 11:15:03.000000000","message":"I was wrong, but have raised a bug for where the proper fix is needed: https://bugs.launchpad.net/kayobe/+bug/2144548","commit_id":"aa230f9d05eea695f2aaa09a348f56a2079e6eda"}],"kayobe/ansible.py":[{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"069f3b264e76c61bdea7dc925407be82c15a9128","unresolved":true,"context_lines":[{"line_number":215,"context_line":"    if parsed_args.tags or tags:"},{"line_number":216,"context_line":"        all_tags \u003d [t for t in [parsed_args.tags, tags] if t]"},{"line_number":217,"context_line":"        # Always run kolla-openstack (unless the tag is skipped)."},{"line_number":218,"context_line":"        all_tags +\u003d [\"kolla-openstack\"]"},{"line_number":219,"context_line":"        cmd +\u003d [\"--tags\", \",\".join(all_tags)]"},{"line_number":220,"context_line":"    cmd +\u003d playbooks"},{"line_number":221,"context_line":"    return cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"79167137_a7ca2468","line":218,"updated":"2025-01-14 13:45:25.000000000","message":"Should we make it run all of the tasks that generate config by default i.e the playbooks in here:\n\nhttps://github.com/openstack/kayobe/blob/aaa77476f43903a93c7d70888c1ca3e22cf33286/kayobe/cli/commands.py#L92-L117\n\nYou could introduce a new tag, e.g kayobe-generate-config that is applied to all of the those playbooks or add all tags to this list?\n\nAnother idea is to add a command line option to skip that whole function.\n\nI\u0027m guessing from a clean checkout (or delete $KOLLA_CONFIG_PATH) a service deploy won\u0027t work with this patch as it stands.","commit_id":"73a45f7c47911e2bf1cef2fd548f0813530e8d72"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"1324eb5325eb9ddaa461c62ad064e6b127efa9e8","unresolved":true,"context_lines":[{"line_number":215,"context_line":"    if parsed_args.tags or tags:"},{"line_number":216,"context_line":"        all_tags \u003d [t for t in [parsed_args.tags, tags] if t]"},{"line_number":217,"context_line":"        # Always run kolla-openstack (unless the tag is skipped)."},{"line_number":218,"context_line":"        all_tags +\u003d [\"kolla-openstack\"]"},{"line_number":219,"context_line":"        cmd +\u003d [\"--tags\", \",\".join(all_tags)]"},{"line_number":220,"context_line":"    cmd +\u003d playbooks"},{"line_number":221,"context_line":"    return cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"e52a959d_d9f958c5","line":218,"in_reply_to":"10c04bd8_4996e3a2","updated":"2025-02-05 17:35:34.000000000","message":"I can see ``--skip-tags kolla-ansible`` being confusing to users as it suggests that all kolla-ansible playbooks would be skipped (at least to me). I would like to see a new tag e.g ``config-generation`` or ``kayobe-generate-config`` so the intent is clearer.","commit_id":"73a45f7c47911e2bf1cef2fd548f0813530e8d72"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"ee08c2652f36d0eda4ec1dfa97940d47d0b52db9","unresolved":true,"context_lines":[{"line_number":215,"context_line":"    if parsed_args.tags or tags:"},{"line_number":216,"context_line":"        all_tags \u003d [t for t in [parsed_args.tags, tags] if t]"},{"line_number":217,"context_line":"        # Always run kolla-openstack (unless the tag is skipped)."},{"line_number":218,"context_line":"        all_tags +\u003d [\"kolla-openstack\"]"},{"line_number":219,"context_line":"        cmd +\u003d [\"--tags\", \",\".join(all_tags)]"},{"line_number":220,"context_line":"    cmd +\u003d playbooks"},{"line_number":221,"context_line":"    return cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"10c04bd8_4996e3a2","line":218,"in_reply_to":"12a05915_92d22150","updated":"2025-01-22 14:01:28.000000000","message":"In fact, we don\u0027t even need to add a new tag to achieve this. All the tasks in ``kolla-openstack`` and ``kolla-ansible`` have the ``kolla-ansible`` tag, so was can always run that instead.","commit_id":"73a45f7c47911e2bf1cef2fd548f0813530e8d72"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"338e09b4d2b02e6fa3019a9aa8bb49e1d3b29ca6","unresolved":true,"context_lines":[{"line_number":215,"context_line":"    if parsed_args.tags or tags:"},{"line_number":216,"context_line":"        all_tags \u003d [t for t in [parsed_args.tags, tags] if t]"},{"line_number":217,"context_line":"        # Always run kolla-openstack (unless the tag is skipped)."},{"line_number":218,"context_line":"        all_tags +\u003d [\"kolla-openstack\"]"},{"line_number":219,"context_line":"        cmd +\u003d [\"--tags\", \",\".join(all_tags)]"},{"line_number":220,"context_line":"    cmd +\u003d playbooks"},{"line_number":221,"context_line":"    return cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"12a05915_92d22150","line":218,"in_reply_to":"79167137_a7ca2468","updated":"2025-01-22 13:28:39.000000000","message":"You\u0027re right that we also need to run the ``kolla-ansible`` tasks, so I like the idea of one new tag that applies to these and ``kolla-openstack``.\n\nI disagree that we always need to run ``kolla-bifrost`` though, this should only be needed for ``kayobe seed service deploy``. This is why I added the ``bifrost`` tag, so we can call everything Bifrost with just one tag.","commit_id":"73a45f7c47911e2bf1cef2fd548f0813530e8d72"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"d3eccd83d8f30ccbe9858a0b56a36185a0ff5dd2","unresolved":false,"context_lines":[{"line_number":215,"context_line":"    if parsed_args.tags or tags:"},{"line_number":216,"context_line":"        all_tags \u003d [t for t in [parsed_args.tags, tags] if t]"},{"line_number":217,"context_line":"        # Always run kolla-openstack (unless the tag is skipped)."},{"line_number":218,"context_line":"        all_tags +\u003d [\"kolla-openstack\"]"},{"line_number":219,"context_line":"        cmd +\u003d [\"--tags\", \",\".join(all_tags)]"},{"line_number":220,"context_line":"    cmd +\u003d playbooks"},{"line_number":221,"context_line":"    return cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa1a155a_724d35c8","line":218,"in_reply_to":"7d8f165b_d6427e48","updated":"2025-02-06 11:06:57.000000000","message":"Done","commit_id":"73a45f7c47911e2bf1cef2fd548f0813530e8d72"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"59bd2134656980ee3d7a2510245ca91fb9f4f744","unresolved":true,"context_lines":[{"line_number":215,"context_line":"    if parsed_args.tags or tags:"},{"line_number":216,"context_line":"        all_tags \u003d [t for t in [parsed_args.tags, tags] if t]"},{"line_number":217,"context_line":"        # Always run kolla-openstack (unless the tag is skipped)."},{"line_number":218,"context_line":"        all_tags +\u003d [\"kolla-openstack\"]"},{"line_number":219,"context_line":"        cmd +\u003d [\"--tags\", \",\".join(all_tags)]"},{"line_number":220,"context_line":"    cmd +\u003d playbooks"},{"line_number":221,"context_line":"    return cmd"}],"source_content_type":"text/x-python","patch_set":7,"id":"7d8f165b_d6427e48","line":218,"in_reply_to":"e52a959d_d9f958c5","updated":"2025-02-06 10:27:33.000000000","message":"That\u0027s a fair point, I\u0027ll make that change","commit_id":"73a45f7c47911e2bf1cef2fd548f0813530e8d72"}],"kayobe/cli/commands.py":[{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"4504b5920e347906057c7a078672b1474a22f693","unresolved":true,"context_lines":[{"line_number":119,"context_line":"                                      ignore_limit\u003dTrue, check\u003dFalse)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def handle_kolla_tags_limits_deprecation(self, parsed_args):"},{"line_number":122,"context_line":"        red \u003d \"\\x1b[31;20m\""},{"line_number":123,"context_line":"        yellow \u003d \"\\x1b[33;20m\""},{"line_number":124,"context_line":"        reset \u003d \"\\x1b[0m\""},{"line_number":125,"context_line":"        if (parsed_args.kolla_limit or parsed_args.kolla_tags or"}],"source_content_type":"text/x-python","patch_set":17,"id":"f71e116f_50f0800a","line":122,"updated":"2025-12-12 10:33:11.000000000","message":"Nit: This will show up in log files. I know ansible detects if the stdout is a terminal emulator, and if not, will strip the escape characters. It has the ANSIBLE_FORCE_COLOR option to skip this detection.  I don\u0027t think I\u0027d block merging on this though as it can be improved at a later date. It might be quite nice to make the colourisation into a function so that we could use the same logic for all deprecation notices. Perhaps we could use https://github.com/ansible/ansible/blob/6c0bb0837ceab38f11cf51ffc1a6a0dc7ef684a4/lib/ansible/utils/color.py#L72?","commit_id":"abb5fc4c6c542373526ff7fe1de87712e96afbf2"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"3e8f6dfc4cb076b6dc0c0ef65f37ac5130088e13","unresolved":true,"context_lines":[{"line_number":119,"context_line":"                                      ignore_limit\u003dTrue, check\u003dFalse)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def handle_kolla_tags_limits_deprecation(self, parsed_args):"},{"line_number":122,"context_line":"        red \u003d \"\\x1b[31;20m\""},{"line_number":123,"context_line":"        yellow \u003d \"\\x1b[33;20m\""},{"line_number":124,"context_line":"        reset \u003d \"\\x1b[0m\""},{"line_number":125,"context_line":"        if (parsed_args.kolla_limit or parsed_args.kolla_tags or"}],"source_content_type":"text/x-python","patch_set":17,"id":"b6d6a747_30f25255","line":122,"in_reply_to":"8c8a7cc1_6adb85fb","updated":"2026-01-26 17:22:22.000000000","message":"Not bad, It might be quite nice if we could implement this as a formatter which would add the log level and do the colorization. Something like this:\n\nhttps://stackoverflow.com/a/56944256\n\nThat way all log messages would be formatted in the same way. Something like:\n\n\tdiff --git a/kayobe/cli/commands.py b/kayobe/cli/commands.py\n\tindex a8275645..e2ec69a5 100644\n\t--- a/kayobe/cli/commands.py\n\t+++ b/kayobe/cli/commands.py\n\t@@ -131,9 +131,9 @@ class KayobeAnsibleMixin(object):\n\t\t                         \"tags/limit will be removed in the next \"\n\t\t                         \"release.\", \"yellow\"))\n\t\t if parsed_args.limit and parsed_args.kolla_limit:\n\t-            LOG.error(stringc(\"[ERROR] You can no longer use both --limit and \"\n\t-                              \"--kolla-limit at the same time. Please switch \"\n\t-                              \"to just using --limit\", \"red\"))\n\t+            self.app.LOG.error(\"You can no longer use both --limit and \"\n\t+                               \"--kolla-limit at the same time. Please switch \"\n\t+                               \"to just using --limit\")\n\t\t     sys.exit(1)\n\t\t if parsed_args.tags and parsed_args.kolla_tags:\n\t\t     LOG.error(stringc(\"[ERROR] You can no longer use both --tags and \"\n\tdiff --git a/kayobe/cmd/kayobe.py b/kayobe/cmd/kayobe.py\n\tindex 5e3fadf1..28057a8d 100644\n\t--- a/kayobe/cmd/kayobe.py\n\t+++ b/kayobe/cmd/kayobe.py\n\t@@ -18,6 +18,29 @@ from cliff.commandmanager import CommandManager\n\n\t from kayobe import version\n\n\t+import logging\n\t+\n\t+class CustomFormatter(logging.Formatter):\n\t+\n\t+    grey \u003d \"\\x1b[38;20m\"\n\t+    yellow \u003d \"\\x1b[33;20m\"\n\t+    red \u003d \"\\x1b[31;20m\"\n\t+    bold_red \u003d \"\\x1b[31;1m\"\n\t+    reset \u003d \"\\x1b[0m\"\n\t+    format \u003d \"[%(levelname)s]: %(message)s\"\n\t+\n\t+    FORMATS \u003d {\n\t+        logging.DEBUG: grey + format + reset,\n\t+        logging.INFO: grey + format + reset,\n\t+        logging.WARNING: yellow + format + reset,\n\t+        logging.ERROR: red + format + reset,\n\t+        logging.CRITICAL: bold_red + format + reset\n\t+    }\n\t+\n\t+    def format(self, record):\n\t+        log_fmt \u003d self.FORMATS.get(record.levelno)\n\t+        formatter \u003d logging.Formatter(log_fmt)\n\t+        return formatter.format(record)\n\n\t class KayobeApp(App):\n\n\t@@ -33,6 +56,14 @@ class KayobeApp(App):\n\t     def initialize_app(self, argv):\n\t\t self.LOG.debug(\u0027initialize_app\u0027)\n\n\t+    def configure_logging(self):\n\t+        super().configure_logging()\n\t+        root_logger \u003d logging.getLogger(\u0027\u0027)\n\t+        # Override log formatter\n\t+        for handler in root_logger.handlers:\n\t+            if isinstance(handler, logging.StreamHandler):\n\t+                handler.setFormatter(CustomFormatter())\n\t+\n\t     def prepare_to_run_command(self, cmd):\n\t\t self.LOG.debug(\u0027prepare_to_run_command %s\u0027, cmd.__class__.__name__)","commit_id":"abb5fc4c6c542373526ff7fe1de87712e96afbf2"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"ebe95539f17e5e34f9f11681b80f193b53e8e40c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                                      ignore_limit\u003dTrue, check\u003dFalse)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def handle_kolla_tags_limits_deprecation(self, parsed_args):"},{"line_number":122,"context_line":"        red \u003d \"\\x1b[31;20m\""},{"line_number":123,"context_line":"        yellow \u003d \"\\x1b[33;20m\""},{"line_number":124,"context_line":"        reset \u003d \"\\x1b[0m\""},{"line_number":125,"context_line":"        if (parsed_args.kolla_limit or parsed_args.kolla_tags or"}],"source_content_type":"text/x-python","patch_set":17,"id":"05076ca9_d978a5a1","line":122,"in_reply_to":"b6d6a747_30f25255","updated":"2026-01-27 15:09:50.000000000","message":"Thanks Will, that works a treat. I\u0027ve included it in this patch","commit_id":"abb5fc4c6c542373526ff7fe1de87712e96afbf2"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"9ed4a1dba42f15bdd4741d6ae313ff04ef0c6071","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                                      ignore_limit\u003dTrue, check\u003dFalse)"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    def handle_kolla_tags_limits_deprecation(self, parsed_args):"},{"line_number":122,"context_line":"        red \u003d \"\\x1b[31;20m\""},{"line_number":123,"context_line":"        yellow \u003d \"\\x1b[33;20m\""},{"line_number":124,"context_line":"        reset \u003d \"\\x1b[0m\""},{"line_number":125,"context_line":"        if (parsed_args.kolla_limit or parsed_args.kolla_tags or"}],"source_content_type":"text/x-python","patch_set":17,"id":"8c8a7cc1_6adb85fb","line":122,"in_reply_to":"f71e116f_50f0800a","updated":"2026-01-15 13:34:22.000000000","message":"I\u0027ve updated to use ``ansible.utils.color.stringc``. I don\u0027t think there\u0027s any need to turn this into its own kayobe function.","commit_id":"abb5fc4c6c542373526ff7fe1de87712e96afbf2"}],"kayobe/kolla_ansible.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"48259dbe36e6f4a49518463795b932ca75af9027","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    parser.add_argument(\"--kolla-skip-tags\", metavar\u003d\"TAGS\","},{"line_number":63,"context_line":"                        help\u003d\"only run plays and tasks whose tags do not \""},{"line_number":64,"context_line":"                             \"match these values in Kolla Ansible\")"},{"line_number":65,"context_line":"    parser.add_argument(\"-kt\", \"--kolla-tags\", metavar\u003d\"TAGS\","},{"line_number":66,"context_line":"                        help\u003d\"only run plays and tasks tagged with these \""},{"line_number":67,"context_line":"                             \"values in Kolla Ansible\")"},{"line_number":68,"context_line":"    parser.add_argument(\"--kolla-venv\", metavar\u003d\"VENV\", default\u003ddefault_venv,"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f3538a4_9906c0cc","side":"PARENT","line":65,"updated":"2025-08-21 13:59:50.000000000","message":"Is it possible to deprecate these for a cycle? So people have time to migrate their automation to use the new methods?\n\nWe could just add these as an deprecated alias for the other arguments? Or is that going to be too confusing?\n\nhttps://docs.openstack.org/project-team-guide/deprecation.html","commit_id":"3dee45436f5e5da6046a51d35ea736ea3c9f9b83"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"d801abb6954779f98dab73333f9df146186483a8","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    parser.add_argument(\"--kolla-skip-tags\", metavar\u003d\"TAGS\","},{"line_number":63,"context_line":"                        help\u003d\"only run plays and tasks whose tags do not \""},{"line_number":64,"context_line":"                             \"match these values in Kolla Ansible\")"},{"line_number":65,"context_line":"    parser.add_argument(\"-kt\", \"--kolla-tags\", metavar\u003d\"TAGS\","},{"line_number":66,"context_line":"                        help\u003d\"only run plays and tasks tagged with these \""},{"line_number":67,"context_line":"                             \"values in Kolla Ansible\")"},{"line_number":68,"context_line":"    parser.add_argument(\"--kolla-venv\", metavar\u003d\"VENV\", default\u003ddefault_venv,"}],"source_content_type":"text/x-python","patch_set":15,"id":"c9948c30_668bba8d","side":"PARENT","line":65,"in_reply_to":"3f3538a4_9906c0cc","updated":"2025-08-27 09:06:05.000000000","message":"I\u0027m struggling to find a way for an alias to work, as I\u0027m not sure there\u0027s a nice way to handle using both ``-t`` and ``-kt`` in one command. \n\nIt wouldn\u0027t be correct to just merge the tags, as some of Ansible\u0027s \"special\" tags like ``none`` would get in the way. For example ``kayobe seed service deploy -t seed-deploy-containers -kt none``.\n\nI think it would be confusing and a maintenance burden for the next cycles to add workarounds for this kind of behaviour.","commit_id":"3dee45436f5e5da6046a51d35ea736ea3c9f9b83"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"3072f88adde6ab0b1c38267734000317fff08666","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    parser.add_argument(\"--kolla-skip-tags\", metavar\u003d\"TAGS\","},{"line_number":63,"context_line":"                        help\u003d\"only run plays and tasks whose tags do not \""},{"line_number":64,"context_line":"                             \"match these values in Kolla Ansible\")"},{"line_number":65,"context_line":"    parser.add_argument(\"-kt\", \"--kolla-tags\", metavar\u003d\"TAGS\","},{"line_number":66,"context_line":"                        help\u003d\"only run plays and tasks tagged with these \""},{"line_number":67,"context_line":"                             \"values in Kolla Ansible\")"},{"line_number":68,"context_line":"    parser.add_argument(\"--kolla-venv\", metavar\u003d\"VENV\", default\u003ddefault_venv,"}],"source_content_type":"text/x-python","patch_set":15,"id":"73ca3609_952d85e1","side":"PARENT","line":65,"in_reply_to":"6cfefea0_20165867","updated":"2025-08-29 16:20:56.000000000","message":"I would say there is little point in deprecating the feature without making it possible to use the new variant at the same time, otherwise they can\u0027t really switch ahead of time.","commit_id":"3dee45436f5e5da6046a51d35ea736ea3c9f9b83"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"2a01ac0a3a08137d7f1114342f4b1b3989809f82","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    parser.add_argument(\"--kolla-skip-tags\", metavar\u003d\"TAGS\","},{"line_number":63,"context_line":"                        help\u003d\"only run plays and tasks whose tags do not \""},{"line_number":64,"context_line":"                             \"match these values in Kolla Ansible\")"},{"line_number":65,"context_line":"    parser.add_argument(\"-kt\", \"--kolla-tags\", metavar\u003d\"TAGS\","},{"line_number":66,"context_line":"                        help\u003d\"only run plays and tasks tagged with these \""},{"line_number":67,"context_line":"                             \"values in Kolla Ansible\")"},{"line_number":68,"context_line":"    parser.add_argument(\"--kolla-venv\", metavar\u003d\"VENV\", default\u003ddefault_venv,"}],"source_content_type":"text/x-python","patch_set":15,"id":"8ef7d34c_b394f620","side":"PARENT","line":65,"in_reply_to":"73ca3609_952d85e1","updated":"2025-08-29 16:27:49.000000000","message":"So I guess the question is: Can this be done in a clean way? Otherwise, removing in Gazpacho is fine with me. It really is a very minor change that operators have to make.","commit_id":"3dee45436f5e5da6046a51d35ea736ea3c9f9b83"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a0fb188cbaa7ee8dd563bb84f19ddc051c4b6f91","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    parser.add_argument(\"--kolla-skip-tags\", metavar\u003d\"TAGS\","},{"line_number":63,"context_line":"                        help\u003d\"only run plays and tasks whose tags do not \""},{"line_number":64,"context_line":"                             \"match these values in Kolla Ansible\")"},{"line_number":65,"context_line":"    parser.add_argument(\"-kt\", \"--kolla-tags\", metavar\u003d\"TAGS\","},{"line_number":66,"context_line":"                        help\u003d\"only run plays and tasks tagged with these \""},{"line_number":67,"context_line":"                             \"values in Kolla Ansible\")"},{"line_number":68,"context_line":"    parser.add_argument(\"--kolla-venv\", metavar\u003d\"VENV\", default\u003ddefault_venv,"}],"source_content_type":"text/x-python","patch_set":15,"id":"b397e307_3adc219a","side":"PARENT","line":65,"in_reply_to":"8ef7d34c_b394f620","updated":"2025-08-30 06:47:25.000000000","message":"What about we keep “kayobe overcloud service deploy -kt nova” working, with a deprecation notice warning that the two tags are now combined, with a compromise that if you specify -t and -kt together we just error out saying please migrate to -t?\n\nIt’s not really a big deal to migrate, but it’s against the depreciation policy to just drop it, by my reading at least.\n\nKeeping to that depreciation policy is a large maintenance burden, but it helps stop annoying our users.\n\n… I always screw up kolla skip tags vs skip kolla tags, so I do think this is a pretty good idea overall! I don’t want to block the progress there.","commit_id":"3dee45436f5e5da6046a51d35ea736ea3c9f9b83"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"12a564e8ff70744e0384077a028eb0f82aad343e","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    parser.add_argument(\"--kolla-skip-tags\", metavar\u003d\"TAGS\","},{"line_number":63,"context_line":"                        help\u003d\"only run plays and tasks whose tags do not \""},{"line_number":64,"context_line":"                             \"match these values in Kolla Ansible\")"},{"line_number":65,"context_line":"    parser.add_argument(\"-kt\", \"--kolla-tags\", metavar\u003d\"TAGS\","},{"line_number":66,"context_line":"                        help\u003d\"only run plays and tasks tagged with these \""},{"line_number":67,"context_line":"                             \"values in Kolla Ansible\")"},{"line_number":68,"context_line":"    parser.add_argument(\"--kolla-venv\", metavar\u003d\"VENV\", default\u003ddefault_venv,"}],"source_content_type":"text/x-python","patch_set":15,"id":"b77c505f_0411fc02","side":"PARENT","line":65,"in_reply_to":"9057373b_aced65fd","updated":"2025-12-10 13:45:14.000000000","message":"I\u0027ve made these changes, please let me know if they match what you had in mind","commit_id":"3dee45436f5e5da6046a51d35ea736ea3c9f9b83"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"a0b83994bdca69024b76ddae67f7da51d7c4b5d3","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    parser.add_argument(\"--kolla-skip-tags\", metavar\u003d\"TAGS\","},{"line_number":63,"context_line":"                        help\u003d\"only run plays and tasks whose tags do not \""},{"line_number":64,"context_line":"                             \"match these values in Kolla Ansible\")"},{"line_number":65,"context_line":"    parser.add_argument(\"-kt\", \"--kolla-tags\", metavar\u003d\"TAGS\","},{"line_number":66,"context_line":"                        help\u003d\"only run plays and tasks tagged with these \""},{"line_number":67,"context_line":"                             \"values in Kolla Ansible\")"},{"line_number":68,"context_line":"    parser.add_argument(\"--kolla-venv\", metavar\u003d\"VENV\", default\u003ddefault_venv,"}],"source_content_type":"text/x-python","patch_set":15,"id":"9057373b_aced65fd","side":"PARENT","line":65,"in_reply_to":"b397e307_3adc219a","updated":"2025-09-01 15:15:55.000000000","message":"+1 Seems like a reasonable suggestion to me","commit_id":"3dee45436f5e5da6046a51d35ea736ea3c9f9b83"},{"author":{"_account_id":23084,"name":"Bartosz Bezak","email":"bartosz@stackhpc.com","username":"b.bezak"},"change_message_id":"5812220a3555d814df64eececc71c8658117b7db","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    parser.add_argument(\"--kolla-skip-tags\", metavar\u003d\"TAGS\","},{"line_number":63,"context_line":"                        help\u003d\"only run plays and tasks whose tags do not \""},{"line_number":64,"context_line":"                             \"match these values in Kolla Ansible\")"},{"line_number":65,"context_line":"    parser.add_argument(\"-kt\", \"--kolla-tags\", metavar\u003d\"TAGS\","},{"line_number":66,"context_line":"                        help\u003d\"only run plays and tasks tagged with these \""},{"line_number":67,"context_line":"                             \"values in Kolla Ansible\")"},{"line_number":68,"context_line":"    parser.add_argument(\"--kolla-venv\", metavar\u003d\"VENV\", default\u003ddefault_venv,"}],"source_content_type":"text/x-python","patch_set":15,"id":"d1418471_9daa882c","side":"PARENT","line":65,"in_reply_to":"b77c505f_0411fc02","updated":"2026-03-18 10:31:59.000000000","message":"Done","commit_id":"3dee45436f5e5da6046a51d35ea736ea3c9f9b83"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"0c543929dc194ccd91ee701f3109c49b273ca585","unresolved":true,"context_lines":[{"line_number":62,"context_line":"    parser.add_argument(\"--kolla-skip-tags\", metavar\u003d\"TAGS\","},{"line_number":63,"context_line":"                        help\u003d\"only run plays and tasks whose tags do not \""},{"line_number":64,"context_line":"                             \"match these values in Kolla Ansible\")"},{"line_number":65,"context_line":"    parser.add_argument(\"-kt\", \"--kolla-tags\", metavar\u003d\"TAGS\","},{"line_number":66,"context_line":"                        help\u003d\"only run plays and tasks tagged with these \""},{"line_number":67,"context_line":"                             \"values in Kolla Ansible\")"},{"line_number":68,"context_line":"    parser.add_argument(\"--kolla-venv\", metavar\u003d\"VENV\", default\u003ddefault_venv,"}],"source_content_type":"text/x-python","patch_set":15,"id":"6cfefea0_20165867","side":"PARENT","line":65,"in_reply_to":"c9948c30_668bba8d","updated":"2025-08-27 09:29:30.000000000","message":"Reading that deprecation guide closer, it sounds like really we should have added deprecation notices in Epoxy if we want to remove them in Flamingo/Gazpacho 😞","commit_id":"3dee45436f5e5da6046a51d35ea736ea3c9f9b83"}]}
