package com.hubspot.baragon.agent; import org.eclipse.jetty.server.Server; import com.hubspot.baragon.agent.bundles.CorsBundle; import com.hubspot.baragon.agent.config.BaragonAgentConfiguration; import com.hubspot.baragon.agent.managed.LifecycleHelper; import com.hubspot.baragon.auth.BaragonAuthBundle; import com.hubspot.dropwizard.guicier.GuiceBundle; import com.palominolabs.metrics.guice.MetricsInstrumentationModule; import io.dropwizard.Application; import io.dropwizard.lifecycle.ServerLifecycleListener; import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Environment; public class BaragonAgentService extends Application<BaragonAgentConfiguration> { private GuiceBundle<BaragonAgentConfiguration> guiceBundle; @Override public void initialize(Bootstrap<BaragonAgentConfiguration> bootstrap) { guiceBundle = GuiceBundle.defaultBuilder(BaragonAgentConfiguration.class) .modules(new BaragonAgentServiceModule()) .modules(new MetricsInstrumentationModule(bootstrap.getMetricRegistry())) .build(); bootstrap.addBundle(new CorsBundle()); bootstrap.addBundle(guiceBundle); bootstrap.addBundle(new BaragonAuthBundle()); } @Override public void run(BaragonAgentConfiguration configuration, Environment environment) throws Exception { environment.lifecycle().addServerLifecycleListener(new ServerProvider()); environment.lifecycle().addServerLifecycleListener(new ServerLifecycleListener() { @Override public void serverStarted(Server server) { guiceBundle.getInjector().getInstance(LifecycleHelper.class).checkStateNodeVersion(); } }); } public static void main(String[] args) throws Exception { new BaragonAgentService().run(args); } }