oVirt / ovirt-ansible-collection

Ansible collection with official oVirt modules and roles
72 stars 89 forks source link

"Follow" parameter in various oVirt modules returns html text instead of XML #714

Open IOMadness opened 1 year ago

IOMadness commented 1 year ago
SUMMARY

When running an Ansible playbook against an oVirt cluster, and I use, for example, the ovirt.ovirt.ovirt_vm_info module, w/ the follow parameter w/ one of the appropriate struct values (i.e. nic.Nics https://ovirt.github.io/ovirt-engine-api-model/master/#types/vm/links_summary), I receive the following result:

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ovirtsdk4.Error: The response content type 'text/html;charset=UTF-8' isn't the expected XML fatal: [localhost]: FAILED! => changed=false msg: The response content type 'text/html;charset=UTF-8' isn't the expected XML

COMPONENT NAME

This has occurred with the following modules that I've tested: ovirt.ovirt.ovirt_vm_info ovirt.ovirt.ovirt_nic_info ovirt.ovirt.ovirt_disk_info

STEPS TO REPRODUCE
Set up an oVirt cluster.

Set up a playbook in Ansible to get oVirt auth:
  - name: Obtain SSO token with using username/password credentials
    ovirt.ovirt.ovirt_auth:
      url: 'https://my-host.com/ovirt-engine/api'
      hostname: 'borg.arcc.uwyo.edu'
      username: "{{ ovirt_username }}"
      ca_file: "./conf/my-host.pem"
      password: "{{ ovirt_password }}"

Set up another play to pull and print VM info w/ ovirt_vm_info:
  - name: "Get a List of VMs on the Cluster"
    ovirt.ovirt.ovirt_vm_info:
      auth: "{{ ovirt_auth }}"
      pattern: name=my-vm
      next_run: true
      follow: ['nics.Nic', 'disk_attachments.DiskAttachment']
    register: vm_info

  - name: "Print VM Details"
    ansible.builtin.debug:
      msg: "{{ vm_info.ovirt_vms[0] }}"

 Create a ovirt_login.yml file w/ oVirt credentials

 Run playbooks from a master playbook:
- name: "Get Current VMs"
  hosts: localhost 
  tasks:
          - block:
                  - ansible.builtin.include_vars: ovirt_login.yml
                  - import_tasks: auth_gnt.yml
                  - import_tasks: get_vm_info.yml
                  #loop: "{{ exp_target }}"
            always:
                  - import_tasks: auth_rvk.yml

 Get error:
 An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ovirtsdk4.Error: The response content type 'text/html;charset=UTF-8' isn't the expected XML
fatal: [localhost]: FAILED! => changed=false 
  msg: The response content type 'text/html;charset=UTF-8' isn't the expected XML

  This ONLY happens when I put in the "follow" parameter. Ironically, the 'deprecated' "fetch_nested" parameter actually DOES work... so uh... that's nice.
EXPECTED RESULTS

The playbook should run the ovirt_vm_info module and pull all the nested attributes so I can see what disks and what nics are attached to what VM.

ACTUAL RESULTS
Again, only happens when including the "follow" parameter. Otherwise the module connects just fine to oVirt and pulls data just fine.

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ovirtsdk4.Error: The response content type 'text/html;charset=UTF-8' isn't the expected XML
fatal: [localhost]: FAILED! => changed=false 
  msg: The response content type 'text/html;charset=UTF-8' isn't the expected XML