Remove custom filter in favour of native jinja2
This commit is contained in:
parent
ec1009eb02
commit
d547729275
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,2 @@
|
||||
**/__pycache__/**
|
||||
fact_cache/**
|
||||
.coverage
|
||||
vault.yml
|
||||
|
@ -1,6 +0,0 @@
|
||||
ansible
|
||||
ansible-lint
|
||||
pytest
|
||||
pytest-cov
|
||||
flake8
|
||||
yamllint
|
9
plays/services/roles/include/vars/group.yml
Normal file
9
plays/services/roles/include/vars/group.yml
Normal file
@ -0,0 +1,9 @@
|
||||
services_all_services: "{{
|
||||
services_all_hosts | map('extract', hostvars, 'services_host_services') | map('dict2items') |
|
||||
flatten | items2dict }}"
|
||||
services_rproxy_add_hosts: "\
|
||||
{% set add_host_list = [] %}\
|
||||
{% for service in ( services_all_services | dict2items ) %}\
|
||||
{{ add_host_list.append('--add-host-' ~ service.key ~ ':' ~ service.value.address) }}\
|
||||
{% endfor %}\
|
||||
{{ add_host_list | join(' ') }}"
|
@ -1,32 +0,0 @@
|
||||
import jinja2.exceptions
|
||||
import ansible.errors
|
||||
import ansible.module_utils
|
||||
|
||||
|
||||
def __format_dict(dict_, pattern, *args):
|
||||
values = []
|
||||
for arg in args:
|
||||
keys = arg.split(".")
|
||||
value = dict_
|
||||
for i, key in enumerate(keys):
|
||||
try:
|
||||
value = value[key]
|
||||
except KeyError:
|
||||
raise KeyError(f"{key} not in {'.'.join(['item'] + keys[:i])}")
|
||||
values.append(value)
|
||||
return pattern.format(*values)
|
||||
|
||||
|
||||
def format_dict(dict_, pattern, *args): # pragma: no cover
|
||||
try:
|
||||
return __format_dict(dict_, pattern, *args)
|
||||
except jinja2.exceptions.UndefinedError as e:
|
||||
raise ansible.errors.AnsibleUndefinedVariable(
|
||||
ansible.module_utils._text.to_native(e)) from e
|
||||
except Exception as e:
|
||||
raise ansible.errors.AnsibleFilterError(ansible.module_utils._text.to_native(e)) from e
|
||||
|
||||
|
||||
class FilterModule: # pragma: no cover
|
||||
def filters(self):
|
||||
return {"format_dict": format_dict}
|
@ -1,43 +0,0 @@
|
||||
import ansible.errors
|
||||
import pytest
|
||||
|
||||
from plugins.filter.format import format_dict
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def item():
|
||||
return {
|
||||
"key": "key_value",
|
||||
"value": {
|
||||
"key_2_1": "value_2_1",
|
||||
"key_2_2": {
|
||||
"key_2_2_1": "value_2_2_1",
|
||||
"key_2_2_2": "value_2_2_2",
|
||||
},
|
||||
"key_2_3": {
|
||||
"key_2_3_1": "value_2_3_1",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def test_format_dict(item):
|
||||
string = format_dict(
|
||||
item,
|
||||
"start-{}-{}-{}-end",
|
||||
"key",
|
||||
"value.key_2_1",
|
||||
"value.key_2_2.key_2_2_2",
|
||||
)
|
||||
assert string == "start-key_value-value_2_1-value_2_2_2-end"
|
||||
|
||||
|
||||
def test_format_dict_key_error(item):
|
||||
with pytest.raises(ansible.errors.AnsibleFilterError):
|
||||
format_dict(
|
||||
item,
|
||||
"start-{}-{}-{}-end",
|
||||
"key",
|
||||
"value.key_2_1",
|
||||
"value.key_2_2.key_2_3_1",
|
||||
)
|
Loading…
Reference in New Issue
Block a user