@@ -132,14 +132,30 @@ func (env TestingEnvironment) ExecCommand(
132132func (env TestingEnvironment ) GetOperatorDeployment () (appsv1.Deployment , error ) {
133133 const operatorDeploymentName = "postgresql-operator-controller-manager"
134134 deploymentList := & appsv1.DeploymentList {}
135- err := env .Client .List (
135+
136+ if err := env .Client .List (
137+ env .Ctx , deploymentList , client.MatchingLabels {"app.kubernetes.io/name" : "cloud-native-postgresql" },
138+ ); err != nil {
139+ return appsv1.Deployment {}, err
140+ }
141+ // We check if we have one or more deployments
142+ switch {
143+ case len (deploymentList .Items ) > 1 :
144+ err := fmt .Errorf ("number of operator deployments != 1" )
145+ return appsv1.Deployment {}, err
146+ case len (deploymentList .Items ) == 1 :
147+ return deploymentList .Items [0 ], nil
148+ }
149+
150+ // This it's for older deployments and will not work on the new ones
151+ if err := env .Client .List (
136152 env .Ctx , deploymentList , client.MatchingFields {"metadata.name" : operatorDeploymentName },
137- )
138- if err != nil {
153+ ); err != nil {
139154 return appsv1.Deployment {}, err
140155 }
156+
141157 if len (deploymentList .Items ) != 1 {
142- err = fmt .Errorf ("number of %v deployments != 1" , operatorDeploymentName )
158+ err : = fmt .Errorf ("number of %v deployments != 1" , operatorDeploymentName )
143159 return appsv1.Deployment {}, err
144160 }
145161 return deploymentList .Items [0 ], nil
@@ -148,14 +164,33 @@ func (env TestingEnvironment) GetOperatorDeployment() (appsv1.Deployment, error)
148164// GetOperatorPod returns the operator pod if there is a single one running, error otherwise
149165func (env TestingEnvironment ) GetOperatorPod () (corev1.Pod , error ) {
150166 podList := & corev1.PodList {}
167+
168+ // This will work for newer version of the operator, which are using
169+ // our custom label
170+ if err := env .Client .List (
171+ env .Ctx , podList , client.MatchingLabels {"app.kubernetes.io/name" : "cloud-native-postgresql" }); err != nil {
172+ return corev1.Pod {}, err
173+ }
174+ switch {
175+ case len (podList .Items ) > 1 :
176+ err := fmt .Errorf ("number of running operator pods greater than 1: %v pods running" , len (podList .Items ))
177+ return corev1.Pod {}, err
178+
179+ case len (podList .Items ) == 1 :
180+ return podList .Items [0 ], nil
181+ }
182+
183+ // This will work for older version of the operator, which are using
184+ // the default label from kube-builder
151185 if err := env .Client .List (
152186 env .Ctx , podList , client.MatchingLabels {"control-plane" : "controller-manager" }); err != nil {
153187 return corev1.Pod {}, err
154188 }
155189 if len (podList .Items ) != 1 {
156- err := fmt .Errorf ("number of running operator pods != 1: %v pods running" , len (podList .Items ))
190+ err := fmt .Errorf ("number of running operator different than 1: %v pods running" , len (podList .Items ))
157191 return corev1.Pod {}, err
158192 }
193+
159194 return podList .Items [0 ], nil
160195}
161196
0 commit comments