Skip to content

Commit 4080bb4

Browse files
exdxbenluddy
authored andcommitted
fix: remove v1beta1 CRDs from all e2e tests; add deprecation e2e tests
Signed-off-by: Daniel Sover <[email protected]>
1 parent e5309b6 commit 4080bb4

File tree

6 files changed

+60
-136
lines changed

6 files changed

+60
-136
lines changed

test/e2e/bundle_e2e_test.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"encoding/json"
66

77
"github.com/ghodss/yaml"
8-
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
8+
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
99
k8serrors "k8s.io/apimachinery/pkg/api/errors"
1010
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
1111

@@ -39,6 +39,7 @@ var _ = Describe("Installing bundles with new object types", func() {
3939
TearDown(testNamespace)
4040
})
4141

42+
// TODO bump vpa CRD to v1, otherwise this test will now fail
4243
When("a bundle with a pdb, priorityclass, and VPA object is installed", func() {
4344
const (
4445
packageName = "busybox"
@@ -76,7 +77,7 @@ var _ = Describe("Installing bundles with new object types", func() {
7677

7778
// ensure vpa crd is established and accepted on the cluster before continuing
7879
Eventually(func() (bool, error) {
79-
crd, err := kubeClient.ApiextensionsInterface().ApiextensionsV1beta1().CustomResourceDefinitions().Get(context.TODO(), vpaCRD.GetName(), metav1.GetOptions{})
80+
crd, err := kubeClient.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Get(context.TODO(), vpaCRD.GetName(), metav1.GetOptions{})
8081
if err != nil {
8182
return false, err
8283
}
@@ -167,19 +168,19 @@ var _ = Describe("Installing bundles with new object types", func() {
167168
})
168169
})
169170

170-
func crdReady(status *apiextensionsv1beta1.CustomResourceDefinitionStatus) bool {
171+
func crdReady(status *apiextensionsv1.CustomResourceDefinitionStatus) bool {
171172
if status == nil {
172173
return false
173174
}
174175
established, namesAccepted := false, false
175176
for _, cdt := range status.Conditions {
176177
switch cdt.Type {
177-
case apiextensionsv1beta1.Established:
178-
if cdt.Status == apiextensionsv1beta1.ConditionTrue {
178+
case apiextensionsv1.Established:
179+
if cdt.Status == apiextensionsv1.ConditionTrue {
179180
established = true
180181
}
181-
case apiextensionsv1beta1.NamesAccepted:
182-
if cdt.Status == apiextensionsv1beta1.ConditionTrue {
182+
case apiextensionsv1.NamesAccepted:
183+
if cdt.Status == apiextensionsv1.ConditionTrue {
183184
namesAccepted = true
184185
}
185186
}

test/e2e/crd_e2e_test.go

Lines changed: 12 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -14,95 +14,13 @@ import (
1414

1515
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
1616
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
17-
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
1817
k8serrors "k8s.io/apimachinery/pkg/api/errors"
1918
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2019
)
2120

2221
var _ = Describe("CRD Versions", func() {
2322
AfterEach(func() { TearDown(testNamespace) }, float64(30))
2423

25-
It("creates v1beta1 crds with a v1beta1 schema successfully", func() {
26-
By("This test proves that OLM is able to handle v1beta1 CRDs successfully. Creating v1 CRDs has more " +
27-
"restrictions around the schema. v1beta1 validation schemas are not necessarily valid in v1. " +
28-
"OLM should support both v1beta1 and v1 CRDs")
29-
c := newKubeClient()
30-
crc := newCRClient()
31-
32-
mainPackageName := genName("nginx-update2-")
33-
mainPackageStable := fmt.Sprintf("%s-stable", mainPackageName)
34-
stableChannel := "stable"
35-
36-
crdPlural := genName("ins-v1beta1-")
37-
crdName := crdPlural + ".cluster.com"
38-
mainCRD := apiextensions.CustomResourceDefinition{
39-
ObjectMeta: metav1.ObjectMeta{
40-
Name: crdName,
41-
},
42-
Spec: apiextensions.CustomResourceDefinitionSpec{
43-
Group: "cluster.com",
44-
Versions: []apiextensions.CustomResourceDefinitionVersion{
45-
{
46-
Name: "v1alpha1",
47-
Served: true,
48-
Storage: true,
49-
},
50-
},
51-
Names: apiextensions.CustomResourceDefinitionNames{
52-
Plural: crdPlural,
53-
Singular: crdPlural,
54-
Kind: crdPlural,
55-
ListKind: "list" + crdPlural,
56-
},
57-
Scope: "Namespaced",
58-
// this validation is not a valid v1 structural schema because the "type: object" field is missing
59-
Validation: &apiextensions.CustomResourceValidation{
60-
OpenAPIV3Schema: &apiextensions.JSONSchemaProps{
61-
Description: "my crd schema",
62-
},
63-
},
64-
},
65-
}
66-
67-
mainCSV := newCSV(mainPackageStable, testNamespace, "", semver.MustParse("0.1.0"), []apiextensions.CustomResourceDefinition{mainCRD}, nil, nil)
68-
mainCatalogName := genName("mock-ocs-main-update2-")
69-
mainManifests := []registry.PackageManifest{
70-
{
71-
PackageName: mainPackageName,
72-
Channels: []registry.PackageChannel{
73-
{Name: stableChannel, CurrentCSVName: mainPackageStable},
74-
},
75-
DefaultChannelName: stableChannel,
76-
},
77-
}
78-
79-
// Create the catalog sources
80-
_, cleanupMainCatalogSource := createInternalCatalogSource(c, crc, mainCatalogName, testNamespace, mainManifests, []apiextensions.CustomResourceDefinition{mainCRD}, []operatorsv1alpha1.ClusterServiceVersion{mainCSV})
81-
defer cleanupMainCatalogSource()
82-
83-
// Attempt to get the catalog source before creating install plan
84-
_, err := fetchCatalogSourceOnStatus(crc, mainCatalogName, testNamespace, catalogSourceRegistryPodSynced)
85-
Expect(err).ToNot(HaveOccurred())
86-
87-
subscriptionName := genName("sub-nginx-update2-")
88-
subscriptionCleanup := createSubscriptionForCatalog(crc, testNamespace, subscriptionName, mainCatalogName, mainPackageName, stableChannel, "", operatorsv1alpha1.ApprovalAutomatic)
89-
defer subscriptionCleanup()
90-
91-
subscription, err := fetchSubscription(crc, testNamespace, subscriptionName, subscriptionHasInstallPlanChecker)
92-
Expect(err).ToNot(HaveOccurred())
93-
Expect(subscription).ToNot(Equal(nil))
94-
Expect(subscription.Status.InstallPlanRef).ToNot(Equal(nil))
95-
Expect(mainCSV.GetName()).To(Equal(subscription.Status.CurrentCSV))
96-
97-
installPlanName := subscription.Status.InstallPlanRef.Name
98-
99-
// Wait for InstallPlan to be status: Complete before checking resource presence
100-
fetchedInstallPlan, err := fetchInstallPlan(GinkgoT(), crc, installPlanName, buildInstallPlanPhaseCheckFunc(operatorsv1alpha1.InstallPlanPhaseComplete))
101-
Expect(err).ToNot(HaveOccurred())
102-
GinkgoT().Logf("Install plan %s fetched with status %s", fetchedInstallPlan.GetName(), fetchedInstallPlan.Status.Phase)
103-
Expect(fetchedInstallPlan.Status.Phase).To(Equal(operatorsv1alpha1.InstallPlanPhaseComplete))
104-
})
105-
10624
It("creates v1 CRDs with a v1 schema successfully", func() {
10725
By("v1 crds with a valid openapiv3 schema should be created successfully by OLM")
10826
c := newKubeClient()
@@ -112,7 +30,7 @@ var _ = Describe("CRD Versions", func() {
11230
mainPackageStable := fmt.Sprintf("%s-stable", mainPackageName)
11331
stableChannel := "stable"
11432

115-
crdPlural := genName("ins-v1beta1-")
33+
crdPlural := genName("ins-")
11634
crdName := crdPlural + ".cluster.com"
11735
v1crd := apiextensionsv1.CustomResourceDefinition{
11836
ObjectMeta: metav1.ObjectMeta{
@@ -185,7 +103,7 @@ var _ = Describe("CRD Versions", func() {
185103
mainPackageStable := fmt.Sprintf("%s-stable", mainPackageName)
186104
stableChannel := "stable"
187105

188-
crdPlural := genName("ins-v1beta1-")
106+
crdPlural := genName("ins-")
189107
crdName := crdPlural + ".cluster.com"
190108
oldCRD := apiextensions.CustomResourceDefinition{
191109
ObjectMeta: metav1.ObjectMeta{
@@ -352,20 +270,20 @@ var _ = Describe("CRD Versions", func() {
352270
crdName := crdPlural + ".cluster.com"
353271
crdGroup := "cluster.com"
354272

355-
oldCRD := &apiextensionsv1beta1.CustomResourceDefinition{
273+
oldCRD := &apiextensionsv1.CustomResourceDefinition{
356274
ObjectMeta: metav1.ObjectMeta{
357275
Name: crdName,
358276
},
359-
Spec: apiextensionsv1beta1.CustomResourceDefinitionSpec{
277+
Spec: apiextensionsv1.CustomResourceDefinitionSpec{
360278
Group: crdGroup,
361-
Versions: []apiextensionsv1beta1.CustomResourceDefinitionVersion{
279+
Versions: []apiextensionsv1.CustomResourceDefinitionVersion{
362280
{
363281
Name: "v1alpha1",
364282
Served: true,
365283
Storage: true,
366284
},
367285
},
368-
Names: apiextensionsv1beta1.CustomResourceDefinitionNames{
286+
Names: apiextensionsv1.CustomResourceDefinitionNames{
369287
Plural: crdPlural,
370288
Singular: crdPlural,
371289
Kind: crdPlural,
@@ -374,12 +292,12 @@ var _ = Describe("CRD Versions", func() {
374292
Scope: "Namespaced",
375293
},
376294
}
377-
_, err := c.ApiextensionsInterface().ApiextensionsV1beta1().CustomResourceDefinitions().Create(context.TODO(), oldCRD, metav1.CreateOptions{})
295+
_, err := c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Create(context.TODO(), oldCRD, metav1.CreateOptions{})
378296
Expect(err).ToNot(HaveOccurred(), "error creating old CRD")
379297

380298
// wrap CRD update in a poll because of the object has been modified related errors
381299
Eventually(func() error {
382-
oldCRD, err = c.ApiextensionsInterface().ApiextensionsV1beta1().CustomResourceDefinitions().Get(context.TODO(), oldCRD.GetName(), metav1.GetOptions{})
300+
oldCRD, err = c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Get(context.TODO(), oldCRD.GetName(), metav1.GetOptions{})
383301
if err != nil {
384302
return err
385303
}
@@ -388,13 +306,13 @@ var _ = Describe("CRD Versions", func() {
388306
// set v1alpha1 to no longer served
389307
oldCRD.Spec.Versions[0].Storage = false
390308
// update CRD on-cluster with a new version
391-
oldCRD.Spec.Versions = append(oldCRD.Spec.Versions, apiextensionsv1beta1.CustomResourceDefinitionVersion{
309+
oldCRD.Spec.Versions = append(oldCRD.Spec.Versions, apiextensionsv1.CustomResourceDefinitionVersion{
392310
Name: "v1alpha2",
393311
Served: true,
394312
Storage: true,
395313
})
396314

397-
updatedCRD, err := c.ApiextensionsInterface().ApiextensionsV1beta1().CustomResourceDefinitions().Update(context.TODO(), oldCRD, metav1.UpdateOptions{})
315+
updatedCRD, err := c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Update(context.TODO(), oldCRD, metav1.UpdateOptions{})
398316
if err != nil {
399317
return err
400318
}
@@ -471,10 +389,10 @@ var _ = Describe("CRD Versions", func() {
471389
))
472390

473391
// update CRD status to remove the v1alpha1 stored version
474-
newCRD, err := c.ApiextensionsInterface().ApiextensionsV1beta1().CustomResourceDefinitions().Get(context.TODO(), oldCRD.GetName(), metav1.GetOptions{})
392+
newCRD, err := c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Get(context.TODO(), oldCRD.GetName(), metav1.GetOptions{})
475393
Expect(err).ToNot(HaveOccurred(), "error getting new CRD")
476394
newCRD.Status.StoredVersions = []string{"v1alpha2"}
477-
newCRD, err = c.ApiextensionsInterface().ApiextensionsV1beta1().CustomResourceDefinitions().UpdateStatus(context.TODO(), newCRD, metav1.UpdateOptions{})
395+
newCRD, err = c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().UpdateStatus(context.TODO(), newCRD, metav1.UpdateOptions{})
478396
Expect(err).ToNot(HaveOccurred(), "error updating new CRD")
479397
GinkgoT().Logf("new crd status stored versions: %#v", newCRD.Status.StoredVersions) // only v1alpha2 should be in the status now
480398

test/e2e/csv_e2e_test.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
rbacv1 "k8s.io/api/rbac/v1"
1717
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
1818
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
19-
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
2019
k8serrors "k8s.io/apimachinery/pkg/api/errors"
2120
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2221
k8slabels "k8s.io/apimachinery/pkg/labels"
@@ -4120,13 +4119,13 @@ func createCSV(c operatorclient.ClientInterface, crc versioned.Interface, csv v1
41204119

41214120
func buildCRDCleanupFunc(c operatorclient.ClientInterface, crdName string) cleanupFunc {
41224121
return func() {
4123-
err := c.ApiextensionsInterface().ApiextensionsV1beta1().CustomResourceDefinitions().Delete(context.TODO(), crdName, *metav1.NewDeleteOptions(immediateDeleteGracePeriod))
4122+
err := c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Delete(context.TODO(), crdName, *metav1.NewDeleteOptions(immediateDeleteGracePeriod))
41244123
if err != nil {
41254124
fmt.Println(err)
41264125
}
41274126

41284127
waitForDelete(func() error {
4129-
_, err := c.ApiextensionsInterface().ApiextensionsV1beta1().CustomResourceDefinitions().Get(context.TODO(), crdName, metav1.GetOptions{})
4128+
_, err := c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Get(context.TODO(), crdName, metav1.GetOptions{})
41304129
return err
41314130
})
41324131
}
@@ -4147,18 +4146,18 @@ func buildAPIServiceCleanupFunc(c operatorclient.ClientInterface, apiServiceName
41474146
}
41484147

41494148
func createCRD(c operatorclient.ClientInterface, crd apiextensions.CustomResourceDefinition) (cleanupFunc, error) {
4150-
out := &v1beta1.CustomResourceDefinition{}
4149+
out := &apiextensionsv1.CustomResourceDefinition{}
41514150
scheme := runtime.NewScheme()
41524151
if err := apiextensions.AddToScheme(scheme); err != nil {
41534152
return nil, err
41544153
}
4155-
if err := v1beta1.AddToScheme(scheme); err != nil {
4154+
if err := apiextensionsv1.AddToScheme(scheme); err != nil {
41564155
return nil, err
41574156
}
41584157
if err := scheme.Convert(&crd, out, nil); err != nil {
41594158
return nil, err
41604159
}
4161-
_, err := c.ApiextensionsInterface().ApiextensionsV1beta1().CustomResourceDefinitions().Create(context.TODO(), out, metav1.CreateOptions{})
4160+
_, err := c.ApiextensionsInterface().ApiextensionsV1().CustomResourceDefinitions().Create(context.TODO(), out, metav1.CreateOptions{})
41624161
if err != nil {
41634162
return nil, err
41644163
}

test/e2e/deprecated_e2e_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package e2e
2+
3+
// TODO
4+
5+
// v1beta1 CRD in installplan fails
6+
// v1beta1 RBAC in an installplan fails

0 commit comments

Comments
 (0)