From 14b006d480d886353ec0047d557553399e6096c3 Mon Sep 17 00:00:00 2001 From: Gianluca Zuccarelli Date: Wed, 6 Apr 2022 11:01:27 +0100 Subject: [PATCH] worker/clienterrors: add empty packagespec error Add an error case for an empty package spec returned by a depsolve job and mark this with a `4xx` status. --- internal/cloudapi/v2/server.go | 5 +++++ internal/worker/clienterrors/errors.go | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/internal/cloudapi/v2/server.go b/internal/cloudapi/v2/server.go index 8c0833f44..c6064943d 100644 --- a/internal/cloudapi/v2/server.go +++ b/internal/cloudapi/v2/server.go @@ -283,6 +283,11 @@ func generateManifest(ctx context.Context, workers *worker.Server, depsolveJobID return } + if len(depsolveResults.PackageSpecs) == 0 { + jobResult.JobError = clienterrors.WorkerClientError(clienterrors.ErrorEmptyPackageSpecs, "Received empty package specs") + return + } + manifest, err := imageType.Manifest(b, options, repos, depsolveResults.PackageSpecs, seed) if err != nil { reason := "Error generating manifest" diff --git a/internal/worker/clienterrors/errors.go b/internal/worker/clienterrors/errors.go index c288f2bfe..ddc477ff4 100644 --- a/internal/worker/clienterrors/errors.go +++ b/internal/worker/clienterrors/errors.go @@ -21,10 +21,11 @@ const ( ErrorOldResultCompatible ClientErrorCode = 18 ErrorEmptyManifest ClientErrorCode = 19 - ErrorDNFDepsolveError ClientErrorCode = 20 - ErrorDNFMarkingErrors ClientErrorCode = 21 - ErrorDNFOtherError ClientErrorCode = 22 - ErrorRPMMDError ClientErrorCode = 23 + ErrorDNFDepsolveError ClientErrorCode = 20 + ErrorDNFMarkingErrors ClientErrorCode = 21 + ErrorDNFOtherError ClientErrorCode = 22 + ErrorRPMMDError ClientErrorCode = 23 + ErrorEmptyPackageSpecs ClientErrorCode = 24 ) type ClientErrorCode int @@ -68,6 +69,8 @@ func GetStatusCode(err *Error) StatusCode { return JobStatusUserInputError case ErrorManifestDependency: return JobStatusUserInputError + case ErrorEmptyPackageSpecs: + return JobStatusUserInputError case ErrorEmptyManifest: return JobStatusUserInputError default: