def wrapper(*args, **kwargs): ctx = _find_type_in_kwargs(context.CloudifyContext, kwargs.values() + list(args)) if not ctx: raise NonRecoverableError( 'CloudifyContext not found in invocation args') if ctx.type == context.NODE_INSTANCE and \ 'cloudify_agent' in ctx.node.properties: agent_config = ctx.node.properties['cloudify_agent'] else: agent_config = kwargs.get('cloudify_agent', {}) prepare_configuration(ctx, agent_config) kwargs['agent_config'] = agent_config runner = FabricRunner(ctx, agent_config) kwargs['runner'] = runner try: if not (agent_config.get('distro') and agent_config.get('distro_codename')): distro_info = get_machine_distro(runner) if not agent_config.get('distro'): agent_config['distro'] = distro_info[0] if not agent_config.get('distro_codename'): agent_config['distro_codename'] = distro_info[2] return func(*args, **kwargs) finally: # Fixes CFY-1741 (clear fabric connection cache) runner.close()
def wrapper(*args, **kwargs): ctx = _find_type_in_kwargs(context.CloudifyContext, kwargs.values() + list(args)) if not ctx: raise NonRecoverableError( 'CloudifyContext not found in invocation args') if 'cloudify_agent' in kwargs: if ctx.type == context.NODE_INSTANCE and \ ctx.node.properties.get('cloudify_agent'): raise NonRecoverableError("'cloudify_agent' is configured " "both as a node property and as an " "invocation input parameter for " "operation '{0}'" .format(ctx.operation.name)) agent_config = kwargs['cloudify_agent'] else: if ctx.type == context.NODE_INSTANCE and \ ctx.node.properties.get('cloudify_agent'): agent_config = ctx.node.properties['cloudify_agent'] else: agent_config = {} prepare_connection_configuration(ctx, agent_config) runner = FabricRunner(ctx, agent_config) try: prepare_additional_configuration(ctx, agent_config, runner) kwargs['runner'] = runner kwargs['agent_config'] = agent_config if not (agent_config.get('distro') and agent_config.get('distro_codename')): distro_info = get_machine_distro(runner) if not agent_config.get('distro'): agent_config['distro'] = distro_info[0] if not agent_config.get('distro_codename'): agent_config['distro_codename'] = distro_info[2] return func(*args, **kwargs) finally: # Fixes CFY-1741 (clear fabric connection cache) runner.close()
def wrapper(*args, **kwargs): ctx = _find_type_in_kwargs(context.CloudifyContext, kwargs.values() + list(args)) if not ctx: raise NonRecoverableError( 'CloudifyContext not found in invocation args') if 'cloudify_agent' in kwargs: if ctx.type == context.NODE_INSTANCE and \ ctx.node.properties.get('cloudify_agent'): raise NonRecoverableError("'cloudify_agent' is configured " "both as a node property and as an " "invocation input parameter for " "operation '{0}'".format( ctx.operation.name)) agent_config = kwargs['cloudify_agent'] else: if ctx.type == context.NODE_INSTANCE and \ ctx.node.properties.get('cloudify_agent'): agent_config = ctx.node.properties['cloudify_agent'] else: agent_config = {} prepare_connection_configuration(ctx, agent_config) runner = FabricRunner(ctx, agent_config) try: prepare_additional_configuration(ctx, agent_config, runner) kwargs['runner'] = runner kwargs['agent_config'] = agent_config if not (agent_config.get('distro') and agent_config.get('distro_codename')): distro_info = get_machine_distro(runner) if not agent_config.get('distro'): agent_config['distro'] = distro_info[0] if not agent_config.get('distro_codename'): agent_config['distro_codename'] = distro_info[2] return func(*args, **kwargs) finally: # Fixes CFY-1741 (clear fabric connection cache) runner.close()