com.hubspot.singularity.executor.cleanup.SingularityExecutorCleanupRunner Maven / Gradle / Ivy
package com.hubspot.singularity.executor.cleanup;
import java.nio.file.Paths;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Stage;
import com.hubspot.mesos.JavaUtils;
import com.hubspot.mesos.client.SingularityMesosClientModule;
import com.hubspot.singularity.client.SingularityClientModule;
import com.hubspot.singularity.executor.SingularityExecutorCleanupStatistics;
import com.hubspot.singularity.executor.cleanup.config.SingularityExecutorCleanupConfiguration;
import com.hubspot.singularity.executor.cleanup.config.SingularityExecutorCleanupModule;
import com.hubspot.singularity.executor.config.SingularityExecutorConfiguration;
import com.hubspot.singularity.executor.config.SingularityExecutorModule;
import com.hubspot.singularity.runner.base.config.SingularityRunnerBaseModule;
import com.hubspot.singularity.runner.base.shared.JsonObjectFileHelper;
import com.hubspot.singularity.s3.base.config.SingularityS3Configuration;
public class SingularityExecutorCleanupRunner {
private static final Logger LOG = LoggerFactory.getLogger(SingularityExecutorCleanupRunner.class);
public static void main(String... args) {
final long start = System.currentTimeMillis();
try {
final Injector injector = Guice.createInjector(Stage.PRODUCTION, new SingularityRunnerBaseModule(SingularityExecutorCleanupConfiguration.class, ImmutableSet.of(SingularityS3Configuration.class, SingularityExecutorConfiguration.class)), new SingularityExecutorModule(), new SingularityExecutorCleanupModule(), new SingularityClientModule(), new SingularityMesosClientModule());
final SingularityExecutorCleanupRunner runner = injector.getInstance(SingularityExecutorCleanupRunner.class);
LOG.info("Starting cleanup");
final SingularityExecutorCleanupStatistics statistics = runner.cleanup();
LOG.info("Finished with {} after {}", statistics, JavaUtils.duration(start));
System.exit(0);
} catch (Throwable t) {
LOG.error("Finished after {} with error", JavaUtils.duration(start), t);
System.exit(1);
}
}
private final SingularityExecutorCleanup cleanup;
private final JsonObjectFileHelper fileHelper;
private final SingularityExecutorCleanupConfiguration cleanupConfiguration;
@Inject
public SingularityExecutorCleanupRunner(SingularityExecutorCleanup cleanup, JsonObjectFileHelper fileHelper, SingularityExecutorCleanupConfiguration cleanupConfiguration) {
this.cleanup = cleanup;
this.fileHelper = fileHelper;
this.cleanupConfiguration = cleanupConfiguration;
}
public SingularityExecutorCleanupStatistics cleanup() {
SingularityExecutorCleanupStatistics cleanupStatistics = cleanup.clean();
fileHelper.writeObject(cleanupStatistics, Paths.get(cleanupConfiguration.getExecutorCleanupResultsDirectory()).resolve(String.format("%s%s", System.currentTimeMillis(), cleanupConfiguration.getExecutorCleanupResultsSuffix())), LOG);
return cleanupStatistics;
}
}