diff --git a/cmd/manager/main.go b/cmd/manager/main.go index b20901aa..010998b5 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -16,6 +16,7 @@ import ( "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/notifications" 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/log" "github.com/jenkinsci/kubernetes-operator/version" @@ -118,6 +119,9 @@ func main() { 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) go notifications.Listen(c, events, mgr.GetClient()) diff --git a/pkg/apis/apis.go b/pkg/apis/apis.go index ea8a5783..a3782ece 100644 --- a/pkg/apis/apis.go +++ b/pkg/apis/apis.go @@ -2,6 +2,7 @@ package apis import ( "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" + routev1 "github.com/openshift/api/route/v1" "k8s.io/apimachinery/pkg/runtime" ) @@ -17,4 +18,5 @@ func AddToScheme(s *runtime.Scheme) error { func init() { // 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, routev1.AddToScheme) } diff --git a/pkg/controller/jenkins/configuration/base/reconcile.go b/pkg/controller/jenkins/configuration/base/reconcile.go index 1688d7e8..c59f812f 100644 --- a/pkg/controller/jenkins/configuration/base/reconcile.go +++ b/pkg/controller/jenkins/configuration/base/reconcile.go @@ -182,15 +182,19 @@ func (r *ReconcileJenkinsBaseConfiguration) ensureResourcesRequiredForJenkinsPod return err } 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 { 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 { 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 } diff --git a/pkg/controller/jenkins/configuration/base/resources/route.go b/pkg/controller/jenkins/configuration/base/resources/route.go index 6118b424..369113a6 100644 --- a/pkg/controller/jenkins/configuration/base/resources/route.go +++ b/pkg/controller/jenkins/configuration/base/resources/route.go @@ -2,7 +2,6 @@ package resources import ( "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" - routev1 "github.com/openshift/api/route/v1" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/intstr" @@ -29,8 +28,8 @@ func UpdateRoute(actual routev1.Route,jenkins *v1alpha2.Jenkins) routev1.Route { return actual } -//IsRouteAPIDiscoverable tells if the Route API is installed and discoverable -func IsRouteAPIAvailable(clientSet kubernetes.Clientset) (bool) { +//IsRouteAPIAvailable tells if the Route API is installed and discoverable +func IsRouteAPIAvailable(clientSet *kubernetes.Clientset) (bool) { if (routeAPIChecked){ return isRouteAPIAvailable } @@ -40,8 +39,12 @@ func IsRouteAPIAvailable(clientSet kubernetes.Clientset) (bool) { } if err := discovery.ServerSupportsVersion(clientSet, gv); err != nil { // error, API not available - return false + routeAPIChecked = true + isRouteAPIAvailable = false + } else { + // API Exists + routeAPIChecked = true + isRouteAPIAvailable = true } - // API Exists - return true + return isRouteAPIAvailable }