code: func CheckNodeConditionPredicate(pod *v1.Pod, meta PredicateMetadata, nodeInfo *schedulernodeinfo.NodeInfo) (bool, []PredicateFailureReason, error) {
  	reasons := []PredicateFailureReason{}
  	if nodeInfo == nil || nodeInfo.Node() == nil {
  		return false, []PredicateFailureReason{ErrNodeUnknownCondition}, nil
  	}
  
  	node := nodeInfo.Node()
  	for _, cond := range node.Status.Conditions {
  		// We consider the node for scheduling only when its:
  		// - NodeReady condition status is ConditionTrue,
  		// - NodeNetworkUnavailable condition status is ConditionFalse.
  		if cond.Type == v1.NodeReady && cond.Status != v1.ConditionTrue {
  			reasons = append(reasons, ErrNodeNotReady)
  		} else if cond.Type == v1.NodeNetworkUnavailable && cond.Status != v1.ConditionFalse {
  			reasons = append(reasons, ErrNodeNetworkUnavailable)
  		}
  	}
  
  	if node.Spec.Unschedulable {
  		reasons = append(reasons, ErrNodeUnschedulable)
  	}
  
  	return len(reasons) == 0, reasons, nil
  }
docs: // CheckNodeConditionPredicate checks if a pod can be scheduled on a node reporting
  // network unavailable and not ready condition. Only node conditions are accounted in this predicate.