@@ -348,7 +348,7 @@ func (r *Resources) RenderPodForMember(ctx context.Context, cachedStatus inspect
348348 // Prepare arguments
349349 autoUpgrade := newMember .Conditions .IsTrue (api .ConditionTypeAutoUpgrade ) || spec .Upgrade .Get ().AutoUpgrade
350350
351- memberPod := MemberArangoDPod {
351+ podCreator = & MemberArangoDPod {
352352 status : * newMember ,
353353 groupSpec : groupSpec ,
354354 spec : spec ,
@@ -361,11 +361,6 @@ func (r *Resources) RenderPodForMember(ctx context.Context, cachedStatus inspect
361361 arangoMember : * member ,
362362 cachedStatus : cachedStatus ,
363363 }
364-
365- if err := memberPod .Validate (cachedStatus ); err != nil {
366- return nil , errors .WithStack (errors .Wrapf (err , "Validation of pods resources failed" ))
367- }
368- podCreator = & memberPod
369364 } else if group .IsArangosync () {
370365 // Check image
371366 if ! imageInfo .Enterprise {
@@ -378,67 +373,21 @@ func (r *Resources) RenderPodForMember(ctx context.Context, cachedStatus inspect
378373 imageInfo .Image = spec .Sync .GetSyncImage ()
379374 }
380375
381- var tlsKeyfileSecretName , clientAuthCASecretName , masterJWTSecretName , clusterJWTSecretName string
382- // Check master JWT secret
383-
384- masterJWTSecretName = spec .Sync .Authentication .GetJWTSecretName ()
385- err := k8sutil .RunWithTimeout (ctx , func (ctxChild context.Context ) error {
386- return k8sutil .ValidateTokenSecret (ctxChild , cachedStatus .SecretReadInterface (), masterJWTSecretName )
387- })
388- if err != nil {
389- return nil , errors .WithStack (errors .Wrapf (err , "Master JWT secret validation failed" ))
390- }
391-
392- monitoringTokenSecretName := spec .Sync .Monitoring .GetTokenSecretName ()
393- err = k8sutil .RunWithTimeout (ctx , func (ctxChild context.Context ) error {
394- return k8sutil .ValidateTokenSecret (ctxChild , cachedStatus .SecretReadInterface (), monitoringTokenSecretName )
395- })
396- if err != nil {
397- return nil , errors .WithStack (errors .Wrapf (err , "Monitoring token secret validation failed" ))
398- }
399-
400- if group == api .ServerGroupSyncMasters {
401- // Create TLS secret
402- tlsKeyfileSecretName = k8sutil .CreateTLSKeyfileSecretName (apiObject .GetName (), role , newMember .ID )
403- // Check cluster JWT secret
404- if spec .IsAuthenticated () {
405- clusterJWTSecretName = spec .Authentication .GetJWTSecretName ()
406- err = k8sutil .RunWithTimeout (ctx , func (ctxChild context.Context ) error {
407- return k8sutil .ValidateTokenSecret (ctxChild , cachedStatus .SecretReadInterface (), clusterJWTSecretName )
408- })
409- if err != nil {
410- return nil , errors .WithStack (errors .Wrapf (err , "Cluster JWT secret validation failed" ))
411- }
412- }
413- // Check client-auth CA certificate secret
414- clientAuthCASecretName = spec .Sync .Authentication .GetClientCASecretName ()
415- err = k8sutil .RunWithTimeout (ctx , func (ctxChild context.Context ) error {
416- return k8sutil .ValidateCACertificateSecret (ctxChild , cachedStatus .SecretReadInterface (), clientAuthCASecretName )
417- })
418- if err != nil {
419- return nil , errors .WithStack (errors .Wrapf (err , "Client authentication CA certificate secret validation failed" ))
420- }
421- }
422-
423376 podCreator = & MemberSyncPod {
424- tlsKeyfileSecretName : tlsKeyfileSecretName ,
425- clientAuthCASecretName : clientAuthCASecretName ,
426- masterJWTSecretName : masterJWTSecretName ,
427- clusterJWTSecretName : clusterJWTSecretName ,
428- groupSpec : groupSpec ,
429- spec : spec ,
430- group : group ,
431- resources : r ,
432- imageInfo : imageInfo ,
433- arangoMember : * member ,
434- apiObject : apiObject ,
435- memberStatus : * newMember ,
377+ groupSpec : groupSpec ,
378+ spec : spec ,
379+ group : group ,
380+ resources : r ,
381+ imageInfo : imageInfo ,
382+ arangoMember : * member ,
383+ apiObject : apiObject ,
384+ memberStatus : * newMember ,
436385 }
437386 } else {
438387 return nil , errors .Newf ("unable to render Pod" )
439388 }
440389
441- pod , err := RenderArangoPod (cachedStatus , apiObject , role , newMember .ID , newMember .PodName , podCreator )
390+ pod , err := RenderArangoPod (ctx , cachedStatus , apiObject , role , newMember .ID , newMember .PodName , podCreator )
442391 if err != nil {
443392 return nil , err
444393 }
@@ -625,10 +574,15 @@ func (r *Resources) createPodForMember(ctx context.Context, cachedStatus inspect
625574}
626575
627576// RenderArangoPod renders new ArangoD Pod
628- func RenderArangoPod (cachedStatus inspectorInterface.Inspector , deployment k8sutil.APIObject , role , id , podName string ,
629- podCreator interfaces.PodCreator ) (* core.Pod , error ) {
577+ func RenderArangoPod (ctx context.Context , cachedStatus inspectorInterface.Inspector , deployment k8sutil.APIObject ,
578+ role , id , podName string , podCreator interfaces.PodCreator ) (* core.Pod , error ) {
579+
580+ // Validate if the pod can be created.
581+ if err := podCreator .Validate (cachedStatus ); err != nil {
582+ return nil , errors .Wrapf (err , "Validation of pods resources failed" )
583+ }
630584
631- // Prepare basic pod
585+ // Prepare basic pod.
632586 p := k8sutil .NewPod (deployment .GetName (), role , id , podName , podCreator )
633587
634588 for k , v := range podCreator .Annotations () {
@@ -647,7 +601,9 @@ func RenderArangoPod(cachedStatus inspectorInterface.Inspector, deployment k8sut
647601 p .Labels [k ] = v
648602 }
649603
650- podCreator .Init (& p )
604+ if err := podCreator .Init (ctx , cachedStatus , & p ); err != nil {
605+ return nil , err
606+ }
651607
652608 if initContainers , err := podCreator .GetInitContainers (cachedStatus ); err != nil {
653609 return nil , errors .WithStack (err )
0 commit comments