class DefaultTaintTolerationFactory implements TaintTolerationFactory {

    @Override
    public List<V1Toleration> buildV1Toleration(Job job, Task task) {
        List<V1Toleration> tolerations = new ArrayList<>();

        // Default taints.
        tolerations.add(Tolerations.TOLERATION_VIRTUAL_KUBLET);
        tolerations.add(Tolerations.TOLERATION_KUBE_SCHEDULER);

        tolerations.add(resolveTierToleration(job));
        resolveAvailabilityZoneToleration(job).ifPresent(tolerations::add);
        resolveGpuInstanceTypeToleration(job).ifPresent(tolerations::add);
        resolveKubeBackendToleration(job).ifPresent(tolerations::add);

        return tolerations;
    }

    @Inject public  DefaultTaintTolerationFactory(DirectKubeConfiguration configuration,
                                         ApplicationSlaManagementService capacityManagement);

}