def perform_action()

in runner.py [0:0]


  def perform_action(self, api_connector, action, kwargs):
    """
    Performs offboarding actions selected from the Web UI form.
    :param api_connector: string of the API connector to use
    :param action: name of action to be performed
    :return: msg log for action performed, along with status
    Note: action item must match function names of the equivalent API class.
    """
    msg = ""
    if self.is_valid_user:
      if self.is_suspended_user and action not in NO_SUSPEND_ACTIONS:
        self.suspend_user(False)
      connector = getattr(self, api_connector)
      result = getattr(connector, action)(self.user_email, **kwargs)

      if type(result) is dict:
        results = []
        for k, v in result.items():
          if v is True:
            results.append("<span class='text-success'>%s</span>" % k)
          elif v is False:
            results.append("<span class='text-danger'>%s</span>" % k)
          else:
            results.append(k)
        if not results:
          results = "<span class='text-success'>SUCCESS</span>"
        msg = "<p>%s: %s</p>" % (action.replace("_", " ").upper(), results)
      else:
        if result is False:
          msg_color = "danger"
          msg_text = "FAILED"
        elif result is True:
          msg_color = "success"
          msg_text = "SUCCESS"
        elif result is None:
          msg_color = "danger"
          msg_text = "FAILED (EMPTY RESULT)"
        else:
          msg_color = "success"
          msg_text = "SUCCESS"
        msg = ("<p>%s: <span class=\"text-%s\">%s</span></p>" %
               (action.replace("_", " ").upper(), msg_color, msg_text))
    else:
      msg = "<p><span class=\"text-danger\">FAILED - INVALID USER</span></p>"
    log.info(msg)
    return msg