---
# tasks file for paas-ci
- name: "Check Orchestrator endpoint"
  uri:
    url: "{{ paas_ci_orchestrator_url }}"

- debug:
    var: paas_ci_workdir  

- block:
  - name: Get template
    get_url:
      url: "{{ paas_ci_test.template_url }}"
      dest: "{{ paas_ci_workdir + '/template.yaml' }}"  

  - name: Deployment command
    set_fact:
      depcreate_cmd: "orchent depcreate --ojson template.yaml -g admins/beta-testers {{ paas_ci_test.inputs }}"

  - name:  Create the deployment
    command: "{{depcreate_cmd}}"
    args:
      chdir: "{{ paas_ci_workdir }}"
    register: depcreate_output
    failed_when: "'CREATE' not in depcreate_output.stdout"

  - set_fact:
      deployment: "{{ depcreate_output.stdout|from_json }}"

  - debug:
      var: deployment

  - name: Sleep for 60 seconds and timeout
    wait_for:
      delay: 60
      timeout: 0

  - name:  Check the deployment status (every 5 mins)
    command: orchent depshow --ojson "{{ deployment.uuid }}"
    register: depshow_output
    until: "'PROGRESS' not in depshow_output.stdout"
    retries: 10
    delay: 300
    failed_when: "'error' in depshow_output.stdout"

  - set_fact:
      deployment: "{{ depshow_output.stdout|from_json }}"

  - name: Save result to file
    copy:
      dest: "{{ paas_ci_workdir }}/dep.json"
      content: "{{ depshow_output.stdout }}"

  - name: Get deployment status and outputs (if successful)
    assert:
      that:
        - deployment.status == 'CREATE_COMPLETE'
      fail_msg: "TEST FAILED -  deployment uuid: {{ deployment.uuid }}, status: {{ deployment.status }}"
      success_msg: "TEST PASSED - deployment uuid: {{ deployment.uuid }}, status: {{ deployment.status }}, outputs: {{ deployment.outputs }}"

  when: paas_ci_test_step == 'create_deployment'

- block:
  - set_fact:
      endpoints_to_scan: "{{ paas_ci_test.endpoints_to_scan }}" 
      
  - debug: 
      var: endpoints_to_scan
      
  - name:  Run scan
    command: python3 /home/gmp/script.py "{{ endpoints_to_scan }}" "{{ paas_ci_workdir + '/dep.json'}}" "{{ paas_ci_workdir }}" 
    register: scan_output
    
  - name: display all reports
    ansible.builtin.debug: var=item
    with_file:
    - "{{ paas_ci_workdir + '/*reports.txt'}}"

  - name: display all severities
    ansible.builtin.debug: var=item
    with_file:
    - "{{ paas_ci_workdir + '/*severity.txt'}}"
    
  - name: Get scan outputs (if successful)
    assert:
      that:
        - deployment.status == 'CREATE_COMPLETE'
      fail_msg: "TEST FAILED -  deployment uuid: {{ deployment.uuid }}, status: {{ deployment.status }}"
      success_msg: "TEST PASSED - deployment uuid: {{ deployment.uuid }}, status: {{ deployment.status }}, outputs: {{ deployment.outputs }}"
  
  when: paas_ci_test_step == 'scan'

- block:
  - set_fact:
      deployment: "{{ lookup('file', paas_ci_workdir + '/dep.json') }}"
  - name:  Delete deployment
    command: orchent depdel "{{ deployment.uuid }}"
    register: depdel_output
    failed_when: "'error' in depdel_output.stdout"
  when: paas_ci_test_step == 'clean'
