|
Theo Chatzimichos |
e53270 |
#!/usr/bin/python3
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
# For description and usage, see the argparse options at the end of the file
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
import argparse
|
|
Theo Chatzimichos |
e53270 |
import yaml
|
|
Theo Chatzimichos |
e53270 |
import os
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
def get_roles(with_base=False):
|
|
Theo Chatzimichos |
e53270 |
roles = []
|
|
Theo Chatzimichos |
e53270 |
if with_base:
|
|
Theo Chatzimichos |
e53270 |
roles.append('base')
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
for sls in os.listdir('pillar/id'):
|
|
Theo Chatzimichos |
e53270 |
with open("pillar/id/%s" % sls) as f:
|
|
Theo Chatzimichos |
e53270 |
try:
|
|
Theo Chatzimichos |
e53270 |
_roles = yaml.load(f)['grains']['roles']
|
|
Theo Chatzimichos |
e53270 |
except KeyError:
|
|
Theo Chatzimichos |
e53270 |
continue
|
|
Theo Chatzimichos |
e53270 |
for item in _roles:
|
|
Theo Chatzimichos |
e53270 |
roles.append(item)
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
roles = sorted(set(roles))
|
|
Theo Chatzimichos |
e53270 |
return roles
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
def print_roles():
|
|
Theo Chatzimichos |
e53270 |
parser = argparse.ArgumentParser('Collects all the roles that are assigned to a minion, and returns them as a python array, a yaml list or a plain list (parsable by bash)')
|
|
Theo Chatzimichos |
e53270 |
parser.add_argument('-p', '--python', action='store_true', help='Prints the roles as a python array')
|
|
Theo Chatzimichos |
e53270 |
parser.add_argument('-y', '--yaml', action='store_true', help='Prints the roles as a yaml array')
|
|
Theo Chatzimichos |
e53270 |
parser.add_argument('--with-base', action='store_true', help='Include the base role at the results')
|
|
Theo Chatzimichos |
e53270 |
args = parser.parse_args()
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
roles = get_roles(with_base=args.with_base)
|
|
Theo Chatzimichos |
e53270 |
if args.python:
|
|
Theo Chatzimichos |
e53270 |
print(roles)
|
|
Theo Chatzimichos |
e53270 |
elif args.yaml:
|
|
Theo Chatzimichos |
e53270 |
print('roles:')
|
|
Theo Chatzimichos |
e53270 |
for role in roles:
|
|
Theo Chatzimichos |
e53270 |
print(' - %s' % role)
|
|
Theo Chatzimichos |
e53270 |
else:
|
|
Theo Chatzimichos |
e53270 |
print(' '.join(roles))
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
|
|
Theo Chatzimichos |
e53270 |
if __name__ == "__main__":
|
|
Theo Chatzimichos |
e53270 |
print_roles()
|