package com.hubspot.singularity.scheduler;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.hubspot.singularity.MachineState;
import com.hubspot.singularity.SingularitySlave;
import com.hubspot.singularity.data.SlaveManager;
@Singleton
public class SingularityUsageHelper {
private final SlaveManager slaveManager;
@Inject
public SingularityUsageHelper(SlaveManager slaveManager) {
this.slaveManager = slaveManager;
}
public Set<String> getSlaveIdsToTrackUsageFor() {
List<SingularitySlave> slaves = getSlavesToTrackUsageFor();
Set<String> slaveIds = new HashSet<>(slaves.size());
for (SingularitySlave slave : slaves) {
slaveIds.add(slave.getId());
}
return slaveIds;
}
public List<SingularitySlave> getSlavesToTrackUsageFor() {
List<SingularitySlave> slaves = slaveManager.getObjects();
List<SingularitySlave> slavesToTrack = new ArrayList<>(slaves.size());
for (SingularitySlave slave : slaves) {
if (slave.getCurrentState().getState().isInactive() || slave.getCurrentState().getState() == MachineState.DECOMMISSIONED) {
continue;
}
slavesToTrack.add(slave);
}
return slavesToTrack;
}
}