From: Alfredo Deza Date: Mon, 29 Jul 2013 19:30:57 +0000 (-0400) Subject: nicer API to do remote check_calls X-Git-Tag: v1.2~16^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ecb390703aed45de5a158b2f0fe7349b72fe5514;p=ceph-deploy.git nicer API to do remote check_calls Signed-off-by: Alfredo Deza --- diff --git a/ceph_deploy/util/wrappers.py b/ceph_deploy/util/wrappers.py index ede9163..5ef36da 100644 --- a/ceph_deploy/util/wrappers.py +++ b/ceph_deploy/util/wrappers.py @@ -9,7 +9,13 @@ from ceph_deploy.util.decorators import remote_compile from ceph_deploy.util import context -def check_call(args, logger, conn, *a, **kw): +def check_call(conn, logger, args, *a, **kw): + """ + Wraps ``subprocess.check_call`` for a remote call via ``pushy`` + doing all the capturing and logging nicely upon failure/success + + :param args: The args to be passed onto ``check_call`` + """ command = ' '.join(args) logger.info('Running command: %s' % command) @@ -21,33 +27,5 @@ def check_call(args, logger, conn, *a, **kw): **kw ) - compile_ = remote_compile(conn, remote_call) - with context.capsys(conn, logger): - try: - return compile_(args, *a, **kw) - except Exception as err: - if getattr(err, 'remote_traceback'): - for line in err.remote_traceback: - logger.error(line) - else: - raise - - -def generic_remote(func, logger, conn, *a, **kw): - """ - This generic remote wrapper will introspect the docstring from ``func`` to - log out the action about to be done. It better be succinct. - """ - action = getattr(func, 'func_doc', func.func_name) - logger.info('Executing action: %s' % action) - - compile_ = remote_compile(conn, func) - with context.capsys(conn, logger): - try: - return compile_(*a, **kw) - except Exception as err: - if getattr(err, 'remote_traceback'): - for line in err.remote_traceback: - logger.error(line) - else: - raise + with context.remote(conn, logger, remote_call) as call: + return call(args, *a, **kw)