Skip to content

Commit

Permalink
Merge pull request #1144 from gdasson/main
Browse files Browse the repository at this point in the history
api: Refer condition type constants from `fluxcd/pkg/apis`
  • Loading branch information
stefanprodan committed Apr 23, 2024
2 parents 5de4157 + 3fded0b commit 3e512c5
Show file tree
Hide file tree
Showing 9 changed files with 55 additions and 106 deletions.
51 changes: 0 additions & 51 deletions api/v1/condition_types.go

This file was deleted.

2 changes: 1 addition & 1 deletion internal/controller/kustomization_acl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ stringData:
return resultK.Status.LastAppliedRevision == revision
}, timeout, time.Second).Should(BeTrue())

g.Expect(readyCondition.Reason).To(Equal(kustomizev1.ReconciliationSucceededReason))
g.Expect(readyCondition.Reason).To(Equal(meta.ReconciliationSucceededReason))
})

t.Run("fails to reconcile from cross-namespace source", func(t *testing.T) {
Expand Down
52 changes: 26 additions & 26 deletions internal/controller/kustomization_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ func (r *KustomizationReconciler) Reconcile(ctx context.Context, req ctrl.Reques
// Resolve the source reference and requeue the reconciliation if the source is not found.
artifactSource, err := r.getSource(ctx, obj)
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ArtifactFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ArtifactFailedReason, err.Error())

if apierrors.IsNotFound(err) {
msg := fmt.Sprintf("Source '%s' not found", obj.Spec.SourceRef.String())
Expand All @@ -245,15 +245,15 @@ func (r *KustomizationReconciler) Reconcile(ctx context.Context, req ctrl.Reques
// Requeue the reconciliation if the source artifact is not found.
if artifactSource.GetArtifact() == nil {
msg := fmt.Sprintf("Source artifact not found, retrying in %s", r.requeueDependency.String())
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ArtifactFailedReason, msg)
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ArtifactFailedReason, msg)
log.Info(msg)
return ctrl.Result{RequeueAfter: r.requeueDependency}, nil
}

// Check dependencies and requeue the reconciliation if the check fails.
if len(obj.Spec.DependsOn) > 0 {
if err := r.checkDependencies(ctx, obj, artifactSource); err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.DependencyNotReadyReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.DependencyNotReadyReason, err.Error())
msg := fmt.Sprintf("Dependencies do not meet ready condition, retrying in %s", r.requeueDependency.String())
log.Info(msg)
r.event(obj, artifactSource.GetArtifact().Revision, eventv1.EventSeverityInfo, msg, nil)
Expand All @@ -268,7 +268,7 @@ func (r *KustomizationReconciler) Reconcile(ctx context.Context, req ctrl.Reques
// Requeue at the specified retry interval if the artifact tarball is not found.
if errors.Is(reconcileErr, fetch.ErrFileNotFound) {
msg := fmt.Sprintf("Source is not ready, artifact not found, retrying in %s", r.requeueDependency.String())
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ArtifactFailedReason, msg)
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ArtifactFailedReason, msg)
log.Info(msg)
return ctrl.Result{RequeueAfter: r.requeueDependency}, nil
}
Expand Down Expand Up @@ -333,20 +333,20 @@ func (r *KustomizationReconciler) reconcile(
os.Getenv("SOURCE_CONTROLLER_LOCALHOST"),
ctrl.LoggerFrom(ctx),
).Fetch(src.GetArtifact().URL, src.GetArtifact().Digest, tmpDir); err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ArtifactFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ArtifactFailedReason, err.Error())
return err
}

// check build path exists
dirPath, err := securejoin.SecureJoin(tmpDir, obj.Spec.Path)
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ArtifactFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ArtifactFailedReason, err.Error())
return err
}

if _, err := os.Stat(dirPath); err != nil {
err = fmt.Errorf("kustomization path not found: %w", err)
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ArtifactFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ArtifactFailedReason, err.Error())
return err
}

