Minor refactor of the jenkins reconcile
- Extract resources limits creation - Start to extract the reconcilier structure into a separate file
This commit is contained in:
parent
43dffbd5d3
commit
fc216263e8
|
|
@ -11,14 +11,14 @@ import (
|
|||
_ "k8s.io/client-go/plugin/pkg/client/auth"
|
||||
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/apis"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/client"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base/resources"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/constants"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications"
|
||||
e "github.com/jenkinsci/kubernetes-operator/pkg/notifications/event"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/event"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications"
|
||||
e "github.com/jenkinsci/kubernetes-operator/pkg/notifications/event"
|
||||
"github.com/jenkinsci/kubernetes-operator/version"
|
||||
|
||||
"github.com/operator-framework/operator-sdk/pkg/k8sutil"
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import (
|
|||
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
|
||||
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/client"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/plugins"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/plugins"
|
||||
|
||||
"github.com/bndr/gojenkins"
|
||||
stackerr "github.com/pkg/errors"
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ import (
|
|||
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration/backuprestore"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base/resources"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/event"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/reason"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/jenkinsci/kubernetes-operator/version"
|
||||
|
||||
stackerr "github.com/pkg/errors"
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ import (
|
|||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base/resources"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/groovy"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/reason"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/reason"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
stackerr "github.com/pkg/errors"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
package resources
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
)
|
||||
|
||||
func NewSimpleProbe(uri string, port string, scheme corev1.URIScheme, initialDelaySeconds int32) *corev1.Probe {
|
||||
return &corev1.Probe{
|
||||
Handler: corev1.Handler{
|
||||
HTTPGet: &corev1.HTTPGetAction{
|
||||
Path: uri,
|
||||
Port: intstr.FromString(port),
|
||||
Scheme: corev1.URISchemeHTTP,
|
||||
},
|
||||
},
|
||||
InitialDelaySeconds: initialDelaySeconds,
|
||||
}
|
||||
}
|
||||
|
||||
func NewProbe(uri string, port string, scheme corev1.URIScheme, initialDelaySeconds, timeoutSeconds, failureThreshold int32) *corev1.Probe {
|
||||
p := NewSimpleProbe(uri, port, scheme, initialDelaySeconds)
|
||||
p.TimeoutSeconds = timeoutSeconds
|
||||
p.FailureThreshold = failureThreshold
|
||||
return p
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
package resources
|
||||
|
||||
import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
)
|
||||
|
||||
func NewResourceRequirements(cpuRequest, memoryRequest, cpuLimit, memoryLimit string) corev1.ResourceRequirements {
|
||||
return corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse(cpuRequest),
|
||||
corev1.ResourceMemory: resource.MustParse(memoryRequest),
|
||||
},
|
||||
Limits: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse(cpuLimit),
|
||||
corev1.ResourceMemory: resource.MustParse(memoryLimit),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
@ -10,8 +10,8 @@ import (
|
|||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base/resources"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/constants"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/plugins"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/plugins"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ import (
|
|||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base/resources"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/constants"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/groovy"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/reason"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/reason"
|
||||
stackerr "github.com/pkg/errors"
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
|
|
|
|||
|
|
@ -9,25 +9,20 @@ import (
|
|||
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
|
||||
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/client"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration/base/resources"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration/user"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/constants"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/event"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/reason"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/plugins"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/pkg/errors"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/rest"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller"
|
||||
"sigs.k8s.io/controller-runtime/pkg/handler"
|
||||
"sigs.k8s.io/controller-runtime/pkg/manager"
|
||||
|
|
@ -40,32 +35,29 @@ type reconcileError struct {
|
|||
counter uint64
|
||||
}
|
||||
|
||||
const (
|
||||
APIVersion = "core/v1"
|
||||
PodKind = "Pod"
|
||||
SecretKind = "Secret"
|
||||
ConfigMapKind = "ConfigMap"
|
||||
containerProbeURI = "login"
|
||||
containerProbePortName = "http"
|
||||
)
|
||||
|
||||
var reconcileErrors = map[string]reconcileError{}
|
||||
|
||||
var logx = log.Log
|
||||
var _ reconcile.Reconciler = &ReconcileJenkins{}
|
||||
|
||||
// Add creates a new Jenkins Controller and adds it to the Manager. The Manager will set fields on the Controller
|
||||
// Add creates a newReconcilierConfiguration Jenkins Controller and adds it to the Manager. The Manager will set fields on the Controller
|
||||
// and Start it when the Manager is Started.
|
||||
func Add(mgr manager.Manager, jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings, clientSet kubernetes.Clientset, config rest.Config, notificationEvents *chan event.Event) error {
|
||||
reconciler := newReconciler(mgr, jenkinsAPIConnectionSettings, clientSet, config, notificationEvents)
|
||||
return add(mgr, reconciler)
|
||||
}
|
||||
|
||||
// newReconciler returns a new reconcile.Reconciler.
|
||||
func newReconciler(mgr manager.Manager, jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings, clientSet kubernetes.Clientset, config rest.Config, notificationEvents *chan event.Event) reconcile.Reconciler {
|
||||
return &ReconcileJenkins{
|
||||
client: mgr.GetClient(),
|
||||
scheme: mgr.GetScheme(),
|
||||
jenkinsAPIConnectionSettings: jenkinsAPIConnectionSettings,
|
||||
clientSet: clientSet,
|
||||
config: config,
|
||||
notificationEvents: notificationEvents,
|
||||
}
|
||||
}
|
||||
|
||||
// add adds a new Controller to mgr with r as the reconcile.Reconciler.
|
||||
// add adds a newReconcilierConfiguration Controller to mgr with r as the reconcile.Reconciler.
|
||||
func add(mgr manager.Manager, r reconcile.Reconciler) error {
|
||||
// Create a new controller
|
||||
// Create a newReconcilierConfiguration controller
|
||||
c, err := controller.New("jenkins-controller", mgr, controller.Options{Reconciler: r})
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
|
|
@ -79,7 +71,9 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
|
|||
}
|
||||
|
||||
// Watch for changes to secondary resource Pods and requeue the owner Jenkins
|
||||
err = c.Watch(&source.Kind{Type: &corev1.Pod{TypeMeta: metav1.TypeMeta{APIVersion: "core/v1", Kind: "Pod"}}}, &handler.EnqueueRequestForOwner{
|
||||
|
||||
podResource := &source.Kind{Type: &corev1.Pod{TypeMeta: metav1.TypeMeta{APIVersion: APIVersion, Kind: PodKind}}}
|
||||
err = c.Watch(podResource, &handler.EnqueueRequestForOwner{
|
||||
IsController: true,
|
||||
OwnerType: &v1alpha2.Jenkins{},
|
||||
})
|
||||
|
|
@ -87,7 +81,8 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
|
|||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = c.Watch(&source.Kind{Type: &corev1.Secret{TypeMeta: metav1.TypeMeta{APIVersion: "core/v1", Kind: "Secret"}}}, &handler.EnqueueRequestForOwner{
|
||||
secretResource := &source.Kind{Type: &corev1.Secret{TypeMeta: metav1.TypeMeta{APIVersion: APIVersion, Kind: SecretKind}}}
|
||||
err = c.Watch(secretResource, &handler.EnqueueRequestForOwner{
|
||||
IsController: true,
|
||||
OwnerType: &v1alpha2.Jenkins{},
|
||||
})
|
||||
|
|
@ -96,31 +91,19 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
|
|||
}
|
||||
|
||||
jenkinsHandler := &enqueueRequestForJenkins{}
|
||||
err = c.Watch(&source.Kind{Type: &corev1.Secret{TypeMeta: metav1.TypeMeta{APIVersion: "core/v1", Kind: "Secret"}}}, jenkinsHandler)
|
||||
err = c.Watch(secretResource, jenkinsHandler)
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = c.Watch(&source.Kind{Type: &corev1.ConfigMap{TypeMeta: metav1.TypeMeta{APIVersion: "core/v1", Kind: "ConfigMap"}}}, jenkinsHandler)
|
||||
configMapResource := &source.Kind{Type: &corev1.ConfigMap{TypeMeta: metav1.TypeMeta{APIVersion: APIVersion, Kind: ConfigMapKind}}}
|
||||
err = c.Watch(configMapResource, jenkinsHandler)
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
var _ reconcile.Reconciler = &ReconcileJenkins{}
|
||||
|
||||
// ReconcileJenkins reconciles a Jenkins object.
|
||||
type ReconcileJenkins struct {
|
||||
client client.Client
|
||||
scheme *runtime.Scheme
|
||||
jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings
|
||||
clientSet kubernetes.Clientset
|
||||
config rest.Config
|
||||
notificationEvents *chan event.Event
|
||||
}
|
||||
|
||||
// Reconcile it's a main reconciliation loop which maintain desired state based on Jenkins.Spec.
|
||||
func (r *ReconcileJenkins) Reconcile(request reconcile.Request) (reconcile.Result, error) {
|
||||
reconcileFailLimit := uint64(10)
|
||||
|
|
@ -225,16 +208,7 @@ func (r *ReconcileJenkins) reconcile(request reconcile.Request) (reconcile.Resul
|
|||
return reconcile.Result{Requeue: true}, jenkins, nil
|
||||
}
|
||||
|
||||
config := configuration.Configuration{
|
||||
Client: r.client,
|
||||
ClientSet: r.clientSet,
|
||||
Notifications: r.notificationEvents,
|
||||
Jenkins: jenkins,
|
||||
Scheme: r.scheme,
|
||||
Config: &r.config,
|
||||
JenkinsAPIConnectionSettings: r.jenkinsAPIConnectionSettings,
|
||||
}
|
||||
|
||||
config := r.newReconcilierConfiguration(jenkins)
|
||||
// Reconcile base configuration
|
||||
baseConfiguration := base.New(config, r.jenkinsAPIConnectionSettings)
|
||||
|
||||
|
|
@ -349,7 +323,6 @@ func (r *ReconcileJenkins) reconcile(request reconcile.Request) (reconcile.Resul
|
|||
}
|
||||
logger.Info(message)
|
||||
}
|
||||
|
||||
return reconcile.Result{}, jenkins, nil
|
||||
}
|
||||
|
||||
|
|
@ -379,35 +352,16 @@ func (r *ReconcileJenkins) setDefaults(jenkins *v1alpha2.Jenkins) (requeue bool,
|
|||
changed = true
|
||||
jenkinsContainer.ImagePullPolicy = corev1.PullAlways
|
||||
}
|
||||
|
||||
if jenkinsContainer.ReadinessProbe == nil {
|
||||
logger.Info("Setting default Jenkins readinessProbe")
|
||||
changed = true
|
||||
jenkinsContainer.ReadinessProbe = &corev1.Probe{
|
||||
Handler: corev1.Handler{
|
||||
HTTPGet: &corev1.HTTPGetAction{
|
||||
Path: "/login",
|
||||
Port: intstr.FromString("http"),
|
||||
Scheme: corev1.URISchemeHTTP,
|
||||
},
|
||||
},
|
||||
InitialDelaySeconds: int32(30),
|
||||
}
|
||||
jenkinsContainer.ReadinessProbe = resources.NewSimpleProbe(containerProbeURI, containerProbePortName, corev1.URISchemeHTTP, 30)
|
||||
}
|
||||
if jenkinsContainer.LivenessProbe == nil {
|
||||
logger.Info("Setting default Jenkins livenessProbe")
|
||||
changed = true
|
||||
jenkinsContainer.LivenessProbe = &corev1.Probe{
|
||||
Handler: corev1.Handler{
|
||||
HTTPGet: &corev1.HTTPGetAction{
|
||||
Path: "/login",
|
||||
Port: intstr.FromString("http"),
|
||||
Scheme: corev1.URISchemeHTTP,
|
||||
},
|
||||
},
|
||||
InitialDelaySeconds: int32(80),
|
||||
TimeoutSeconds: int32(5),
|
||||
FailureThreshold: int32(12),
|
||||
}
|
||||
jenkinsContainer.LivenessProbe = resources.NewProbe(containerProbeURI, containerProbePortName, corev1.URISchemeHTTP, 80, 5, 12)
|
||||
}
|
||||
if len(jenkinsContainer.Command) == 0 {
|
||||
logger.Info("Setting default Jenkins container command")
|
||||
|
|
@ -430,21 +384,11 @@ func (r *ReconcileJenkins) setDefaults(jenkins *v1alpha2.Jenkins) (requeue bool,
|
|||
if isResourceRequirementsNotSet(jenkinsContainer.Resources) {
|
||||
logger.Info("Setting default Jenkins master container resource requirements")
|
||||
changed = true
|
||||
jenkinsContainer.Resources = corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse("1"),
|
||||
corev1.ResourceMemory: resource.MustParse("500Mi"),
|
||||
},
|
||||
Limits: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse("1500m"),
|
||||
corev1.ResourceMemory: resource.MustParse("3Gi"),
|
||||
},
|
||||
}
|
||||
jenkinsContainer.Resources = resources.NewResourceRequirements("1", "500Mi", "1500m", "3Gi")
|
||||
}
|
||||
if reflect.DeepEqual(jenkins.Spec.Service, v1alpha2.Service{}) {
|
||||
logger.Info("Setting default Jenkins master service")
|
||||
changed = true
|
||||
|
||||
var serviceType = corev1.ServiceTypeClusterIP
|
||||
if r.jenkinsAPIConnectionSettings.UseNodePort {
|
||||
serviceType = corev1.ServiceTypeNodePort
|
||||
|
|
@ -523,18 +467,8 @@ func (r *ReconcileJenkins) setDefaultsForContainer(jenkins *v1alpha2.Jenkins, co
|
|||
if isResourceRequirementsNotSet(jenkins.Spec.Master.Containers[containerIndex].Resources) {
|
||||
logger.Info("Setting default container resource requirements")
|
||||
changed = true
|
||||
jenkins.Spec.Master.Containers[containerIndex].Resources = corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse("50m"),
|
||||
corev1.ResourceMemory: resource.MustParse("50Mi"),
|
||||
},
|
||||
Limits: corev1.ResourceList{
|
||||
corev1.ResourceCPU: resource.MustParse("100m"),
|
||||
corev1.ResourceMemory: resource.MustParse("100Mi"),
|
||||
},
|
||||
}
|
||||
jenkins.Spec.Master.Containers[containerIndex].Resources = resources.NewResourceRequirements("50m", "50Mi", "100m", "100Mi")
|
||||
}
|
||||
|
||||
return changed
|
||||
}
|
||||
|
||||
|
|
@ -552,14 +486,12 @@ func basePlugins() (result []v1alpha2.Plugin) {
|
|||
func (r *ReconcileJenkins) handleDeprecatedData(jenkins *v1alpha2.Jenkins) (requeue bool, err error) {
|
||||
changed := false
|
||||
logger := logx.WithValues("cr", jenkins.Name)
|
||||
|
||||
if len(jenkins.Spec.Master.AnnotationsDeprecated) > 0 {
|
||||
changed = true
|
||||
jenkins.Spec.Master.Annotations = jenkins.Spec.Master.AnnotationsDeprecated
|
||||
jenkins.Spec.Master.AnnotationsDeprecated = map[string]string{}
|
||||
logger.V(log.VWarn).Info("spec.master.masterAnnotations is deprecated, the annotations have been moved to spec.master.annotations")
|
||||
}
|
||||
|
||||
if changed {
|
||||
return changed, errors.WithStack(r.client.Update(context.TODO(), jenkins))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
package jenkins
|
||||
|
||||
import (
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
|
||||
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/client"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/configuration"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/event"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/rest"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/manager"
|
||||
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||||
)
|
||||
|
||||
// ReconcileJenkins reconciles a Jenkins object.
|
||||
type ReconcileJenkins struct {
|
||||
client client.Client
|
||||
scheme *runtime.Scheme
|
||||
jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings
|
||||
clientSet kubernetes.Clientset
|
||||
config rest.Config
|
||||
notificationEvents *chan event.Event
|
||||
}
|
||||
|
||||
func (r *ReconcileJenkins) newReconcilierConfiguration(jenkins *v1alpha2.Jenkins) configuration.Configuration {
|
||||
config := configuration.Configuration{
|
||||
Client: r.client,
|
||||
ClientSet: r.clientSet,
|
||||
Notifications: r.notificationEvents,
|
||||
Jenkins: jenkins,
|
||||
Scheme: r.scheme,
|
||||
Config: &r.config,
|
||||
JenkinsAPIConnectionSettings: r.jenkinsAPIConnectionSettings,
|
||||
}
|
||||
return config
|
||||
}
|
||||
|
||||
// newReconciler returns a newReconcilierConfiguration reconcile.Reconciler.
|
||||
func newReconciler(mgr manager.Manager, jenkinsAPIConnectionSettings jenkinsclient.JenkinsAPIConnectionSettings, clientSet kubernetes.Clientset, config rest.Config, notificationEvents *chan event.Event) reconcile.Reconciler {
|
||||
return &ReconcileJenkins{
|
||||
client: mgr.GetClient(),
|
||||
scheme: mgr.GetScheme(),
|
||||
jenkinsAPIConnectionSettings: jenkinsAPIConnectionSettings,
|
||||
clientSet: clientSet,
|
||||
config: config,
|
||||
notificationEvents: notificationEvents,
|
||||
}
|
||||
}
|
||||
|
|
@ -7,13 +7,13 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
|
||||
k8sevent "github.com/jenkinsci/kubernetes-operator/pkg/event"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/event"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/mailgun"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/msteams"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/slack"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/notifications/smtp"
|
||||
k8sevent "github.com/jenkinsci/kubernetes-operator/pkg/event"
|
||||
"github.com/jenkinsci/kubernetes-operator/pkg/log"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
|
|
|||
Loading…
Reference in New Issue