Skip to content

Commit cd9f18b

Browse files
authored
Merge pull request kubernetes#75340 from pohly/framework-crd-utils
framework k8s.io/apiextensions-apiserver dependency
2 parents aa9cbd1 + 25c615c commit cd9f18b

File tree

13 files changed

+109
-73
lines changed

13 files changed

+109
-73
lines changed

test/e2e/apimachinery/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ go_library(
8282
"//test/e2e/framework:go_default_library",
8383
"//test/e2e/framework/metrics:go_default_library",
8484
"//test/utils:go_default_library",
85+
"//test/utils/crd:go_default_library",
8586
"//test/utils/image:go_default_library",
8687
"//vendor/github.com/go-openapi/spec:go_default_library",
8788
"//vendor/github.com/onsi/ginkgo:go_default_library",

test/e2e/apimachinery/crd_conversion_webhook.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"k8s.io/client-go/dynamic"
3333
clientset "k8s.io/client-go/kubernetes"
3434
"k8s.io/kubernetes/test/e2e/framework"
35+
"k8s.io/kubernetes/test/utils/crd"
3536
imageutils "k8s.io/kubernetes/test/utils/image"
3637

3738
. "github.com/onsi/ginkgo"
@@ -100,7 +101,7 @@ var _ = SIGDescribe("CustomResourceConversionWebhook [Feature:CustomResourceWebh
100101
})
101102

