def run(self, obj):
        """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
        """
        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())
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