in pkg/controller/controller.go [119:170]
func (c *AppGwIngressController) ProcessEvent(event events.Event) error {
processEventStart := time.Now()
err := c.cniReconciler.Reconcile(context.Background())
if err != nil {
// Not treated as fatal errors, but we log them and emit a warning event.
if c.agicPod != nil {
c.recorder.Event(c.agicPod, v1.EventTypeWarning, events.ReasonFailedCNIConfiguration, err.Error())
}
klog.Warning(err)
}
appGw, cbCtx, err := c.GetAppGw()
if err != nil {
klog.Error("Error Retrieving AppGw for k8s event. ", err)
return err
}
// Reset all ingress Ips and ignore mutating appgw if gateway is in stopped state
if !c.isApplicationGatewayMutable(appGw) {
klog.Info("Reset all ingress ip")
c.ResetAllIngress(appGw, cbCtx)
klog.Info("Ignore mutating App Gateway as it is not mutable")
return nil
}
if err := c.MutateAllIngress(appGw, cbCtx); err != nil {
klog.Error("Error mutating AKS from k8s event. ", err)
}
if err := c.MutateAppGateway(event, appGw, cbCtx); err != nil {
klogIt := klog.Errorf
if cbCtx.EnvVariables.EnablePanicOnPutError {
klogIt = klog.Fatalf
}
if c.agicPod != nil {
c.recorder.Event(c.agicPod, v1.EventTypeWarning, events.ReasonFailedApplyingAppGwConfig, err.Error())
}
klogIt(err.Error())
c.MetricStore.IncArmAPIUpdateCallFailureCounter()
return err
}
c.MetricStore.IncArmAPIUpdateCallSuccessCounter()
duration := time.Since(processEventStart)
c.MetricStore.SetUpdateLatencySec(duration)
// We keep this at log level 1 to show some heartbeat in the logs. Without this it is way too quiet.
klog.V(1).Infof("Completed last event loop run in: %+v", duration)
return nil
}