Expand All @@ -373,33 +373,33 @@ func (r *KustomizationReconciler) reconcile(
// Create the Kubernetes client that runs under impersonation.
kubeClient, statusPoller, err := impersonation.GetClient(ctx)
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ReconciliationFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ReconciliationFailedReason, err.Error())
return fmt.Errorf("failed to build kube client: %w", err)
}

// Generate kustomization.yaml if needed.
k, err := runtime.DefaultUnstructuredConverter.ToUnstructured(obj)
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.BuildFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.BuildFailedReason, err.Error())
return err
}
err = r.generate(unstructured.Unstructured{Object: k}, tmpDir, dirPath)
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.BuildFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.BuildFailedReason, err.Error())
return err
}

// Build the Kustomize overlay and decrypt secrets if needed.
resources, err := r.build(ctx, obj, unstructured.Unstructured{Object: k}, tmpDir, dirPath)
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.BuildFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.BuildFailedReason, err.Error())
return err
}

// Convert the build result into Kubernetes unstructured objects.
objects, err := ssautil.ReadObjects(bytes.NewReader(resources))
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.BuildFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.BuildFailedReason, err.Error())
return err
}

Expand All @@ -421,15 +421,15 @@ func (r *KustomizationReconciler) reconcile(
// Validate and apply resources in stages.
drifted, changeSet, err := r.apply(ctx, resourceManager, obj, revision, objects)
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ReconciliationFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ReconciliationFailedReason, err.Error())
return err
}

// Create an inventory from the reconciled resources.
newInventory := inventory.New()
err = inventory.AddChangeSet(newInventory, changeSet)
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ReconciliationFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ReconciliationFailedReason, err.Error())
return err
}

Expand All @@ -439,13 +439,13 @@ func (r *KustomizationReconciler) reconcile(
// Detect stale resources which are subject to garbage collection.
staleObjects, err := inventory.Diff(oldInventory, newInventory)
if err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.ReconciliationFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.ReconciliationFailedReason, err.Error())
return err
}

// Run garbage collection for stale resources that do not have pruning disabled.
if _, err := r.prune(ctx, resourceManager, obj, revision, staleObjects); err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.PruneFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.PruneFailedReason, err.Error())
return err
}

Expand All @@ -459,7 +459,7 @@ func (r *KustomizationReconciler) reconcile(
isNewRevision,
drifted,
changeSet.ToObjMetadataSet()); err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.HealthCheckFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.HealthCheckFailedReason, err.Error())
return err
}

