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

- block:
  - name: Create random container name
    set_fact:
      cname: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"

  - name: Make sure container is not there
    docker_container:
      name: "{{ cname }}"
      state: absent
      force_kill: yes

  - name: Inspect a non-present container
    docker_container_info:
      name: "{{ cname }}"
    register: result

  - assert:
      that:
      - "not result.exists"
      - "'container' in result"
      - "result.container is none"

  - name: Make sure container exists
    docker_container:
      name: "{{ cname }}"
      image: "{{ docker_test_image_alpine }}"
      command: '/bin/sh -c "sleep 10m"'
      state: started
      force_kill: yes

  - name: Inspect a present container
    docker_container_info:
      name: "{{ cname }}"
    register: result
  - name: Dump docker_container_info result
    debug: var=result

  - name: "Comparison: use 'docker inspect'"
    command: docker inspect "{{ cname }}"
    register: docker_inspect
    ignore_errors: yes
  - block:
    - set_fact:
        docker_inspect_result: "{{ docker_inspect.stdout | from_json }}"
    - name: Dump docker inspect result
      debug: var=docker_inspect_result
    when: docker_inspect is not failed

  - assert:
      that:
      - result.exists
      - "'container' in result"
      - "result.container"

  - assert:
      that:
      - "result.container == docker_inspect_result[0]"
    when: docker_inspect is not failed
  - assert:
      that:
        - "'is too new. Maximum supported API version is' in docker_inspect.stderr"
    when: docker_inspect is failed

  always:
  - name: Cleanup
    docker_container:
      name: "{{ cname }}"
      state: absent
      force_kill: yes

  when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.20', '>=')

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