)]}'
{"ansible/roles/mariadb/tasks/start.yml":[{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"2b6e72d1b5a17188e5c3dc12339c7c43d48fa5a9","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Start mariadb containers"},{"line_number":3,"context_line":"  import_role:"},{"line_number":4,"context_line":"    name: service-start"},{"line_number":5,"context_line":"  vars:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"2846a635_f601b8df","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":32},"updated":"2026-01-29 10:32:50.000000000","message":"One potential risk is the lack of a \u0027wait for readiness\u0027 step?. For clustered services (like MariaDB or RabbitMQ), simply sending a start_container signal doesn\u0027t mean the service is ready to handle requests.","commit_id":"5ef15c6f118feb610155bc3ad3e47291f9c866f9"},{"author":{"_account_id":37855,"name":"Amir Hossein Ahmadi","display_name":"Amir Hossein","email":"sahahmadi96@gmail.com","username":"amir58118"},"change_message_id":"e4f7d2664180b9b1d30d8f5557dfd1cb776eaf95","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Start mariadb containers"},{"line_number":3,"context_line":"  import_role:"},{"line_number":4,"context_line":"    name: service-start"},{"line_number":5,"context_line":"  vars:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"c716c1c6_626a4507","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":32},"in_reply_to":"2846a635_f601b8df","updated":"2026-01-29 11:36:41.000000000","message":"You’re right. I’ve updated the start.yml tasks for MariaDB, RabbitMQ, and Grafana to include proper wait steps to ensure each service is ready before proceeding.","commit_id":"5ef15c6f118feb610155bc3ad3e47291f9c866f9"},{"author":{"_account_id":37855,"name":"Amir Hossein Ahmadi","display_name":"Amir Hossein","email":"sahahmadi96@gmail.com","username":"amir58118"},"change_message_id":"aae86ac694d65f86cf660e49dbc6bd43c818e1a0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Start mariadb containers"},{"line_number":3,"context_line":"  import_role:"},{"line_number":4,"context_line":"    name: service-start"},{"line_number":5,"context_line":"  vars:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"a8973a11_63d87fd2","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":32},"in_reply_to":"c716c1c6_626a4507","updated":"2026-01-31 08:52:55.000000000","message":"Acknowledged","commit_id":"5ef15c6f118feb610155bc3ad3e47291f9c866f9"},{"author":{"_account_id":36765,"name":"Seunghun Lee","display_name":"Seunghun Lee","email":"seunghun@stackhpc.com","username":"seunghun1ee","status":"Cloud Engineer at StackHPC"},"change_message_id":"35a7858cdf274e08507dcf65da6407fe81f2bd13","unresolved":true,"context_lines":[{"line_number":18,"context_line":"  until: check_mariadb_port is success"},{"line_number":19,"context_line":"  retries: 10"},{"line_number":20,"context_line":"  delay: 6"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"- name: Wait for MariaDB WSREP sync"},{"line_number":23,"context_line":"  become: true"},{"line_number":24,"context_line":"  kolla_toolbox:"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"e866dd93_fc37ed6a","line":21,"updated":"2026-03-03 16:25:32.000000000","message":"We should inform users to use mariadb-recovery if all nodes fail the port liveness check. See lookup_cluster.yml.","commit_id":"2b9d8a1083dd77ec8f2315bdcb05222b6998bd0e"}],"ansible/roles/nova/tasks/start.yml":[{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"2b6e72d1b5a17188e5c3dc12339c7c43d48fa5a9","unresolved":true,"context_lines":[{"line_number":5,"context_line":"  vars:"},{"line_number":6,"context_line":"    project_services: \"{{ nova_services }}\""},{"line_number":7,"context_line":"    service_name: \"{{ project_name }}\""},{"line_number":8,"context_line":"  tags: nova"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"b732f01e_6fccc8ec","line":8,"range":{"start_line":8,"start_character":2,"end_line":8,"end_character":12},"updated":"2026-01-29 10:32:50.000000000","message":"For better usability, we should ensure that all roles follow the same tagging convention. While nova has a tags: nova entry in its start.yml, other roles (like keystone or glance) are missing them.\n\ncomments from what I see, I have not tested it as a whole","commit_id":"5ef15c6f118feb610155bc3ad3e47291f9c866f9"},{"author":{"_account_id":37855,"name":"Amir Hossein Ahmadi","display_name":"Amir Hossein","email":"sahahmadi96@gmail.com","username":"amir58118"},"change_message_id":"7d1c88fef719fe254c68836f1dfe2118b0d56e31","unresolved":true,"context_lines":[{"line_number":5,"context_line":"  vars:"},{"line_number":6,"context_line":"    project_services: \"{{ nova_services }}\""},{"line_number":7,"context_line":"    service_name: \"{{ project_name }}\""},{"line_number":8,"context_line":"  tags: nova"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"ca78f248_50d27f40","line":8,"range":{"start_line":8,"start_character":2,"end_line":8,"end_character":12},"in_reply_to":"b732f01e_6fccc8ec","updated":"2026-01-29 11:16:06.000000000","message":"I followed the pattern from the service-stop tasks when creating the service-start tasks. Since the stop task for Nova still has the \u0027tags: nova\u0027 entry, I kept it for the start task as well for consistency.\n\nNow, for consistency across all service-start tasks, I’ve removed the tag from the Nova start task. If you have a different preference or think it should stay, please let me know.","commit_id":"5ef15c6f118feb610155bc3ad3e47291f9c866f9"},{"author":{"_account_id":37855,"name":"Amir Hossein Ahmadi","display_name":"Amir Hossein","email":"sahahmadi96@gmail.com","username":"amir58118"},"change_message_id":"aae86ac694d65f86cf660e49dbc6bd43c818e1a0","unresolved":false,"context_lines":[{"line_number":5,"context_line":"  vars:"},{"line_number":6,"context_line":"    project_services: \"{{ nova_services }}\""},{"line_number":7,"context_line":"    service_name: \"{{ project_name }}\""},{"line_number":8,"context_line":"  tags: nova"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"0ca84561_eab09184","line":8,"range":{"start_line":8,"start_character":2,"end_line":8,"end_character":12},"in_reply_to":"ca78f248_50d27f40","updated":"2026-01-31 08:52:55.000000000","message":"Acknowledged","commit_id":"5ef15c6f118feb610155bc3ad3e47291f9c866f9"}],"ansible/roles/rabbitmq/tasks/start.yml":[{"author":{"_account_id":36765,"name":"Seunghun Lee","display_name":"Seunghun Lee","email":"seunghun@stackhpc.com","username":"seunghun1ee","status":"Cloud Engineer at StackHPC"},"change_message_id":"35a7858cdf274e08507dcf65da6407fe81f2bd13","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f8d7f95e_563091c9","line":16,"updated":"2026-03-03 16:25:32.000000000","message":"I don\u0027t know if a RabbitMQ node exits the maintenance mode automatically when the node get restarted. Could you check this?","commit_id":"2b9d8a1083dd77ec8f2315bdcb05222b6998bd0e"}],"ansible/roles/service-start/tasks/main.yml":[{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"62c8cc8c568e20d3ee5bdee85caec80fe78eb4ae","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: \"Starting {{ service_name }} containers\""},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    service: \"{{ item.value }}\""},{"line_number":5,"context_line":"  become: true"},{"line_number":6,"context_line":"  kolla_container:"},{"line_number":7,"context_line":"    action: \"start_container\""},{"line_number":8,"context_line":"    common_options: \"{{ docker_common_options }}\""},{"line_number":9,"context_line":"    name: \"{{ service.container_name }}\""},{"line_number":10,"context_line":"  when:"},{"line_number":11,"context_line":"    - service.container_name not in skip_start_containers"},{"line_number":12,"context_line":"  with_dict: \"{{ project_services | select_services_enabled_and_mapped_to_host }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"e31fac7c_058d535d","line":12,"range":{"start_line":1,"start_character":0,"end_line":12,"end_character":82},"updated":"2026-01-14 17:13:23.000000000","message":"In my opinion:\n\nThe service-start role should include a get_container_state inspection step to improve stability:\n\nRobustness: Prevents \u0027404 Not Found\u0027 errors if containers are not yet deployed.\n\nPrecision: By checking item.state \u003d\u003d \u0027exited\u0027, we avoid redundant start commands for already running containers, keeping logs clean.\n\nSafety: Adding default([]) to skip_start_containers prevents syntax errors if the variable is undefined.\n\nBetter:\n---\n- name: Inspect containers for {{ service_name }}\n  kolla_container:\n    action: \"get_container_state\"\n    name: \"{{ item.value.container_name }}\"\n  register: container_states\n  with_dict: \"{{ project_services | select_services_enabled_and_mapped_to_host }}\"\n\n- name: \"Starting {{ service_name }} containers\"\n  vars:\n    service: \"{{ item.item.value }}\"\n  become: true\n  kolla_container:\n    action: \"start_container\"\n    common_options: \"{{ docker_common_options }}\"\n    name: \"{{ service.container_name }}\"\n  when:\n    - item.state \u003d\u003d \u0027exited\u0027\n    - service.container_name not in skip_start_containers | default([])\n  with_items: \"{{ container_states.results }}\"","commit_id":"e11332208f09d368b3c094f438229a0968f41626"},{"author":{"_account_id":37855,"name":"Amir Hossein Ahmadi","display_name":"Amir Hossein","email":"sahahmadi96@gmail.com","username":"amir58118"},"change_message_id":"4a6fa8be6542f1de80f764836aacb006506fee93","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: \"Starting {{ service_name }} containers\""},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    service: \"{{ item.value }}\""},{"line_number":5,"context_line":"  become: true"},{"line_number":6,"context_line":"  kolla_container:"},{"line_number":7,"context_line":"    action: \"start_container\""},{"line_number":8,"context_line":"    common_options: \"{{ docker_common_options }}\""},{"line_number":9,"context_line":"    name: \"{{ service.container_name }}\""},{"line_number":10,"context_line":"  when:"},{"line_number":11,"context_line":"    - service.container_name not in skip_start_containers"},{"line_number":12,"context_line":"  with_dict: \"{{ project_services | select_services_enabled_and_mapped_to_host }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"f39ac54c_3d8a6a15","line":12,"range":{"start_line":1,"start_character":0,"end_line":12,"end_character":82},"in_reply_to":"26ad44a2_73655d69","updated":"2026-01-31 08:53:24.000000000","message":"Acknowledged","commit_id":"e11332208f09d368b3c094f438229a0968f41626"},{"author":{"_account_id":37855,"name":"Amir Hossein Ahmadi","display_name":"Amir Hossein","email":"sahahmadi96@gmail.com","username":"amir58118"},"change_message_id":"7dcff10e86db4f92438e69f2de55a8726f4e6f8a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: \"Starting {{ service_name }} containers\""},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    service: \"{{ item.value }}\""},{"line_number":5,"context_line":"  become: true"},{"line_number":6,"context_line":"  kolla_container:"},{"line_number":7,"context_line":"    action: \"start_container\""},{"line_number":8,"context_line":"    common_options: \"{{ docker_common_options }}\""},{"line_number":9,"context_line":"    name: \"{{ service.container_name }}\""},{"line_number":10,"context_line":"  when:"},{"line_number":11,"context_line":"    - service.container_name not in skip_start_containers"},{"line_number":12,"context_line":"  with_dict: \"{{ project_services | select_services_enabled_and_mapped_to_host }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"26ad44a2_73655d69","line":12,"range":{"start_line":1,"start_character":0,"end_line":12,"end_character":82},"in_reply_to":"4b3838b9_211ebcbc","updated":"2026-01-29 10:51:03.000000000","message":"That\u0027s a good point! I\u0027ll work on that.","commit_id":"e11332208f09d368b3c094f438229a0968f41626"},{"author":{"_account_id":37855,"name":"Amir Hossein Ahmadi","display_name":"Amir Hossein","email":"sahahmadi96@gmail.com","username":"amir58118"},"change_message_id":"b28a0fcc9383aaa0ffdfa5c935deb9b29f13a9af","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: \"Starting {{ service_name }} containers\""},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    service: \"{{ item.value }}\""},{"line_number":5,"context_line":"  become: true"},{"line_number":6,"context_line":"  kolla_container:"},{"line_number":7,"context_line":"    action: \"start_container\""},{"line_number":8,"context_line":"    common_options: \"{{ docker_common_options }}\""},{"line_number":9,"context_line":"    name: \"{{ service.container_name }}\""},{"line_number":10,"context_line":"  when:"},{"line_number":11,"context_line":"    - service.container_name not in skip_start_containers"},{"line_number":12,"context_line":"  with_dict: \"{{ project_services | select_services_enabled_and_mapped_to_host }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"a0987401_2cee9d16","line":12,"range":{"start_line":1,"start_character":0,"end_line":12,"end_character":82},"in_reply_to":"5b129541_d2df0b16","updated":"2026-01-28 06:54:36.000000000","message":"Thanks for the review and suggestions, agreed.\n\nI’ve updated the role to leverage already gathered container_facts and only start containers when they are in the exited state, avoiding redundant inspections and unnecessary start attempts. I also guarded skip_start_containers with a default for safety.","commit_id":"e11332208f09d368b3c094f438229a0968f41626"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"2b6e72d1b5a17188e5c3dc12339c7c43d48fa5a9","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: \"Starting {{ service_name }} containers\""},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    service: \"{{ item.value }}\""},{"line_number":5,"context_line":"  become: true"},{"line_number":6,"context_line":"  kolla_container:"},{"line_number":7,"context_line":"    action: \"start_container\""},{"line_number":8,"context_line":"    common_options: \"{{ docker_common_options }}\""},{"line_number":9,"context_line":"    name: \"{{ service.container_name }}\""},{"line_number":10,"context_line":"  when:"},{"line_number":11,"context_line":"    - service.container_name not in skip_start_containers"},{"line_number":12,"context_line":"  with_dict: \"{{ project_services | select_services_enabled_and_mapped_to_host }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"4b3838b9_211ebcbc","line":12,"range":{"start_line":1,"start_character":0,"end_line":12,"end_character":82},"in_reply_to":"a0987401_2cee9d16","updated":"2026-01-29 10:32:50.000000000","message":"Thanks for the updates! One quick suggestions to improve visibility\nHandle \u0027missing\u0027 state: Currently, if a container is missing (e.g., deleted by mistake), the task just silently skips it. I recommend adding a debug or assert for services that are enabled but have no container on the host. This prevents misleading \u0027successful\u0027 runs on broken deployments. all the data is in fact it should be easy to do","commit_id":"e11332208f09d368b3c094f438229a0968f41626"},{"author":{"_account_id":37306,"name":"Piotr Milewski","display_name":"Piotr Milewski","email":"vurmil@gmail.com","username":"vurmil"},"change_message_id":"ccf6ae090f98429d3e35f5332e06b0515b06be45","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: \"Starting {{ service_name }} containers\""},{"line_number":3,"context_line":"  vars:"},{"line_number":4,"context_line":"    service: \"{{ item.value }}\""},{"line_number":5,"context_line":"  become: true"},{"line_number":6,"context_line":"  kolla_container:"},{"line_number":7,"context_line":"    action: \"start_container\""},{"line_number":8,"context_line":"    common_options: \"{{ docker_common_options }}\""},{"line_number":9,"context_line":"    name: \"{{ service.container_name }}\""},{"line_number":10,"context_line":"  when:"},{"line_number":11,"context_line":"    - service.container_name not in skip_start_containers"},{"line_number":12,"context_line":"  with_dict: \"{{ project_services | select_services_enabled_and_mapped_to_host }}\""}],"source_content_type":"text/x-yaml","patch_set":7,"id":"5b129541_d2df0b16","line":12,"range":{"start_line":1,"start_character":0,"end_line":12,"end_character":82},"in_reply_to":"e31fac7c_058d535d","updated":"2026-01-14 17:18:20.000000000","message":"I haven\u0027t reviewed the entire role yet, but aren\u0027t container facts already gathered earlier? If so, we could leverage them to make this more efficient and avoid redundant calls. We could do something like this:\n\n- name: \"Starting {{ service_name }} containers\"\n  vars:\n    service: \"{{ item.value }}\"\n    container_state: \"{{ container_facts[service.container_name].State | default(\u0027missing\u0027) }}\"\n  become: true\n  kolla_container:\n    action: \"start_container\"\n    common_options: \"{{ docker_common_options }}\"\n    name: \"{{ service.container_name }}\"\n  when:\n    - container_state \u003d\u003d \u0027exited\u0027\n    - service.container_name not in skip_start_containers | default([])\n  with_dict: \"{{ project_services | select_services_enabled_and_mapped_to_host }}\"","commit_id":"e11332208f09d368b3c094f438229a0968f41626"}]}
