mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
* Parse lxc key from api data for lxc containers
When configuring containers in the `/etc/pve/lxc/` file, the API
adds a 'lxc' key that caused the plugin to crash as it tried to
split a list on ','.
This commit introduces logic to convert the list of lists in the
returned data to a dict as with the other keys.
```
'lxc': [['lxc.apparmor.profile', 'unconfined'],
['lxc.cgroup.devices.allow', 'a']]
```
becomes
```
"proxmox_lxc": {
"apparmor.profile": "unconfined",
"cap.drop": "",
"cgroup.devices.allow": "a"
}
```
* Add changelog fragment
Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Philippe Pepos Petitclerc <peposp@gmail.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 346bfba9c5
)
Co-authored-by: Philippe Pépos-Petitclerc <ppepos@users.noreply.github.com>
This commit is contained in:
parent
a163ec3afa
commit
ca93145e76
2 changed files with 16 additions and 1 deletions
4
changelogs/fragments/4555-proxmox-lxc-key.yml
Normal file
4
changelogs/fragments/4555-proxmox-lxc-key.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
bugfixes:
|
||||
- proxmox inventory plugin - fix error when parsing container with LXC configs (https://github.com/ansible-collections/community.general/issues/4472, https://github.com/ansible-collections/community.general/pull/4472).
|
||||
minor_changes:
|
||||
- proxmox inventory plugin - parse LXC configs returned by the proxmox API (https://github.com/ansible-collections/community.general/pull/4472).
|
|
@ -3,6 +3,7 @@
|
|||
# Copyright (c) 2018 Ansible Project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
__metaclass__ = type
|
||||
|
||||
DOCUMENTATION = '''
|
||||
|
@ -206,6 +207,7 @@ from ansible.module_utils.common._collections_compat import MutableMapping
|
|||
from ansible.errors import AnsibleError
|
||||
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
|
||||
from ansible.module_utils.common.text.converters import to_native
|
||||
from ansible.module_utils.six import string_types
|
||||
from ansible.module_utils.six.moves.urllib.parse import urlencode
|
||||
from ansible.utils.display import Display
|
||||
from ansible.template import Templar
|
||||
|
@ -405,7 +407,16 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
|||
agent_iface_key = self.to_safe('%s%s' % (key, "_interfaces"))
|
||||
properties[agent_iface_key] = agent_iface_value
|
||||
|
||||
if config not in plaintext_configs and not isinstance(value, int) and all("=" in v for v in value.split(",")):
|
||||
if config == 'lxc':
|
||||
out_val = {}
|
||||
for k, v in value:
|
||||
if k.startswith('lxc.'):
|
||||
k = k[len('lxc.'):]
|
||||
out_val[k] = v
|
||||
value = out_val
|
||||
|
||||
if config not in plaintext_configs and isinstance(value, string_types) \
|
||||
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:
|
||||
|
|
Loading…
Reference in a new issue