Mercurial > hg > KCl
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kcl/versions.py Mon Feb 06 01:10:22 2017 +0000 @@ -0,0 +1,51 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +compare package versions across nodes: + +$ sudo rpm -q --qf "%{VERSION}" python-requests +2.6.0 +""" + + +# imports +import argparse +import json +import kcl +import sys + + +def main(args=sys.argv[1:]): + """CLI""" + + # parse command line + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('salt_master') + parser.add_argument('package') + parser.add_argument('--group', dest='group', + action='store_true', default=False, + help="group hosts by versions") + options = parser.parse_args(args) + + # instantiate API + salt = kcl.KCl(options.salt_master) + + # get versions + command = 'rpm -q --qf "%{VERSION}" ' + options.package + code, versions = salt.run(command) + + # output + if options.group: + # group host by package versions + group = {} + for host, version in versions.items(): + group.setdefault(version, []).append(host) + print (json.dumps(group, indent=2, sort_keys=True)) + else: + print (json.dumps(versions, indent=2, sort_keys=True)) + + sys.exit(code) + +if __name__ == '__main__': + main()