- job-template:
    name: 'gate-rally-install-{node}'
    node: '{node}'

    builders:
      - link-logs
      - gerrit-git-prep
      - shell: "tests/ci/test_install.sh"

    publishers:
      - console-log

- publisher:
    name: rally-verify
    publishers:
      - scp:
          site: 'static.openstack.org'
          files:
            - target: 'logs/$LOG_PATH'
              source: 'rally-verify/**'
              keep-hierarchy: true
              copy-after-failure: true
            - target: 'logs/$LOG_PATH'
              source: 'rally-verify/extra/index.html'
              keep-heirarchy: false
              copy-after-failure: true


- publisher:
    name: rally-plot
    publishers:
      - scp:
          site: 'static.openstack.org'
          files:
            - target: 'logs/$LOG_PATH'
              source: 'rally-plot/**'
              keep-hierarchy: true
              copy-after-failure: true
            - target: 'logs/$LOG_PATH'
              source: 'rally-plot/extra/index.html'
              keep-heirarchy: false
              copy-after-failure: true

- builder:
    name: devstack-rally-gate
    builders:
      - link-logs
      - devstack-checkout
      - shell: |
          #!/bin/bash -xe
          export PROJECTS="openstack/rally $PROJECTS"
          export PROJECTS="openstack/ceilometer $PROJECTS"
          export CEILOMETER_NOTIFICATION_TOPICS=notifications,profiler
          export DEVSTACK_GATE_NEUTRON={neutron}
          export DEVSTACK_GATE_ZAQAR={zaqar}
          export DEVSTACK_GATE_TEMPEST_LARGE_OPS={large_ops}
          export DEVSTACK_GATE_EXERCISES=0
          export DEVSTACK_GATE_TIMEOUT=120
          export RALLY_SCENARIO={scenario}

          ENABLED_SERVICES=rally,ceilometer-acompute,ceilometer-acentral,ceilometer-api
          ENABLED_SERVICES+=,ceilometer-anotification,ceilometer-collector,
          ENABLED_SERVICES+=,ceilometer-alarm-evaluator,ceilometer-alarm-notifier,

          export ENABLED_SERVICES

          function pre_test_hook {{
              # Install rally-devstack integration
              cp -r $BASE/new/rally/contrib/devstack/* $BASE/new/devstack/
          }}
          export -f pre_test_hook

          function post_test_hook {{
              $BASE/new/rally/tests/ci/rally-gate.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


- builder:
    name: devstack-designate-rally-gate
    builders:
      - link-logs
      - devstack-checkout
      - shell: |
          #!/bin/bash -xe
          export PROJECTS="openstack/rally $PROJECTS"
          export PROJECTS="openstack/ceilometer $PROJECTS"
          export PROJECTS="openstack/designate $PROJECTS"
          export PROJECTS="openstack/python-designateclient $PROJECTS"
          export CEILOMETER_NOTIFICATION_TOPICS=notifications,profiler
          export DEVSTACK_GATE_NEUTRON={neutron}
          export DEVSTACK_GATE_TEMPEST_LARGE_OPS={large_ops}
          export DEVSTACK_GATE_EXERCISES=0
          export DEVSTACK_GATE_TIMEOUT=120
          export RALLY_SCENARIO={scenario}

          ENABLED_SERVICES=rally,ceilometer-acompute,ceilometer-acentral,ceilometer-api
          ENABLED_SERVICES+=,ceilometer-anotification,ceilometer-collector,
          ENABLED_SERVICES+=,ceilometer-alarm-evaluator,ceilometer-alarm-notifier,
          ENABLED_SERVICES+=,designate,designate-api,designate-central,designate-sink,designate-mdns,

          export ENABLED_SERVICES

          function pre_test_hook {{
              # Install rally-devstack integration
              cp -r $BASE/new/rally/contrib/devstack/* $BASE/new/devstack/
              # Install designate-devstack integration
              cd /opt/stack/new/designate/contrib/devstack
              ./pre_test_hook.sh
          }}
          export -f pre_test_hook

          function post_test_hook {{
              $BASE/new/rally/tests/ci/rally-gate.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


- builder:
    name: devstack-murano-rally-gate
    builders:
      - link-logs
      - devstack-checkout
      - shell: |
          #!/bin/bash -xe
          export PROJECTS="openstack/rally $PROJECTS"
          export PROJECTS="openstack/murano $PROJECTS"
          export PROJECTS="openstack/murano-dashboard $PROJECTS"
          export PROJECTS="openstack/python-muranoclient $PROJECTS"

          export DEVSTACK_GATE_NEUTRON={neutron}
          export DEVSTACK_GATE_TEMPEST_LARGE_OPS={large_ops}
          export DEVSTACK_GATE_EXERCISES=0
          export DEVSTACK_GATE_TIMEOUT=120
          export RALLY_SCENARIO={scenario}

          export ENABLED_SERVICES=murano,murano-api,murano-engine,rally

          function pre_test_hook {{
              # Install rally-devstack integration
              cp -r $BASE/new/rally/contrib/devstack/* $BASE/new/devstack/
              # Install murano-devstack integration
              cd /opt/stack/new/murano/functionaltests
              ./pre_test_hook.sh
          }}
          export -f pre_test_hook

          function post_test_hook {{
              $BASE/new/rally/tests/ci/rally-gate.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


- builder:
    name: devstack-mistral-rally-gate
    builders:
      - link-logs
      - devstack-checkout
      - shell: |
          #!/bin/bash -xe
          export PROJECTS="openstack/rally $PROJECTS"
          export PROJECTS="stackforge/mistral $PROJECTS"
          export PROJECTS="stackforge/python-mistralclient $PROJECTS"

          export DEVSTACK_GATE_NEUTRON={neutron}
          export DEVSTACK_GATE_TEMPEST_LARGE_OPS={large_ops}
          export DEVSTACK_GATE_EXERCISES=0
          export DEVSTACK_GATE_TIMEOUT=120
          export RALLY_SCENARIO={scenario}

          export ENABLED_SERVICES=mistral,rally

          function pre_test_hook {{
              # Install rally-devstack integration
              cp -r $BASE/new/rally/contrib/devstack/* $BASE/new/devstack/

              # Install mistral-devstack integration
              cd /opt/stack/new/mistral/functionaltests
              ./pre_test_hook.sh
          }}
          export -f pre_test_hook

          function post_test_hook {{
              $BASE/new/rally/tests/ci/rally-gate.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


- job-template:
    name: 'gate-rally-dsvm-murano-{name}'
    node: 'devstack-precise || devstack-trusty'

    wrappers:
      - build-timeout:
          timeout: 125
      - timestamps

    builders:
        - devstack-murano-rally-gate:
            scenario: '{name}-murano'
            neutron: '1'
            large_ops: '0'

    publishers:
      - devstack-logs
      - console-log
      - rally-plot


- job-template:
    name: 'gate-rally-dsvm-mistral-{name}'
    node: 'devstack-precise || devstack-trusty'

    wrappers:
      - build-timeout:
          timeout: 125
      - timestamps

    builders:
        - devstack-mistral-rally-gate:
            scenario: '{name}-mistral'
            neutron: '0'
            large_ops: '0'

    publishers:
      - devstack-logs
      - console-log
      - rally-plot


- job-template:
    name: 'gate-rally-dsvm-designate-{name}'
    node: 'devstack-precise || devstack-trusty'

    wrappers:
      - build-timeout:
          timeout: 125
      - timestamps

    builders:
        - devstack-designate-rally-gate:
            scenario: '{name}-designate'
            neutron: '0'
            large_ops: '0'

    publishers:
      - devstack-logs
      - console-log
      - rally-plot


- job-template:
    name: 'gate-rally-dsvm-{name}'
    node: 'devstack-precise || devstack-trusty'

    wrappers:
      - build-timeout:
          timeout: 125
      - timestamps

    builders:
      - devstack-rally-gate:
          scenario: '{name}'
          neutron: '0'
          zaqar: '0'
          large_ops: '0'

    publishers:
      - devstack-logs
      - console-log
      - rally-plot


- job-template:
    name: 'gate-rally-dsvm-neutron-{name}'
    node: 'devstack-precise || devstack-trusty'

    wrappers:
      - build-timeout:
          timeout: 125
      - timestamps

    builders:
      - devstack-rally-gate:
          scenario: '{name}-neutron'
          neutron: '1'
          zaqar: '0'
          large_ops: '0'

    publishers:
      - devstack-logs
      - console-log
      - rally-plot


- job-template:
    name: 'gate-rally-dsvm-fakevirt-{name}'
    node: 'devstack-precise || devstack-trusty'

    wrappers:
      - build-timeout:
          timeout: 125
      - timestamps

    builders:
      - devstack-rally-gate:
          scenario: '{name}-fakevirt'
          neutron: '0'
          zaqar: '0'
          large_ops: '10'

    publishers:
      - devstack-logs
      - console-log
      - rally-plot


- job-template:
    name: 'gate-rally-dsvm-zaqar-{name}'
    node: 'devstack-precise || devstack-trusty'

    wrappers:
      - build-timeout:
          timeout: 125
      - timestamps

    builders:
      - devstack-rally-gate:
          scenario: '{name}-zaqar'
          neutron: '0'
          zaqar: '1'
          large_ops: '0'

    publishers:
      - devstack-logs
      - console-log
      - rally-plot


- job:
    name: 'gate-rally-dsvm-cli'
    node: 'devstack-precise || devstack-trusty'

    wrappers:
      - build-timeout:
          timeout: 60

    builders:
      - link-logs
      - devstack-checkout
      - shell: |
          #/bin/bash -xe
          export PROJECTS="openstack/rally $PROJECTS"
          export ENABLED_SERVICES=rally

          function pre_test_hook {
              # Install rally-devstack integration
              cp -r $BASE/new/rally/contrib/devstack/* $BASE/new/devstack/
          }
          function post_test_hook {
              cd $BASE/new/rally
              sudo -H -u stack tox -ecli -v
              EXIT_CODE=$?
              .tox/cli/bin/python /usr/local/jenkins/slave_scripts/subunit2html.py .testrepository/subunit.log $WORKSPACE/results.html
              gzip -9 $WORKSPACE/results.html
              cp -r $BASE/new/rally/rally-cli-output-files $WORKSPACE/
              return $EXIT_CODE
          }
          export -f pre_test_hook
          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
      - scp:
          site: 'static.openstack.org'
          files:
            - target: 'logs/$LOG_PATH'
              source: 'results.html.gz'
              copy-after-failure: true
            - target: 'logs/$LOG_PATH'
              source: 'rally-cli-output-files/**'
              keep-hierarchy: true
              copy-after-failure: true


- job:
    name: 'gate-rally-dsvm-verify'
    node: 'devstack-precise || devstack-trusty'

    wrappers:
      - build-timeout:
          timeout: 120

    builders:
      - link-logs
      - devstack-checkout
      - shell: |
          #/bin/bash -xe
          export PROJECTS="openstack/rally $PROJECTS"
          export DEVSTACK_GATE_EXERCISES=0
          export DEVSTACK_GATE_TIMEOUT=120
          export ENABLED_SERVICES=rally

          function pre_test_hook {
              # Install rally-devstack integration
              cp -r $BASE/new/rally/contrib/devstack/* $BASE/new/devstack/
          }
          export -f pre_test_hook

          function post_test_hook {
              $BASE/new/rally/tests/ci/rally-verify.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
      - rally-verify


- job-group:
    name: rally-jobs
    jobs:
      - 'gate-rally-dsvm-{name}'
      - 'gate-rally-dsvm-designate-{name}'
      - 'gate-rally-dsvm-murano-{name}'
      - 'gate-rally-dsvm-mistral-{name}'
      - 'gate-rally-dsvm-neutron-{name}'
      - 'gate-rally-dsvm-fakevirt-{name}'
      - 'gate-rally-dsvm-zaqar-{name}'