- name: Ensure hostname doesn't confuse NetworkManager
  when: ansible_os_family == 'RedHat' and ansible_distribution_major_version is version('8')
  block:
    - name: slurp /var/log/messages
      slurp:
        path: /var/log/messages
      become: yes
      register: messages_before

    - assert:
        that:
          - >
            'current hostname was changed outside NetworkManager' not in messages_before.content|b64decode

- name: Run hostname module for real now
  become: 'yes'
  hostname:
    name: crocodile.ansible.test.doesthiswork.net.example.com
  register: hn2

- name: Get hostname
  command: hostname
  register: current_after_hn2

- name: Ensure hostname doesn't confuse NetworkManager
  when: ansible_os_family == 'RedHat' and ansible_distribution_major_version is version('8')
  block:
    - name: slurp /var/log/messages
      slurp:
        path: /var/log/messages
      become: yes
      register: messages_after

    - assert:
        that:
          - >
            'current hostname was changed outside NetworkManager' not in messages_after.content|b64decode

- name: Run hostname again to ensure it does not change
  become: 'yes'
  hostname:
    name: crocodile.ansible.test.doesthiswork.net.example.com
  register: hn3

- name: Get hostname
  command: hostname
  register: current_after_hn3

- assert:
    that:
      - hn2 is changed
      - hn3 is not changed
      - current_after_hn2.stdout == 'crocodile.ansible.test.doesthiswork.net.example.com'
      - current_after_hn2.stdout == current_after_hn2.stdout
