class KubeUtil {

    public static boolean hasFenzoSchedulerTaint(V1Node node) {
        List<V1Taint> taints = node.getSpec().getTaints();

        // Ignore nodes with no taints or an 'uninitialized' taint
        if (CollectionsExt.isNullOrEmpty(taints) || hasUninitializedTaint(node)) {
            return false;
        }

        Set<String> schedulerTaintValues = taints.stream()
                .filter(t -> KubeConstants.TAINT_SCHEDULER.equals(t.getKey()))
                .map(t -> StringExt.safeTrim(t.getValue()))
                .collect(Collectors.toSet());

        if (schedulerTaintValues.isEmpty()) {
            return true;
        }

        return schedulerTaintValues.size() == 1 && KubeConstants.TAINT_SCHEDULER_VALUE_FENZO.equalsIgnoreCase(CollectionsExt.first(schedulerTaintValues));
    }

}