- job-template:
    name: 'gate-{name}-ansible-lint'
    node: ubuntu-trusty

    builders:
      - zuul-git-prep
      - install-distro-packages
      - ansible-prep
      - ansible-lint-prep
      - revoke-sudo
      - ansible-syntax
      - ansible-lint

    publishers:
      - console-log

- job-group:
    # TODO(pabelanger): Remove in favor of ansible-role-jobs
    name: 'ansible-lint-jobs'
    jobs:
      - 'gate-{name}-ansible-lint'

- job-template:
    name: '{pipeline}-{name}-dsvm-ansible-func-{ostype}{suffix}'
    node: '{ostype}'

    wrappers:
      - build-timeout:
          timeout: 100
      - timestamps

    builders:
      - print-template-name:
          template-name: "{template-name}"
      - zuul-git-prep
      - devstack-checkout
      - shell: |
          # Allow Jenkins user to ssh into localhost
          ssh-keygen -f ~/.ssh/id_rsa -N ""
          cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
          ssh-keyscan localhost >> ~/.ssh/known_hosts
          ssh-keyscan 127.0.0.1 >> ~/.ssh/known_hosts
      - shell: |
          #!/bin/bash -xe
          export PYTHONUNBUFFERED=true
          export DEVSTACK_GATE_NEUTRON=1
          export PROJECTS="$ZUUL_PROJECT $PROJECTS"

          export BRANCH_OVERRIDE={branch-override}
          if [ "$BRANCH_OVERRIDE" != "default" ] ; then
              export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE
          fi

          function post_test_hook {{
              $BASE/new/{name}/tests/hooks/post_test_hook.sh
          }}
          export -f post_test_hook

          cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh
          ./safe-devstack-vm-gate-wrap.sh

    publishers:
      - devstack-logs
      - console-log

- job-template:
    name: '{pipeline}-{name}-ansible-{scenario}-{ostype}{suffix}'
    node: '{ostype}'

    wrappers:
      - build-timeout:
          timeout: 60
      - timestamps

    builders:
      - print-template-name:
          template-name: "{template-name}"
      - zuul-git-prep-upper-constraints
      - shell: |
          if [[ "{name}" == *"openstack-ansible"* ]]; then
            # EPEL must be enabled because some deps from bindep.txt are
            # otherwise not available
            if [[ -e /usr/bin/yum ]]; then
              sudo yum-config-manager --enable epel
            fi
          fi
      - install-distro-packages
      - shell: |
          if [[ "{name}" == *"openstack-ansible"* ]]; then
            if [[ -e /usr/bin/yum ]]; then
              sudo yum-config-manager --disable epel
            fi
          fi
      - shell: |
          # Allow Jenkins user to ssh into localhost
          ssh-keygen -f ~/.ssh/id_rsa -N ""
          cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
          ssh-keyscan localhost >> ~/.ssh/known_hosts
          ssh-keyscan 127.0.0.1 >> ~/.ssh/known_hosts
      - shell: |
          # Many of the Ansible roles have a tox environment
          # called 'functional', so we implement a mapping
          # of the scenario 'func' to 'functional' so reduce
          # the need for code churn in those repositories
          # immediately.
          if [ "{scenario}" == "func" ]; then
            /usr/local/jenkins/slave_scripts/run-tox.sh functional
          else
            /usr/local/jenkins/slave_scripts/run-tox.sh {scenario}
          fi

    publishers:
      # Although these aren't devstack jobs, we want to capture logs
      # similar in nature to devstack (Ansible logs, system logs, etc.)
      - devstack-logs
      - console-log

- job-group:
    name: 'ansible-role-jobs'
    node:
      - ubuntu-trusty
      - ubuntu-xenial
    jobs:
      - 'gate-{name}-docs-{node}'
      - 'gate-{name}-linters-{node}'
      - '{pipeline}-{name}-ansible-{scenario}-{ostype}{suffix}':
          ostype:
            - centos-7
            - debian-jessie
            - fedora-25
            - ubuntu-trusty
            - ubuntu-xenial
          pipeline: gate
          scenario: func
          suffix:
            - '-nv'
            - ''
      - '{name}-announce-release'

- job-group:
    name: 'ansible-role-dsvm-jobs'
    node:
      - ubuntu-trusty
      - ubuntu-xenial
    jobs:
      - 'gate-{name}-docs-{node}'
      - 'gate-{name}-linters-{node}'
      - '{pipeline}-{name}-dsvm-ansible-func-{ostype}{suffix}':
          branch-override: default
          ostype:
            - centos-7
            - ubuntu-trusty
            - ubuntu-xenial
          pipeline: gate
          suffix:
            - '-nv'
            - ''
      - '{name}-announce-release'

- job:
    name: propose-openstack-ansible-update-osa-test-scripts
    node: proposal

    builders:
      - proposal-slave-cleanup
      - revoke-sudo
      - link-logs
      - net-info
      - zuul-git-prep
      - shell: /usr/local/jenkins/slave_scripts/propose_update.sh openstack-ansible-tests

    publishers:
      - console-log