Expand All @@ -469,7 +469,7 @@ func (r *KustomizationReconciler) reconcile(
// Mark the object as ready.
conditions.MarkTrue(obj,
meta.ReadyCondition,
kustomizev1.ReconciliationSucceededReason,
meta.ReconciliationSucceededReason,
fmt.Sprintf("Applied revision: %s", revision))

return nil
Expand Down Expand Up @@ -856,7 +856,7 @@ func (r *KustomizationReconciler) checkHealth(ctx context.Context,
drifted bool,
objects object.ObjMetadataSet) error {
if len(obj.Spec.HealthChecks) == 0 && !obj.Spec.Wait {
conditions.Delete(obj, kustomizev1.HealthyCondition)
conditions.Delete(obj, meta.HealthyCondition)
return nil
}

Expand All @@ -870,7 +870,7 @@ func (r *KustomizationReconciler) checkHealth(ctx context.Context,
}

if len(objects) == 0 {
conditions.Delete(obj, kustomizev1.HealthyCondition)
conditions.Delete(obj, meta.HealthyCondition)
return nil
}

Expand All @@ -886,12 +886,12 @@ func (r *KustomizationReconciler) checkHealth(ctx context.Context,
}

// Find the previous health check result.
wasHealthy := apimeta.IsStatusConditionTrue(obj.Status.Conditions, kustomizev1.HealthyCondition)
wasHealthy := apimeta.IsStatusConditionTrue(obj.Status.Conditions, meta.HealthyCondition)

// Update status with the reconciliation progress.
message := fmt.Sprintf("Running health checks for revision %s with a timeout of %s", revision, obj.GetTimeout().String())
conditions.MarkReconciling(obj, meta.ProgressingReason, message)
conditions.MarkUnknown(obj, kustomizev1.HealthyCondition, meta.ProgressingReason, message)
conditions.MarkUnknown(obj, meta.HealthyCondition, meta.ProgressingReason, message)
if err := r.patch(ctx, obj, patcher); err != nil {
return fmt.Errorf("unable to update the healthy status to progressing: %w", err)
}
Expand All @@ -902,8 +902,8 @@ func (r *KustomizationReconciler) checkHealth(ctx context.Context,
Timeout: obj.GetTimeout(),
FailFast: r.FailFast,
}); err != nil {
conditions.MarkFalse(obj, meta.ReadyCondition, kustomizev1.HealthCheckFailedReason, err.Error())
conditions.MarkFalse(obj, kustomizev1.HealthyCondition, kustomizev1.HealthCheckFailedReason, err.Error())
conditions.MarkFalse(obj, meta.ReadyCondition, meta.HealthCheckFailedReason, err.Error())
conditions.MarkFalse(obj, meta.HealthyCondition, meta.HealthCheckFailedReason, err.Error())
return fmt.Errorf("health check failed after %s: %w", time.Since(checkStart).String(), err)
}

Expand All @@ -913,7 +913,7 @@ func (r *KustomizationReconciler) checkHealth(ctx context.Context,
r.event(obj, revision, eventv1.EventSeverityInfo, msg, nil)
}

conditions.MarkTrue(obj, kustomizev1.HealthyCondition, meta.SucceededReason, msg)
conditions.MarkTrue(obj, meta.HealthyCondition, meta.SucceededReason, msg)
if err := r.patch(ctx, obj, patcher); err != nil {
return fmt.Errorf("unable to update the healthy status to progressing: %w", err)
}
Expand Down Expand Up @@ -1077,7 +1077,7 @@ func (r *KustomizationReconciler) patch(ctx context.Context,
// Configure the runtime patcher.
patchOpts := []patch.Option{}
ownedConditions := []string{
kustomizev1.HealthyCondition,
meta.HealthyCondition,
meta.ReadyCondition,
meta.ReconcilingCondition,
meta.StalledCondition,
Expand Down
6 changes: 3 additions & 3 deletions internal/controller/kustomization_dependson_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ spec:
g.Eventually(func() bool {
_ = k8sClient.Get(context.Background(), client.ObjectKeyFromObject(kustomization), resultK)
ready := apimeta.FindStatusCondition(resultK.Status.Conditions, meta.ReadyCondition)
return ready.Reason == kustomizev1.ArtifactFailedReason
return ready.Reason == meta.ArtifactFailedReason
}, timeout, time.Second).Should(BeTrue())
})

Expand All @@ -160,7 +160,7 @@ spec:
g.Eventually(func() bool {
_ = k8sClient.Get(context.Background(), client.ObjectKeyFromObject(kustomization), resultK)
ready := apimeta.FindStatusCondition(resultK.Status.Conditions, meta.ReadyCondition)
return ready.Reason == kustomizev1.ReconciliationSucceededReason
return ready.Reason == meta.ReconciliationSucceededReason
}, timeout, time.Second).Should(BeTrue())
})

Expand All @@ -180,7 +180,7 @@ spec:
g.Eventually(func() bool {
_ = k8sClient.Get(context.Background(), client.ObjectKeyFromObject(kustomization), resultK)
ready := apimeta.FindStatusCondition(resultK.Status.Conditions, meta.ReadyCondition)
return ready.Reason == kustomizev1.DependencyNotReadyReason
return ready.Reason == meta.DependencyNotReadyReason
}, timeout, time.Second).Should(BeTrue())
})
}
2 changes: 1 addition & 1 deletion internal/controller/kustomization_force_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,6 @@ stringData:

