in cloudwatch_logs_common/src/utils/cloudwatch_logs_facade.cpp [195:243]
Aws::CloudWatchLogs::ROSCloudWatchLogsErrors CloudWatchLogsFacade::CheckLogGroupExists(
const std::string & log_group)
{
Aws::CloudWatchLogs::ROSCloudWatchLogsErrors status = CW_LOGS_LOG_GROUP_NOT_FOUND;
Aws::CloudWatchLogs::Model::DescribeLogGroupsRequest describe_log_group_request;
Aws::String next_token;
describe_log_group_request.SetLogGroupNamePrefix(log_group.c_str());
while (CW_LOGS_LOG_GROUP_NOT_FOUND == status) {
if (next_token.size() != 0) {
describe_log_group_request.SetNextToken(next_token);
}
const auto & response = this->cw_client_->DescribeLogGroups(describe_log_group_request);
if (!response.IsSuccess()) {
if(response.GetError().GetErrorType() == Aws::CloudWatchLogs::CloudWatchLogsErrors::NETWORK_CONNECTION) {
status = CW_LOGS_NOT_CONNECTED;
} else {
status = CW_LOGS_FAILED;
}
AWS_LOGSTREAM_WARN(__func__, "Request to check if log group named "
<< log_group << " exists failed. Error message: "
<< response.GetError().GetMessage() << ", with error code: "
<< static_cast<int>(response.GetError().GetErrorType()));
break;
}
auto & log_group_list = response.GetResult().GetLogGroups();
next_token = response.GetResult().GetNextToken();
for (const auto & curr_log_group : log_group_list) {
if (curr_log_group.GetLogGroupName().c_str() == log_group) {
AWS_LOGSTREAM_DEBUG(__func__, "Found Log Group named: " << log_group << ".");
status = CW_LOGS_SUCCEEDED;
break;
}
}
if (CW_LOGS_SUCCEEDED != status && next_token.size() == 0) {
AWS_LOGSTREAM_INFO(__func__, "Failed to find Log Group named: " << log_group << ".");
break;
}
}
return status;
}