private HealthManager()

in src/main/java/com/microsoft/dhalion/HealthManager.java [81:127]


  private HealthManager(CommandLine cmd) throws ClassNotFoundException {
    this.configDir = getOptionValue(cmd, CliArgs.CONFIG_DIR);

    AbstractModule module = new AbstractModule() {
      @Override
      protected void configure() {
        bind(String.class)
            .annotatedWith(Names.named(CONF_DIR))
            .toInstance(configDir);
      }
    };

    injector = Guice.createInjector(module);

    //Read healthmgr.yaml and create a hashmap with the configurations
    ConfigBuilder confBuilder = new ConfigBuilder(configDir);
    confBuilder.loadConfig(Paths.get(configDir, (String) Key.HEALTHMGR_CONF.getDefault()));
    Map<String, Object> conf = confBuilder.getKeyValues();

    ConfigBuilder cb = injector.getInstance(ConfigBuilder.class);

    cb.loadConfig(conf).loadPolicyConf();
    config = cb.build();

    //Read the MetricsProvider class
    String metricsProviderClass = (String) conf.get(Key.METRICS_PROVIDER_CLASS.value());
    Class<MetricsProvider> mpClass
        = (Class<MetricsProvider>) this.getClass().getClassLoader().loadClass(metricsProviderClass);
    injector = injector.createChildInjector(new AbstractModule() {
      @Override
      protected void configure() {
        bind(Config.class).toInstance(config);
        bind(mpClass).in(Singleton.class);
      }
    });

    metricsProvider = injector.getInstance(mpClass);

    injector = injector.createChildInjector(new AbstractModule() {
      @Override
      protected void configure() {
        bind(MetricsProvider.class).toInstance(metricsProvider);
      }
    });

    initializePolicies();
  }