33
44from __future__ import annotations
55
6- from pydantic import BaseModel , ConfigDict
6+ from datetime import datetime
7+ from enum import Enum
8+ from typing import List , Optional , TYPE_CHECKING
79
10+ from pydantic import BaseModel , ConfigDict , Field
811
9- # TaskStage represents a HCP Terraform or Terraform Enterprise run's stage where run tasks can occur
12+ if TYPE_CHECKING :
13+ from pytfe .models .task_result import TaskResult
14+ from pytfe .models .policy_evaluation import PolicyEvaluation
15+
16+ class Stage (str , Enum ):
17+ pre_plan = "pre_plan"
18+ post_plan = "post_plan"
19+ pre_apply = "pre_apply"
20+ post_apply = "post_apply"
21+
22+ class TaskStageStatus (str , Enum ):
23+ pending = "pending"
24+ running = "running"
25+ passed = "passed"
26+ failed = "failed"
27+ awaiting_override = "awaiting_override"
28+ canceled = "canceled"
29+ errored = "errored"
30+ unreachable = "unreachable"
31+
32+ class TaskStageStatusTimestamps (BaseModel ):
33+ model_config = ConfigDict (populate_by_name = True , validate_by_name = True )
34+
35+ errored_at : Optional [datetime ] = Field (None , alias = "errored-at" )
36+ running_at : Optional [datetime ] = Field (None , alias = "running-at" )
37+ canceled_at : Optional [datetime ] = Field (None , alias = "canceled-at" )
38+ failed_at : Optional [datetime ] = Field (None , alias = "failed-at" )
39+ passed_at : Optional [datetime ] = Field (None , alias = "passed-at" )
40+
41+ class Permissions (BaseModel ):
42+ model_config = ConfigDict (populate_by_name = True , validate_by_name = True )
43+
44+ can_override_policy : Optional [bool ] = Field (None , alias = "can-override-policy" )
45+ can_override_tasks : Optional [bool ] = Field (None , alias = "can-override-tasks" )
46+ can_override : Optional [bool ] = Field (None , alias = "can-override" )
47+
48+ class Actions (BaseModel ):
49+ model_config = ConfigDict (populate_by_name = True , validate_by_name = True )
50+
51+ is_overridable : Optional [bool ] = Field (None , alias = "is-overridable" )
52+
53+ # TaskStage represents a HCP Terraform or Terraform Enterprise run's stage
1054class TaskStage (BaseModel ):
1155 model_config = ConfigDict (populate_by_name = True , validate_by_name = True )
1256
1357 id : str
58+
1459 # stage: Stage = Field(..., alias="stage")
1560 # status: TaskStageStatus = Field(..., alias="status")
1661 # status_timestamps: TaskStageStatusTimestamps = Field(..., alias="status-timestamps")
@@ -19,7 +64,28 @@ class TaskStage(BaseModel):
1964 # permissions: Permissions = Field(..., alias="permissions")
2065 # actions: Actions = Field(..., alias="actions")
2166
67+ stage : Stage = Field (..., alias = "stage" )
68+ status : TaskStageStatus = Field (..., alias = "status" )
69+ status_timestamps : TaskStageStatusTimestamps = Field (..., alias = "status-timestamps" )
70+
71+ created_at : datetime = Field (..., alias = "created-at" )
72+ updated_at : datetime = Field (..., alias = "updated-at" )
73+
74+ permissions : Optional [Permissions ] = Field (None , alias = "permissions" )
75+ actions : Optional [Actions ] = Field (None , alias = "actions" )
76+
2277 # # Relations
2378 # run: Run = Field(..., alias="run")
2479 # task_results: list[TaskResult] = Field(..., alias="task-results")
2580 # policy_evaluations: list[PolicyEvaluation] = Field(..., alias="policy-evaluations")
81+
82+ run : Optional [dict ] = Field (None , alias = "run" )
83+ task_results : Optional [List ["TaskResult" ]] = Field (None , alias = "task-results" )
84+ policy_evaluations : Optional [List ["PolicyEvaluation" ]] = Field (
85+ None , alias = "policy-evaluations"
86+ )
87+
88+ from pytfe .models .task_result import TaskResult
89+ from pytfe .models .policy_evaluation import PolicyEvaluation
90+
91+ TaskStage .model_rebuild ()
0 commit comments