102103
It("Should be able to convert from CR v1 to CR v2", func() {
103-
testcrd, err := framework.CreateMultiVersionTestCRD(f, "stable.example.com", apiVersions,
104+
testcrd, err := crd.CreateMultiVersionTestCRD(f, "stable.example.com", apiVersions,
104105
&v1beta1.WebhookClientConfig{
105106
CABundle: context.signingCert,
106107
Service: &v1beta1.ServiceReference{
@@ -116,7 +117,7 @@ var _ = SIGDescribe("CustomResourceConversionWebhook [Feature:CustomResourceWebh
116117
})
117118

118119
It("Should be able to convert a non homogeneous list of CRs", func() {
119-
testcrd, err := framework.CreateMultiVersionTestCRD(f, "stable.example.com", apiVersions,
120+
testcrd, err := crd.CreateMultiVersionTestCRD(f, "stable.example.com", apiVersions,
120121
&v1beta1.WebhookClientConfig{
121122
CABundle: context.signingCert,
122123
Service: &v1beta1.ServiceReference{
@@ -325,7 +326,7 @@ func testCustomResourceConversionWebhook(f *framework.Framework, crd *v1beta1.Cu
325326
verifyV2Object(f, crd, v2crd)
326327
}
327328

328-
func testCRListConversion(f *framework.Framework, testCrd *framework.TestCrd) {
329+
func testCRListConversion(f *framework.Framework, testCrd *crd.TestCrd) {
329330
crd := testCrd.Crd
330331
customResourceClients := testCrd.DynamicClients
331332
name1 := "cr-instance-1"
@@ -346,7 +347,7 @@ func testCRListConversion(f *framework.Framework, testCrd *framework.TestCrd) {
346347
Expect(err).To(BeNil())
347348

348349
// Now cr-instance-1 is stored as v1. lets change storage version
349-
crd, err = integration.UpdateCustomResourceDefinitionWithRetry(testCrd.ApiExtensionClient, crd.Name, func(c *v1beta1.CustomResourceDefinition) {
350+
crd, err = integration.UpdateCustomResourceDefinitionWithRetry(testCrd.APIExtensionClient, crd.Name, func(c *v1beta1.CustomResourceDefinition) {
350351
c.Spec.Versions = alternativeApiVersions
351352
})
352353
Expect(err).To(BeNil())

test/e2e/apimachinery/crd_publish_openapi.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
k8sclientset "k8s.io/client-go/kubernetes"
3838
openapiutil "k8s.io/kube-openapi/pkg/util"
3939
"k8s.io/kubernetes/test/e2e/framework"
40+
"k8s.io/kubernetes/test/utils/crd"
4041
"sigs.k8s.io/yaml"
4142
)
4243

@@ -58,7 +59,7 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Feature:CustomResourcePublish
5859
framework.Failf("%v", err)
5960
}
6061

61-
meta := fmt.Sprintf(metaPattern, crd.Kind, crd.ApiGroup, crd.Versions[0].Name, "test-foo")
62+
meta := fmt.Sprintf(metaPattern, crd.Kind, crd.APIGroup, crd.Versions[0].Name, "test-foo")
6263
ns := fmt.Sprintf("--namespace=%v", f.Namespace.Name)
6364

6465
By("client-side validation (kubectl create and apply) allows request with known and required properties")
@@ -126,7 +127,7 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Feature:CustomResourcePublish
126127
framework.Failf("%v", err)
127128
}
128129

129-
meta := fmt.Sprintf(metaPattern, crd.Kind, crd.ApiGroup, crd.Versions[0].Name, "test-cr")
130+
meta := fmt.Sprintf(metaPattern, crd.Kind, crd.APIGroup, crd.Versions[0].Name, "test-cr")
130131
ns := fmt.Sprintf("--namespace=%v", f.Namespace.Name)
131132

132133
By("client-side validation (kubectl create and apply) allows request with any unknown properties")
@@ -164,8 +165,8 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Feature:CustomResourcePublish
164165
if err != nil {
165166
framework.Failf("%v", err)
166167
}
167-
if crdFoo.ApiGroup == crdWaldo.ApiGroup {
168-
framework.Failf("unexpected: CRDs should be of different group %v, %v", crdFoo.ApiGroup, crdWaldo.ApiGroup)
168+
if crdFoo.APIGroup == crdWaldo.APIGroup {
169+
framework.Failf("unexpected: CRDs should be of different group %v, %v", crdFoo.APIGroup, crdWaldo.APIGroup)
169170
}
170171
if err := waitForDefinition(f.ClientSet, definitionName(crdWaldo, "v1beta1"), schemaWaldo); err != nil {
171172
framework.Failf("%v", err)
@@ -206,8 +207,8 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Feature:CustomResourcePublish
206207
if err != nil {
207208
framework.Failf("%v", err)
208209
}
209-
if crdFoo.ApiGroup != crdWaldo.ApiGroup {
210-
framework.Failf("unexpected: CRDs should be of the same group %v, %v", crdFoo.ApiGroup, crdWaldo.ApiGroup)
210+
if crdFoo.APIGroup != crdWaldo.APIGroup {
211+
framework.Failf("unexpected: CRDs should be of the same group %v, %v", crdFoo.APIGroup, crdWaldo.APIGroup)
211212
}
212213
if err := waitForDefinition(f.ClientSet, definitionName(crdWaldo, "v5"), schemaWaldo); err != nil {
213214
framework.Failf("%v", err)
@@ -233,8 +234,8 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Feature:CustomResourcePublish
233234
if err != nil {
234235
framework.Failf("%v", err)
235236
}
236-
if crdFoo.ApiGroup != crdWaldo.ApiGroup {
237-
framework.Failf("unexpected: CRDs should be of the same group %v, %v", crdFoo.ApiGroup, crdWaldo.ApiGroup)
237+
if crdFoo.APIGroup != crdWaldo.APIGroup {
238+
framework.Failf("unexpected: CRDs should be of the same group %v, %v", crdFoo.APIGroup, crdWaldo.APIGroup)
238239
}
239240
if err := waitForDefinition(f.ClientSet, definitionName(crdWaldo, "v6"), schemaWaldo); err != nil {
240241
framework.Failf("%v", err)
@@ -265,7 +266,7 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Feature:CustomResourcePublish
265266

266267
By("rename a version")
267268
patch := []byte(`{"spec":{"versions":[{"name":"v2","served":true,"storage":true},{"name":"v4","served":true,"storage":false}]}}`)
268-
crdMultiVer.Crd, err = crdMultiVer.ApiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Patch(crdMultiVer.GetMetaName(), types.MergePatchType, patch)
269+
crdMultiVer.Crd, err = crdMultiVer.APIExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Patch(crdMultiVer.GetMetaName(), types.MergePatchType, patch)
269270
if err != nil {
270271
framework.Failf("%v", err)
271272
}
@@ -307,7 +308,7 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Feature:CustomResourcePublish
307308

308309
By("mark a version not serverd")
309310
crd.Crd.Spec.Versions[1].Served = false
310-
crd.Crd, err = crd.ApiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Update(crd.Crd)
311+
crd.Crd, err = crd.APIExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Update(crd.Crd)
311312
if err != nil {
312313
framework.Failf("%v", err)
313314
}
@@ -327,7 +328,7 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Feature:CustomResourcePublish
327328
})
328329
})
329330

330-
func setupCRD(f *framework.Framework, schema []byte, groupSuffix string, versions ...string) (*framework.TestCrd, error) {
331+
func setupCRD(f *framework.Framework, schema []byte, groupSuffix string, versions ...string) (*crd.TestCrd, error) {
331332
group := fmt.Sprintf("%s-test-%s.k8s.io", f.BaseName, groupSuffix)
332333
if len(versions) == 0 {
333334
return nil, fmt.Errorf("require at least one version for CRD")
@@ -343,7 +344,7 @@ func setupCRD(f *framework.Framework, schema []byte, groupSuffix string, version
343344
}
344345
apiVersions[0].Storage = true
345346

346-
crd, err := framework.CreateMultiVersionTestCRD(f, group, apiVersions, nil)
347+
crd, err := crd.CreateMultiVersionTestCRD(f, group, apiVersions, nil)
347348
if err != nil {
348349
return nil, fmt.Errorf("failed to create CRD: %v", err)
349350
}
@@ -366,7 +367,7 @@ func setupCRD(f *framework.Framework, schema []byte, groupSuffix string, version
366367
return crd, nil
367368
}
368369

369-
func cleanupCRD(f *framework.Framework, crd *framework.TestCrd) error {
370+
func cleanupCRD(f *framework.Framework, crd *crd.TestCrd) error {
370371
crd.CleanUp()
371372
for _, v := range crd.Versions {
372373
name := definitionName(crd, v.Name)
@@ -378,13 +379,13 @@ func cleanupCRD(f *framework.Framework, crd *framework.TestCrd) error {
378379
}
379380

380381
// patchSchema takes schema in YAML and patches it to given CRD in given version
381-
func patchSchema(schema []byte, crd *framework.TestCrd) error {
382+
func patchSchema(schema []byte, crd *crd.TestCrd) error {
382383
s, err := utilyaml.ToJSON(schema)
383384
if err != nil {
384385
return fmt.Errorf("failed to create json patch: %v", err)
385386
}
386387
patch := []byte(fmt.Sprintf(`{"spec":{"validation":{"openAPIV3Schema":%s}}}`, string(s)))
387-
crd.Crd, err = crd.ApiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Patch(crd.GetMetaName(), types.MergePatchType, patch)
388+
crd.Crd, err = crd.APIExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Patch(crd.GetMetaName(), types.MergePatchType, patch)
388389
return err
389390
}
390391

@@ -484,8 +485,8 @@ func verifyKubectlExplain(name, pattern string) error {
484485
}
485486

486487
// definitionName returns the openapi definition name for given CRD in given version
487-
func definitionName(crd *framework.TestCrd, version string) string {
488-
return openapiutil.ToRESTFriendlyName(fmt.Sprintf("%s/%s/%s", crd.ApiGroup, version, crd.Kind))
488+
func definitionName(crd *crd.TestCrd, version string) string {
489+
return openapiutil.ToRESTFriendlyName(fmt.Sprintf("%s/%s/%s", crd.APIGroup, version, crd.Kind))
489490
}
490491

491492
var schemaFoo = []byte(`description: Foo CRD for Testing

test/e2e/apimachinery/discovery.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
utilversion "k8s.io/apimachinery/pkg/util/version"
2121
"k8s.io/apiserver/pkg/endpoints/discovery"
2222
"k8s.io/kubernetes/test/e2e/framework"
23+
"k8s.io/kubernetes/test/utils/crd"
2324

2425
. "github.com/onsi/ginkgo"
2526
)
@@ -40,13 +41,13 @@ var _ = SIGDescribe("Discovery", func() {
4041
})
4142

4243
It("[Feature:StorageVersionHash] Custom resource should have storage version hash", func() {
43-
testcrd, err := framework.CreateTestCRD(f)
44+
testcrd, err := crd.CreateTestCRD(f)
4445
if err != nil {
4546
return
4647
}
4748
defer testcrd.CleanUp()
4849
spec := testcrd.Crd.Spec
49-
resources, err := testcrd.ApiExtensionClient.Discovery().ServerResourcesForGroupVersion(spec.Group + "/" + spec.Versions[0].Name)
50+
resources, err := testcrd.APIExtensionClient.Discovery().ServerResourcesForGroupVersion(spec.Group + "/" + spec.Versions[0].Name)
5051
if err != nil {
5152
framework.Failf("failed to find the discovery doc for %v: %v", resources, err)
5253
}

test/e2e/apimachinery/webhook.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
"k8s.io/client-go/dynamic"
3939
clientset "k8s.io/client-go/kubernetes"
4040
"k8s.io/kubernetes/test/e2e/framework"
41+
"k8s.io/kubernetes/test/utils/crd"
4142
imageutils "k8s.io/kubernetes/test/utils/image"
4243

4344
. "github.com/onsi/ginkgo"
@@ -130,7 +131,7 @@ var _ = SIGDescribe("AdmissionWebhook", func() {
130131
})
131132

132133
It("Should be able to deny custom resource creation", func() {
133-
testcrd, err := framework.CreateTestCRD(f)
134+
testcrd, err := crd.CreateTestCRD(f)
134135
if err != nil {
135136
return
136137
}
@@ -167,7 +168,7 @@ var _ = SIGDescribe("AdmissionWebhook", func() {
167168
})
168169

169170
It("Should mutate custom resource", func() {
170-
testcrd, err := framework.CreateTestCRD(f)
171+
testcrd, err := crd.CreateTestCRD(f)
171172
if err != nil {
172173
return
173174
}
@@ -185,7 +186,7 @@ var _ = SIGDescribe("AdmissionWebhook", func() {
185186
})
186187

187188
It("Should mutate custom resource with different stored version", func() {
188-
testcrd, err := framework.CreateMultiVersionTestCRDWithV1Storage(f)
189+
testcrd, err := crd.CreateMultiVersionTestCRDWithV1Storage(f)
189190
if err != nil {
190191
return
191192
}
@@ -1186,7 +1187,7 @@ func cleanWebhookTest(client clientset.Interface, namespaceName string) {
11861187
_ = client.RbacV1beta1().RoleBindings("kube-system").Delete(roleBindingName, nil)
11871188
}
11881189

1189-
func registerWebhookForCustomResource(f *framework.Framework, context *certContext, testcrd *framework.TestCrd) func() {
1190+
func registerWebhookForCustomResource(f *framework.Framework, context *certContext, testcrd *crd.TestCrd) func() {
11901191
client := f.ClientSet
11911192
By("Registering the custom resource webhook via the AdmissionRegistration API")
11921193

@@ -1202,7 +1203,7 @@ func registerWebhookForCustomResource(f *framework.Framework, context *certConte
12021203
Rules: []v1beta1.RuleWithOperations{{
12031204
Operations: []v1beta1.OperationType{v1beta1.Create, v1beta1.Update},
12041205
Rule: v1beta1.Rule{
1205-
APIGroups: []string{testcrd.ApiGroup},
1206+
APIGroups: []string{testcrd.APIGroup},
12061207
APIVersions: testcrd.GetAPIVersions(),
12071208
Resources: []string{testcrd.GetPluralName()},
12081209
},
@@ -1227,7 +1228,7 @@ func registerWebhookForCustomResource(f *framework.Framework, context *certConte
12271228
}
12281229
}
12291230

1230-
func registerMutatingWebhookForCustomResource(f *framework.Framework, context *certContext, testcrd *framework.TestCrd) func() {
1231+
func registerMutatingWebhookForCustomResource(f *framework.Framework, context *certContext, testcrd *crd.TestCrd) func() {
12311232
client := f.ClientSet
12321233
By("Registering the mutating webhook for a custom resource via the AdmissionRegistration API")
12331234

@@ -1243,7 +1244,7 @@ func registerMutatingWebhookForCustomResource(f *framework.Framework, context *c
12431244
Rules: []v1beta1.RuleWithOperations{{
12441245
Operations: []v1beta1.OperationType{v1beta1.Create, v1beta1.Update},
12451246
Rule: v1beta1.Rule{
1246-
APIGroups: []string{testcrd.ApiGroup},
1247+
APIGroups: []string{testcrd.APIGroup},
12471248
APIVersions: testcrd.GetAPIVersions(),
12481249
Resources: []string{testcrd.GetPluralName()},
12491250
},
@@ -1262,7 +1263,7 @@ func registerMutatingWebhookForCustomResource(f *framework.Framework, context *c
12621263
Rules: []v1beta1.RuleWithOperations{{
12631264
Operations: []v1beta1.OperationType{v1beta1.Create},
12641265
Rule: v1beta1.Rule{
1265-
APIGroups: []string{testcrd.ApiGroup},
1266+
APIGroups: []string{testcrd.APIGroup},
12661267
APIVersions: testcrd.GetAPIVersions(),
12671268
Resources: []string{testcrd.GetPluralName()},
12681269
},
@@ -1338,7 +1339,7 @@ func testMutatingCustomResourceWebhook(f *framework.Framework, crd *apiextension
13381339
}
13391340
}
13401341

1341-
func testMultiVersionCustomResourceWebhook(f *framework.Framework, testcrd *framework.TestCrd) {
1342+
func testMultiVersionCustomResourceWebhook(f *framework.Framework, testcrd *crd.TestCrd) {
13421343
customResourceClient := testcrd.GetV1DynamicClient()
13431344
By("Creating a custom resource while v1 is storage version")
13441345
crName := "cr-instance-1"
@@ -1360,7 +1361,7 @@ func testMultiVersionCustomResourceWebhook(f *framework.Framework, testcrd *fram
13601361

13611362
By("Patching Custom Resource Definition to set v2 as storage")
13621363
apiVersionWithV2StoragePatch := fmt.Sprint(`{"spec": {"versions": [{"name": "v1", "storage": false, "served": true},{"name": "v2", "storage": true, "served": true}]}}`)
1363-
_, err = testcrd.ApiExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Patch(testcrd.Crd.Name, types.StrategicMergePatchType, []byte(apiVersionWithV2StoragePatch))
1364+
_, err = testcrd.APIExtensionClient.ApiextensionsV1beta1().CustomResourceDefinitions().Patch(testcrd.Crd.Name, types.StrategicMergePatchType, []byte(apiVersionWithV2StoragePatch))
13641365
Expect(err).NotTo(HaveOccurred(), "failed to patch custom resource definition %s in namespace: %s", testcrd.Crd.Name, f.Namespace.Name)
13651366

13661367
By("Patching the custom resource while v2 is storage version")
@@ -1427,10 +1428,10 @@ func testCRDDenyWebhook(f *framework.Framework) {
14271428
Storage: true,
14281429
},
14291430
}
1430-
testcrd := &framework.TestCrd{
1431+
testcrd := &crd.TestCrd{
14311432
Name: name,
14321433
Kind: kind,
1433-
ApiGroup: group,
1434+
APIGroup: group,
14341435
Versions: apiVersions,
14351436
}
14361437

@@ -1453,7 +1454,7 @@ func testCRDDenyWebhook(f *framework.Framework) {
14531454
},
14541455
},
14551456
Spec: apiextensionsv1beta1.CustomResourceDefinitionSpec{
1456-
Group: testcrd.ApiGroup,
1457+
Group: testcrd.APIGroup,
14571458
Versions: testcrd.Versions,
14581459
Names: apiextensionsv1beta1.CustomResourceDefinitionNames{
14591460
Plural: testcrd.GetPluralName(),

test/e2e/framework/BUILD

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ go_library(
77
srcs = [
88
"authorizer_util.go",
99
"cleanup.go",
10-
"crd_util.go",
1110
"create.go",
1211
"deployment_util.go",
1312
"exec_util.go",
@@ -83,9 +82,6 @@ go_library(
8382
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
8483
"//staging/src/k8s.io/api/rbac/v1beta1:go_default_library",
8584
"//staging/src/k8s.io/api/storage/v1:go_default_library",
86-
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1:go_default_library",
87-
"//staging/src/k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset:go_default_library",
88-
"//staging/src/k8s.io/apiextensions-apiserver/test/integration/fixtures:go_default_library",
8985
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
9086
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
9187
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",

test/e2e/framework/framework.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import (
3232
"time"
3333

3434
"k8s.io/api/core/v1"
35-
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
3635
apierrors "k8s.io/apimachinery/pkg/api/errors"
3736
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3837
"k8s.io/apimachinery/pkg/labels"
@@ -75,7 +74,6 @@ type Framework struct {
7574

7675
ClientSet clientset.Interface
7776
KubemarkExternalClusterClientSet clientset.Interface
78-
APIExtensionsClientSet apiextensionsclient.Interface
7977

8078
InternalClientset *internalclientset.Clientset
8179
AggregatorClient *aggregatorclient.Clientset
@@ -182,8 +180,6 @@ func (f *Framework) BeforeEach() {
182180
}
183181
f.ClientSet, err = clientset.NewForConfig(config)
184182
ExpectNoError(err)
185-
f.APIExtensionsClientSet, err = apiextensionsclient.NewForConfig(config)
186-
ExpectNoError(err)
187183
f.InternalClientset, err = internalclientset.NewForConfig(config)
188184
ExpectNoError(err)
189185
f.AggregatorClient, err = aggregatorclient.NewForConfig(config)

test/e2e/framework/util.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,7 +1060,7 @@ func WaitForPersistentVolumeClaimsPhase(phase v1.PersistentVolumeClaimPhase, c c
10601060
func findAvailableNamespaceName(baseName string, c clientset.Interface) (string, error) {
10611061
var name string
10621062
err := wait.PollImmediate(Poll, 30*time.Second, func() (bool, error) {
1063-
name = fmt.Sprintf("%v-%v", baseName, randomSuffix())
1063+
name = fmt.Sprintf("%v-%v", baseName, RandomSuffix())
10641064
_, err := c.CoreV1().Namespaces().Get(name, metav1.GetOptions{})
10651065
if err == nil {
10661066
// Already taken
@@ -2154,7 +2154,7 @@ func LoadClientset() (*clientset.Clientset, error) {
21542154
// for pods and replication controllers so we don't
21552155
// need to use such a function and can instead
21562156
// use the UUID utility function.
2157-
func randomSuffix() string {
2157+
func RandomSuffix() string {
21582158
r := rand.New(rand.NewSource(time.Now().UnixNano()))
21592159
return strconv.Itoa(r.Int() % 10000)
21602160
}

test/e2e/kubectl/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ go_library(
3434
"//test/e2e/framework/testfiles:go_default_library",
3535
"//test/e2e/scheduling:go_default_library",
3636
"//test/utils:go_default_library",
37+
"//test/utils/crd:go_default_library",
3738
"//test/utils/image:go_default_library",
3839
"//vendor/github.com/elazarl/goproxy:go_default_library",
3940
"//vendor/github.com/onsi/ginkgo:go_default_library",

0 commit comments

Comments
 (0)