Example #1
0
Status OptionsConfigParserPlugin::update(const std::string& source,
                                         const ParserConfig& config) {
  if (config.count("options") > 0) {
    data_ = pt::ptree();
    data_.put_child("options", config.at("options"));
  }

  const auto& options = data_.get_child("options");
  for (const auto& option : options) {
    std::string value = options.get<std::string>(option.first, "");
    if (value.empty()) {
      continue;
    }

    Flag::updateValue(option.first, value);
    // There is a special case for supported Gflags-reserved switches.
    if (option.first == "verbose" || option.first == "verbose_debug" ||
        option.first == "debug") {
      setVerboseLevel();
      if (Flag::getValue("verbose") == "true") {
        VLOG(1) << "Verbose logging enabled by config option";
      }
    }
  }

  return Status(0, "OK");
}
Status PrometheusMetricsConfigParserPlugin::update(const std::string& source,
                                                   const ParserConfig& config) {
  if (config.count(kConfigParserRootKey) > 0) {
    data_ = boost::property_tree::ptree();
    data_.put_child(kConfigParserRootKey, config.at(kConfigParserRootKey));
  }

  return Status(0, "OK");
}
Example #3
0
Status FilePathsConfigParserPlugin::update(const std::string& source,
                                           const ParserConfig& config) {
  if (config.count("file_paths") > 0) {
    data_.put_child("file_paths", config.at("file_paths"));
  }

  auto& accesses = data_.get_child("file_accesses");
  if (config.count("file_accesses") > 0) {
    if (access_map_.count(source) > 0) {
      access_map_.erase(source);
    }

    for (const auto& category : config.at("file_accesses")) {
      auto path = category.second.get_value<std::string>("");
      access_map_[source].push_back(path);
    }
    // Regenerate the access:
    for (const auto& access_source : access_map_) {
      for (const auto& category : access_source.second) {
        accesses.put(category, access_source.first);
      }
    }
  }

  Config::getInstance().removeFiles(source);
  for (const auto& category : data_.get_child("file_paths")) {
    for (const auto& path : category.second) {
      auto pattern = path.second.get_value<std::string>("");
      if (pattern.empty()) {
        continue;
      }
      replaceGlobWildcards(pattern);
      Config::getInstance().addFile(source, category.first, pattern);
    }
  }

  return Status(0, "OK");
}