Skip to content

Commit d2707fd

Browse files
authored
Merge pull request #129 from gianlucam76/release-1.2
Make filters case insensitive
2 parents bb10cf8 + faa30a8 commit d2707fd

File tree

5 files changed

+71
-16
lines changed

5 files changed

+71
-16
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,11 @@ returns
237237

238238
where cluster type can either be __capi__ for ClusterAPI powered clusters or __sveltos__ for SveltosClusters
239239

240+
It is also possible to filter helm charts by:
241+
242+
1. `profile_name` => filter profiles by name
243+
2. `profile_kind` => filter profiles by kind
244+
240245
This API supports pagination. Use:
241246

242247
. ```limit=<int>``` to specify the number of Kubernetes resources the API will return

internal/server/addons.go

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -220,13 +220,19 @@ func addDeployedChartsForFeature(profileName string, helmFilters *helmFilters,
220220
chart := &charts[i]
221221

222222
if helmFilters != nil && helmFilters.ReleaseName != "" {
223-
if !strings.Contains(chart.ReleaseName, helmFilters.ReleaseName) {
223+
if !strings.Contains(
224+
strings.ToLower(chart.ReleaseName),
225+
strings.ToLower(helmFilters.ReleaseName)) {
226+
224227
continue
225228
}
226229
}
227230

228231
if helmFilters != nil && helmFilters.ReleaseNamespace != "" {
229-
if !strings.Contains(chart.Namespace, helmFilters.ReleaseNamespace) {
232+
if !strings.Contains(
233+
strings.ToLower(chart.Namespace),
234+
strings.ToLower(helmFilters.ReleaseNamespace)) {
235+
230236
continue
231237
}
232238
}
@@ -284,19 +290,28 @@ func addDeployedResourcesForFeature(profileName string, resourceFilters *resourc
284290
resource := &resources[i]
285291

286292
if resourceFilters != nil && resourceFilters.Name != "" {
287-
if !strings.Contains(resource.Name, resourceFilters.Name) {
293+
if !strings.Contains(
294+
strings.ToLower(resource.Name),
295+
strings.ToLower(resourceFilters.Name)) {
296+
288297
continue
289298
}
290299
}
291300

292301
if resourceFilters != nil && resourceFilters.Namespace != "" {
293-
if !strings.Contains(resource.Namespace, resourceFilters.Namespace) {
302+
if !strings.Contains(
303+
strings.ToLower(resource.Namespace),
304+
strings.ToLower(resourceFilters.Namespace)) {
305+
294306
continue
295307
}
296308
}
297309

298310
if resourceFilters != nil && resourceFilters.Kind != "" {
299-
if !strings.Contains(resource.Kind, resourceFilters.Kind) {
311+
if !strings.Contains(
312+
strings.ToLower(resource.Kind),
313+
strings.ToLower(resourceFilters.Kind)) {
314+
300315
continue
301316
}
302317
}

internal/server/clustersummary_status.go

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ limitations under the License.
1717
package server
1818

1919
import (
20+
"strings"
21+
2022
libsveltosv1beta1 "github.com/projectsveltos/libsveltos/api/v1beta1"
2123
)
2224

@@ -30,19 +32,41 @@ func getFlattenedProfileStatusesInRange(flattenedProfileStatuses []ProfileStatus
3032
return getSliceInRange(flattenedProfileStatuses, limit, skip)
3133
}
3234

33-
func flattenProfileStatuses(profileStatuses []ClusterProfileStatus, failedOnly bool) []ProfileStatusResult {
35+
func flattenProfileStatuses(profileStatuses []ClusterProfileStatus, failedOnly bool,
36+
filters *profileFilters) []ProfileStatusResult {
37+
3438
result := make([]ProfileStatusResult, 0)
3539

3640
for i := range profileStatuses {
37-
result = append(result, flattenProfileStatus(&profileStatuses[i], failedOnly)...)
41+
result = append(result, flattenProfileStatus(&profileStatuses[i], failedOnly, filters)...)
3842
}
3943

4044
return result
4145
}
4246

43-
func flattenProfileStatus(profileStatus *ClusterProfileStatus, failedOnly bool) []ProfileStatusResult {
47+
func flattenProfileStatus(profileStatus *ClusterProfileStatus, failedOnly bool,
48+
filters *profileFilters) []ProfileStatusResult {
49+
4450
result := make([]ProfileStatusResult, 0)
4551
for i := range profileStatus.Summary {
52+
if filters != nil && filters.Name != "" {
53+
if !strings.Contains(
54+
strings.ToLower(profileStatus.ProfileName),
55+
strings.ToLower(filters.Name)) {
56+
57+
continue
58+
}
59+
}
60+
61+
if filters != nil && filters.Kind != "" {
62+
if !strings.Contains(
63+
strings.ToLower(profileStatus.ProfileType),
64+
strings.ToLower(filters.Kind)) {
65+
66+
continue
67+
}
68+
}
69+
4670
if !failedOnly || !isCompleted(profileStatus.Summary[i]) {
4771
result = append(result,
4872
ProfileStatusResult{

internal/server/http.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -287,13 +287,18 @@ var (
287287
getClusterStatus = func(c *gin.Context) {
288288
ginLogger.V(logs.LogDebug).Info("get list of profiles (and their status) matching a cluster")
289289

290-
failedOnly := getFailedOnlyFromQuery(c)
291-
limit, skip := getLimitAndSkipFromQuery(c)
292290
namespace, name, clusterType := getClusterFromQuery(c)
293291
ginLogger.V(logs.LogDebug).Info(fmt.Sprintf("cluster %s:%s/%s", clusterType, namespace, name))
292+
293+
failedOnly := getFailedOnlyFromQuery(c)
294+
limit, skip := getLimitAndSkipFromQuery(c)
294295
ginLogger.V(logs.LogDebug).Info(fmt.Sprintf("limit %d skip %d", limit, skip))
295296
ginLogger.V(logs.LogDebug).Info(fmt.Sprintf("failed %t", failedOnly))
296297

298+
filters := getProfileFiltersFromQuery(c)
299+
ginLogger.V(logs.LogDebug).Info(fmt.Sprintf("filters: kind %q namespace %q name %q",
300+
filters.Kind, filters.Namespace, filters.Name))
301+
297302
user, err := validateToken(c)
298303
if err != nil {
299304
_ = c.AbortWithError(http.StatusUnauthorized, err)
@@ -316,7 +321,7 @@ var (
316321

317322
clusterProfileStatuses := manager.GetClusterProfileStatusesByCluster(&namespace, &name, clusterType)
318323

319-
flattenedProfileStatuses := flattenProfileStatuses(clusterProfileStatuses, failedOnly)
324+
flattenedProfileStatuses := flattenProfileStatuses(clusterProfileStatuses, failedOnly, filters)
320325
sort.Slice(flattenedProfileStatuses, func(i, j int) bool {
321326
return sortClusterProfileStatus(flattenedProfileStatuses, i, j)
322327
})
@@ -764,13 +769,19 @@ func getProfileData(profiles map[corev1.ObjectReference]ProfileInfo, filters *pr
764769
}
765770

766771
if filters.Namespace != "" {
767-
if !strings.Contains(k.Namespace, filters.Namespace) {
772+
if !strings.Contains(
773+
strings.ToLower(k.Namespace),
774+
strings.ToLower(filters.Namespace)) {
775+
768776
continue
769777
}
770778
}
771779

772780
if filters.Name != "" {
773-
if !strings.Contains(k.Name, filters.Name) {
781+
if !strings.Contains(
782+
strings.ToLower(k.Name),
783+
strings.ToLower(filters.Name)) {
784+
774785
continue
775786
}
776787
}

internal/server/profiles.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ type profileFilters struct {
7070
func getProfileFiltersFromQuery(c *gin.Context) *profileFilters {
7171
var filters profileFilters
7272
// Get the values from query parameters
73-
filters.Namespace = c.Query("namespace")
74-
filters.Name = c.Query("name")
75-
filters.Kind = c.Query("kind")
73+
filters.Namespace = c.Query("profile_namespace")
74+
filters.Name = c.Query("profile_name")
75+
filters.Kind = c.Query("profile_kind")
7676

7777
return &filters
7878
}

0 commit comments

Comments
 (0)