This commit is contained in:
Akram Ben Aissi 2020-05-05 14:46:57 +02:00
parent b6144b5559
commit ebfb38a9c4
4 changed files with 21 additions and 8 deletions

View File

@ -16,6 +16,7 @@ import (
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/notifications" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/notifications"
e "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/notifications/event" e "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/notifications/event"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
"github.com/jenkinsci/kubernetes-operator/pkg/event" "github.com/jenkinsci/kubernetes-operator/pkg/event"
"github.com/jenkinsci/kubernetes-operator/pkg/log" "github.com/jenkinsci/kubernetes-operator/pkg/log"
"github.com/jenkinsci/kubernetes-operator/version" "github.com/jenkinsci/kubernetes-operator/version"
@ -118,6 +119,9 @@ func main() {
fatal(errors.Wrap(err, "failed to create Kubernetes client set"), *debug) fatal(errors.Wrap(err, "failed to create Kubernetes client set"), *debug)
} }
if( resources.IsRouteAPIAvailable(clientSet) ) {
log.Log.Info("Route API found: Route creation will be performed")
}
c := make(chan e.Event) c := make(chan e.Event)
go notifications.Listen(c, events, mgr.GetClient()) go notifications.Listen(c, events, mgr.GetClient())

View File

@ -2,6 +2,7 @@ package apis
import ( import (
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
routev1 "github.com/openshift/api/route/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
) )
@ -17,4 +18,5 @@ func AddToScheme(s *runtime.Scheme) error {
func init() { func init() {
// Register the types with the Scheme so the components can map objects to GroupVersionKinds and back // Register the types with the Scheme so the components can map objects to GroupVersionKinds and back
AddToSchemes = append(AddToSchemes, v1alpha2.SchemeBuilder.AddToScheme) AddToSchemes = append(AddToSchemes, v1alpha2.SchemeBuilder.AddToScheme)
AddToSchemes = append(AddToSchemes, routev1.AddToScheme)
} }

View File

@ -182,15 +182,19 @@ func (r *ReconcileJenkinsBaseConfiguration) ensureResourcesRequiredForJenkinsPod
return err return err
} }
r.logger.V(log.VDebug).Info("Jenkins HTTP Service is present") r.logger.V(log.VDebug).Info("Jenkins HTTP Service is present")
if err := r.createService(metaObject, resources.GetJenkinsSlavesServiceName(r.Configuration.Jenkins), r.Configuration.Jenkins.Spec.SlaveService); err != nil { if err := r.createService(metaObject, resources.GetJenkinsSlavesServiceName(r.Configuration.Jenkins), r.Configuration.Jenkins.Spec.SlaveService); err != nil {
return err return err
} }
if resources.IsRouteAPIAvailable(r.ClientSet) { r.logger.V(log.VDebug).Info("Jenkins slave Service is present")
if resources.IsRouteAPIAvailable(&r.ClientSet) {
r.logger.V(log.VDebug).Info("Route API is available. Now creating route.")
if err := r.createRoute(metaObject, httpServiceName, r.Configuration.Jenkins); err != nil { if err := r.createRoute(metaObject, httpServiceName, r.Configuration.Jenkins); err != nil {
return err return err
} }
r.logger.V(log.VDebug).Info("Jenkins Route is present")
} }
r.logger.V(log.VDebug).Info("Jenkins slave Service is present")
return nil return nil
} }

View File

@ -2,7 +2,6 @@ package resources
import ( import (
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
routev1 "github.com/openshift/api/route/v1" routev1 "github.com/openshift/api/route/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
@ -29,8 +28,8 @@ func UpdateRoute(actual routev1.Route,jenkins *v1alpha2.Jenkins) routev1.Route {
return actual return actual
} }
//IsRouteAPIDiscoverable tells if the Route API is installed and discoverable //IsRouteAPIAvailable tells if the Route API is installed and discoverable
func IsRouteAPIAvailable(clientSet kubernetes.Clientset) (bool) { func IsRouteAPIAvailable(clientSet *kubernetes.Clientset) (bool) {
if (routeAPIChecked){ if (routeAPIChecked){
return isRouteAPIAvailable return isRouteAPIAvailable
} }
@ -40,8 +39,12 @@ func IsRouteAPIAvailable(clientSet kubernetes.Clientset) (bool) {
} }
if err := discovery.ServerSupportsVersion(clientSet, gv); err != nil { if err := discovery.ServerSupportsVersion(clientSet, gv); err != nil {
// error, API not available // error, API not available
return false routeAPIChecked = true
isRouteAPIAvailable = false
} else {
// API Exists
routeAPIChecked = true
isRouteAPIAvailable = true
} }
// API Exists return isRouteAPIAvailable
return true
} }