1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Add groups to serf inventory plugin

This commit is contained in:
Marc Abramowitz 2015-07-03 00:51:36 -07:00
parent e1991d9e32
commit 48e15ea849

View file

@ -31,6 +31,7 @@
# These variables are described at https://www.serfdom.io/docs/commands/members.html#_rpc_addr # These variables are described at https://www.serfdom.io/docs/commands/members.html#_rpc_addr
import argparse import argparse
import collections
import os import os
import sys import sys
@ -58,6 +59,16 @@ def get_nodes(data):
return [node['Name'] for node in data] return [node['Name'] for node in data]
def get_groups(data):
groups = collections.defaultdict(list)
for node in data:
for key, value in node['Tags'].items():
groups[value].append(node['Name'])
return groups
def get_meta(data): def get_meta(data):
meta = {'hostvars': {}} meta = {'hostvars': {}}
for node in data: for node in data:
@ -68,8 +79,11 @@ def get_meta(data):
def print_list(): def print_list():
data = get_serf_members_data() data = get_serf_members_data()
nodes = get_nodes(data) nodes = get_nodes(data)
groups = get_groups(data)
meta = get_meta(data) meta = get_meta(data)
print(json.dumps({_key: nodes, '_meta': meta})) inventory_data = {_key: nodes, '_meta': meta}
inventory_data.update(groups)
print(json.dumps(inventory_data))
def print_host(host): def print_host(host):