Skip to content

Commit 7ead18d

Browse files
committed
Add OCI failure reasons to API
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
1 parent 1966411 commit 7ead18d

File tree

3 files changed

+24
-21
lines changed

3 files changed

+24
-21
lines changed

api/v1beta2/ocirepository_types.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,11 @@ type OCIRepositoryStatus struct {
163163
}
164164

165165
const (
166-
// OCIOperationFailedReason signals that an OCI operation (e.g. pull) failed.
167-
OCIOperationFailedReason string = "OCIOperationFailed"
166+
// OCIPullFailedReason signals that a pull operation failed.
167+
OCIPullFailedReason string = "OCIArtifactPullFailed"
168+
169+
// OCILayerOperationFailedReason signals that an OCI layer operation failed.
170+
OCILayerOperationFailedReason string = "OCIArtifactLayerOperationFailed"
168171
)
169172

170173
// GetConditions returns the status conditions of the object.

controllers/ocirepository_controller.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
333333
if err != nil {
334334
e := serror.NewGeneric(
335335
fmt.Errorf("failed to generate transport for '%s': %w", obj.Spec.URL, err),
336-
sourcev1.OCIOperationFailedReason,
336+
sourcev1.AuthenticationFailedReason,
337337
)
338338
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, e.Err.Error())
339339
return sreconcile.ResultEmpty, e
@@ -355,7 +355,7 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
355355

