@@ -5,18 +5,21 @@ import (
55 "testing"
66 "time"
77
8+ configv1 "github.com/openshift/api/config/v1"
89 mcfgv1 "github.com/openshift/api/machineconfiguration/v1"
910 mcfgv1alpha1 "github.com/openshift/api/machineconfiguration/v1alpha1"
1011 configinformers "github.com/openshift/client-go/config/informers/externalversions"
1112 "github.com/openshift/client-go/machineconfiguration/clientset/versioned/fake"
12- informers "github.com/openshift/client-go/machineconfiguration/informers/externalversions"
13+ mcfginformers "github.com/openshift/client-go/machineconfiguration/informers/externalversions"
1314 ctrlcommon "github.com/openshift/machine-config-operator/pkg/controller/common"
1415 "github.com/stretchr/testify/assert"
1516
1617 corev1 "k8s.io/api/core/v1"
1718 "k8s.io/apimachinery/pkg/api/errors"
19+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1820 v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1921 "k8s.io/apimachinery/pkg/runtime"
22+ "k8s.io/client-go/informers"
2023 k8sfake "k8s.io/client-go/kubernetes/fake"
2124 "k8s.io/client-go/tools/record"
2225
@@ -40,14 +43,30 @@ func TestInternalReleaseImageCreate(t *testing.T) {
4043 },
4144 {
4245 name : "add finalizer if not present" ,
43- initialObjects : objs (iri (), cconfig (), iriCertSecret ()),
46+ initialObjects : objs (iri (), clusterVersion (), cconfig (), iriCertSecret ()),
4447 verify : func (t * testing.T , actualIRI * mcfgv1alpha1.InternalReleaseImage , actualMasterMC * mcfgv1.MachineConfig , actualWorkerMC * mcfgv1.MachineConfig ) {
45- assert .Equal (t , iri ().finalizer (masterName (), workerName ()).build (), actualIRI )
48+ assert .Len (t , actualIRI .Finalizers , 2 )
49+ assert .Contains (t , actualIRI .Finalizers , masterName ())
50+ assert .Contains (t , actualIRI .Finalizers , workerName ())
51+ },
52+ },
53+ {
54+ name : "update status if not set" ,
55+ initialObjects : objs (
56+ iri ().finalizer (masterName (), workerName ()),
57+ clusterVersion (), cconfig (), iriCertSecret ()),
58+ verify : func (t * testing.T , actualIRI * mcfgv1alpha1.InternalReleaseImage , actualMasterMC * mcfgv1.MachineConfig , actualWorkerMC * mcfgv1.MachineConfig ) {
59+ assert .Len (t , actualIRI .Status .Releases , 1 )
60+ assert .Equal (t , actualIRI .Status .Releases [0 ].Name , "ocp-release-bundle-4.21.5-x86_64" )
61+ assert .Equal (t , actualIRI .Status .Releases [0 ].Image , "ocp-4.21-release-pullspec" )
62+ assert .Equal (t , actualIRI .Status .Releases [0 ].Conditions [0 ].Type , string (mcfgv1alpha1 .InternalReleaseImageConditionTypeAvailable ))
63+ assert .Equal (t , actualIRI .Status .Releases [0 ].Conditions [0 ].Status , metav1 .ConditionTrue )
64+ assert .Equal (t , actualIRI .Status .Releases [0 ].Conditions [0 ].Message , "Release bundle is available" )
4665 },
4766 },
4867 {
4968 name : "generate iri machine-config if not present" ,
50- initialObjects : objs (iri (), cconfig (), iriCertSecret ()),
69+ initialObjects : objs (iri (), clusterVersion (), cconfig (), iriCertSecret ()),
5170 verify : func (t * testing.T , actualIRI * mcfgv1alpha1.InternalReleaseImage , actualMasterMC * mcfgv1.MachineConfig , actualWorkerMC * mcfgv1.MachineConfig ) {
5271 verifyInternalReleaseMasterMachineConfig (t , actualMasterMC )
5372 verifyInternalReleaseWorkerMachineConfig (t , actualWorkerMC )
@@ -57,7 +76,7 @@ func TestInternalReleaseImageCreate(t *testing.T) {
5776 name : "avoid machine-config drifting" ,
5877 initialObjects : objs (
5978 iri ().finalizer (masterName (), workerName ()),
60- cconfig (), iriCertSecret (),
79+ clusterVersion (), cconfig (), iriCertSecret (),
6180 machineconfigmaster ().ignition ("some garbage" ),
6281 machineconfigworker ().ignition ("other garbage" )),
6382 verify : func (t * testing.T , actualIRI * mcfgv1alpha1.InternalReleaseImage , actualMasterMC * mcfgv1.MachineConfig , actualWorkerMC * mcfgv1.MachineConfig ) {
@@ -69,7 +88,7 @@ func TestInternalReleaseImageCreate(t *testing.T) {
6988 name : "refresh machine-config on controllerConfig update" ,
7089 initialObjects : objs (
7190 iri ().finalizer (masterName (), workerName ()),
72- cconfig ().dockerRegistryImage ("a-new-docker-registry-image-pullspec" ), iriCertSecret (),
91+ clusterVersion (), cconfig ().dockerRegistryImage ("a-new-docker-registry-image-pullspec" ), iriCertSecret (),
7392 machineconfigmaster (), machineconfigworker ()),
7493 verify : func (t * testing.T , actualIRI * mcfgv1alpha1.InternalReleaseImage , actualMasterMC * mcfgv1.MachineConfig , actualWorkerMC * mcfgv1.MachineConfig ) {
7594 verifyInternalReleaseMasterMachineConfig (t , actualMasterMC )
@@ -80,7 +99,7 @@ func TestInternalReleaseImageCreate(t *testing.T) {
8099 name : "machine-config cascade delete on iri removal - removes the first machineconfig" ,
81100 initialObjects : objs (
82101 iri ().finalizer (masterName (), workerName ()).setDeletionTimestamp (),
83- cconfig (), iriCertSecret (),
102+ clusterVersion (), cconfig (), iriCertSecret (),
84103 machineconfigmaster (), machineconfigworker ()),
85104 verify : func (t * testing.T , actualIRI * mcfgv1alpha1.InternalReleaseImage , actualMasterMC * mcfgv1.MachineConfig , actualWorkerMC * mcfgv1.MachineConfig ) {
86105 assert .NotNil (t , iri )
@@ -93,7 +112,7 @@ func TestInternalReleaseImageCreate(t *testing.T) {
93112 name : "machine-config cascade delete on iri removal - then removes the remaining machineconfig" ,
94113 initialObjects : objs (
95114 iri ().finalizer (workerName ()).setDeletionTimestamp (),
96- cconfig (), iriCertSecret (),
115+ clusterVersion (), cconfig (), iriCertSecret (),
97116 machineconfigworker ()),
98117 verify : func (t * testing.T , actualIRI * mcfgv1alpha1.InternalReleaseImage , actualMasterMC * mcfgv1.MachineConfig , actualWorkerMC * mcfgv1.MachineConfig ) {
99118 assert .NotNil (t , iri )
@@ -107,17 +126,6 @@ func TestInternalReleaseImageCreate(t *testing.T) {
107126 t .Run (tc .name , func (t * testing.T ) {
108127 objs := tc .initialObjects ()
109128 f := newFixture (t , objs )
110- for _ , obj := range objs {
111- switch o := obj .(type ) {
112- case * mcfgv1alpha1.InternalReleaseImage :
113- f .iriLister = append (f .iriLister , o )
114- case * mcfgv1.ControllerConfig :
115- f .ccLister = append (f .ccLister , o )
116- case * mcfgv1.MachineConfig :
117- f .mcLister = append (f .mcLister , o )
118- }
119- }
120-
121129 f .run (ctrlcommon .InternalReleaseImageInstanceName )
122130
123131 if tc .verify != nil {
@@ -159,15 +167,17 @@ type fixture struct {
159167 client * fake.Clientset
160168 k8sClient * k8sfake.Clientset
161169 configClient * fakeconfigv1client.Clientset
162- iriLister []* mcfgv1alpha1.InternalReleaseImage
163- ccLister []* mcfgv1.ControllerConfig
164- mcLister []* mcfgv1.MachineConfig
165-
166- controller * Controller
167- objects []runtime.Object
168- k8sObjects []runtime.Object
169- configObjects []runtime.Object
170- configInformer configinformers.SharedInformerFactory
170+
171+ iriLister []* mcfgv1alpha1.InternalReleaseImage
172+ ccLister []* mcfgv1.ControllerConfig
173+ mcLister []* mcfgv1.MachineConfig
174+ secretLister []* corev1.Secret
175+ clusterVersionLister []* configv1.ClusterVersion
176+
177+ controller * Controller
178+ objects []runtime.Object
179+ k8sObjects []runtime.Object
180+ configObjects []runtime.Object
171181}
172182
173183func newFixture (t * testing.T , objects []runtime.Object ) * fixture {
@@ -178,12 +188,26 @@ func newFixture(t *testing.T, objects []runtime.Object) *fixture {
178188}
179189
180190func (f * fixture ) setupObjects (objs []runtime.Object ) {
181- for _ , o := range objs {
182- switch o .(type ) {
191+ for _ , obj := range objs {
192+ switch obj .(type ) {
183193 case * corev1.Secret , * corev1.ConfigMap , * corev1.Pod :
184- f .k8sObjects = append (f .k8sObjects , o )
194+ f .k8sObjects = append (f .k8sObjects , obj )
195+ switch o := obj .(type ) {
196+ case * corev1.Secret :
197+ f .secretLister = append (f .secretLister , o )
198+ }
199+ case * configv1.ClusterVersion :
200+ f .configObjects = append (f .configObjects , obj )
185201 default :
186- f .objects = append (f .objects , o )
202+ f .objects = append (f .objects , obj )
203+ switch o := obj .(type ) {
204+ case * mcfgv1alpha1.InternalReleaseImage :
205+ f .iriLister = append (f .iriLister , o )
206+ case * mcfgv1.ControllerConfig :
207+ f .ccLister = append (f .ccLister , o )
208+ case * mcfgv1.MachineConfig :
209+ f .mcLister = append (f .mcLister , o )
210+ }
187211 }
188212 }
189213}
@@ -192,14 +216,17 @@ func (f *fixture) newController() *Controller {
192216 f .client = fake .NewSimpleClientset (f .objects ... )
193217 f .k8sClient = k8sfake .NewSimpleClientset (f .k8sObjects ... )
194218 f .configClient = fakeconfigv1client .NewSimpleClientset (f .configObjects ... )
195- i := informers .NewSharedInformerFactory (f .client , func () time.Duration { return 0 }())
196- f .configInformer = configinformers .NewSharedInformerFactory (f .configClient , func () time.Duration { return 0 }())
219+
220+ i := mcfginformers .NewSharedInformerFactory (f .client , func () time.Duration { return 0 }())
221+ k := informers .NewSharedInformerFactory (f .k8sClient , func () time.Duration { return 0 }())
222+ ci := configinformers .NewSharedInformerFactory (f .configClient , func () time.Duration { return 0 }())
197223
198224 c := New (
199225 i .Machineconfiguration ().V1alpha1 ().InternalReleaseImages (),
200226 i .Machineconfiguration ().V1 ().ControllerConfigs (),
201227 i .Machineconfiguration ().V1 ().MachineConfigs (),
202- f .configInformer .Config ().V1 ().ClusterVersions (),
228+ ci .Config ().V1 ().ClusterVersions (),
229+ k .Core ().V1 ().Secrets (),
203230 f .k8sClient ,
204231 f .client ,
205232 )
@@ -209,14 +236,18 @@ func (f *fixture) newController() *Controller {
209236 c .ccListerSynced = alwaysReady
210237 c .mcListerSynced = alwaysReady
211238 c .clusterVersionListerSynced = alwaysReady
239+ c .secretListerSynced = alwaysReady
212240 c .eventRecorder = & record.FakeRecorder {}
213241
214242 stopCh := make (chan struct {})
215243 defer close (stopCh )
244+
216245 i .Start (stopCh )
217246 i .WaitForCacheSync (stopCh )
218- f .configInformer .Start (stopCh )
219- f .configInformer .WaitForCacheSync (stopCh )
247+ k .Start (stopCh )
248+ k .WaitForCacheSync (stopCh )
249+ ci .Start (stopCh )
250+ ci .WaitForCacheSync (stopCh )
220251
221252 for _ , c := range f .iriLister {
222253 i .Machineconfiguration ().V1alpha1 ().InternalReleaseImages ().Informer ().GetIndexer ().Add (c )
@@ -227,6 +258,12 @@ func (f *fixture) newController() *Controller {
227258 for _ , c := range f .mcLister {
228259 i .Machineconfiguration ().V1 ().MachineConfigs ().Informer ().GetIndexer ().Add (c )
229260 }
261+ for _ , c := range f .secretLister {
262+ k .Core ().V1 ().Secrets ().Informer ().GetIndexer ().Add (c )
263+ }
264+ for _ , c := range f .clusterVersionLister {
265+ ci .Config ().V1 ().ClusterVersions ().Informer ().GetIndexer ().Add (c )
266+ }
230267
231268 return c
232269}
0 commit comments