- hosts: prod_bastion[0]
  tasks:
    - name: "Make sure a manual maintenance isn't going on"
      wait_for:
        path: /home/zuul/DISABLE-ANSIBLE
        state: absent
        sleep: 10
        timeout: 3600 # Wait for an hour before bailing

    - name: "Correct ownership of repos"
      command: "chown -R zuul:zuul /home/zuul/src"
      # E303: Skip linting since it triggers on the "chown" command,
      # but we prefer the shell above
      tags:
        - skip_ansible_lint
      # Ignore the error if the dir doesn't exist
      ignore_errors: true
      # Do this as root, because it needs to chown root-owned files
      become: true

    # This role executes code on the executor, so this needs to be in
    # a trusted playbook.
    - name: Synchronize src repos to workspace directory.
      include_role:
        name: prepare-workspace-git

    # The intent of the periodic jobs is to run with latest master. If
    # they get enqueued, then other patches land, they'll still run
    # with the value of the zuul ref from when they were
    # enqueued. That's not what we want for prod, as it can lead to
    # running or deploying old versions of config files.  Reset them
    # to master.
    - name: Should we run from master
      set_fact:
        infra_prod_run_from_master: "{{ zuul.pipeline | default('') in ['periodic', 'opendev-prod-hourly'] }}"

    - name: Reset checkouts to master for periodic jobs
      when: infra_prod_run_from_master | bool
      block:
        - name: Update system-config from master
          git:
            repo: 'https://opendev.org/opendev/system-config'
            dest: '/home/zuul/src/opendev.org/opendev/system-config'
            force: true
            version: 'master'

        - name: Update project-config from master
          when: '"opendev.org/openstack/project-config" in zuul.projects'
          git:
            repo: 'https://opendev.org/openstack/project-config'
            dest: '/home/zuul/src/opendev.org/openstack/project-config'
            force: true
            version: 'master'