From ecb390703aed45de5a158b2f0fe7349b72fe5514 Mon Sep 17 00:00:00 2001 From: Alfredo Deza Date: Mon, 29 Jul 2013 15:30:57 -0400 Subject: [PATCH] nicer API to do remote check_calls Signed-off-by: Alfredo Deza --- ceph_deploy/util/wrappers.py | 40 ++++++++---------------------------- 1 file changed, 9 insertions(+), 31 deletions(-) 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) -- 2.47.3