package tech.powerjob.server.remote.worker.filter; import tech.powerjob.common.model.SystemMetrics; import tech.powerjob.server.persistence.remote.model.JobInfoDO; import tech.powerjob.server.common.module.WorkerInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; /** * filter worker by system metric * * @author tjq * @since 2021/2/19 */ @Slf4j @Component public class SystemMetricsWorkerFilter implements WorkerFilter { @Override public boolean filter(WorkerInfo workerInfo, JobInfoDO jobInfo) { SystemMetrics metrics = workerInfo.getSystemMetrics(); boolean filter = !metrics.available(jobInfo.getMinCpuCores(), jobInfo.getMinMemorySpace(), jobInfo.getMinDiskSpace()); if (filter) { log.info("[Job-{}] filter worker[{}] because the {} do not meet the requirements", jobInfo.getId(), workerInfo.getAddress(), workerInfo.getSystemMetrics()); } return filter; } }