Add run lifecycle report projection
This commit is contained in:
@@ -54,6 +54,30 @@ func ValidateRunJobResult(result domain.RunJobResult) error {
|
||||
return finish(violations)
|
||||
}
|
||||
|
||||
func ValidateRunLifecycleReport(report domain.RunLifecycleReport) error {
|
||||
var violations []string
|
||||
violations = appendRequired(violations, "runEndpointId", report.RunEndpointID)
|
||||
violations = appendRequired(violations, "sessionToken", report.SessionToken)
|
||||
violations = appendRequired(violations, "serverInstanceId", report.ServerInstanceID)
|
||||
violations = appendRequired(violations, "capability", report.Capability)
|
||||
if !validLifecycleReportCapability(report.Capability) {
|
||||
violations = append(violations, "capability must be process.install, process.start, process.stop, or process.status")
|
||||
}
|
||||
if !validTerminalJobState(report.State) {
|
||||
violations = append(violations, "state must be succeeded, failed, or cancelled")
|
||||
}
|
||||
violations = appendProgressViolations(violations, report.Progress)
|
||||
violations = appendMessageLength(violations, "message", report.Message)
|
||||
violations = appendMessageLength(violations, "errorCode", report.ErrorCode)
|
||||
if len([]byte(report.ExecutionResult.Content)) > maxJobChannelMessageLength*256 {
|
||||
violations = append(violations, "executionResult.content is too large")
|
||||
}
|
||||
if report.ExecutionResult.Checksum != "" && !validSHA256Checksum(report.ExecutionResult.Checksum) {
|
||||
violations = append(violations, "executionResult.checksum must be sha256:<hex>")
|
||||
}
|
||||
return finish(violations)
|
||||
}
|
||||
|
||||
func ValidateDistributionBuildInputRequest(request domain.DistributionBuildInputRequest) error {
|
||||
var violations []string
|
||||
violations = appendLeaseFields(violations, request.RunEndpointID, request.SessionToken, request.JobID, request.LeaseToken, request.Attempt)
|
||||
@@ -159,7 +183,7 @@ func appendProgressViolations(violations []string, progress domain.RunJobProgres
|
||||
|
||||
func validDeploymentProgressPhase(phase string) bool {
|
||||
switch phase {
|
||||
case "queued", "claimed", "preflight", "install", "configure", "start", "health":
|
||||
case "queued", "claimed", "preflight", "install", "configure", "start", "stop", "status", "health":
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
@@ -181,3 +205,12 @@ func validTerminalJobState(state domain.JobState) bool {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
func validLifecycleReportCapability(capability string) bool {
|
||||
switch capability {
|
||||
case domain.LifecycleCapabilityInstall, domain.LifecycleCapabilityStart, domain.LifecycleCapabilityStop, domain.LifecycleCapabilityStatus:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user