Skip to content

Commit ceab595

Browse files
authored
Feat/filtering server groups (#204)
1 parent 1c8a32d commit ceab595

5 files changed

Lines changed: 184 additions & 93 deletions

File tree

upcloud/request/server_group.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,26 @@ const (
1212
)
1313

1414
// GetServerGroupsRequest represents a request to list server groups
15-
type GetServerGroupsRequest struct{}
15+
type GetServerGroupsRequest struct {
16+
Filters []QueryFilter
17+
}
1618

1719
func (s GetServerGroupsRequest) RequestURL() string {
18-
return serverGroupBasePath
20+
if len(s.Filters) == 0 {
21+
return serverGroupBasePath
22+
}
23+
24+
return fmt.Sprintf("%s?%s", serverGroupBasePath, encodeQueryFilters(s.Filters))
1925
}
2026

2127
// Deprecated: ServerGroupFilter filter is deprecated. Use QueryFilter instead.
2228
type ServerGroupFilter = QueryFilter
2329

24-
// GetServerGroupsWithFiltersRequest represents a request to get
25-
// all server groups using labels or label keys as filters.
26-
// Using multiple filters returns only groups that match all.
30+
// Deprecated: GetServerGroupsWithFiltersRequest is deprecated. Use GetServerGroupsRequest instead.
2731
type GetServerGroupsWithFiltersRequest struct {
2832
Filters []QueryFilter
2933
}
3034

31-
// RequestURL implements the Request interface.
3235
func (r *GetServerGroupsWithFiltersRequest) RequestURL() string {
3336
if len(r.Filters) == 0 {
3437
return serverGroupBasePath

upcloud/request/server_group_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,18 @@ import (
1212
func TestGetServerGroupsRequest(t *testing.T) {
1313
r := GetServerGroupsRequest{}
1414
assert.Equal(t, "/server-group", r.RequestURL())
15+
16+
rWithFilters := GetServerGroupsRequest{
17+
Filters: []QueryFilter{
18+
FilterLabel{Label: upcloud.Label{
19+
Key: "env",
20+
Value: "test",
21+
}},
22+
FilterLabelKey{Key: "managed"},
23+
},
24+
}
25+
26+
assert.Equal(t, "/server-group?label=env%3Dtest&label=managed", rWithFilters.RequestURL())
1527
}
1628

1729
// TestGetServerGroupsWithFiltersRequest tests that GetServerGroupsWithFiltersRequest objects behave correctly

0 commit comments

Comments
 (0)