void ReadMetricDimensions()

in cloudwatch_metrics_collector/src/metrics_collector_parameter_helper.cpp [96:125]


void ReadMetricDimensions(
        const std::shared_ptr<Aws::Client::ParameterReaderInterface>& parameter_reader,
        Aws::String & dimensions_param,
        std::map<std::string, std::string> & metric_dims) {

  // Load the default dimensions
  Aws::AwsError read_dimensions_status =
          parameter_reader->ReadParam(ParameterPath(kNodeParamDefaultMetricDimensionsKey), dimensions_param);

  Aws::OStringStream logging_stream;
  logging_stream << "Default Metric Dimensions: { ";
  if (Aws::AWS_ERR_OK == read_dimensions_status) {
    auto dims = Aws::Utils::StringUtils::Split(dimensions_param, ';');
    for (auto & dim : dims) {
      if (!dim.empty()) {
        auto dim_vec = Aws::Utils::StringUtils::Split(dim, ':');
        if (dim_vec.size() == 2) {
          metric_dims.emplace(dim_vec[0].c_str(), dim_vec[1].c_str());
          logging_stream << dim_vec[0] << ": " << dim_vec[1] << ", ";
        } else {
          AWS_LOGSTREAM_WARN(
                  __func__, "Could not parse dimension: "
                          << dim << ". Should be in the format <DimensionName>:<DimensionValue>");
        }
      }
    }
  }
  logging_stream << " }";
  AWS_LOGSTREAM_INFO(__func__, logging_stream.str());
}