--- - name: Add Koji builder host {{ item }} block: - name: Try to add Koji builder host ansible.builtin.command: > sudo -u {{ koji_admin_user }} koji --config={{ koji_hub_admin_user_koji_dir }}/config add-host {{ item }} x86_64 register: koji_add_host_result changed_when: "'Host added' in koji_add_host_result.stdout" failed_when: "'is already in the database' not in koji_add_host_result.stderr and koji_add_host_result.rc != 0" rescue: - name: Get user ID of the non-host user ansible.builtin.command: > sudo -u postgres psql {{ koji_db_name }} -tAc "SELECT id FROM users WHERE name = '{{ item }}' AND usertype = 0;" register: non_host_user_id delegate_to: "{{ koji_db_host }}" changed_when: false - name: Delete sessions for non-host user ansible.builtin.command: > sudo -u postgres psql {{ koji_db_name }} -c "DELETE FROM sessions WHERE user_id = {{ non_host_user_id.stdout | trim }};" when: - non_host_user_id.stdout | trim | length > 0 - "'already exists and it is not a host' in koji_add_host_result.stderr" delegate_to: "{{ koji_db_host }}" changed_when: true - name: Delete non-host user ansible.builtin.command: > sudo -u postgres psql {{ koji_db_name }} -c "DELETE FROM users WHERE id = {{ non_host_user_id.stdout | trim }};" when: - non_host_user_id.stdout | trim | length > 0 - "'already exists and it is not a host' in koji_add_host_result.stderr" delegate_to: "{{ koji_db_host }}" changed_when: true - name: Retry adding Koji builder host ansible.builtin.command: > sudo -u {{ koji_admin_user }} koji --config={{ koji_hub_admin_user_koji_dir }}/config add-host {{ item }} x86_64 when: - "'already exists and it is not a host' in koji_add_host_result.stderr"