---
####################################################################
# WARNING: These are designed specifically for Ansible tests       #
# and should not be used as examples of how to write Ansible roles #
####################################################################

- name: Create random names
  set_fact:
    cname: "{{ 'ansible-container-%0x' % ((2**32) | random) }}"
    nname: "{{ 'ansible-network-%0x' % ((2**32) | random) }}"
    vname: "{{ 'ansible-volume-%0x' % ((2**32) | random) }}"

- block:
  # Create objects to be pruned
  - docker_container:
      name: "{{ cname }}"
      image: "{{ docker_test_image_hello_world }}"
      state: present
    register: container
  - docker_network:
      name: "{{ nname }}"
      state: present
    register: network
  - docker_volume:
      name: "{{ vname }}"
      state: present
    register: volume

  # Prune objects
  - docker_prune:
      containers: yes
      images: yes
      networks: yes
      volumes: yes
      builder_cache: "{{ docker_py_version is version('3.3.0', '>=') }}"
    register: result

  # Analyze result
  - debug: var=result
  - assert:
      that:
      # containers
      - container.container.Id in result.containers
      - "'containers_space_reclaimed' in result"
      # images
      - "'images_space_reclaimed' in result"
      # networks
      - network.network.Name in result.networks
      # volumes
      - volume.volume.Name in result.volumes
      - "'volumes_space_reclaimed' in result"
      # builder_cache
      - "'builder_cache_space_reclaimed' in result or docker_py_version is version('3.3.0', '<')"
      - "'builder_cache_space_reclaimed' not in result or docker_py_version is version('3.3.0', '>=')"

  # Test with filters
  - docker_prune:
      images: yes
      images_filters:
        dangling: true
    register: result

  - debug: var=result

  when: docker_py_version is version('2.1.0', '>=') and docker_api_version is version('1.25', '>=')

- fail: msg="Too old docker / docker-py version to run docker_prune tests!"
  when: not(docker_py_version is version('2.1.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
