-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
optimize resourceconsist controller events #38
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -136,6 +136,9 @@ func (r *Consist) Reconcile(ctx context.Context, request reconcile.Request) (rec | |
employer = &corev1.Service{} | ||
} | ||
|
||
logger := r.logger.WithValues("resourceconsist", request.String(), "kind", employer.GetObjectKind().GroupVersionKind().Kind) | ||
defer logger.Info("reconcile finished") | ||
|
||
if _, ok := r.adapter.(MultiClusterOptions); ok { | ||
err = r.Client.Get(clusterinfo.WithCluster(ctx, clusterinfo.Fed), types.NamespacedName{ | ||
Namespace: request.Namespace, | ||
|
@@ -152,100 +155,85 @@ func (r *Consist) Reconcile(ctx context.Context, request reconcile.Request) (rec | |
if errors.IsNotFound(err) { | ||
return reconcile.Result{}, nil | ||
} | ||
r.logger.Error(err, fmt.Sprintf("get %s: %s/%s failed", employer.GetObjectKind().GroupVersionKind().Kind, | ||
request.Namespace, request.Name)) | ||
logger.Error(err, "get employer failed") | ||
return reconcile.Result{}, err | ||
} | ||
|
||
// ensure employer-clean finalizer firstly, employer-clean finalizer should be cleaned at the end | ||
// Ensure employer-clean finalizer firstly, employer-clean finalizer should be cleaned at the end | ||
updated, err := r.ensureEmployerCleanFlz(ctx, employer) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("add employer-clean finalizer for %s: %s/%s failed", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "ensureEmployerCleanFlzFailed", | ||
"add employer-clean finalizer failed: %s", err.Error()) | ||
logger.Error(err, "add employer clean finalizer failed") | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, EnsureEmployerCleanFinalizerFailed, | ||
"add employer clean finalizer failed: %s", err.Error()) | ||
return reconcile.Result{}, err | ||
} | ||
if updated { | ||
r.logger.Info(fmt.Sprintf("add employer-clean finalizer for %s: %s/%s", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeNormal, "ensureEmployerCleanFlzSucceed", | ||
"add employer-clean finalizer") | ||
logger.Info("add employer clean finalizer succeed") | ||
r.recorder.Event(employer, corev1.EventTypeNormal, EnsureEmployerCleanFinalizerSucceed, | ||
"add employer clean finalizer succeed") | ||
return reconcile.Result{}, nil | ||
} | ||
|
||
isExpectedClean, err := r.ensureExpectedFinalizer(ctx, employer) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("ensure employees' expected finalizer failed for %s: %s/%s", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "ensureExpectedFinalizerFailed", | ||
"ensure employees' expected finalizer failed: %s", err.Error()) | ||
logger.Error(err, "ensure employees expected finalizer failed") | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, EnsureExpectedFinalizerFailed, | ||
"ensure employees expected finalizer failed: %s", err.Error()) | ||
return reconcile.Result{}, err | ||
} | ||
|
||
// Sync employer | ||
expectedEmployer, err := r.adapter.GetExpectedEmployer(ctx, employer) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("get expected employer for %s: %s/%s failed", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "GetExpectEmployerFailed", | ||
"get expect employer failed: %s", err.Error()) | ||
logger.Error(err, "get expect employer failed") | ||
return reconcile.Result{}, err | ||
} | ||
currentEmployer, err := r.adapter.GetCurrentEmployer(ctx, employer) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("get current employer for %s: %s/%s failed", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "GetCurrentEmployerFailed", | ||
"get current employer failed: %s", err.Error()) | ||
logger.Error(err, "get current employer failed") | ||
return reconcile.Result{}, err | ||
} | ||
isCleanEmployer, syncEmployerFailedExist, cudEmployerResults, err := r.syncEmployer(ctx, employer, expectedEmployer, currentEmployer) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("sync employer for %s: %s/%s failed", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "syncEmployerFailed", | ||
logger.Error(err, "sync employer failed") | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, SyncEmployerFailed, | ||
"sync employer failed: %s", err.Error()) | ||
return reconcile.Result{}, err | ||
} | ||
|
||
expectEmployees, err := r.adapter.GetExpectedEmployee(ctx, employer) | ||
// Sync employees | ||
expectedEmployees, err := r.adapter.GetExpectedEmployee(ctx, employer) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("get expect employees for %s: %s/%s failed", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "GetExpectEmployeeFailed", | ||
"get expect employees failed: %s", err.Error()) | ||
logger.Error(err, "get expect employees failed") | ||
return reconcile.Result{}, err | ||
} | ||
currentEmployees, err := r.adapter.GetCurrentEmployee(ctx, employer) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("get current employees for %s: %s/%s failed", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "GetCurrentEmployeeFailed", | ||
"get current employees failed: %s", err.Error()) | ||
logger.Error(err, "get current employees failed") | ||
return reconcile.Result{}, err | ||
} | ||
isCleanEmployee, syncEmployeeFailedExist, cudEmployeeResults, err := r.syncEmployees(ctx, employer, expectEmployees, currentEmployees) | ||
isCleanEmployee, syncEmployeeFailedExist, cudEmployeeResults, err := r.syncEmployees(ctx, employer, expectedEmployees, currentEmployees) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("sync employees for %s: %s/%s failed", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "syncEmployeesFailed", | ||
logger.Error(err, "sync employees failed") | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, SyncEmployeesFailed, | ||
"sync employees failed: %s", err.Error()) | ||
return reconcile.Result{}, err | ||
} | ||
|
||
if isCleanEmployer && isCleanEmployee && isExpectedClean && !employer.GetDeletionTimestamp().IsZero() { | ||
err = r.cleanEmployerCleanFinalizer(ctx, employer) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("clean employer clean-finalizer for %s: %s/%s failed", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "cleanEmployerCleanFinalizerFailed", | ||
logger.Error(err, "clean employer clean-finalizer failed") | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, CleanEmployerCleanFinalizerFailed, | ||
"clean employer clean-finalizer failed: %s", err.Error()) | ||
return reconcile.Result{}, err | ||
} else { | ||
r.recorder.Event(employer, corev1.EventTypeNormal, CleanEmployerCleanFinalizerSucceed, | ||
"clean employer clean finalizer succeed") | ||
} | ||
} | ||
|
||
if syncEmployerFailedExist || syncEmployeeFailedExist { | ||
r.recorder.Eventf(employer, corev1.EventTypeNormal, "ReconcileFailed", "employer or employees synced failed exist") | ||
requeueOptions, requeueOptionsImplemented := r.adapter.(ReconcileRequeueOptions) | ||
if requeueOptionsImplemented { | ||
return reconcile.Result{RequeueAfter: requeueOptions.EmployeeSyncRequeueInterval()}, nil | ||
|
@@ -256,14 +244,10 @@ func (r *Consist) Reconcile(ctx context.Context, request reconcile.Request) (rec | |
if recordOptions, ok := r.adapter.(StatusRecordOptions); ok { | ||
err = recordOptions.RecordStatuses(ctx, employer, cudEmployerResults, cudEmployeeResults) | ||
if err != nil { | ||
r.logger.Error(err, fmt.Sprintf("record status for %s: %s/%s failed", | ||
employer.GetObjectKind().GroupVersionKind().Kind, employer.GetNamespace(), employer.GetName())) | ||
r.recorder.Eventf(employer, corev1.EventTypeWarning, "recordStatusesFailed", | ||
"record status for employer failed: %s", err.Error()) | ||
logger.Error(err, "record status failed") | ||
return reconcile.Result{}, err | ||
} | ||
} | ||
|
||
r.recorder.Eventf(employer, corev1.EventTypeNormal, "ReconcileSucceed", "") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I noticed that some events ignored. Could u explain why those events ignored and how to choose what events should be remained? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Generally speaking, event is for common users, and log is for controller developers, we can separate them for better performance. If we meet a problem, we can firstly view the events, then if we need more detail message, we can search the logs. |
||
return reconcile.Result{}, nil | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should we ignore this event? same to GetExpectEmployeeFailed