CloudWatch: fix custom namespace for listing dimension keys, refactor to non-pointer types, add test assertions, rename packages (#59106)
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package resources
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
)
|
||||
|
||||
type DimensionKeysRequestType uint32
|
||||
|
||||
const (
|
||||
StandardDimensionKeysRequest DimensionKeysRequestType = iota
|
||||
FilterDimensionKeysRequest
|
||||
)
|
||||
|
||||
type DimensionKeysRequest struct {
|
||||
*ResourceRequest
|
||||
Namespace string
|
||||
MetricName string
|
||||
DimensionFilter []*Dimension
|
||||
}
|
||||
|
||||
func (q *DimensionKeysRequest) Type() DimensionKeysRequestType {
|
||||
if isCustomNamespace(q.Namespace) || len(q.DimensionFilter) > 0 {
|
||||
return FilterDimensionKeysRequest
|
||||
}
|
||||
|
||||
return StandardDimensionKeysRequest
|
||||
}
|
||||
|
||||
func GetDimensionKeysRequest(parameters url.Values) (DimensionKeysRequest, error) {
|
||||
resourceRequest, err := getResourceRequest(parameters)
|
||||
if err != nil {
|
||||
return DimensionKeysRequest{}, err
|
||||
}
|
||||
|
||||
request := DimensionKeysRequest{
|
||||
ResourceRequest: resourceRequest,
|
||||
Namespace: parameters.Get("namespace"),
|
||||
MetricName: parameters.Get("metricName"),
|
||||
DimensionFilter: []*Dimension{},
|
||||
}
|
||||
|
||||
dimensions, err := parseDimensionFilter(parameters.Get("dimensionFilters"))
|
||||
if err != nil {
|
||||
return DimensionKeysRequest{}, err
|
||||
}
|
||||
|
||||
request.DimensionFilter = dimensions
|
||||
|
||||
return request, nil
|
||||
}
|
||||
Reference in New Issue
Block a user