37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
"""Embedded ansible filter used by Molecule Docker driver create playbook."""
|
|
|
|
|
|
def get_docker_networks(data, labels={}):
|
|
"""Get list of docker networks."""
|
|
network_list = []
|
|
network_names = []
|
|
for platform in data:
|
|
if "docker_networks" in platform:
|
|
for docker_network in platform["docker_networks"]:
|
|
if "labels" not in docker_network:
|
|
docker_network["labels"] = {}
|
|
for key in labels:
|
|
docker_network["labels"][key] = labels[key]
|
|
|
|
if "name" in docker_network:
|
|
network_list.append(docker_network)
|
|
network_names.append(docker_network["name"])
|
|
|
|
# If a network name is defined for a platform but is not defined in
|
|
# docker_networks, add it to the network list.
|
|
if "networks" in platform:
|
|
for network in platform["networks"]:
|
|
if "name" in network:
|
|
name = network["name"]
|
|
if name not in network_names:
|
|
network_list.append({"name": name, "labels": labels})
|
|
return network_list
|
|
|
|
|
|
class FilterModule(object):
|
|
"""Core Molecule filter plugins."""
|
|
|
|
def filters(self):
|
|
return {
|
|
"molecule_get_docker_networks": get_docker_networks,
|
|
}
|