Mercurial > hg > KCl
comparison kcl/versions.py @ 0:0f44ee073173 default tip
fake salt, initial commit
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Mon, 06 Feb 2017 01:10:22 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:0f44ee073173 |
---|---|
1 #!/usr/bin/env python | |
2 # -*- coding: utf-8 -*- | |
3 | |
4 """ | |
5 compare package versions across nodes: | |
6 | |
7 $ sudo rpm -q --qf "%{VERSION}" python-requests | |
8 2.6.0 | |
9 """ | |
10 | |
11 | |
12 # imports | |
13 import argparse | |
14 import json | |
15 import kcl | |
16 import sys | |
17 | |
18 | |
19 def main(args=sys.argv[1:]): | |
20 """CLI""" | |
21 | |
22 # parse command line | |
23 parser = argparse.ArgumentParser(description=__doc__) | |
24 parser.add_argument('salt_master') | |
25 parser.add_argument('package') | |
26 parser.add_argument('--group', dest='group', | |
27 action='store_true', default=False, | |
28 help="group hosts by versions") | |
29 options = parser.parse_args(args) | |
30 | |
31 # instantiate API | |
32 salt = kcl.KCl(options.salt_master) | |
33 | |
34 # get versions | |
35 command = 'rpm -q --qf "%{VERSION}" ' + options.package | |
36 code, versions = salt.run(command) | |
37 | |
38 # output | |
39 if options.group: | |
40 # group host by package versions | |
41 group = {} | |
42 for host, version in versions.items(): | |
43 group.setdefault(version, []).append(host) | |
44 print (json.dumps(group, indent=2, sort_keys=True)) | |
45 else: | |
46 print (json.dumps(versions, indent=2, sort_keys=True)) | |
47 | |
48 sys.exit(code) | |
49 | |
50 if __name__ == '__main__': | |
51 main() |