
# This cannot run against localhost, it damages /etc

- name: integration/glibc_caches/resolv_conf.yml
  gather_facts: true
  become: true
  hosts: test-targets
  vars:
    ansible_become_pass: has_sudo_pubkey_password
  tasks:
    - mitogen_test_gethostbyname:
        name: www.google.com
      register: out
      when:
        - ansible_facts.virtualization_type == "docker"
        - ansible_facts.python.version_info[:2] >= [2, 5]

    - name: Backup resolv.conf
      shell: cp /etc/resolv.conf /tmp/resolv.conf
      when:
        - ansible_facts.virtualization_type == "docker"
        - ansible_facts.python.version_info[:2] >= [2, 5]

    - name: Truncate resolv.conf
      shell: echo > /etc/resolv.conf
      when:
        - ansible_facts.virtualization_type == "docker"
        - ansible_facts.python.version_info[:2] >= [2, 5]

    - mitogen_test_gethostbyname:
        name: www.google.com
      register: out
      ignore_errors: true
      when:
        - ansible_facts.virtualization_type == "docker"
        - ansible_facts.python.version_info[:2] >= [2, 5]

    - name: Restore resolv.conf
      shell: cat /tmp/resolv.conf > /etc/resolv.conf
      when:
        - ansible_facts.virtualization_type == "docker"
        - ansible_facts.python.version_info[:2] >= [2, 5]

    - assert:
        that:
        - out.failed
        - '"Name or service not known" in out.msg or
           "Temporary failure in name resolution" in out.msg'
        fail_msg: |
          out={{ out }}
      when:
        - ansible_facts.virtualization_type == "docker"
        - ansible_facts.python.version_info[:2] >= [2, 5]
  tags:
    - resolv_conf
