feat: 完整游戏运维功能
This commit is contained in:
@@ -45,6 +45,12 @@ func ValidateRunJobResult(result domain.RunJobResult) error {
|
||||
violations = appendProgressViolations(violations, result.Progress)
|
||||
violations = appendMessageLength(violations, "message", result.Message)
|
||||
violations = appendMessageLength(violations, "errorCode", result.ErrorCode)
|
||||
if len([]byte(result.ExecutionResult.Content)) > maxJobChannelMessageLength*256 {
|
||||
violations = append(violations, "executionResult.content is too large")
|
||||
}
|
||||
if result.ExecutionResult.Checksum != "" && !validSHA256Checksum(result.ExecutionResult.Checksum) {
|
||||
violations = append(violations, "executionResult.checksum must be sha256:<hex>")
|
||||
}
|
||||
return finish(violations)
|
||||
}
|
||||
|
||||
@@ -54,6 +60,35 @@ func ValidateDistributionBuildInputRequest(request domain.DistributionBuildInput
|
||||
return finish(violations)
|
||||
}
|
||||
|
||||
func ValidateDependencyExecutionInputRequest(request domain.DependencyExecutionInputRequest) error {
|
||||
return finish(appendLeaseFields(nil, request.RunEndpointID, request.SessionToken, request.JobID, request.LeaseToken, request.Attempt))
|
||||
}
|
||||
|
||||
func ValidateRunUpdateInputRequest(request domain.RunUpdateInputRequest) error {
|
||||
return finish(appendLeaseFields(nil, request.RunEndpointID, request.SessionToken, request.JobID, request.LeaseToken, request.Attempt))
|
||||
}
|
||||
|
||||
func ValidateRunUpdateChunkRequest(request domain.RunUpdateChunkRequest) error {
|
||||
violations := appendLeaseFields(nil, request.RunEndpointID, request.SessionToken, request.JobID, request.LeaseToken, request.Attempt)
|
||||
if request.Offset < 0 {
|
||||
violations = append(violations, "offset must not be negative")
|
||||
}
|
||||
if request.Length <= 0 || request.Length > 1024*1024 {
|
||||
violations = append(violations, "length must be between 1 and 1048576")
|
||||
}
|
||||
return finish(violations)
|
||||
}
|
||||
|
||||
func ValidateRunUpdateHealthReport(report domain.RunUpdateHealthReport) error {
|
||||
violations := appendLeaseFields(nil, report.RunEndpointID, report.SessionToken, report.JobID, report.LeaseToken, report.Attempt)
|
||||
if report.Outcome != "succeeded" && report.Outcome != "rolled-back" {
|
||||
violations = append(violations, "outcome must be succeeded or rolled-back")
|
||||
}
|
||||
violations = appendRequired(violations, "version", report.Version)
|
||||
violations = appendMessageLength(violations, "version", report.Version)
|
||||
return finish(violations)
|
||||
}
|
||||
|
||||
func ValidateRunJobCancelRequest(request domain.RunJobCancelRequest) error {
|
||||
var violations []string
|
||||
violations = appendRequired(violations, "jobId", request.JobID)
|
||||
@@ -64,11 +99,7 @@ func ValidateRunJobCancelRequest(request domain.RunJobCancelRequest) error {
|
||||
|
||||
func ValidateRunJobCancelPoll(poll domain.RunJobCancelPoll) error {
|
||||
var violations []string
|
||||
violations = appendRequired(violations, "runEndpointId", poll.RunEndpointID)
|
||||
violations = appendRequired(violations, "sessionToken", poll.SessionToken)
|
||||
if poll.LeaseToken != "" && strings.TrimSpace(poll.JobID) == "" {
|
||||
violations = append(violations, "jobId is required when leaseToken is provided")
|
||||
}
|
||||
violations = appendLeaseFields(violations, poll.RunEndpointID, poll.SessionToken, poll.JobID, poll.LeaseToken, poll.Attempt)
|
||||
return finish(violations)
|
||||
}
|
||||
|
||||
@@ -77,16 +108,17 @@ func ValidateRunJobReconcile(reconcile domain.RunJobReconcile) error {
|
||||
violations = appendRequired(violations, "runEndpointId", reconcile.RunEndpointID)
|
||||
violations = appendRequired(violations, "sessionToken", reconcile.SessionToken)
|
||||
seen := map[string]struct{}{}
|
||||
for i, jobID := range reconcile.ActiveJobIDs {
|
||||
jobID = strings.TrimSpace(jobID)
|
||||
if jobID == "" {
|
||||
violations = append(violations, fmt.Sprintf("activeJobIds[%d] is required", i))
|
||||
continue
|
||||
for i, entry := range reconcile.ActiveJobs {
|
||||
prefix := fmt.Sprintf("activeJobs[%d]", i)
|
||||
violations = appendRequired(violations, prefix+".jobId", entry.JobID)
|
||||
violations = appendRequired(violations, prefix+".leaseToken", entry.LeaseToken)
|
||||
if entry.Attempt <= 0 {
|
||||
violations = append(violations, prefix+".attempt must be positive")
|
||||
}
|
||||
if _, exists := seen[jobID]; exists {
|
||||
violations = append(violations, fmt.Sprintf("activeJobIds[%d] duplicates %q", i, jobID))
|
||||
if _, exists := seen[entry.JobID]; exists {
|
||||
violations = append(violations, fmt.Sprintf("%s duplicates %q", prefix, entry.JobID))
|
||||
}
|
||||
seen[jobID] = struct{}{}
|
||||
seen[entry.JobID] = struct{}{}
|
||||
}
|
||||
return finish(violations)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user