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()