Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Watch Namespaces based on labels and label selectors #9976

Closed
wants to merge 123 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
123 commits
Select commit Hold shift + click to select a range
e0dbe40
watch namespaces by labels
davidjumani Aug 19, 2024
f074c85
update settings
davidjumani Aug 23, 2024
935e05c
namespace cache
davidjumani Aug 23, 2024
8f1a43b
update
davidjumani Aug 27, 2024
7da343d
add check
davidjumani Aug 27, 2024
576c3a4
sync
davidjumani Aug 27, 2024
9441024
fix mutex
davidjumani Aug 27, 2024
ea82628
helm changes
davidjumani Aug 28, 2024
aac1301
refactor
davidjumani Aug 28, 2024
bbfb6ab
Merge branch 'main' of github.com:solo-io/gloo into label-wathc-names…
davidjumani Aug 28, 2024
972d09a
fix
davidjumani Aug 28, 2024
3eefaf5
refactor
davidjumani Aug 29, 2024
92151c2
tests
davidjumani Aug 29, 2024
ea20ee1
more tests
davidjumani Aug 29, 2024
2b6e9c4
cleanup
davidjumani Aug 29, 2024
f6add91
add stats
davidjumani Aug 30, 2024
8dd0c19
Merge branch 'main' into watch-namespace-selectors
davidjumani Aug 30, 2024
db9392c
tilt changes
davidjumani Aug 30, 2024
15f5555
changelog
davidjumani Aug 30, 2024
afb516a
update tests
davidjumani Aug 30, 2024
b920e44
revert helm test changes
davidjumani Aug 30, 2024
f1fd370
Adding changelog file to new location
Aug 30, 2024
62f416c
Deleting changelog file from old location
Aug 30, 2024
98a4de1
refactor tests
davidjumani Aug 30, 2024
f2a338e
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Aug 30, 2024
001898c
fix protos
davidjumani Aug 30, 2024
a1113a1
doc protos
davidjumani Aug 30, 2024
bc9e0ca
validation
davidjumani Sep 1, 2024
3cbcaf1
fix validation
davidjumani Sep 1, 2024
b581ea8
validation fix
davidjumani Sep 1, 2024
8f6f92c
move ns vwc
davidjumani Sep 1, 2024
34cd8a0
codegen
davidjumani Sep 1, 2024
4e35fef
tmp fix
davidjumani Sep 1, 2024
0bb7a75
Revert "tmp fix"
davidjumani Sep 1, 2024
8a98849
Revert "Revert "tmp fix""
davidjumani Sep 1, 2024
5f3812b
fix fix
davidjumani Sep 1, 2024
5a3b208
fix vw bug
davidjumani Sep 2, 2024
1ca45dc
refactor
davidjumani Sep 2, 2024
89223a3
fix
davidjumani Sep 2, 2024
e0ab8ce
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 3, 2024
418c6e2
use generated ns
davidjumani Sep 3, 2024
0aee9ac
don't add install ns
davidjumani Sep 3, 2024
24badfd
Adding changelog file to new location
Sep 3, 2024
e40bffb
Deleting changelog file from old location
Sep 3, 2024
4b01d35
refactor
davidjumani Sep 3, 2024
e9183c3
update tiltfile
davidjumani Sep 3, 2024
503c236
refactor
davidjumani Sep 3, 2024
91c713d
Revert "update tiltfile"
davidjumani Sep 3, 2024
191f8d2
more logging
davidjumani Sep 3, 2024
abbb707
fix test
davidjumani Sep 3, 2024
488a01c
add test
davidjumani Sep 3, 2024
9a46911
increase timeout
davidjumani Sep 3, 2024
a621496
remove nil possibility
davidjumani Sep 3, 2024
746e9b1
refactor
davidjumani Sep 3, 2024
90c1e83
increase timeout
davidjumani Sep 3, 2024
0982626
bump solo-apis
davidjumani Sep 3, 2024
e5b6b03
increase timeout even more
davidjumani Sep 4, 2024
a7b3032
bump solo-kit
davidjumani Sep 4, 2024
6946f20
cleanup
davidjumani Sep 4, 2024
58c9d97
dont watch if kubegateway enabled
davidjumani Sep 4, 2024
e971e06
increase timeout
davidjumani Sep 4, 2024
3ddee63
bump solo-kit
davidjumani Sep 4, 2024
49a8c94
bump solo-kit again
davidjumani Sep 4, 2024
f1fb1a8
refactor again
davidjumani Sep 4, 2024
dc3b6d9
add validation tests
davidjumani Sep 4, 2024
a01413b
increase test timeout
davidjumani Sep 5, 2024
5ba8ae9
update test manifests
davidjumani Sep 5, 2024
0d792f5
update tests
davidjumani Sep 5, 2024
ec708ce
undo timeout bump
davidjumani Sep 5, 2024
d12d90a
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 5, 2024
36531f6
Adding changelog file to new location
Sep 5, 2024
2f80b4f
Deleting changelog file from old location
Sep 5, 2024
052c88f
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 5, 2024
631a65a
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 6, 2024
42c4efd
backward compatibility
davidjumani Sep 7, 2024
4d85d1b
add tests
davidjumani Sep 8, 2024
d39e3d2
rename nsclient
davidjumani Sep 8, 2024
48aed3f
add more tests
davidjumani Sep 8, 2024
c9e08b1
fix test
davidjumani Sep 10, 2024
be79ded
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 10, 2024
36dfd53
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 10, 2024
12ec672
cleanup
davidjumani Sep 10, 2024
5cd164c
fix lint issue
davidjumani Sep 10, 2024
2241413
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 10, 2024
8c27700
be efficient
davidjumani Sep 10, 2024
cd4e2dc
fix tests
davidjumani Sep 10, 2024
de57608
prevent goroutine leaks
davidjumani Sep 11, 2024
5ca13b3
add more docs
davidjumani Sep 11, 2024
192f475
add more docs
davidjumani Sep 11, 2024
24a7cf1
simplify check
davidjumani Sep 11, 2024
c735f81
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 11, 2024
85f0de2
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 11, 2024
ebafe7d
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 11, 2024
38c4580
shortcircuit
davidjumani Sep 11, 2024
b6653ac
refactor
davidjumani Sep 11, 2024
6833a99
fix test failure
davidjumani Sep 11, 2024
6fa77ec
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 11, 2024
506c8a1
Adding changelog file to new location
Sep 11, 2024
54703c9
Deleting changelog file from old location
Sep 11, 2024
8c2b902
fix tests
davidjumani Sep 11, 2024
d9e2543
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 11, 2024
7c43113
revert shortcircuit
davidjumani Sep 12, 2024
d475b9d
revert return
davidjumani Sep 12, 2024
f5fda2f
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 12, 2024
58d1aaf
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 12, 2024
2e1018d
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 13, 2024
a7d6196
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 16, 2024
2af864c
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 16, 2024
4309efd
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 16, 2024
61c83dc
Adding changelog file to new location
Sep 17, 2024
81a9629
Deleting changelog file from old location
Sep 17, 2024
287a17e
address comments
davidjumani Sep 18, 2024
870c8a0
fix test
davidjumani Sep 18, 2024
1557cdf
Merge branch 'main' of github.com:solo-io/gloo into watch-namespace-s…
davidjumani Sep 18, 2024
78eae93
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 18, 2024
d607745
add comments
davidjumani Sep 20, 2024
2521a4b
address comments
davidjumani Sep 20, 2024
374c3ca
codegen
davidjumani Sep 20, 2024
6079884
remove context stuff
davidjumani Sep 20, 2024
a139cd2
Merge branch 'main' of github.com:solo-io/gloo into watch-namespace-s…
davidjumani Sep 20, 2024
bdab112
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 23, 2024
ca0afa7
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 24, 2024
19bcb53
Merge refs/heads/main into watch-namespace-selectors
soloio-bulldozer[bot] Sep 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pr-kubernetes-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
# September 16, 2024: 17 minutes
- cluster-name: 'cluster-five'
go-test-args: '-v -timeout=25m'
go-test-run-regex: '^TestValidationStrict$$|^TestValidationAlwaysAccept$$|^TestTransformationValidationDisabled$$|^TestGloomtlsGatewayEdgeGateway$$|^TestHelm$$'
go-test-run-regex: '^TestValidationStrict$$|^TestValidationAlwaysAccept$$|^TestTransformationValidationDisabled$$|^TestGloomtlsGatewayEdgeGateway$$|^TestHelm$$|^TestWatchNamespaceSelector$$'

