@@ -26,6 +26,9 @@ import (
2626 "sort"
2727 "strconv"
2828
29+ batchv1 "k8s.io/api/batch/v1"
30+ corev1 "k8s.io/api/core/v1"
31+
2932 slices "golang.org/x/exp/slices"
3033 k8s_errors "k8s.io/apimachinery/pkg/api/errors"
3134 "k8s.io/apimachinery/pkg/types"
@@ -37,11 +40,9 @@ import (
3740 "github.com/openstack-k8s-operators/lib-common/modules/common/helper"
3841 "github.com/openstack-k8s-operators/lib-common/modules/common/util"
3942 "github.com/openstack-k8s-operators/lib-common/modules/storage"
40- ansibleeev1 "github.com/openstack-k8s-operators/openstack-ansibleee-operator/api/v1beta1"
4143 openstackv1 "github.com/openstack-k8s-operators/openstack-operator/apis/core/v1beta1"
4244 dataplanev1 "github.com/openstack-k8s-operators/openstack-operator/apis/dataplane/v1beta1"
4345 dataplaneutil "github.com/openstack-k8s-operators/openstack-operator/pkg/dataplane/util"
44- corev1 "k8s.io/api/core/v1"
4546)
4647
4748// Deployer defines a data structure with all of the relevant objects required for a full deployment.
@@ -197,13 +198,13 @@ func (d *Deployer) ConditionalDeploy(
197198 }
198199
199200 if nsConditions .IsFalse (readyCondition ) {
200- var ansibleEE * ansibleeev1. OpenStackAnsibleEE
201+ var ansibleEE * batchv1. Job
201202 _ , labelSelector := dataplaneutil .GetAnsibleExecutionNameAndLabels (& foundService , d .Deployment .Name , d .NodeSet .Name )
202203 ansibleEE , err = dataplaneutil .GetAnsibleExecution (d .Ctx , d .Helper , d .Deployment , labelSelector )
203204 if err != nil {
204205 // Return nil if we don't have AnsibleEE available yet
205206 if k8s_errors .IsNotFound (err ) {
206- log .Info (fmt .Sprintf ("%s OpenStackAnsibleEE not yet found" , readyCondition ))
207+ log .Info (fmt .Sprintf ("%s AnsibleEE job is not yet found" , readyCondition ))
207208 return nil
208209 }
209210 log .Error (err , fmt .Sprintf ("Error getting ansibleEE job for %s" , deployName ))
@@ -215,34 +216,39 @@ func (d *Deployer) ConditionalDeploy(
215216 err .Error ()))
216217 }
217218
218- if ansibleEE .Status .JobStatus == ansibleeev1 . JobStatusSucceeded {
219+ if ansibleEE .Status .Succeeded > 0 {
219220 log .Info (fmt .Sprintf ("Condition %s ready" , readyCondition ))
220221 nsConditions .Set (condition .TrueCondition (
221222 readyCondition ,
222223 readyMessage ))
223224 }
224225
225- if ansibleEE .Status .JobStatus == ansibleeev1 . JobStatusRunning || ansibleEE . Status . JobStatus == ansibleeev1 . JobStatusPending {
226- log .Info (fmt .Sprintf ("AnsibleEE job is not yet completed: Execution: %s, Status : %s " , ansibleEE .Name , ansibleEE .Status .JobStatus ))
226+ if ansibleEE .Status .Active > 0 {
227+ log .Info (fmt .Sprintf ("AnsibleEE job is not yet completed: Execution: %s, Active pods : %d " , ansibleEE .Name , ansibleEE .Status .Active ))
227228 nsConditions .Set (condition .FalseCondition (
228229 readyCondition ,
229230 condition .RequestedReason ,
230231 condition .SeverityInfo ,
231232 readyWaitingMessage ))
232233 }
233234
234- if ansibleEE .Status .JobStatus == ansibleeev1 .JobStatusFailed {
235- errorMsg := fmt .Sprintf ("execution.name %s execution.namespace %s execution.status.jobstatus: %s" , ansibleEE .Name , ansibleEE .Namespace , ansibleEE .Status .JobStatus )
236- ansibleCondition := ansibleEE .Status .Conditions .Get (condition .ReadyCondition )
235+ var ansibleCondition * batchv1.JobCondition
236+ if ansibleEE .Status .Failed > 0 {
237+ errorMsg := fmt .Sprintf ("execution.name %s execution.namespace %s failed pods: %d" , ansibleEE .Name , ansibleEE .Namespace , ansibleEE .Status .Failed )
238+ for _ , condition := range ansibleEE .Status .Conditions {
239+ if condition .Type == batchv1 .JobFailed {
240+ ansibleCondition = & condition
241+ }
242+ }
237243 if ansibleCondition .Reason == condition .JobReasonBackoffLimitExceeded {
238- errorMsg = fmt .Sprintf ("backoff limit reached for execution.name %s execution.namespace %s execution.status.jobstatus : %s" , ansibleEE .Name , ansibleEE .Namespace , ansibleEE . Status . JobStatus )
244+ errorMsg = fmt .Sprintf ("backoff limit reached for execution.name %s execution.namespace %s execution.condition.message : %s" , ansibleEE .Name , ansibleEE .Namespace , ansibleCondition . Message )
239245 }
240246 log .Info (fmt .Sprintf ("Condition %s error" , readyCondition ))
241247 err = fmt .Errorf (errorMsg )
242248 nsConditions .Set (condition .FalseCondition (
243249 readyCondition ,
244- ansibleCondition .Reason ,
245- ansibleCondition . Severity ,
250+ condition . Reason ( ansibleCondition .Reason ) ,
251+ condition . SeverityError ,
246252 readyErrorMessage ,
247253 err .Error ()))
248254 }
0 commit comments