diff --git a/changelogs/fragments/4349-proxmox-inventory-dict-facts.yml b/changelogs/fragments/4349-proxmox-inventory-dict-facts.yml new file mode 100644 index 0000000000..fcf557c3ed --- /dev/null +++ b/changelogs/fragments/4349-proxmox-inventory-dict-facts.yml @@ -0,0 +1,8 @@ +--- +bugfixes: + - proxmox inventory plugin - fixed the ``description`` field being ignored if + it contained a comma + (https://github.com/ansible-collections/community.general/issues/4348). + - proxmox inventory plugin - always convert strings that follow the + ``key=value[,key=value[...]]`` form into dictionaries + (https://github.com/ansible-collections/community.general/pull/4349). diff --git a/plugins/inventory/proxmox.py b/plugins/inventory/proxmox.py index f18a058382..a49534874c 100644 --- a/plugins/inventory/proxmox.py +++ b/plugins/inventory/proxmox.py @@ -307,7 +307,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable): self.inventory.set_variable(name, vmtype_key, vmtype) plaintext_configs = [ - 'tags', + 'description', ] for config in ret: @@ -333,11 +333,11 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable): if agent_iface_value: self.inventory.set_variable(name, agent_iface_key, agent_iface_value) - if not (isinstance(value, int) or ',' not in value): + if config not in plaintext_configs and not isinstance(value, int) and all("=" in v for v in value.split(",")): # split off strings with commas to a dict # skip over any keys that cannot be processed try: - value = dict(key.split("=") for key in value.split(",")) + value = dict(key.split("=", 1) for key in value.split(",")) except Exception: continue