fix: accept failed operator results without revision identity
This commit is contained in:
@@ -357,11 +357,13 @@ func validateResult(result Result) error {
|
|||||||
if !workspacePattern.MatchString(result.WorkspaceID) {
|
if !workspacePattern.MatchString(result.WorkspaceID) {
|
||||||
return errors.New("workspace maintenance returned an invalid workspace identity")
|
return errors.New("workspace maintenance returned an invalid workspace identity")
|
||||||
}
|
}
|
||||||
if len(result.WorkspaceRevision) != 40 || !isLowerHex(result.WorkspaceRevision) {
|
if result.Status != "failed" {
|
||||||
return errors.New("workspace maintenance returned an invalid workspace revision")
|
if len(result.WorkspaceRevision) != 40 || !isLowerHex(result.WorkspaceRevision) {
|
||||||
}
|
return errors.New("workspace maintenance returned an invalid workspace revision")
|
||||||
if !strings.HasPrefix(result.DescriptorBlob, "sha256:") || len(result.DescriptorBlob) != len("sha256:")+64 || !isLowerHex(strings.TrimPrefix(result.DescriptorBlob, "sha256:")) {
|
}
|
||||||
return errors.New("workspace maintenance returned an invalid descriptor digest")
|
if !strings.HasPrefix(result.DescriptorBlob, "sha256:") || len(result.DescriptorBlob) != len("sha256:")+64 || !isLowerHex(strings.TrimPrefix(result.DescriptorBlob, "sha256:")) {
|
||||||
|
return errors.New("workspace maintenance returned an invalid descriptor digest")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
validStatuses := map[string]struct{}{"succeeded": {}, "unchanged": {}, "dry_run": {}, "blocked": {}, "failed": {}}
|
validStatuses := map[string]struct{}{"succeeded": {}, "unchanged": {}, "dry_run": {}, "blocked": {}, "failed": {}}
|
||||||
if _, ok := validStatuses[result.Status]; !ok {
|
if _, ok := validStatuses[result.Status]; !ok {
|
||||||
@@ -370,9 +372,11 @@ func validateResult(result Result) error {
|
|||||||
if strings.TrimSpace(result.Code) == "" || strings.TrimSpace(result.Operation) == "" || result.CompletedStages == nil {
|
if strings.TrimSpace(result.Code) == "" || strings.TrimSpace(result.Operation) == "" || result.CompletedStages == nil {
|
||||||
return errors.New("workspace maintenance omitted required fields")
|
return errors.New("workspace maintenance omitted required fields")
|
||||||
}
|
}
|
||||||
for _, digest := range result.ArtifactIdentities {
|
if result.Status != "failed" {
|
||||||
if strings.TrimSpace(digest.Kind) == "" || !strings.HasPrefix(digest.Digest, "sha256:") {
|
for _, digest := range result.ArtifactIdentities {
|
||||||
return errors.New("workspace maintenance returned an invalid artifact identity")
|
if strings.TrimSpace(digest.Kind) == "" || !strings.HasPrefix(digest.Digest, "sha256:") {
|
||||||
|
return errors.New("workspace maintenance returned an invalid artifact identity")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Reference in New Issue
Block a user