Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.nitorcreations.willow.autoscaler;
  
  
 
 import  edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 
 
 import java.net.URI;
 import java.util.List;
 
 @SuppressFBWarnings(value={"DM_EXIT"}, justification="cli tool needs to convey correct exit code")
 public class Main {
 
   private Logger logger = Logger.getLogger(this.getClass().getCanonicalName());
 
   private static Injector injector;
 
 
   @Inject
 
   @Inject
 
   @Inject
   private MetricPoller metricPoller;
 
   @Inject
 
   @Inject
   private Scaler scaler;
 
   @Inject
 
   static {
     try {
       setupLogging();
        = Guice.createInjector(
           new WireModule(
               new AutoScalerModule(),
               new SpaceModule(
                   new URLClassSpace(Main.class.getClassLoader())
           )));
     } catch (Throwable e) {
       e.printStackTrace();
       assert false;
     }
   }
 
   public static void main(String... args) {
     .getInstance(Main.class).doMain(args);
   }
 
   public void doMain(String... args) {
     for (String arg : args) {
        = new MergeableProperties().merge(System.getProperties(), arg);
     }
     //read groups from configuration
     MergeableProperties allGroupProperties = .getPrefixed("willow-autoscaler.groups");
     int i = 0;
     MergeableProperties groupProperties;
     List<AutoScalingGroupConfiggroups = new LinkedList<>();
     while (!(groupProperties = allGroupProperties.getPrefixed("[" + i++ + "]")).isEmpty()) {
       groups.add(AutoScalingGroupConfig.fromProperties(groupProperties));
     }
 
     if (groups.isEmpty()) {
       .info("No auto scaling groups configured. Exiting.");
       System.exit(0);
     }
 
     Runtime.getRuntime().addShutdownHook(new Thread() {
      @Override
      public void run() {
        Main.this.stop();
      }
    });
    //initialize message transmitter
    try {
      .setUri(new URI(.getProperty("willow-autoscaler.messagesUri")));
    } catch (URISyntaxException e) {
      .log(."Invalid message websocket URI"e);
      System.exit(1);
    }
    //start scanning deployment for auto scaling groups
    .info("Initializing deployment scanner");
    if (!future.isDone()) {
      .info("Initialized deployment scanner");
    }
    //start polling metrics
    try {
      .info("Initializing metrics poller");
      .initialize(groupsnew URI((String).get("willow-autoscaler.metricsUri")));
    } catch (URISyntaxException e) {
      .log(."Invalid URI: " + .get("willow-autoscaler.metricsUri"), e);
      System.exit(1);
    }
    //start scaler component
    .info("Initializing scaler");
    .initialize(groups);
  }
  private void stop() {
    ..println("Willow Autoscaler stopping...");
    ..println("Willow Autoscaler done stopping.");
  }
  private static void setupLogging() {
    Logger rootLogger = Logger.getLogger("");
    for (Handler nextHandler : rootLogger.getHandlers()) {
      rootLogger.removeHandler(nextHandler);
    }
    Handler console = new ConsoleHandler();
    console.setLevel(.);
    console.setFormatter(new SimpleFormatter());
    rootLogger.addHandler(console);
    rootLogger.setLevel(.);
    console.setFilter(new Filter() {
      @Override
      public boolean isLoggable(LogRecord record) {
        return record.getLoggerName() == null || !record.getLoggerName().startsWith("org.eclipse.jetty.util.log");
      }
    });
  }
New to GrepCode? Check out our FAQ X