66 "encoding/json"
77 "errors"
88 "fmt"
9+ "path/filepath"
910 "strconv"
1011 "strings"
1112 "sync"
@@ -20,7 +21,6 @@ import (
2021 appsv1 "k8s.io/api/apps/v1"
2122 authorizationv1 "k8s.io/api/authorization/v1"
2223 corev1 "k8s.io/api/core/v1"
23- policyv1beta1 "k8s.io/api/policy/v1beta1"
2424 rbacv1 "k8s.io/api/rbac/v1"
2525 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
2626 apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
@@ -48,6 +48,11 @@ import (
4848 "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
4949 "github.com/operator-framework/operator-lifecycle-manager/pkg/lib/ownerutil"
5050 "github.com/operator-framework/operator-lifecycle-manager/test/e2e/ctx"
51+ "github.com/operator-framework/operator-lifecycle-manager/test/e2e/util"
52+ )
53+
54+ const (
55+ deprecatedCRDDir = "deprecated-crd"
5156)
5257
5358var _ = Describe ("Install Plan" , func () {
@@ -76,11 +81,11 @@ var _ = Describe("Install Plan", func() {
7681
7782 When ("an InstallPlan step contains a deprecated resource version" , func () {
7883 var (
79- csv operatorsv1alpha1.ClusterServiceVersion
80- plan operatorsv1alpha1.InstallPlan
81- pdb policyv1beta1. PodDisruptionBudget
82- manifest string
83- counter float64
84+ csv operatorsv1alpha1.ClusterServiceVersion
85+ plan operatorsv1alpha1.InstallPlan
86+ deprecated client. Object
87+ manifest string
88+ counter float64
8489 )
8590
8691 BeforeEach (func () {
@@ -90,13 +95,8 @@ var _ = Describe("Install Plan", func() {
9095 v , err := dc .ServerVersion ()
9196 Expect (err ).ToNot (HaveOccurred ())
9297
93- if minor , err := strconv .Atoi (v .Minor ); err == nil && minor < 21 {
94- // This is a tactical can-kick with
95- // the expectation that the
96- // event-emitting behavior being
97- // tested in this context will have
98- // moved by the time 1.25 arrives.
99- Skip ("hack: test is dependent on 1.21+ behavior" )
98+ if minor , err := strconv .Atoi (v .Minor ); err == nil && minor < 16 {
99+ Skip ("test is dependent on CRD v1 introduced at 1.16" )
100100 }
101101 })
102102
@@ -107,26 +107,21 @@ var _ = Describe("Install Plan", func() {
107107 counter = metric .Value
108108 }
109109 }
110+ deprecatedCRD , err := util .DecodeFile (filepath .Join (testdataDir , deprecatedCRDDir , "deprecated.crd.yaml" ), & apiextensionsv1.CustomResourceDefinition {})
111+ Expect (err ).NotTo (HaveOccurred ())
112+
113+ Expect (ctx .Ctx ().Client ().Create (context .Background (), deprecatedCRD )).To (Succeed ())
110114
111115 csv = newCSV (genName ("test-csv-" ), ns .GetName (), "" , semver.Version {}, nil , nil , nil )
112116 Expect (ctx .Ctx ().Client ().Create (context .Background (), & csv )).To (Succeed ())
113117
114- pdb = policyv1beta1.PodDisruptionBudget {
115- ObjectMeta : metav1.ObjectMeta {
116- Name : genName ("test-pdb-" ),
117- },
118- TypeMeta : metav1.TypeMeta {
119- Kind : "PodDisruptionBudget" ,
120- APIVersion : policyv1beta1 .SchemeGroupVersion .String (),
121- },
122- Spec : policyv1beta1.PodDisruptionBudgetSpec {},
123- }
118+ deprecated , err = util .DecodeFile (filepath .Join (testdataDir , deprecatedCRDDir , "deprecated.cr.yaml" ), & unstructured.Unstructured {}, util .WithNamespace (ns .GetName ()))
119+ Expect (err ).NotTo (HaveOccurred ())
124120
125121 scheme := runtime .NewScheme ()
126- Expect (policyv1beta1 .AddToScheme (scheme )).To (Succeed ())
127122 {
128123 var b bytes.Buffer
129- Expect (k8sjson .NewSerializer (k8sjson .DefaultMetaFactory , scheme , scheme , false ).Encode (& pdb , & b )).To (Succeed ())
124+ Expect (k8sjson .NewSerializer (k8sjson .DefaultMetaFactory , scheme , scheme , false ).Encode (deprecated , & b )).To (Succeed ())
130125 manifest = b .String ()
131126 }
132127
@@ -150,9 +145,9 @@ var _ = Describe("Install Plan", func() {
150145 Resolving : csv .GetName (),
151146 Status : operatorsv1alpha1 .StepStatusUnknown ,
152147 Resource : operatorsv1alpha1.StepResource {
153- Name : pdb .GetName (),
154- Version : pdb . APIVersion ,
155- Kind : pdb . Kind ,
148+ Name : deprecated .GetName (),
149+ Version : "v1" ,
150+ Kind : "Deprecated" ,
156151 Manifest : manifest ,
157152 },
158153 },
@@ -168,6 +163,14 @@ var _ = Describe("Install Plan", func() {
168163 Eventually (func () error {
169164 return client .IgnoreNotFound (ctx .Ctx ().Client ().Delete (context .Background (), & csv ))
170165 }).Should (Succeed ())
166+ Eventually (func () error {
167+ deprecatedCRD := & apiextensionsv1.CustomResourceDefinition {
168+ ObjectMeta : metav1.ObjectMeta {
169+ Name : "deprecateds.operators.io.operator-framework" ,
170+ },
171+ }
172+ return client .IgnoreNotFound (ctx .Ctx ().Client ().Delete (context .Background (), deprecatedCRD ))
173+ }).Should (Succeed ())
171174 })
172175
173176 It ("creates an Event surfacing the deprecation warning" , func () {
@@ -200,9 +203,8 @@ var _ = Describe("Install Plan", func() {
200203 FieldPath : "status.plan[0]" ,
201204 },
202205 Reason : "AppliedWithWarnings" ,
203- Message : fmt .Sprintf ("1 warning(s) generated during installation of operator \" %s\" (PodDisruptionBudget \" %s\" ): policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget " , csv .GetName (), pdb .GetName ()),
206+ Message : fmt .Sprintf ("1 warning(s) generated during installation of operator \" %s\" (Deprecated \" %s\" ): operators.io.operator-framework/v1 Deprecated is deprecated" , csv .GetName (), deprecated .GetName ()),
204207 }))
205-
206208 })
207209
208210 It ("increments a metric counting the warning" , func () {
0 commit comments