def wrapper(*args, **kwargs):
        ctx = utils.find_type_in_kwargs(CloudifyContext,
                                        kwargs.values() + list(args))
        if not ctx:
            raise RuntimeError('CloudifyContext not found in invocation args')

        # take cloudify_agent settings from the invocation input parameters
        if 'cloudify_agent' in kwargs:
            # if cloudify_agent is also configured as a node property
            # this is ambiguous, raise an exception
            if ctx.node.properties 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))
            cloudify_agent = kwargs['cloudify_agent']
        else:
            if ctx.node.properties and 'cloudify_agent' in ctx.node.properties:
                cloudify_agent = ctx.node.properties['cloudify_agent']
            else:
                cloudify_agent = {}

        prepare_configuration(ctx, cloudify_agent)
        kwargs['cloudify_agent'] = cloudify_agent
        try:
            kwargs['runner'] = WinRMRunner(
                session_config=cloudify_agent.copy(),
                logger=ctx.logger)
            return func(*args, **kwargs)
        except ValueError as e:
            raise NonRecoverableError('Failed to instantiate WinRMRunner: {0}'
                                      .format(e.message))
Example #2
0
 def wrapper(*args, **kwargs):
     ctx = utils.find_type_in_kwargs(CloudifyContext,
                                     kwargs.values() + list(args))
     if not ctx:
         raise RuntimeError('CloudifyContext not found in invocation args')
     if ctx.properties and 'cloudify_agent' in ctx.properties:
         cloudify_agent = ctx.properties['cloudify_agent']
     else:
         cloudify_agent = {}
     prepare_configuration(ctx, cloudify_agent)
     kwargs['cloudify_agent'] = cloudify_agent
     kwargs['runner'] = WinRMRunner(session_config=cloudify_agent.copy(),
                                    logger=ctx.logger)
     return func(*args, **kwargs)
Example #3
0
 def wrapper(*args, **kwargs):
     ctx = utils.find_type_in_kwargs(
         CloudifyContext,
         kwargs.values() +
         list(args))
     if not ctx:
         raise RuntimeError('CloudifyContext not found in invocation args')
     if ctx.properties and 'cloudify_agent' in ctx.properties:
         cloudify_agent = ctx.properties['cloudify_agent']
     else:
         cloudify_agent = {}
     prepare_configuration(ctx, cloudify_agent)
     kwargs['cloudify_agent'] = cloudify_agent
     kwargs['runner'] = WinRMRunner(
         session_config=cloudify_agent.copy(),
         logger=ctx.logger)
     return func(*args, **kwargs)