'Handle exceptions in update_task.
Decide if we should cancel tasks or not. Also decide if we should
rollback or not, depend on disable rollback flag if force rollback flag
not triggered.
:returns: a boolean for require rollback flag.'

def _update_exception_handler(self, exc, action):

    self.status_reason = six.text_type(exc)
    self.status = self.FAILED
    if (action != self.UPDATE):
        return False
    if isinstance(exc, ForcedCancel):
        return (exc.with_rollback or (not self.disable_rollback))
    elif isinstance(exc, exception.ResourceFailure):
        return (not self.disable_rollback)
    else:
        return False