356356
e := serror.NewGeneric(
357357
fmt.Errorf("failed to determine the artifact tag for '%s': %w", obj.Spec.URL, err),
358-
sourcev1.OCIOperationFailedReason)
358+
sourcev1.ReadOperationFailedReason)
359359
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, e.Err.Error())
360360
return sreconcile.ResultEmpty, e
361361
}
@@ -365,7 +365,7 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
365365
if err != nil {
366366
e := serror.NewGeneric(
367367
fmt.Errorf("failed to pull artifact from '%s': %w", obj.Spec.URL, err),
368-
sourcev1.OCIOperationFailedReason,
368+
sourcev1.OCIPullFailedReason,
369369
)
370370
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, e.Err.Error())
371371
return sreconcile.ResultEmpty, e
@@ -376,7 +376,7 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
376376
if err != nil {
377377
e := serror.NewGeneric(
378378
fmt.Errorf("failed to determine artifact digest: %w", err),
379-
sourcev1.OCIOperationFailedReason,
379+
sourcev1.OCILayerOperationFailedReason,
380380
)
381381
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, e.Err.Error())
382382
return sreconcile.ResultEmpty, e
@@ -390,7 +390,7 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
390390
if err != nil {
391391
e := serror.NewGeneric(
392392
fmt.Errorf("failed to parse artifact manifest: %w", err),
393-
sourcev1.OCIOperationFailedReason,
393+
sourcev1.OCILayerOperationFailedReason,
394394
)
395395
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, e.Err.Error())
396396
return sreconcile.ResultEmpty, e
@@ -417,7 +417,7 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
417417
if err != nil {
418418
e := serror.NewGeneric(
419419
fmt.Errorf("failed to parse artifact layers: %w", err),
420-
sourcev1.OCIOperationFailedReason,
420+
sourcev1.OCILayerOperationFailedReason,
421421
)
422422
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, e.Err.Error())
423423
return sreconcile.ResultEmpty, e
@@ -426,7 +426,7 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
426426
if len(layers) < 1 {
427427
e := serror.NewGeneric(
428428
fmt.Errorf("no layers found in artifact"),
429-
sourcev1.OCIOperationFailedReason,
429+
sourcev1.OCILayerOperationFailedReason,
430430
)
431431
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, e.Err.Error())
432432
return sreconcile.ResultEmpty, e
@@ -436,7 +436,7 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
436436
if err != nil {
437437
e := serror.NewGeneric(
438438
fmt.Errorf("failed to extract the first layer from artifact: %w", err),
439-
sourcev1.OCIOperationFailedReason,
439+
sourcev1.OCILayerOperationFailedReason,
440440
)
441441
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, e.Err.Error())
442442
return sreconcile.ResultEmpty, e
@@ -445,7 +445,7 @@ func (r *OCIRepositoryReconciler) reconcileSource(ctx context.Context, obj *sour
445445
if _, err = untar.Untar(blob, dir); err != nil {
446446
e := serror.NewGeneric(
447447
fmt.Errorf("failed to untar the first layer from artifact: %w", err),
448-
sourcev1.OCIOperationFailedReason,
448+
sourcev1.OCILayerOperationFailedReason,
449449
)
450450
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, e.Reason, e.Err.Error())
451451
return sreconcile.ResultEmpty, e

controllers/ocirepository_controller_test.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ func TestOCIRepository_reconcileSource_authStrategy(t *testing.T) {
329329
}),
330330
},
331331
assertConditions: []metav1.Condition{
332-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "failed to pull artifact from "),
332+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIPullFailedReason, "failed to pull artifact from "),
333333
},
334334
},
335335
{
@@ -350,7 +350,7 @@ func TestOCIRepository_reconcileSource_authStrategy(t *testing.T) {
350350
includeSecret: true,
351351
},
352352
assertConditions: []metav1.Condition{
353-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "failed to pull artifact from "),
353+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIPullFailedReason, "failed to pull artifact from "),
354354
},
355355
},
356356
{
@@ -371,7 +371,7 @@ func TestOCIRepository_reconcileSource_authStrategy(t *testing.T) {
371371
includeSA: true,
372372
},
373373
assertConditions: []metav1.Condition{
374-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "failed to pull artifact from "),
374+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIPullFailedReason, "failed to pull artifact from "),
375375
},
376376
},
377377
{
@@ -413,7 +413,7 @@ func TestOCIRepository_reconcileSource_authStrategy(t *testing.T) {
413413
}),
414414
},
415415
assertConditions: []metav1.Condition{
416-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "failed to pull artifact from "),
416+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIPullFailedReason, "failed to pull artifact from "),
417417
},
418418
},
419419
{
@@ -438,7 +438,7 @@ func TestOCIRepository_reconcileSource_authStrategy(t *testing.T) {
438438
},
439439
},
440440
assertConditions: []metav1.Condition{
441-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "failed to pull artifact from "),
441+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIPullFailedReason, "failed to pull artifact from "),
442442
},
443443
},
444444
}
@@ -761,7 +761,7 @@ func TestOCIRepository_reconcileSource_remoteReference(t *testing.T) {
761761
want: sreconcile.ResultEmpty,
762762
wantErr: true,
763763
assertConditions: []metav1.Condition{
764-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "failed to pull artifact"),
764+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIPullFailedReason, "failed to pull artifact"),
765765
},
766766
},
767767
{
@@ -772,7 +772,7 @@ func TestOCIRepository_reconcileSource_remoteReference(t *testing.T) {
772772
want: sreconcile.ResultEmpty,
773773
wantErr: true,
774774
assertConditions: []metav1.Condition{
775-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "failed to determine the artifact tag for 'oci://%s/podinfo': no match found for semver: <= 6.1.0", server.registryHost),
775+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.ReadOperationFailedReason, "failed to determine the artifact tag for 'oci://%s/podinfo': no match found for semver: <= 6.1.0", server.registryHost),
776776
},
777777
},
778778
{
@@ -783,7 +783,7 @@ func TestOCIRepository_reconcileSource_remoteReference(t *testing.T) {
783783
want: sreconcile.ResultEmpty,
784784
wantErr: true,
785785
assertConditions: []metav1.Condition{
786-
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "failed to pull artifact"),
786+
*conditions.TrueCondition(sourcev1.FetchFailedCondition, sourcev1.OCIPullFailedReason, "failed to pull artifact"),
787787
},
788788
},
789789
{
@@ -1325,7 +1325,7 @@ func TestOCIRepositoryReconciler_notify(t *testing.T) {
13251325
resErr: nil,
13261326
oldObjBeforeFunc: func(obj *sourcev1.OCIRepository) {
13271327
obj.Status.Artifact = &sourcev1.Artifact{Revision: "xxx", Checksum: "yyy"}
1328-
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "fail")
1328+
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, sourcev1.ReadOperationFailedReason, "fail")
13291329
conditions.MarkFalse(obj, meta.ReadyCondition, meta.FailedReason, "foo")
13301330
},
13311331
newObjBeforeFunc: func(obj *sourcev1.OCIRepository) {
@@ -1341,7 +1341,7 @@ func TestOCIRepositoryReconciler_notify(t *testing.T) {
13411341
resErr: nil,
13421342
oldObjBeforeFunc: func(obj *sourcev1.OCIRepository) {
13431343
obj.Status.Artifact = &sourcev1.Artifact{Revision: "xxx", Checksum: "yyy"}
1344-
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, sourcev1.OCIOperationFailedReason, "fail")
1344+
conditions.MarkTrue(obj, sourcev1.FetchFailedCondition, sourcev1.ReadOperationFailedReason, "fail")
13451345
conditions.MarkFalse(obj, meta.ReadyCondition, meta.FailedReason, "foo")
13461346
},
13471347
newObjBeforeFunc: func(obj *sourcev1.OCIRepository) {

0 commit comments

Comments
 (0)