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 (#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:
parent
78113c061b
commit
e8d276e689
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).
|
|
@ -307,7 +307,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
||||||
self.inventory.set_variable(name, vmtype_key, vmtype)
|
self.inventory.set_variable(name, vmtype_key, vmtype)
|
||||||
|
|
||||||
plaintext_configs = [
|
plaintext_configs = [
|
||||||
'tags',
|
'description',
|
||||||
]
|
]
|
||||||
|
|
||||||
for config in ret:
|
for config in ret:
|
||||||
|
@ -333,11 +333,11 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
||||||
if agent_iface_value:
|
if agent_iface_value:
|
||||||
self.inventory.set_variable(name, agent_iface_key, 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
|
# 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