Skip to content

Commit 4978013

Browse files
authored
refactor: standardize logging keys and improve job handling in AppDeployment (#32)
1 parent 3cd6e3e commit 4978013

File tree

4 files changed

+28
-10
lines changed

4 files changed

+28
-10
lines changed

internal/controller/appdeployment_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ type AppDeploymentReconciler struct {
5858
// For more details, check Reconcile and its Result here:
5959
// - https://pkg.go.dev/sigs.k8s.io/[email protected]/pkg/reconcile
6060
func (r *AppDeploymentReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
61-
logger := klog.FromContext(ctx).WithValues(log.AppDeploymentJobName, req.NamespacedName)
61+
logger := klog.FromContext(ctx).WithValues(log.FieldKeyAppDeploymentJobName, req.NamespacedName)
6262
appdeployment := &v1alpha1.AppDeployment{}
6363
if err := r.Get(ctx, req.NamespacedName, appdeployment); err != nil {
6464
return ctrl.Result{}, client.IgnoreNotFound(err)

internal/handler/appdeployment.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package handler
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
7+
"strings"
68

79
"github.com/go-logr/logr"
810
batchv1 "k8s.io/api/batch/v1"
@@ -21,6 +23,10 @@ import (
2123

2224
type AppdeploymentHandlerContextKey struct{}
2325

26+
var (
27+
ErrJobFailed = errors.New("job failed")
28+
)
29+
2430
//go:generate mockgen -destination=./mocks/mock_appdeployment.go -package=mocks github.com/Azure/operation-cache-controller/internal/handler AppDeploymentHandlerInterface
2531
type AppDeploymentHandlerInterface interface {
2632
EnsureApplicationValid(ctx context.Context) (reconciler.OperationResult, error)
@@ -166,7 +172,15 @@ func (a *AppDeploymentHandler) initializeJobAndAwaitCompletion(ctx context.Conte
166172
a.recorder.Event(a.appDeployment, "Error", "FailedDeleteJob", err.Error())
167173
return fmt.Errorf("failed to delete job %s: %w", job.Name, err)
168174
}
169-
// create a new job
175+
// complete the job if it is a teardown job
176+
if strings.HasPrefix(jobTemplate.Name, ctrlutils.JobTypeTeardown) {
177+
a.logger.Error(ErrJobFailed, "teardown job failed", log.FieldKeyAppDeploymentJobName, jobTemplate.Name)
178+
a.recorder.Event(a.appDeployment, "Warning", "TeardownJobFailed", fmt.Sprintf("Teardown job %s failed, requeuing for retry", jobTemplate.Name))
179+
// return nil to make the teardown job complete
180+
return nil
181+
}
182+
183+
// create a new job if it is not a teardown job
170184
if err := ctrl.SetControllerReference(a.appDeployment, jobTemplate, a.client.Scheme()); err != nil {
171185
return fmt.Errorf("failed to set controller reference for job %s: %w", job.Name, err)
172186
}
@@ -203,7 +217,7 @@ func (a *AppDeploymentHandler) EnsureDeployingFinished(ctx context.Context) (rec
203217
a.appDeployment.Status.Phase = v1alpha1.AppDeploymentPhaseReady
204218
return reconciler.RequeueOnErrorOrContinue(a.client.Status().Update(ctx, a.appDeployment))
205219
case errJobNotCompleted:
206-
a.logger.V(1).WithValues(log.AppDeploymentJobName, provisionJob.Name).Info("provision job is not completed yet")
220+
a.logger.V(1).WithValues(log.FieldKeyAppDeploymentJobName, provisionJob.Name).Info("provision job is not completed yet")
207221
return reconciler.Requeue()
208222
default:
209223
a.logger.Error(err, "provision job failed %s", provisionJob.Name)
@@ -224,10 +238,10 @@ func (a *AppDeploymentHandler) EnsureTeardownFinished(ctx context.Context) (reco
224238
a.appDeployment.Status.Phase = v1alpha1.AppDeploymentPhaseDeleted
225239
return reconciler.RequeueOnErrorOrContinue(a.client.Status().Update(ctx, a.appDeployment))
226240
case errJobNotCompleted:
227-
a.logger.V(1).WithValues(log.AppDeploymentJobName, teardownJob.Name).Info("teardown job is not completed yet")
241+
a.logger.V(1).WithValues(log.FieldKeyAppDeploymentJobName, teardownJob.Name).Info("teardown job is not completed yet")
228242
return reconciler.Requeue()
229243
default:
230-
a.logger.WithValues(log.AppDeploymentJobName, teardownJob.Name).Error(err, "teardown job failed %s")
244+
a.logger.WithValues(log.FieldKeyAppDeploymentJobName, teardownJob.Name).Error(err, "teardown job failed %s")
231245
return reconciler.RequeueWithError(err)
232246
}
233247
}

internal/handler/appdeployment_test.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,10 @@ func TestAppDeploymentAdapter_EnsureTeardownFinished(t *testing.T) {
728728
Type: batchv1.JobFailed,
729729
Status: "True",
730730
},
731+
{
732+
Type: batchv1.JobComplete,
733+
Status: "True",
734+
},
731735
},
732736
Failed: 1,
733737
},
@@ -837,13 +841,13 @@ func TestAppDeploymentAdapter_EnsureTeardownFinished(t *testing.T) {
837841
return nil
838842
})
839843
mockClient.EXPECT().Delete(ctx, gomock.Any(), gomock.Any()).Return(nil)
840-
mockClient.EXPECT().Create(ctx, gomock.Any()).Return(nil)
841-
mockRecorder.EXPECT().Event(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()
844+
mockRecorder.EXPECT().Event(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Times(1)
842845
mockStatusWriter.EXPECT().Update(gomock.Any(), gomock.Any()).Return(nil).AnyTimes()
843846
res, err := adapter.EnsureTeardownFinished(ctx)
844847
assert.NoError(t, err)
845-
assert.Equal(t, reconciler.OperationResult{RequeueDelay: reconciler.DefaultRequeueDelay, RequeueRequest: true}, res)
848+
assert.Equal(t, reconciler.OperationResult{RequeueDelay: reconciler.DefaultRequeueDelay, RequeueRequest: false}, res)
846849
})
850+
847851
}
848852

849853
func TestAppDeploymentAdapter_EnsureTeardownFinished_JobErrors(t *testing.T) {

internal/log/const.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ package log
22

33
const (
44
// log keys
5-
AppDeploymentJobName = "jobName"
6-
AppDeploymentName = "appDeploymentName"
5+
FieldKeyAppDeploymentJobName = "jobName"
6+
AppDeploymentName = "appDeploymentName"
77
)

0 commit comments

Comments
 (0)