code: func CalculateNodePreferAvoidPodsPriorityMap(pod *v1.Pod, meta interface{}, nodeInfo *schedulernodeinfo.NodeInfo) (schedulerapi.HostPriority, error) {
  	node := nodeInfo.Node()
  	if node == nil {
  		return schedulerapi.HostPriority{}, fmt.Errorf("node not found")
  	}
  	var controllerRef *metav1.OwnerReference
  	if priorityMeta, ok := meta.(*priorityMetadata); ok {
  		controllerRef = priorityMeta.controllerRef
  	} else {
  		// We couldn't parse metadata - fallback to the podspec.
  		controllerRef = metav1.GetControllerOf(pod)
  	}
  
  	if controllerRef != nil {
  		// Ignore pods that are owned by other controller than ReplicationController
  		// or ReplicaSet.
  		if controllerRef.Kind != "ReplicationController" && controllerRef.Kind != "ReplicaSet" {
  			controllerRef = nil
  		}
  	}
  	if controllerRef == nil {
  		return schedulerapi.HostPriority{Host: node.Name, Score: schedulerapi.MaxPriority}, nil
  	}
  
  	avoids, err := v1helper.GetAvoidPodsFromNodeAnnotations(node.Annotations)
  	if err != nil {
  		// If we cannot get annotation, assume it's schedulable there.
  		return schedulerapi.HostPriority{Host: node.Name, Score: schedulerapi.MaxPriority}, nil
  	}
  	for i := range avoids.PreferAvoidPods {
  		avoid := &avoids.PreferAvoidPods[i]
  		if avoid.PodSignature.PodController.Kind == controllerRef.Kind && avoid.PodSignature.PodController.UID == controllerRef.UID {
  			return schedulerapi.HostPriority{Host: node.Name, Score: 0}, nil
  		}
  	}
  	return schedulerapi.HostPriority{Host: node.Name, Score: schedulerapi.MaxPriority}, nil
  }
docs: // CalculateNodePreferAvoidPodsPriorityMap priorities nodes according to the node annotation
  // "scheduler.alpha.kubernetes.io/preferAvoidPods".