Merge pull request #11478 from msabramo/serf_inventory_groups
Add groups to serf inventory plugin
This commit is contained in:
commit
dead52cf27
1 changed files with 15 additions and 1 deletions
|
@ -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):
|
||||||
|
|
Loading…
Reference in a new issue