kstatusCheck.CheckErr(ctx, resultK)

g.Expect(apimeta.IsStatusConditionTrue(resultK.Status.Conditions, kustomizev1.HealthyCondition)).To(BeTrue())
g.Expect(apimeta.IsStatusConditionTrue(resultK.Status.Conditions, meta.HealthyCondition)).To(BeTrue())
})
}
10 changes: 5 additions & 5 deletions internal/controller/kustomization_impersonation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ data:
return resultK.Status.LastAppliedRevision == revision
}, timeout, time.Second).Should(BeTrue())

g.Expect(readyCondition.Reason).To(Equal(kustomizev1.ReconciliationSucceededReason))
g.Expect(readyCondition.Reason).To(Equal(meta.ReconciliationSucceededReason))
})

t.Run("fails to reconcile impersonating the default service account", func(t *testing.T) {
Expand All @@ -131,7 +131,7 @@ data:
g.Eventually(func() bool {
_ = k8sClient.Get(context.Background(), client.ObjectKeyFromObject(kustomization), resultK)
readyCondition = apimeta.FindStatusCondition(resultK.Status.Conditions, meta.ReadyCondition)
return readyCondition.Reason == kustomizev1.ReconciliationFailedReason
return readyCondition.Reason == meta.ReconciliationFailedReason
}, timeout, time.Second).Should(BeTrue())

g.Expect(readyCondition.Message).To(ContainSubstring("system:serviceaccount:%s:default", id))
Expand Down Expand Up @@ -187,7 +187,7 @@ data:
return resultK.Status.LastAppliedRevision == revision
}, timeout, time.Second).Should(BeTrue())

g.Expect(readyCondition.Reason).To(Equal(kustomizev1.ReconciliationSucceededReason))
g.Expect(readyCondition.Reason).To(Equal(meta.ReconciliationSucceededReason))
})

t.Run("can finalize impersonating service account", func(t *testing.T) {
Expand Down Expand Up @@ -288,7 +288,7 @@ data:
return apimeta.IsStatusConditionFalse(resultK.Status.Conditions, meta.ReadyCondition)
}, timeout, time.Second).Should(BeTrue())

g.Expect(readyCondition.Reason).To(Equal(kustomizev1.ReconciliationFailedReason))
g.Expect(readyCondition.Reason).To(Equal(meta.ReconciliationFailedReason))
g.Expect(readyCondition.Message).To(ContainSubstring(`Secret "%s" not found`, secretName))
})

Expand All @@ -314,7 +314,7 @@ data:
return resultK.Status.LastAppliedRevision == revision
}, timeout, time.Second).Should(BeTrue())

g.Expect(readyCondition.Reason).To(Equal(kustomizev1.ReconciliationSucceededReason))
g.Expect(readyCondition.Reason).To(Equal(meta.ReconciliationSucceededReason))
})

}
4 changes: 2 additions & 2 deletions internal/controller/kustomization_validation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func TestKustomizationReconciler_Validation(t *testing.T) {
g.Eventually(func() bool {
_ = k8sClient.Get(context.Background(), client.ObjectKeyFromObject(kustomization), &resultK)
for _, c := range resultK.Status.Conditions {
if c.Reason == kustomizev1.BuildFailedReason {
if c.Reason == meta.BuildFailedReason {
return true
}
}
Expand All @@ -133,7 +133,7 @@ func TestKustomizationReconciler_Validation(t *testing.T) {
g.Eventually(func() bool {
_ = k8sClient.Get(context.Background(), client.ObjectKeyFromObject(overlayKs), &resultK)
for _, c := range resultK.Status.Conditions {
if c.Reason == kustomizev1.BuildFailedReason {
if c.Reason == meta.BuildFailedReason {
return true
}
}
Expand Down
Loading

0 comments on commit 3e512c5

Please sign in to comment.