Reduce hot run polling pressure
This commit is contained in:
+47
-27
@@ -888,31 +888,31 @@ type JobRetryPolicyResponse struct {
|
||||
}
|
||||
|
||||
type JobResponse struct {
|
||||
ID string `json:"id"`
|
||||
ServerInstanceID string `json:"serverInstanceId,omitempty"`
|
||||
RunEndpointID string `json:"runEndpointId"`
|
||||
Capability string `json:"capability"`
|
||||
TargetKey string `json:"targetKey,omitempty"`
|
||||
InputRef string `json:"inputRef,omitempty"`
|
||||
IdempotencyKey string `json:"idempotencyKey"`
|
||||
State domain.JobState `json:"state"`
|
||||
Progress JobProgressBody `json:"progress"`
|
||||
ResultRef string `json:"resultRef,omitempty"`
|
||||
ExecutionResult JobExecutionResultResponse `json:"executionResult,omitempty"`
|
||||
RetryPolicy JobRetryPolicyResponse `json:"retryPolicy"`
|
||||
Attempt int `json:"attempt"`
|
||||
NextAttemptAt *time.Time `json:"nextAttemptAt,omitempty"`
|
||||
AckDeadlineAt *time.Time `json:"ackDeadlineAt,omitempty"`
|
||||
LeaseExpiresAt *time.Time `json:"leaseExpiresAt,omitempty"`
|
||||
CancelReason string `json:"cancelReason,omitempty"`
|
||||
CancelRequestedAt *time.Time `json:"cancelRequestedAt,omitempty"`
|
||||
CancelCompletedAt *time.Time `json:"cancelCompletedAt,omitempty"`
|
||||
TerminalAt *time.Time `json:"terminalAt,omitempty"`
|
||||
LastReconciledAt *time.Time `json:"lastReconciledAt,omitempty"`
|
||||
ReconcileCount int `json:"reconcileCount"`
|
||||
ReconcileOutcome string `json:"reconcileOutcome,omitempty"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
UpdatedAt time.Time `json:"updatedAt"`
|
||||
ID string `json:"id"`
|
||||
ServerInstanceID string `json:"serverInstanceId,omitempty"`
|
||||
RunEndpointID string `json:"runEndpointId"`
|
||||
Capability string `json:"capability"`
|
||||
TargetKey string `json:"targetKey,omitempty"`
|
||||
InputRef string `json:"inputRef,omitempty"`
|
||||
IdempotencyKey string `json:"idempotencyKey"`
|
||||
State domain.JobState `json:"state"`
|
||||
Progress JobProgressBody `json:"progress"`
|
||||
ResultRef string `json:"resultRef,omitempty"`
|
||||
ExecutionResult *JobExecutionResultResponse `json:"executionResult,omitempty"`
|
||||
RetryPolicy JobRetryPolicyResponse `json:"retryPolicy"`
|
||||
Attempt int `json:"attempt"`
|
||||
NextAttemptAt *time.Time `json:"nextAttemptAt,omitempty"`
|
||||
AckDeadlineAt *time.Time `json:"ackDeadlineAt,omitempty"`
|
||||
LeaseExpiresAt *time.Time `json:"leaseExpiresAt,omitempty"`
|
||||
CancelReason string `json:"cancelReason,omitempty"`
|
||||
CancelRequestedAt *time.Time `json:"cancelRequestedAt,omitempty"`
|
||||
CancelCompletedAt *time.Time `json:"cancelCompletedAt,omitempty"`
|
||||
TerminalAt *time.Time `json:"terminalAt,omitempty"`
|
||||
LastReconciledAt *time.Time `json:"lastReconciledAt,omitempty"`
|
||||
ReconcileCount int `json:"reconcileCount"`
|
||||
ReconcileOutcome string `json:"reconcileOutcome,omitempty"`
|
||||
CreatedAt time.Time `json:"createdAt"`
|
||||
UpdatedAt time.Time `json:"updatedAt"`
|
||||
}
|
||||
|
||||
type JobExecutionResultResponse struct {
|
||||
@@ -1990,6 +1990,18 @@ func RunEndpointListFromDomain(endpoints []domain.RunEndpoint) RunEndpointListRe
|
||||
}
|
||||
|
||||
func JobFromDomain(job domain.Job) JobResponse {
|
||||
return jobResponseFromDomain(job, true)
|
||||
}
|
||||
|
||||
func JobListItemFromDomain(job domain.Job) JobResponse {
|
||||
return jobResponseFromDomain(job, false)
|
||||
}
|
||||
|
||||
func jobResponseFromDomain(job domain.Job, includeExecutionResult bool) JobResponse {
|
||||
var executionResult *JobExecutionResultResponse
|
||||
if includeExecutionResult {
|
||||
executionResult = jobExecutionResultFromDomain(job.ExecutionResult)
|
||||
}
|
||||
return JobResponse{
|
||||
ID: job.ID,
|
||||
ServerInstanceID: job.ServerInstanceID,
|
||||
@@ -2001,7 +2013,7 @@ func JobFromDomain(job domain.Job) JobResponse {
|
||||
State: job.State,
|
||||
Progress: progressFromDomain(job.Progress),
|
||||
ResultRef: job.ResultRef,
|
||||
ExecutionResult: JobExecutionResultResponse{Kind: job.ExecutionResult.Kind, ProcessState: job.ExecutionResult.ProcessState, ExitClassification: job.ExecutionResult.ExitClassification, ExitCode: job.ExecutionResult.ExitCode, Version: job.ExecutionResult.Version, Checksum: job.ExecutionResult.Checksum, SizeBytes: job.ExecutionResult.SizeBytes, Summary: job.ExecutionResult.Summary, ServerDeploymentEvidence: serverDeploymentEvidenceFromDomain(job.ExecutionResult.ServerDeploymentEvidence)},
|
||||
ExecutionResult: executionResult,
|
||||
RetryPolicy: JobRetryPolicyResponse{
|
||||
MaxAttempts: job.RetryPolicy.MaxAttempts,
|
||||
InitialBackoffSeconds: job.RetryPolicy.InitialBackoffSeconds,
|
||||
@@ -2023,6 +2035,14 @@ func JobFromDomain(job domain.Job) JobResponse {
|
||||
}
|
||||
}
|
||||
|
||||
func jobExecutionResultFromDomain(result domain.JobExecutionResult) *JobExecutionResultResponse {
|
||||
response := JobExecutionResultResponse{Kind: result.Kind, ProcessState: result.ProcessState, ExitClassification: result.ExitClassification, ExitCode: result.ExitCode, Version: result.Version, Checksum: result.Checksum, SizeBytes: result.SizeBytes, Summary: result.Summary, ServerDeploymentEvidence: serverDeploymentEvidenceFromDomain(result.ServerDeploymentEvidence)}
|
||||
if response.Kind == "" && response.ProcessState == "" && response.ExitClassification == "" && response.ExitCode == 0 && response.Version == 0 && response.Checksum == "" && response.SizeBytes == 0 && response.Summary == "" && response.ServerDeploymentEvidence == nil {
|
||||
return nil
|
||||
}
|
||||
return &response
|
||||
}
|
||||
|
||||
func optionalTime(value time.Time) *time.Time {
|
||||
if value.IsZero() {
|
||||
return nil
|
||||
@@ -2034,7 +2054,7 @@ func optionalTime(value time.Time) *time.Time {
|
||||
func JobListFromDomain(jobs []domain.Job) JobListResponse {
|
||||
items := make([]JobResponse, len(jobs))
|
||||
for i, job := range jobs {
|
||||
items[i] = JobFromDomain(job)
|
||||
items[i] = JobListItemFromDomain(job)
|
||||
}
|
||||
return JobListResponse{Items: items, Count: len(items)}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user