- hosts: all
  name: Autoconverted job legacy-js-openstack-lib-dsvm-nodejs6-npm-run-functional-test
    from old job js-openstack-lib-dsvm-nodejs6-npm-run-functional-test
  roles:
    - bindep

  tasks:

    - name: Ensure legacy workspace directory
      file:
        path: '{{ ansible_user_dir }}/workspace'
        state: directory

    - shell:
        cmd: |
          set -e
          set -x
          CLONEMAP=`mktemp`
          function cleanup {
              # In cases where zuul-cloner is aborted during a git
              # clone operation, git will remove the git work tree in
              # its cleanup. The work tree in these jobs is the
              # workspace directory, which means that subsequent
              # jenkins post-build actions can not run because the
              # workspace has been removed.
              # To reduce the likelihood of this having an impact,
              # recreate the workspace directory if needed
              mkdir -p $WORKSPACE
              rm -f $CLONEMAP
          }
          trap cleanup EXIT
          cat > $CLONEMAP << EOF
          clonemap:
            - name: $ZUUL_PROJECT
              dest: .
          EOF
          /usr/zuul-env/bin/zuul-cloner -m $CLONEMAP --cache-dir /opt/git \
              https://opendev.org $ZUUL_PROJECT
        executable: /bin/bash
        chdir: '{{ ansible_user_dir }}/workspace'
      environment: '{{ zuul | zuul_legacy_vars }}'

    - shell:
        cmd: |
          set -u
          set -e
          set -x
          # Prerequisites
          sudo apt-get update
          sudo apt-get install -y apt-transport-https lsb-release curl

          DISTRO=$(lsb_release -c -s)

          # Install via nodesource
          curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -

          echo "deb https://deb.nodesource.com/node_6.x $DISTRO main" | sudo tee /etc/apt/sources.list.d/nodesource.list
          echo "deb-src https://deb.nodesource.com/node_6.x $DISTRO main" | sudo tee -a /etc/apt/sources.list.d/nodesource.list

          sudo apt-get update
          sudo apt-get install -y nodejs

          # Output to the log for debugging sake.
          node --version
          npm --version
        executable: /bin/bash
        chdir: '{{ ansible_user_dir }}/workspace'
      environment: '{{ zuul | zuul_legacy_vars }}'

    - shell:
        cmd: |
          sudo apt-get update
          sudo apt-get install -y xvfb
        chdir: '{{ ansible_user_dir }}/workspace'
      environment: '{{ zuul | zuul_legacy_vars }}'

    - shell:
        cmd: |
          sudo apt-get update
          sudo apt-get install -y chromium-browser
        chdir: '{{ ansible_user_dir }}/workspace'
      environment: '{{ zuul | zuul_legacy_vars }}'

    - shell:
        cmd: |
          sudo apt-get update
          sudo apt-get install -y firefox dbus
        chdir: '{{ ansible_user_dir }}/workspace'
      environment: '{{ zuul | zuul_legacy_vars }}'

    - shell:
        cmd: |
          set -e
          set -x
          cat > clonemap.yaml << EOF
          clonemap:
            - name: openstack/devstack-gate
              dest: devstack-gate
          EOF
          /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \
              https://opendev.org \
              openstack/devstack-gate
        executable: /bin/bash
        chdir: '{{ ansible_user_dir }}/workspace'
      environment: '{{ zuul | zuul_legacy_vars }}'

    - shell:
        cmd: |
          DIMENSIONS='1280x1024x24'
          /usr/bin/Xvfb :99 -screen 0 ${DIMENSIONS} -ac +extension GLX +render -noreset 2>&1 > /dev/null &
        chdir: '{{ ansible_user_dir }}/workspace'
      environment: '{{ zuul | zuul_legacy_vars }}'

    - shell:
        cmd: |
          set -u
          set -e
          set -x
          export PYTHONUNBUFFERED=true
          export DEVSTACK_GATE_TEMPEST=0
          export DEVSTACK_GATE_EXERCISES=0
          export DEVSTACK_GATE_INSTALL_TESTONLY=1
          export DEVSTACK_GATE_NEUTRON=1

          # Xvfb Buffer...
          export DISPLAY=:99
          npm install
          npm_lifecycle_phases="publish install version test stop start restart pack"

          # Run any custom devstack configuration required by the project
          function pre_test_hook {
              # Try running as a standard lifecycle script, otherwise try custom.
              if [[ $npm_lifecycle_phases =~ (^| )configure-devstack($| ) ]]; then
                  npm configure-devstack --silent
              else
                  npm run configure-devstack --silent
              fi
          }
          export -f pre_test_hook

          function post_test_hook {
              # If you need access to devstack clouds.yaml file, it is available
              # at its canonical location at /etc/openstack/clouds.yaml

              # Try running as a standard lifecycle script, otherwise try custom.
              if [[ $npm_lifecycle_phases =~ (^| )functional-test($| ) ]]; then
                  npm functional-test --silent
              else
                  npm run functional-test --silent
              fi
          }
          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
        executable: /bin/bash
        chdir: '{{ ansible_user_dir }}/workspace'
      environment: '{{ zuul | zuul_legacy_vars }}'

    - shell:
        cmd: |
          OUT=`git ls-files --other --exclude-standard --directory`
          if [ -z "$OUT" ]; then
              echo "No extra files created during test."
              exit 0
          else
              echo "The following un-ignored files were created during the test:"
              echo "$OUT"
              exit 0  # TODO: change to 1 to fail tests.
          fi
        executable: /bin/bash
        chdir: '{{ ansible_user_dir }}/workspace'
      environment: '{{ zuul | zuul_legacy_vars }}'