Skip to content

Instantly share code, notes, and snippets.

@kevsmith
Created April 18, 2014 17:04
Show Gist options
  • Save kevsmith/11054294 to your computer and use it in GitHub Desktop.
Save kevsmith/11054294 to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import os
import sys
import json
import redis
def fetch_group_vars(rconn, env_name, group_name):
keys = rconn.hkeys(env_name + "-groupvars-" + group_name)
if len(keys) == 0:
return {}
else:
retval = {}
for key in keys:
val = rconn.hget(key)
retval[key] = val
return retval
def sanitize_name(parts):
retval = ""
first = True
for part in parts:
if part != "group":
if first:
retval = part
first = False
else:
retval = retval + "-" + part
return retval
def list_host_groups(rconn, env_name):
groups = rconn.keys(env_name + '-group-*')
if len(groups) == 0:
return {}
else:
retval = {}
for group in groups:
gn = sanitize_name(group.split('-'))
print(group)
hosts = list(rconn.smembers(group))
if len(hosts) > 0:
group_hash = {'hosts': hosts}
group_vars = fetch_group_vars(rconn, env_name, group)
if len(group_vars) > 0:
group_hash['vars'] = group_vars
retval[gn] = group_hash
return retval
if __name__ == "__main__":
if len(sys.argv) == 2:
if sys.argv[1] == '--list':
env_name = os.path.basename(__file__)
r = redis.StrictRedis(host='localhost', port=6379, db=0)
print(json.dumps(list_host_groups(r, env_name)))
else:
print("{}")
else:
print("{}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment