Back to passing sanity tests after the giant rearranging

This commit is contained in:
Mark J. Horninger 2024-02-15 21:36:05 -05:00
parent 64a3357ecf
commit 236d15f969
4 changed files with 16 additions and 23 deletions

2
.gitignore vendored
View File

@ -193,5 +193,3 @@ pip-selfcheck.json
# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
# End of https://www.toptal.com/developers/gitignore/api/ansible,python,venv,virtualenv
!test/lib/ansible_test/data/requirements/

View File

@ -6,6 +6,7 @@
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
DOCUMENTATION = r"""
@ -66,17 +67,19 @@ DOCUMENTATION = r"""
EXAMPLES = r"""
"""
from ansible.errors import AnsibleError
# TODO: Re-enable if necessary
# , AnsibleParserError
from ansible.utils.display import Display
from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
# Specific for the NetbirdAPI Class
import requests
try:
import requests
# import json
display = Display()
except ImportError:
HAS_NETBIRD_API_LIBS = False
else:
HAS_NETBIRD_API_LIBS = True
class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
@ -85,19 +88,19 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
def _build_client(self, loader):
"""Build the Netbird API Client"""
access_token = self.get_option('api_key')
api_key = self.get_option('api_key')
api_url = self.get_option('api_url')
if self.templar.is_template(access_token):
access_token = self.templar.template(access_token)
if self.templar.is_template(api_url):
api_url = self.templar.template(api_url)
if access_token is None:
if api_key is None:
raise AnsibleError("Could not retrieve the Netbird API Key from the configuration sources.")
if api_url is None:
raise AnsibleError("Could not retrieve the Netbird API URL from the configuration sources.")
self.client = NetbirdApi(access_token, api_url)
self.client = NetbirdApi(api_key, api_url)
def _get_peer_inventory(self):
"""Get the inventory from the Netbird API"""
@ -106,6 +109,9 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
def parse(self, inventory, loader, path, cache=True):
"""Dynamically parse the inventory from the Netbird API"""
super(InventoryModule, self).parse(inventory, loader, path)
if not HAS_NETBIRD_API_LIBS:
raise AnsibleError("the Netbird Dynamic inventory requires Requests.")
self.peers = None
self._read_config_data(path)

View File

@ -1,11 +0,0 @@
ansible>=9.2.0
cffi==1.16.0
cryptography==42.0.2
Jinja2==3.1.3
MarkupSafe==2.1.5
packaging==23.2
pycparser==2.21
PyYAML==6.0.1
requests>=2.31.0
resolvelib==1.0.1
pytest==8.0.0

View File

@ -25,7 +25,7 @@ def inventory():
def test_missing_access_token_lookup(inventory):
loader = DataLoader()
inventory._options = {'api_key': None}
inventory._options = {'api_key': None, 'api_url': None}
with pytest.raises(AnsibleError) as error_message:
inventory._build_client(loader)
assert 'Could not retrieve Netbird access token' in error_message