@Override
public void run(final boolean timeout) throws InterruptedException {
final List<String> allHosts = masterModel.listHosts();
final Map<String, Map<String, String>> hostsToLabels = Maps.newHashMap();
for (final String host : allHosts) {
final HostStatus hostStatus = masterModel.getHostStatus(host);
if (hostStatus != null) {
hostsToLabels.put(host, hostStatus.getLabels());
}
}
final HostMatcher hostMatcher = new HostMatcher(hostsToLabels);
for (final DeploymentGroup dg : masterModel.getDeploymentGroups().values()) {
final List<String> matchingHosts = hostMatcher.getMatchingHosts(dg);
try {
masterModel.updateDeploymentGroupHosts(dg.getName(), matchingHosts);
} catch (Exception e) {
log.warn("error processing hosts update for deployment group: {} - {}", dg.getName(), e);
}
}
}
}