The filter module for Hetzner
Project description
Ansible Filter
Contains Ansible related filter set for collection/object operations. Aims to extend the official Ansible Filters.
Available filters are listed below.
Install
PyPI
pip install -U ansible-filter
Source
git clone git@github.com:nl2go/ansible-filter.git
cd ansible-filter/
pip install .
Filters
Change Set
Computes the change set between a list of objects using a key attribute non-recursively.
The filter arguments local
and origin
are non-associative. Objects present at the origin
but missing
within local
are considered non managed.
The result is a change set with a map of lists to:
create
- objects to create atorigin
update
- objects to update atorigin
delete
- objects to delete atorigin
noop
- objects with no operation required
Useful to interact with any kind of a stateful API.
from ansible_filter import change_set
local = [{ 'id': 1, 'foo': 'bar' }, { 'id': 2, 'foo': 'foo' }, { 'id': 3, 'foz':'baz' }, { 'id': 4, 'state': 'absent' }]
origin = [{ 'id': 2, 'foo': 'bar' }, { 'id': 3, 'foz':'baz' }, { 'id': 4, 'x': 'y' }, { 'id': 5, 'foo': 'bar' }]
result = change_set.change_set(local, origin, 'id')
print(result)
[
'create': [{ 'id': 1, 'foo': 'bar' }],
'update': [{ 'id': 2, 'foo': 'foo' }],
'delete': [{ 'id': 4, 'x': 'y' }],
'noop': [{ 'id': 3, 'foz': 'baz' }],
]
Form URL Encode
Encodes arbitrary objects to form URL format.
from ansible_filter import form_urlencode
obj = { 'foo': 'bar', 'foz': ['baz'] }
result = form_urlencode.form_urlencode(obj)
print(result)
foo=bar&foz[0]=baz&
Pick
Filters a list of objects retaining attributes only matching the names passed as argument, non-recursively.
from ansible_filter import pick
elements = [{ 'foo': 'bar', 'foz': 'baz' }]
result = pick.pick(elements, ['foo'])
print(result)
[{ 'foo': 'bar' }]
Omit
Filters a list objects omitting attributes matching the names passed as argument, non-recursively.
from ansible_filter import omit
elements = [{ 'foo': 'bar', 'foz': 'baz' }]
result = omit.omit(elements, ['foo'])
print(result)
[{ 'foz': 'baz' }]
Group By
Groups elements by key attribute.
from ansible_filter import group_by
left = [{ 'id': '1', 'foo': 'a' }, { 'id': '2', 'foz': 'x' }]
right = [{ 'id': '1', 'foo': 'b' }, { 'id': '2', 'foz': 'y' }]
result = group_by.group_by(left, right, 'id')
print(result)
[
{ 'id': '1', 'group': [{ 'id': '1', 'foo': 'a' }, { 'id': '1', 'foo': 'b' }] },
{ 'id': '2', 'group': [{ 'id': '2', 'foz': 'x' }, { 'id': '2', 'foz': 'y' }] }
]
List 2 Dict
Converts a list to dict by key attribute.
from ansible_filter import list_to_dict
elements = [{ 'id': '1', 'foo': 'bar' }, { 'id': '2', 'foz': 'baz' }]
result = list_to_dict.list_to_dict(elements, 'id')
print(result)
{'1': {'foo': 'bar', 'id': '1'}, '2': {'id': '2', 'foz': 'baz'}}
Point to Point Connections
Resolves point to point connections between the local and remote hosts.
from ansible_filter import network
remote_hostnames = ['two', 'three']
hostname = 'one'
hostvars = {
'one': {
'ansible_default_ipv4': {
'interface': 'eth0'
},
'ansible_eth0': {
'ipv4': {
'address': '127.0.0.1',
}
}
},
'two': {
'ansible_default_ipv4': {
'interface': 'eth0'
},
'ansible_eth0': {
'ipv4': {
'address': '127.0.0.2',
}
}
},
'three': {
'ansible_default_ipv4': {
'interface': 'eth0'
},
'ansible_eth0': {
'ipv4': {
'address': '127.0.0.3',
}
}
}
}
result = network.get_point_to_point_connections(remote_hostnames, hostname, hostvars)
[
{
'remote': {
'interface': 'eth0',
'hostname': 'two',
'address': '127.0.0.2'
},
'local': {
'interface': 'eth0',
'hostname': 'one',
'address': '127.0.0.1'
}
},
{
'remote': {
'interface': 'eth0',
'hostname': 'three',
'address': '127.0.0.3'
},
'local': {
'interface': 'eth0',
'hostname': 'one',
'address': '127.0.0.1'
}
}
]
Links
- Website: https://newsletter2go.com/
- License: MIT
- Releases: https://pypi.org/project/ansible-filter/
- Code: https://github.com/nl2go/ansible-filter
- Issue tracker: https://github.com/nl2go/ansible-filter/issues
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ansible-filter-1.1.1.tar.gz
.
File metadata
- Download URL: ansible-filter-1.1.1.tar.gz
- Upload date:
- Size: 5.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.1.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d44bca291f239a4f546b21dc509cbe49a8bad936b1103ba1f2ca69707425556 |
|
MD5 | 5974d76807e606d1f44f2cc3062ce31b |
|
BLAKE2b-256 | 795ca34b1b0586a3b1d3cbd485941f458103296a0e14ee56b3e438a06db9080d |