- hosts: localhost
  tasks:
    - name: Add bridge.o.o to inventory for playbook
      add_host:
        name: bridge.openstack.org
        ansible_python_interpreter: python3
        ansible_user: zuul
        # Without setting ansible_host directly, mirror-workspace-git-repos
        # gets sad because if delegate_to localhost and with add_host that
        # ends up with ansible_host being localhost.
        ansible_host: bridge.openstack.org
        ansible_port: 22
        # Port 19885 is firewalled
        zuul_console_disabled: true

- hosts: bridge.openstack.org
  tasks:
    - name: Run the production playbook and capture logs
      block:
      - name: Get a current timestamp
        set_fact:
          _log_timestamp: "{{ lookup('pipe', 'date +%Y-%m-%dT%H:%M:%S') }}"

      # NOTE(ianw) : this gets parsed by the post playbook.  If this
      # is updated, that parsing should be too
      - name: Log a playbook start header
        become: yes
        shell: 'echo "Running {{ _log_timestamp }}: ansible-playbook -v -f {{ infra_prod_ansible_forks }} /home/zuul/src/opendev.org/opendev/system-config/playbooks/{{ playbook_name }}" > /var/log/ansible/{{ playbook_name }}.log'

      - name: Run specified playbook on bridge.o.o and redirect output
        become: yes
        shell: 'ansible-playbook -v -f {{ infra_prod_ansible_forks }} /home/zuul/src/opendev.org/opendev/system-config/playbooks/{{ playbook_name }} >> /var/log/ansible/{{ playbook_name }}.log'
        register: _run

      always:
        - name: Send run stats
          shell: |
              # delta is in string format h:m:s.sss; convert to ms for statsd
              {% set delta = _run.delta.split(':') %}
              {% set delta_ms = ((delta[0]|int * 60 * 60 * 1000) + (delta[1]|int * 60 * 1000) + (delta[2]|float * 1000)) | int %}
              echo 'bridge.ansible.{{ zuul.job }}.runtime:{{ delta_ms }}|ms' | nc -w 1 -u graphite.opendev.org 8125
              echo 'bridge.ansible.{{ zuul.job }}.rc:{{ _run.rc }}|g' | nc -w 1 -u graphite.opendev.org 8125
          args:
            executable: '/bin/bash'