From 4d72ec3299d0ff102b171aa87dc80f3b75593479 Mon Sep 17 00:00:00 2001 From: Shreyash Date: Fri, 12 Jun 2026 16:37:13 +0530 Subject: [PATCH] xenserver_guest_info: use fallback chain for VDI format detection (#12215) * xenserver_guest_info: use fallback chain for VDI format detection * changelog: add PR URL to changelog fragment * test: set mismatched vdi_type in vm-3 fixture to test fallback chain precedence Set vdi_type to "vhd" while image-format remains "qcow2" so the unit test verifies that image-format takes precedence in the fallback chain. Co-Authored-By: Claude Opus 4.6 --------- Co-authored-by: Claude Opus 4.6 --- .../fragments/12119-xenserver-vdi-type-fallback.yml | 2 ++ plugins/module_utils/_xenserver.py | 8 +++++++- plugins/modules/xenserver_guest.py | 8 ++++++-- plugins/modules/xenserver_guest_powerstate.py | 8 ++++++-- .../_xenserver/fixtures/ansible-test-vm-3-params.json | 2 +- 5 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 changelogs/fragments/12119-xenserver-vdi-type-fallback.yml diff --git a/changelogs/fragments/12119-xenserver-vdi-type-fallback.yml b/changelogs/fragments/12119-xenserver-vdi-type-fallback.yml new file mode 100644 index 0000000000..5fce89736d --- /dev/null +++ b/changelogs/fragments/12119-xenserver-vdi-type-fallback.yml @@ -0,0 +1,2 @@ +bugfixes: + - xenserver_guest_info - use fallback chain for determining VDI format from ``sm_config`` keys ``image-format``, ``vdi_type``, ``type``, defaulting to ``raw`` (https://github.com/ansible-collections/community.general/pull/12119, https://github.com/ansible-collections/community.general/pull/12215). diff --git a/plugins/module_utils/_xenserver.py b/plugins/module_utils/_xenserver.py index 31d76724ec..a2f69b91f4 100644 --- a/plugins/module_utils/_xenserver.py +++ b/plugins/module_utils/_xenserver.py @@ -456,7 +456,13 @@ def gather_vm_facts(module: AnsibleModule, vm_params): "os_device": vm_vbd_params["device"], "uuid": vm_vbd_params["VDI"]["uuid"], "vbd_userdevice": vm_vbd_params["userdevice"], - "vdi_type": vm_vbd_params["VDI"].get("sm_config", {}).get("vdi_type", ""), + "vdi_type": vm_vbd_params["VDI"]["sm_config"].get( + "image-format", + vm_vbd_params["VDI"]["sm_config"].get( + "vdi_type", + vm_vbd_params["VDI"]["sm_config"].get("type", "raw"), + ), + ), } vm_facts["disks"].append(vm_disk_params) diff --git a/plugins/modules/xenserver_guest.py b/plugins/modules/xenserver_guest.py index 39a3b0a917..55aa3f3116 100644 --- a/plugins/modules/xenserver_guest.py +++ b/plugins/modules/xenserver_guest.py @@ -406,7 +406,9 @@ instance: "size": 42949672960, "sr": "Local storage", "sr_uuid": "0af1245e-bdb0-ba33-1446-57a962ec4075", - "vbd_userdevice": "0" + "uuid": "3f98b388-b2c0-4355-9a01-15c0e61b5a76", + "vbd_userdevice": "0", + "vdi_type": "vhd" }, { "name": "testvm_11-1", @@ -415,7 +417,9 @@ instance: "size": 42949672960, "sr": "Local storage", "sr_uuid": "0af1245e-bdb0-ba33-1446-57a962ec4075", - "vbd_userdevice": "1" + "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "vbd_userdevice": "1", + "vdi_type": "vhd" } ], "domid": "56", diff --git a/plugins/modules/xenserver_guest_powerstate.py b/plugins/modules/xenserver_guest_powerstate.py index 8d87e3938b..375e48d2b3 100644 --- a/plugins/modules/xenserver_guest_powerstate.py +++ b/plugins/modules/xenserver_guest_powerstate.py @@ -103,7 +103,9 @@ instance: "size": 42949672960, "sr": "Local storage", "sr_uuid": "0af1245e-bdb0-ba33-1446-57a962ec4075", - "vbd_userdevice": "0" + "uuid": "3f98b388-b2c0-4355-9a01-15c0e61b5a76", + "vbd_userdevice": "0", + "vdi_type": "vhd" }, { "name": "windows-template-testing-1", @@ -112,7 +114,9 @@ instance: "size": 42949672960, "sr": "Local storage", "sr_uuid": "0af1245e-bdb0-ba33-1446-57a962ec4075", - "vbd_userdevice": "1" + "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "vbd_userdevice": "1", + "vdi_type": "vhd" } ], "domid": "56", diff --git a/tests/unit/plugins/module_utils/_xenserver/fixtures/ansible-test-vm-3-params.json b/tests/unit/plugins/module_utils/_xenserver/fixtures/ansible-test-vm-3-params.json index 425f2291af..79a92c27da 100644 --- a/tests/unit/plugins/module_utils/_xenserver/fixtures/ansible-test-vm-3-params.json +++ b/tests/unit/plugins/module_utils/_xenserver/fixtures/ansible-test-vm-3-params.json @@ -139,7 +139,7 @@ "sharable": false, "sm_config": { "image-format": "qcow2", - "vdi_type": "qcow2" + "vdi_type": "vhd" }, "snapshot_of": "OpaqueRef:NULL", "snapshot_time": "19700101T00:00:00Z",