1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Proxmox inventory plugin - Fix string to dict conversion (#4349) (#4366)

* Proxmox inventory plugin - Fix string to dict conversion (#4348)

  * Re-use the (defined but unused) `plaintext_configs` variable to list
    configuration entries that should be ignored by the string to
    dictionary conversion code. At this point, it only contains the
    `description` string.
  * Convert to a dictionary if the all substrings obtained by splitting
    off the initial value with commas contain a `=` character
  * Limit substring splitting to a single split, so that a substring
    containing `a=b=c` will generate an `a` entry with value `b=c`.

* Added changelog fragment for PR #4349

* Fix changelog fragment for #4349

(cherry picked from commit 3eec63421a)

Co-authored-by: Emmanuel Benoît <tseeker@nocternity.net>
This commit is contained in:
patchback[bot] 2022-03-15 12:34:44 +01:00 committed by GitHub
parent fb61da5246
commit 68364df409
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 3 deletions

View file

@ -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).

View file

@ -310,7 +310,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
properties[self._fact('vmtype')] = vmtype
plaintext_configs = [
'tags',
'description',
]
for config in ret:
@ -334,11 +334,11 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
agent_iface_key = self.to_safe('%s%s' % (key, "_interfaces"))
properties[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