---
- hosts: junos
  gather_facts: no
  connection: local

  vars:
    limit_to: "*"
    debug: false


# Run the tests within blocks allows the next module to be tested if the previous one fails.
# This is done to allow https://github.com/ansible/dci-partner-ansible/ to run the full set of tests.


  tasks:
    - set_fact:
        test_failed: false
        failed_modules: []
    - block:
      - include_role:
          name: junos_command
        when: "limit_to in ['*', 'junos_command']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_command' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_config
        when: "limit_to in ['*', 'junos_config']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_config' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_facts
        when: "limit_to in ['*', 'junos_facts']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_facts' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_netconf
        when: "limit_to in ['*', 'junos_netconf']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_netconf' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_rpc
        when: "limit_to in ['*', 'junos_rpc']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_rpc' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_vlan
        when: "limit_to in ['*', 'junos_vlan']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_vlan' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_interface
        when: "limit_to in ['*', 'junos_interface']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_interface' ]"
            test_failed: true
    - block:
      - include_role:
          name: junos_banner
        when: "limit_to in ['*', 'junos_banner']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_banner' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_system
        when: "limit_to in ['*', 'junos_system']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_system' ]"
            test_failed: true
    - block:
      - include_role:
          name: junos_logging
        when: "limit_to in ['*', 'junos_logging']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_logging' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_user
        when: "limit_to in ['*', 'junos_user']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_user' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_static_route
        when: "limit_to in ['*', 'junos_static_route']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_static_route' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_linkagg
        when: "limit_to in ['*', 'junos_linkagg']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_linkagg' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_l3_interface
        when: "limit_to in ['*', 'junos_l3_interface']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_l3_interface' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_lldp
        when: "limit_to in ['*', 'junos_lldp']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_lldp' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_lldp_interface
        when: "limit_to in ['*', 'junos_lldp_interface']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_lldp_interface' ]"
            test_failed: true

    - block:
      - include_role:
          name: junos_vrf
        when: "limit_to in ['*', 'junos_vrf']"
      rescue:
        - set_fact:
            failed_modules: "{{ failed_modules }} + [ 'junos_vrf' ]"
            test_failed: true

###########
    - debug: var=failed_modules
      when: test_failed

    - name: Has any previous test failed?
      fail:
        msg: "One or more tests failed, check log for details"
      when: test_failed