560be84dc8
* CloudWatch: Backport aws-sdk-go-v2 update from external plugin (#107136) (cherry picked froma18ea34688) * Datasources: Update grafana-aws-sdk for new sigv4 middleware and aws-sdk-go v1 removal (#107522) (cherry picked from commit66d9a33cc9) * CloudWatch: Fix proxy transport issue (#107807) (cherry picked fromc3eeb1fcd9) * CloudWatch: Fix http client handling + assume role bug (#107893) (cherry picked from commitf34a9fc0c2) * CloudWatch: Use default region when query region is unset (#109089) (cherry picked from commit5f4097a159) * CloudWatch: Fix handling region for legacy alerts (#109217) (cherry picked from commit2bf9aea8ef) * Update go.mod owners --------- Co-authored-by: Isabella Siu <Isabella.siu@grafana.com>
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package resources
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
"strconv"
|
|
)
|
|
|
|
const defaultLogGroupLimit = int32(50)
|
|
|
|
type LogGroupsRequest struct {
|
|
ResourceRequest
|
|
Limit int32
|
|
LogGroupNamePrefix, LogGroupNamePattern *string
|
|
ListAllLogGroups bool
|
|
}
|
|
|
|
func (r LogGroupsRequest) IsTargetingAllAccounts() bool {
|
|
return *r.AccountId == "all"
|
|
}
|
|
|
|
func ParseLogGroupsRequest(parameters url.Values) (LogGroupsRequest, error) {
|
|
logGroupNamePrefix := setIfNotEmptyString(parameters.Get("logGroupNamePrefix"))
|
|
logGroupPattern := setIfNotEmptyString(parameters.Get("logGroupPattern"))
|
|
if logGroupNamePrefix != nil && logGroupPattern != nil {
|
|
return LogGroupsRequest{}, fmt.Errorf("cannot set both log group name prefix and pattern")
|
|
}
|
|
|
|
return LogGroupsRequest{
|
|
Limit: getLimit(parameters.Get("limit")),
|
|
ResourceRequest: ResourceRequest{
|
|
Region: parameters.Get("region"),
|
|
AccountId: setIfNotEmptyString(parameters.Get("accountId")),
|
|
},
|
|
LogGroupNamePrefix: logGroupNamePrefix,
|
|
LogGroupNamePattern: logGroupPattern,
|
|
ListAllLogGroups: parameters.Get("listAllLogGroups") == "true",
|
|
}, nil
|
|
}
|
|
|
|
func setIfNotEmptyString(paramValue string) *string {
|
|
if paramValue == "" {
|
|
return nil
|
|
}
|
|
return ¶mValue
|
|
}
|
|
|
|
func getLimit(limit string) int32 {
|
|
logGroupLimit := defaultLogGroupLimit
|
|
intLimit, err := strconv.ParseInt(limit, 10, 32)
|
|
if err == nil && intLimit > 0 {
|
|
logGroupLimit = int32(intLimit)
|
|
}
|
|
return logGroupLimit
|
|
}
|