56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
package base
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"fmt"
 | 
						|
 | 
						|
	"github.com/jenkinsci/kubernetes-operator/api/v1alpha2"
 | 
						|
	"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base/resources"
 | 
						|
	"github.com/jenkinsci/kubernetes-operator/pkg/notifications/event"
 | 
						|
	"github.com/jenkinsci/kubernetes-operator/pkg/notifications/reason"
 | 
						|
	"github.com/jenkinsci/kubernetes-operator/version"
 | 
						|
 | 
						|
	stackerr "github.com/pkg/errors"
 | 
						|
	apierrors "k8s.io/apimachinery/pkg/api/errors"
 | 
						|
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						|
	"sigs.k8s.io/controller-runtime/pkg/reconcile"
 | 
						|
)
 | 
						|
 | 
						|
func (r *JenkinsBaseConfigurationReconciler) ensureJenkinsDeployment(meta metav1.ObjectMeta) (reconcile.Result, error) {
 | 
						|
	userAndPasswordHash, err := r.calculateUserAndPasswordHash()
 | 
						|
	if err != nil {
 | 
						|
		return reconcile.Result{}, err
 | 
						|
	}
 | 
						|
 | 
						|
	_, err = r.GetJenkinsDeployment()
 | 
						|
	if apierrors.IsNotFound(err) {
 | 
						|
		jenkinsDeployment := resources.NewJenkinsDeployment(meta, r.Configuration.Jenkins)
 | 
						|
		*r.Notifications <- event.Event{
 | 
						|
			Jenkins: *r.Configuration.Jenkins,
 | 
						|
			Phase:   event.PhaseBase,
 | 
						|
			Level:   v1alpha2.NotificationLevelInfo,
 | 
						|
			Reason:  reason.NewPodCreation(reason.OperatorSource, []string{"Creating a Jenkins Deployment"}),
 | 
						|
		}
 | 
						|
 | 
						|
		r.logger.Info(fmt.Sprintf("Creating a new Jenkins Deployment %s/%s", jenkinsDeployment.Namespace, jenkinsDeployment.Name))
 | 
						|
		err := r.CreateResource(jenkinsDeployment)
 | 
						|
		if err != nil {
 | 
						|
			return reconcile.Result{}, stackerr.WithStack(err)
 | 
						|
		}
 | 
						|
 | 
						|
		now := metav1.Now()
 | 
						|
		r.Configuration.Jenkins.Status = v1alpha2.JenkinsStatus{
 | 
						|
			OperatorVersion:     version.Version,
 | 
						|
			ProvisionStartTime:  &now,
 | 
						|
			LastBackup:          r.Configuration.Jenkins.Status.LastBackup,
 | 
						|
			PendingBackup:       r.Configuration.Jenkins.Status.LastBackup,
 | 
						|
			UserAndPasswordHash: userAndPasswordHash,
 | 
						|
		}
 | 
						|
		return reconcile.Result{Requeue: true}, r.Client.Update(context.TODO(), r.Configuration.Jenkins)
 | 
						|
	} else if err != nil && !apierrors.IsNotFound(err) {
 | 
						|
		return reconcile.Result{}, stackerr.WithStack(err)
 | 
						|
	}
 | 
						|
 | 
						|
	return reconcile.Result{}, nil
 | 
						|
}
 |