func()

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
}