mirror of
https://opendev.org/openstack/ansible-collections-openstack.git
synced 2026-07-25 01:04:28 +00:00
Revive collection unit tests
Seemingly, ansible-test unit tests were not run in CI for a while and are broken in multiple places. This patch aims to re-incarnate unit testing of modules and execute them as part of the sanity tests. We use sanity right now, as they perform testing against different ansible versions and unit tests take multiple seconds to complete. So spawning a separate nodes would be an overkill. Unit tests have also detected a regression in server module, as existing nets generation can create a generator, where `isinstance(net, dict)` will return negative result, as it is gonna be a generator, not a dict. So this part has been refactored to avoid poitential regressions. Change-Id: Ibefc087239b5c8d5e843c977c2c5a2250ae0bfbd Signed-off-by: Dmitriy Rabotyagov <dmitriy.rabotyagov@cleura.com>
This commit is contained in:
@@ -53,16 +53,59 @@ hostvars = {
|
||||
}
|
||||
|
||||
|
||||
try:
|
||||
from ansible._internal._templating._engine import TrustedAsTemplate
|
||||
has_trusted = True
|
||||
except ImportError:
|
||||
has_trusted = False
|
||||
|
||||
|
||||
def tag_trusted(val):
|
||||
if not has_trusted:
|
||||
return val
|
||||
if isinstance(val, dict):
|
||||
return {k: tag_trusted(v) for k, v in val.items()}
|
||||
elif isinstance(val, list):
|
||||
return [tag_trusted(v) for v in val]
|
||||
elif isinstance(val, str):
|
||||
return TrustedAsTemplate().tag(val)
|
||||
return val
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def inventory():
|
||||
inventory = InventoryModule()
|
||||
inventory._config_data = config_data
|
||||
inventory._config_data = tag_trusted(config_data)
|
||||
inventory.inventory = InventoryData()
|
||||
inventory.templar = Templar(loader=None)
|
||||
|
||||
for host in hostvars:
|
||||
inventory.inventory.add_host(host)
|
||||
|
||||
def _set_variables(hostvars, groups):
|
||||
for host in hostvars:
|
||||
try:
|
||||
inventory._set_composite_vars(
|
||||
inventory._config_data.get('compose'), hostvars[host], host, strict=True)
|
||||
except Exception as e:
|
||||
print("set_composite_vars error: %s" % e)
|
||||
raise
|
||||
for key in hostvars[host]:
|
||||
inventory.inventory.set_variable(host, key, hostvars[host][key])
|
||||
try:
|
||||
inventory._add_host_to_composed_groups(
|
||||
inventory._config_data.get('groups'), hostvars[host], host, strict=True)
|
||||
except Exception as e:
|
||||
print("add_host_to_composed_groups error: %s" % e)
|
||||
raise
|
||||
try:
|
||||
inventory._add_host_to_keyed_groups(
|
||||
inventory._config_data.get('keyed_groups'), hostvars[host], host, strict=True)
|
||||
except Exception as e:
|
||||
print("add_host_to_keyed_groups error: %s" % e)
|
||||
raise
|
||||
|
||||
inventory._set_variables = _set_variables
|
||||
return inventory
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user