This repository was archived by the owner on Jun 24, 2024. It is now read-only.
forked from mattrobenolt/jinja2-cli
-
Notifications
You must be signed in to change notification settings - Fork 83
This repository was archived by the owner on Jun 24, 2024. It is now read-only.
add from_json filter, useful to move any object through env vars #70
Copy link
Copy link
Open
Description
container_env:
mongo_servers: '{{ mongo_servers | to_json }}'consider creation of ENV variable on into Docker Container, couldn't pass object but a serialized json string.
"mongo_servers": [
{
"addr": "tkd-anex_store01.tkd-dev.teramag.com:27017",
"fqdn": "tkd-anex_store01.tkd-dev.teramag.com",
"hostname": "tkd-anex_store01",
"port": 27017,
"vm_lb_id": "01"
},
{
"addr": "tkd-anex_store02.tkd-dev.teramag.com:27017",
"fqdn": "tkd-anex_store02.tkd-dev.teramag.com",
"hostname": "tkd-anex_store02",
"port": 27017,
"vm_lb_id": "02"
},
{
"addr": "tkd-anex_store03.tkd-dev.teramag.com:27017",
"fqdn": "tkd-anex_store03.tkd-dev.teramag.com",
"hostname": "tkd-anex_store03",
"port": 27017,
"vm_lb_id": "03"
}
]ENV
$ env | grep mongo_servers
mongo_servers=[{"vm_lb_id": "01", "hostname": "tkd-anex_store01", "fqdn": "tkd-anex_store01.tkd-dev.teramag.com", "addr": "tkd-anex_store01.tkd-dev.teramag.com:27017", "port": 27017}, {"vm_lb_id": "02", "hostname": "tkd-anex_store02", "fqdn": "tkd-anex_store02.tkd-dev.teramag.com", "addr": "tkd-anex_store02.tkd-dev.teramag.com:27017", "port": 27017}, {"vm_lb_id": "03", "hostname": "tkd-anex_store03", "fqdn": "tkd-anex_store03.tkd-dev.teramag.com", "addr": "tkd-anex_store03.tkd-dev.teramag.com:27017", "port": 27017}]
$ env | grep mongo_servers | j2 --format=env servers.conf.jinja2 -o servers.conf
jinja2.exceptions.TemplateAssertionError: No filter named 'from_json'.now this object could be recovered back into j2cli from this ENV var with this simple filter (already available as an extra filter into ansible)
{% for server in mongo_servers | from_json %}
'{{ server.addr }}',
{% endfor %}this filter could be added by appending these to changes to j2cli package
j2cli/extras/filters.py add
import json
def from_json(data):
return json.loads(data)to j2cli/extras/cli.py add at line 176
# Filters, Tests
renderer.register_filters({
'docker_link': filters.docker_link,
'env': filters.env,
'from_json': filters.from_json,
})Metadata
Metadata
Assignees
Labels
No labels