code: def run(self, obj):
          
          for d in self.depsuccess:
              if d.status.value != ActionStatus.SUCCESS:
                  self.status = ActionStatus(ActionStatus.SKIPPED, "Skipped because action \"%s\" did not succeed." % d.name)
                  return
          for d in self.depfail:
              if d.status.value == ActionStatus.SUCCESS:
                  self.status = ActionStatus(ActionStatus.SKIPPED, "Skipped because action \"%s\" did not fail." % d.name)
                  return
          try:
              self.status = self.actionfunc(obj)
              if not isinstance(self.status, ActionStatus):
                  raise TypeError("Expected action function %s to return a ActionStatus" % self.actionfunc)
          except:
              self.status = ActionStatus(ActionStatus.ERROR, "Unexpected Error.", traceback.format_exc())
docs: Execute the actions on the given object.
  
          :param obj: The object that the action should process
          :type obj: :class:`object`
          :returns: None
          :rtype: None
          :raises: None