# In our PR tests, we run the suite of tests using the upper ends of versions that we claim to support
# The versions should mirror: https://docs.solo.io/gloo-edge/latest/reference/support/
Expand Down
14 changes: 14 additions & 0 deletions changelog/v1.18.0-beta23/watch-namespace-selectors.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
changelog:
- type: NEW_FEATURE
issueLink: https://github.com/solo-io/gloo/issues/9274
resolvesIssue: false
description: Adds a new field `watchNamespaceSelectors` to the settings CR. This allows users to specify namespaces to watch based on label selectors. The `watchNamespaces` field will override this if specified.
- type: HELM
issueLink: https://github.com/solo-io/gloo/issues/9274
resolvesIssue: false
description: Adds a new helm value `settings.watchNamespaceSelectors`. This allows users to specify namespaces to watch based on label selectors that can be specified via `settings.watchNamespaceSelectors.matchLabels` for an exact label match and `settings.watchNamespaceSelectors.matchExpressions` for more generic requirements. The `settings.watchNamespaces` field will override this if specified.
- type: DEPENDENCY_BUMP
dependencyOwner: solo-io
dependencyRepo: solo-kit
dependencyTag: v0.35.4
issueLink: https://github.com/solo-io/gloo/issues/9274

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion docs/content/reference/values.txt
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,11 @@
|kubeGateway.gatewayParameters.glooGateway.aiExtension.ports[].protocol|string|||
|kubeGateway.gatewayParameters.glooGateway.aiExtension.ports[].hostIP|string|||
|kubeGateway.gatewayParameters.glooGateway.floatingUserId|bool||If true, allows the cluster to dynamically assign a user ID for the processes running in the container. Default is false.|
|settings.watchNamespaces[]|string||whitelist of namespaces for Gloo Edge to watch for services and CRDs. Empty list means all namespaces|
|settings.watchNamespaces[]|string||whitelist of namespaces for Gloo Edge to watch for services and CRDs. Empty list means all namespaces. If this and WatchNamespaceSelectors are specified, this takes precedence and WatchNamespaceSelectors is ignored|
|settings.watchNamespaceSelectors[].match_labels.NAME|string|||
|settings.watchNamespaceSelectors[].match_expressions[].key|string|||
|settings.watchNamespaceSelectors[].match_expressions[].operator|string|||
|settings.watchNamespaceSelectors[].match_expressions[].values[]|string|||
|settings.writeNamespace|string||namespace where intermediary CRDs will be written to, e.g. Upstreams written by Gloo Edge Discovery.|
|settings.integrations.knative.enabled|bool|false|enabled knative components|
|settings.integrations.knative.version|string|0.10.0|the version of knative installed to the cluster. if using version < 0.8.0, Gloo Edge will use Knative's ClusterIngress API for configuration rather than the namespace-scoped Ingress|
Expand Down
6 changes: 6 additions & 0 deletions docs/data/ProtoMap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -872,6 +872,12 @@ apis:
gloo.solo.io.KubernetesServiceDestination:
relativepath: reference/api/github.com/solo-io/gloo/projects/gloo/api/v1/proxy.proto.sk/#KubernetesServiceDestination
package: gloo.solo.io
gloo.solo.io.LabelSelector:
relativepath: reference/api/github.com/solo-io/gloo/projects/gloo/api/v1/settings.proto.sk/#LabelSelector
package: gloo.solo.io
gloo.solo.io.LabelSelectorRequirement:
relativepath: reference/api/github.com/solo-io/gloo/projects/gloo/api/v1/settings.proto.sk/#LabelSelectorRequirement
package: gloo.solo.io
gloo.solo.io.LbEndpoint:
relativepath: reference/api/github.com/solo-io/gloo/projects/gloo/api/v1/failover.proto.sk/#LbEndpoint
package: gloo.solo.io
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ require (
// Ref: https://github.com/solo-io/gloo/pull/9463/files#r1594409655 && https://solo-io-corp.slack.com/archives/C03MFATU265/p1716913420716729?thread_ts=1716476992.938679&cid=C03MFATU265
// as to why it is now based off `gloo-main` and not `gloo-repo-branch`
github.com/solo-io/solo-apis v0.0.0-20240528173540-7879b7d12cb9
github.com/solo-io/solo-kit v0.35.3
github.com/solo-io/solo-kit v0.35.4
github.com/spf13/afero v1.9.2
github.com/spf13/cobra v1.8.0
github.com/spf13/pflag v1.0.5
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2013,8 +2013,8 @@ github.com/solo-io/skv2 v0.39.1 h1:dWaZTWgntAsvh4lTlojd3xE+g7NF4oYNonfcdpy0nXE=
github.com/solo-io/skv2 v0.39.1/go.mod h1:Zsnl+OYmOkj+6KeaMfkzYIxHTVMC0w2gVApzNJRadM8=
github.com/solo-io/solo-apis v0.0.0-20240528173540-7879b7d12cb9 h1:4DNulNBJdaVz+fOaMQes1MqVCIO/db2vmwz7bVe3iIU=
github.com/solo-io/solo-apis v0.0.0-20240528173540-7879b7d12cb9/go.mod h1:fA+jJC7TXNM+i3uXvq7fpVrJ6JpNu1BgBxc4U9ntUW0=
github.com/solo-io/solo-kit v0.35.3 h1:cm+uHB5cFFlAnghwKdboaKI0Ki+t1ECA0Db3TnTL6KU=
github.com/solo-io/solo-kit v0.35.3/go.mod h1:KBCEfl59/wE0K68s90aDcrTc36gKR5L97TbVelwL8n4=
github.com/solo-io/solo-kit v0.35.4 h1:Q6Iai6Us4JYF6fGxED797ygVlytk1uufrSQsPw3bWHk=
github.com/solo-io/solo-kit v0.35.4/go.mod h1:KBCEfl59/wE0K68s90aDcrTc36gKR5L97TbVelwL8n4=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
Expand Down
22 changes: 22 additions & 0 deletions install/helm/gloo/crds/gloo.solo.io_v1_Settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1057,6 +1057,28 @@ spec:
token:
type: string
type: object
watchNamespaceSelectors:
items:
properties:
matchExpressions:
items:
properties:
key:
type: string
operator:
type: string
values:
items:
type: string
type: array
type: object
type: array
matchLabels:
additionalProperties:
type: string
type: object
type: object
type: array
watchNamespaces:
items:
type: string
Expand Down
4 changes: 3 additions & 1 deletion install/helm/gloo/generate/values.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package generate

import (
v1 "github.com/solo-io/gloo/projects/gloo/pkg/api/v1"
corev1 "k8s.io/api/core/v1"
)

Expand Down Expand Up @@ -214,7 +215,8 @@ type KnativeProxyInternal struct {
}

type Settings struct {
WatchNamespaces []string `json:"watchNamespaces,omitempty" desc:"whitelist of namespaces for Gloo Edge to watch for services and CRDs. Empty list means all namespaces"`
WatchNamespaces []string `json:"watchNamespaces,omitempty" desc:"whitelist of namespaces for Gloo Edge to watch for services and CRDs. Empty list means all namespaces. If this and WatchNamespaceSelectors are specified, this takes precedence and WatchNamespaceSelectors is ignored"`
WatchNamespaceSelectors []*v1.LabelSelector `json:"watchNamespaceSelectors,omitempty" desc:"A list of Kubernetes selectors that specify the set of namespaces to restrict the namespaces that Gloo controllers take into consideration when watching for resources. Elements in the list are disjunctive (OR semantics), i.e. a namespace will be included if it matches any selector. An empty list means all namespaces. If this and WatchNamespaces are specified, WatchNamespaces takes precedence and this is ignored"`
WriteNamespace *string `json:"writeNamespace,omitempty" desc:"namespace where intermediary CRDs will be written to, e.g. Upstreams written by Gloo Edge Discovery."`
Integrations *Integrations `json:"integrations,omitempty"`
Create *bool `json:"create,omitempty" desc:"create a Settings CRD which provides bootstrap configuration to Gloo Edge controllers"`
Expand Down
9 changes: 7 additions & 2 deletions install/helm/gloo/templates/18-settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,13 @@ spec:
{{- range . }}
- {{ . }}
{{- end }}
{{- end }}
{{- end }}
{{- end }} {{/* with .Values.settings.watchNamespaces */}}
{{- end }} {{/* if .Values.settings.singleNamespace */}}

{{- if .Values.settings.watchNamespaceSelectors }}
watchNamespaceSelectors:
{{ toYaml .Values.settings.watchNamespaceSelectors | nindent 4 }}
{{- end }} {{/* if .Values.settings.watchNamespaceSelectors */}}

{{- end }} {{/* if .Values.settings.create */}}
{{- end }} {{/* define "settings.settingsSpec" */}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,13 @@ specific resources, we will manage the resources that the webhook receives via t
apiGroups: [""]{{/* We do not have internal secret CRDs. We want to validate the deletion of secrets such as TLS, so we add "" which refers to Kubernetes' core APIs. */}}
apiVersions: ["v1"]
resources: ["secrets"]
{{- end }}
{{- if and (not (has "*" .Values.gateway.validation.webhook.skipDeleteValidationResources)) (not (has "namespaces" .Values.gateway.validation.webhook.skipDeleteValidationResources)) }}
{{- /* A namespace with an updated to a label can cause it to no longer be watched, equivalent to deleting it from the controller's perspective */}}
- operations: [ "UPDATE", "DELETE"]
apiGroups: [""]{{/* We do not have internal namespace CRDs. We want to validate the updation and deletion of namespaces that are watched. */}}
apiVersions: ["v1"]
resources: ["namespaces"]
{{- end }}
- operations: {{ include "gloo.webhookvalidation.operationsForResource" (list "ratelimitconfigs" .Values.gateway.validation.webhook.skipDeleteValidationResources) }}
apiGroups: ["ratelimit.solo.io"]
Expand Down
23 changes: 18 additions & 5 deletions install/test/5-gateway-validation-webhook-configuration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ var _ = Describe("WebhookValidationConfiguration helm test", func() {
timeoutSeconds := 5

// Count the "DELETES" as a sanity check.
expectedDeletes := 5 - expectedRemoved
expectedDeletes := 6 - expectedRemoved
expectedChart := generateExpectedChart(timeoutSeconds, resources, expectedDeletes)

prepareMakefile(namespace, glootestutils.HelmValues{
Expand All @@ -59,10 +59,11 @@ var _ = Describe("WebhookValidationConfiguration helm test", func() {
Entry("gateways", []string{"gateways"}, 0),
Entry("upstreams", []string{"upstreams"}, 1),
Entry("secrets", []string{"secrets"}, 1),
Entry("namespaces", []string{"namespaces"}, 1),
Entry("ratelimitconfigs", []string{"ratelimitconfigs"}, 1),
Entry("mutiple", []string{"virtualservices", "routetables", "secrets"}, 3),
Entry("mutiple (with removal)", []string{"ratelimitconfigs", "secrets"}, 2),
Entry("all", []string{"*"}, 5),
Entry("all", []string{"*"}, 6),
Entry("empty", []string{}, 0),
)

Expand Down Expand Up @@ -253,6 +254,12 @@ func generateRules(skipDeleteReources []string) string {
"apiVersions": {"v1"},
"resources": {"secrets"},
},
{
"operations": {"UPDATE", "DELETE"},
"apiGroups": {""},
"apiVersions": {"v1"},
"resources": {"namespaces"},
},
{
"operations": {"CREATE", "UPDATE", "DELETE"},
"apiGroups": {"ratelimit.solo.io"},
Expand All @@ -261,17 +268,23 @@ func generateRules(skipDeleteReources []string) string {
},
}

finalRules := []map[string][]string{}
for i, rule := range rules {
if stringutils.ContainsAny([]string{rule["resources"][0], "*"}, skipDeleteReources) {
rule["operations"] = gloostringutils.DeleteOneByValue(rule["operations"], "DELETE")
// A namespace with an update to a label can cause it to no longer be watched,
// equivalent to deleting it from the controller's perspective
if rule["resources"][0] == "namespaces" {
rule["operations"] = gloostringutils.DeleteOneByValue(rule["operations"], "UPDATE")
}
}

if len(rule["operations"]) == 0 {
rules = append(rules[:i], rules[i+1:]...)
if len(rule["operations"]) != 0 {
finalRules = append(finalRules, rules[i])
}
}

str, err := yaml.Marshal(rules)
str, err := yaml.Marshal(finalRules)
Expect(err).NotTo(HaveOccurred())
return string(str)
}
42 changes: 0 additions & 42 deletions pkg/utils/namespaces.go

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package utils_test
package namespaces_test

import (
"testing"
Expand All @@ -9,5 +9,5 @@ import (

func TestUtils(t *testing.T) {
RegisterFailHandler(Fail)
RunSpecs(t, "Utils Suite")
RunSpecs(t, "Namespace Suite")
}
Loading
Loading