Mercurial > hg > KCl
view kcl/kcl.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 source
#!/usr/bin/env python # -*- coding: utf-8 -*- """ fake salt """ # imports import argparse import json import ssh import sys class KCl(object): """fake salt's interface to real salt""" def __init__(self, salt_master): self.salt_master = salt_master self.ssh = ssh.Ssh(self.salt_master) def __call__(self, target, module, *args): command = self.command(target, module, *args) code, output = self.ssh.sudo(command) return code, json.loads(output) def command(self, target, module, *args): retval = "salt --output=json --static '{target}' {module}".format(target=target, module=module) for arg in args: retval += " '{arg}'".format(arg=arg) return retval def ping(self, target='*'): return self(target, 'test.ping') def run(self, command, target='*'): return self(target, 'cmd.run', command) def main(args=sys.argv[1:]): """CLI""" # parse command line parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('salt_master') options = parser.parse_args(args) # instantiate KCl kcl = KCl(options.salt_master) # ping, just for fun code, pong = kcl.ping() # output print (json.dumps(pong, indent=2, sort_keys=True)) sys.exit(code) if __name__ == '__main__': main()