6
6
"encoding/json"
7
7
"errors"
8
8
"fmt"
9
+ "path/filepath"
9
10
"strconv"
10
11
"strings"
11
12
"sync"
@@ -20,7 +21,6 @@ import (
20
21
appsv1 "k8s.io/api/apps/v1"
21
22
authorizationv1 "k8s.io/api/authorization/v1"
22
23
corev1 "k8s.io/api/core/v1"
23
- policyv1beta1 "k8s.io/api/policy/v1beta1"
24
24
rbacv1 "k8s.io/api/rbac/v1"
25
25
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
26
26
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
@@ -48,6 +48,11 @@ import (
48
48
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
49
49
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/ownerutil"
50
50
"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"
51
56
)
52
57
53
58
var _ = Describe ("Install Plan" , func () {
@@ -76,11 +81,11 @@ var _ = Describe("Install Plan", func() {
76
81
77
82
When ("an InstallPlan step contains a deprecated resource version" , func () {
78
83
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
84
89
)
85
90
86
91
BeforeEach (func () {
@@ -90,13 +95,8 @@ var _ = Describe("Install Plan", func() {
90
95
v , err := dc .ServerVersion ()
91
96
Expect (err ).ToNot (HaveOccurred ())
92
97
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" )
100
100
}
101
101
})
102
102
@@ -107,26 +107,21 @@ var _ = Describe("Install Plan", func() {
107
107
counter = metric .Value
108
108
}
109
109
}
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 ())
110
114
111
115
csv = newCSV (genName ("test-csv-" ), ns .GetName (), "" , semver.Version {}, nil , nil , nil )
112
116
Expect (ctx .Ctx ().Client ().Create (context .Background (), & csv )).To (Succeed ())
113
117
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 ())
124
120
125
121
scheme := runtime .NewScheme ()
126
- Expect (policyv1beta1 .AddToScheme (scheme )).To (Succeed ())
127
122
{
128
123
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 ())
130
125
manifest = b .String ()
131
126
}
132
127
@@ -150,9 +145,9 @@ var _ = Describe("Install Plan", func() {
150
145
Resolving : csv .GetName (),
151
146
Status : operatorsv1alpha1 .StepStatusUnknown ,
152
147
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" ,
156
151
Manifest : manifest ,
157
152
},
158
153
},
@@ -168,6 +163,14 @@ var _ = Describe("Install Plan", func() {
168
163
Eventually (func () error {
169
164
return client .IgnoreNotFound (ctx .Ctx ().Client ().Delete (context .Background (), & csv ))
170
165
}).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 ())
171
174
})
172
175
173
176
It ("creates an Event surfacing the deprecation warning" , func () {
@@ -200,9 +203,8 @@ var _ = Describe("Install Plan", func() {
200
203
FieldPath : "status.plan[0]" ,
201
204
},
202
205
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 ()),
204
207
}))
205
-
206
208
})
207
209
208
210
It ("increments a metric counting the warning" , func () {
0 commit comments