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/**
|
fact_cache/**
|
||||||
.coverage
|
|
||||||
vault.yml
|
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