---
- hosts: localhost
  connection: local
  gather_facts: False

  vars_files:
    - test_vars.yml

  tasks:
    - block:

          ## Generating the testname for deployment
        - include_tasks: /e2e-tests/hack/create_testname.yml

          ## RECORD START-OF-TEST IN e2e RESULT CR
        - include_tasks: /e2e-tests/hack/update_e2e_result_resource.yml
          vars:
            status: 'SOT'

        - block:
            - block:
                  ## Prerequisite tasks such as, namespace creation and replacing placeholder
                  ## with test specific values, before deploying application 
                - include_tasks: /e2e-tests/utils/k8s/pre_create_app_deploy.yml
                  vars:
                    application: "{{ application_statefulset }}"

                  ## Deploying the application
                - include_tasks: /e2e-tests/utils/k8s/deploy_single_app.yml
                  vars:
                    application: "{{ application_statefulset }}"

              when: "'deprovision' not in action"

            - name: Deprovisioning the Application
              include_tasks: /e2e-tests/utils/k8s/deprovision_statefulset.yml
              vars:
                app_deployer: "{{ application_statefulset }}"
              when: "'deprovision' is in action"

          when: lookup('env','DEPLOY_TYPE') == 'statefulset'

        - block:
            - block:
                  ## Prerequisite tasks such as, namespace creation and replacing placeholder
                  ## with test specific values, before deploying application 
                - include_tasks: /e2e-tests/utils/k8s/pre_create_app_deploy.yml
                  vars:
                    application: "{{ application_deployment }}"

                  ## Deploying the application
                - include_tasks: /e2e-tests/utils/k8s/deploy_single_app.yml
                  vars:
                    application: "{{ application_deployment }}"

              when: "'deprovision' not in action"

            - name: Deprovisioning the Application
              include_tasks: /e2e-tests/utils/k8s/deprovision_deployment.yml
              vars:
                app_deployer: "{{ application_deployment }}"
              when: "'deprovision' is in action"

          when: lookup('env','DEPLOY_TYPE') == 'deployment'

        - set_fact:
            flag: "Pass"

      rescue:
        - name: Setting fail flag
          set_fact:
            flag: "Fail"

      always:
        ## RECORD END-OF-TEST IN e2e RESULT CR
        - include_tasks: /e2e-tests/hack/update_e2e_result_resource.yml
          vars:
            status: 'EOT'