docs: def cmd(self, fun, *args, **kwargs):
          '''
          Call an execution module with the given arguments and keyword arguments
  
          .. code-block:: python
  
              caller.cmd('test.arg', 'Foo', 'Bar', baz='Baz')
  
              caller.cmd('event.send', 'myco/myevent/something',
                  data={'foo': 'Foo'}, with_env=['GIT_COMMIT'], with_grains=True)
          '''
          func = self.sminion.functions[fun]
          data = {
            'arg': args,
            'fun': fun
          }
          data.update(kwargs)
          executors = getattr(self.sminion, 'module_executors', []) or \
                      self.opts.get('module_executors', ['direct_call'])
          if isinstance(executors, six.string_types):
              executors = [executors]
          for name in executors:
              fname = '{0}.execute'.format(name)
              if fname not in self.sminion.executors:
                  raise SaltInvocationError("Executor '{0}' is not available".format(name))
              return_data = self.sminion.executors[fname](self.opts, data, func, args, kwargs)
              if return_data is not None:
                  break
          return return_data