package com.intrbiz.bergamot.command.admin;
import java.util.List;
import com.intrbiz.bergamot.BergamotCLI;
import com.intrbiz.bergamot.BergamotCLICommand;
import com.intrbiz.bergamot.config.UICfg;
import com.intrbiz.bergamot.health.HealthTracker;
import com.intrbiz.bergamot.health.model.KnownDaemon;
import com.intrbiz.queue.QueueManager;
import com.intrbiz.queue.rabbit.RabbitPool;
public class DiscoverDaemonsCommand extends BergamotCLICommand
{
public DiscoverDaemonsCommand()
{
super();
}
@Override
public String name()
{
return "discover-daemons";
}
@Override
public boolean admin()
{
return true;
}
@Override
public String usage()
{
return "";
}
@Override
public String help()
{
return "Discover the running daemons in a Bergamot Monitoring cluster";
}
@Override
public int execute(BergamotCLI cli, List<String> args) throws Exception
{
// read the UI config and connect to the database
UICfg config = UICfg.loadConfiguration();
// setup the queue manager
QueueManager.getInstance().registerDefaultBroker(new RabbitPool(config.getBroker().getUrl(), config.getBroker().getUsername(), config.getBroker().getPassword()));
// setup the health checker
HealthTracker tracker = HealthTracker.getInstance();
tracker.init();
// health check joins are async, so we need to wait for message to be recieved
Thread.sleep(1_000L);
// list our the daemons we found
System.out.println("Running Daemons:");
for (KnownDaemon daemon : tracker.getDaemons())
{
System.out.println(" " + daemon.getDaemonName() + " (" + daemon.getInstanceId() + "/" + daemon.getRuntimeId() + ") on host " + daemon.getHostName() + " (" + daemon.getHostId() + ") is online");
}
return 0;
}
}