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 - fix parsing for offline nodes (#2967)

* Initial commit

* Adding changelog fragment

* Applying initial review suggestions
This commit is contained in:
Ajpantuso 2021-07-10 10:39:51 -04:00 committed by GitHub
parent 9023d4dba1
commit 111c5de550
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 3 deletions

View file

@ -0,0 +1,3 @@
---
bugfixes:
- proxmox inventory plugin - fixed parsing failures when some cluster nodes are offline (https://github.com/ansible-collections/community.general/issues/2931).

View file

@ -369,6 +369,9 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
if node['type'] == 'node': if node['type'] == 'node':
self.inventory.add_child(nodes_group, node['node']) self.inventory.add_child(nodes_group, node['node'])
if node['status'] == 'offline':
continue
# get node IP address # get node IP address
if self.get_option("want_proxmox_nodes_ansible_host"): if self.get_option("want_proxmox_nodes_ansible_host"):
ip = self._get_node_ip(node['node']) ip = self._get_node_ip(node['node'])

View file

@ -9,7 +9,6 @@ __metaclass__ = type
import pytest import pytest
from ansible.errors import AnsibleError, AnsibleParserError
from ansible.inventory.data import InventoryData from ansible.inventory.data import InventoryData
from ansible_collections.community.general.plugins.inventory.proxmox import InventoryModule from ansible_collections.community.general.plugins.inventory.proxmox import InventoryModule
@ -52,7 +51,12 @@ def get_json(url):
"disk": 1000, "disk": 1000,
"maxmem": 1000, "maxmem": 1000,
"uptime": 10000, "uptime": 10000,
"level": ""}] "level": ""},
{"type": "node",
"node": "testnode2",
"id": "node/testnode2",
"status": "offline",
"ssl_fingerprint": "yy"}]
elif url == "https://localhost:8006/api2/json/pools": elif url == "https://localhost:8006/api2/json/pools":
# _get_pools # _get_pools
return [{"poolid": "test"}] return [{"poolid": "test"}]
@ -554,7 +558,6 @@ def test_populate(inventory, mocker):
host_qemu_multi_nic = inventory.inventory.get_host('test-qemu-multi-nic') host_qemu_multi_nic = inventory.inventory.get_host('test-qemu-multi-nic')
host_qemu_template = inventory.inventory.get_host('test-qemu-template') host_qemu_template = inventory.inventory.get_host('test-qemu-template')
host_lxc = inventory.inventory.get_host('test-lxc') host_lxc = inventory.inventory.get_host('test-lxc')
host_node = inventory.inventory.get_host('testnode')
# check if qemu-test is in the proxmox_pool_test group # check if qemu-test is in the proxmox_pool_test group
assert 'proxmox_pool_test' in inventory.inventory.groups assert 'proxmox_pool_test' in inventory.inventory.groups
@ -584,3 +587,6 @@ def test_populate(inventory, mocker):
# check if qemu template is not present # check if qemu template is not present
assert host_qemu_template is None assert host_qemu_template is None
# check that offline node is in inventory
assert inventory.inventory.get_host('testnode2')