func()

in pkg/scheduler/scheduler.go [204:234]


func (s *NodeScheduler) ContainerRestartHandler(ctx context.Context) (handler func(pod *v1.Pod, status v1.ContainerStatus)) {
	handler = func(pod *v1.Pod, status v1.ContainerStatus) {
		addon, ok := common.AddonFromPod(pod)
		if !ok {
			return
		}
		s.RegisterAddonRestart(addon)
		state := status.LastTerminationState.Terminated
		var reason, exitCode string
		if state != nil {
			klog.V(1).Infof("container %q restarted because of %s (%d)\n", status.Name, state.Reason, state.ExitCode)
			reason = state.Reason
			exitCode = fmt.Sprint(state.ExitCode)
		} else {
			klog.V(1).Infof("container %q restarted but termination reason unknown\n", status.Name)
			reason = "unknown"
			exitCode = "unknown"
		}

		labels := map[string]string{
			"nodepool":       s.cfg.Nodepool,
			"zone":           s.cfg.Location,
			"container_name": status.Name,
			"reason":         reason,
			"exit_code":      exitCode,
		}
		addAddonLabels(addon, labels)
		s.mr.RecordContainerRestart(ctx, labels)
	}
	return
}