Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 25 additions & 6 deletions src/fides/api/models/worker_task.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import enum
from typing import Any, List
from typing import Any, List, Set

from sqlalchemy import Column, DateTime, String
from sqlalchemy.sql import text
Expand All @@ -19,12 +19,31 @@ class ExecutionLogStatus(enum.Enum):
skipped = "skipped"
polling = "polling"

@classmethod
def in_progress_statuses(cls) -> Set["ExecutionLogStatus"]:
Comment thread
adamsachs marked this conversation as resolved.
"""
Statuses that indicate the task is in progress.

For now, used only to detect interrupted monitor tasks.
"""
# TODO: update this to be more generic, i.e. used for other task types?
return {
cls.in_processing,
cls.pending,
}

# Statuses that can be resumed
RESUMABLE_EXECUTION_LOG_STATUSES = [
ExecutionLogStatus.pending,
ExecutionLogStatus.polling,
]
@classmethod
def resumable_statuses(cls) -> Set["ExecutionLogStatus"]:
"""
Statuses that can be resumed.

For now, used only for DSR tasks.
"""
# TODO: update this to be more generic, i.e. used for other task types?
return {
cls.pending,
cls.polling,
}


class WorkerTask:
Expand Down
7 changes: 2 additions & 5 deletions src/fides/api/task/execute_request_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,7 @@
from fides.api.models.connectionconfig import ConnectionConfig
from fides.api.models.policy import Policy
from fides.api.models.privacy_request import ExecutionLog, PrivacyRequest, RequestTask
from fides.api.models.worker_task import (
RESUMABLE_EXECUTION_LOG_STATUSES,
ExecutionLogStatus,
)
from fides.api.models.worker_task import ExecutionLogStatus
from fides.api.schemas.policy import ActionType, CurrentStep
from fides.api.schemas.privacy_request import PrivacyRequestStatus
from fides.api.task.graph_task import (
Expand Down Expand Up @@ -178,7 +175,7 @@ def can_run_task_body(
if request_task.is_root_task:
# Shouldn't be possible but adding as a catch-all
return False
if request_task.status not in RESUMABLE_EXECUTION_LOG_STATUSES:
if request_task.status not in ExecutionLogStatus.resumable_statuses():
logger_method(request_task)(
"Skipping {} task {} with status {}.",
request_task.action_type,
Expand Down
Loading