diff --git a/pkg/controller/jenkins/configuration/base/reconcile.go b/pkg/controller/jenkins/configuration/base/reconcile.go index 338c84da..780f87ae 100644 --- a/pkg/controller/jenkins/configuration/base/reconcile.go +++ b/pkg/controller/jenkins/configuration/base/reconcile.go @@ -460,13 +460,15 @@ func (r *ReconcileJenkinsBaseConfiguration) ensureJenkinsMasterPod(meta metav1.O return reconcile.Result{Requeue: true}, nil } - restartReason := r.checkForPodRecreation(*currentJenkinsMasterPod, userAndPasswordHash) - if restartReason.HasMessages() { - for _, msg := range restartReason.Verbose() { - r.logger.Info(msg) - } + if !r.IsJenkinsTerminating(*currentJenkinsMasterPod) { + restartReason := r.checkForPodRecreation(*currentJenkinsMasterPod, userAndPasswordHash) + if restartReason.HasMessages() { + for _, msg := range restartReason.Verbose() { + r.logger.Info(msg) + } - return reconcile.Result{Requeue: true}, r.Configuration.RestartJenkinsMasterPod(restartReason) + return reconcile.Result{Requeue: true}, r.Configuration.RestartJenkinsMasterPod(restartReason) + } } return reconcile.Result{}, nil @@ -498,7 +500,10 @@ func (r *ReconcileJenkinsBaseConfiguration) checkForPodRecreation(currentJenkins return reason.NewPodRestart(reason.KubernetesSource, messages, verbose...) } - if userAndPasswordHash != r.Configuration.Jenkins.Status.UserAndPasswordHash { + userAndPasswordHashIsDifferent := userAndPasswordHash != r.Configuration.Jenkins.Status.UserAndPasswordHash + userAndPasswordHashStatusNotEmpty := r.Configuration.Jenkins.Status.UserAndPasswordHash != "" + + if userAndPasswordHashIsDifferent && userAndPasswordHashStatusNotEmpty { messages = append(messages, "User or password have changed") verbose = append(verbose, "User or password have changed, recreating pod") } @@ -551,6 +556,15 @@ func (r *ReconcileJenkinsBaseConfiguration) checkForPodRecreation(currentJenkins len(currentJenkinsMasterPod.Spec.Containers), len(r.Configuration.Jenkins.Spec.Master.Containers))) } + customResourceReplaced := (r.Configuration.Jenkins.Status.BaseConfigurationCompletedTime == nil || + r.Configuration.Jenkins.Status.UserConfigurationCompletedTime == nil) && + r.Configuration.Jenkins.Status.UserAndPasswordHash == "" + + if customResourceReplaced { + messages = append(messages, "Jenkins CR has been replaced") + verbose = append(verbose, "Jenkins CR has been replaced") + } + for _, actualContainer := range currentJenkinsMasterPod.Spec.Containers { if actualContainer.Name == resources.JenkinsMasterContainerName { containerMessages, verboseMessages := r.compareContainers(resources.NewJenkinsMasterContainer(r.Configuration.Jenkins), actualContainer)