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)
* 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
This commit is contained in:
parent
761171b532
commit
3eec63421a
2 changed files with 11 additions and 3 deletions
|
@ -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).
|
|
@ -310,7 +310,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
||||||
properties[self._fact('vmtype')] = vmtype
|
properties[self._fact('vmtype')] = vmtype
|
||||||
|
|
||||||
plaintext_configs = [
|
plaintext_configs = [
|
||||||
'tags',
|
'description',
|
||||||
]
|
]
|
||||||
|
|
||||||
for config in ret:
|
for config in ret:
|
||||||
|
@ -334,11 +334,11 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
||||||
agent_iface_key = self.to_safe('%s%s' % (key, "_interfaces"))
|
agent_iface_key = self.to_safe('%s%s' % (key, "_interfaces"))
|
||||||
properties[agent_iface_key] = agent_iface_value
|
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
|
# split off strings with commas to a dict
|
||||||
# skip over any keys that cannot be processed
|
# skip over any keys that cannot be processed
|
||||||
try:
|
try:
|
||||||
value = dict(key.split("=") for key in value.split(","))
|
value = dict(key.split("=", 1) for key in value.split(","))
|
||||||
except Exception:
|
except Exception:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue