50 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
| package resources
 | |
| 
 | |
| import (
 | |
| 	"github.com/jenkinsci/kubernetes-operator/api/v1alpha2"
 | |
| 	routev1 "github.com/openshift/api/route/v1"
 | |
| 
 | |
| 	"k8s.io/apimachinery/pkg/runtime/schema"
 | |
| 	"k8s.io/apimachinery/pkg/util/intstr"
 | |
| 	"k8s.io/client-go/discovery"
 | |
| 	"k8s.io/client-go/kubernetes"
 | |
| )
 | |
| 
 | |
| var isRouteAPIAvailable = false
 | |
| var routeAPIChecked = false
 | |
| 
 | |
| // UpdateRoute returns new route matching the service
 | |
| func UpdateRoute(actual routev1.Route, jenkins *v1alpha2.Jenkins) routev1.Route {
 | |
| 	actualTargetService := actual.Spec.To
 | |
| 	serviceName := GetJenkinsHTTPServiceName(jenkins)
 | |
| 	if actualTargetService.Name != serviceName {
 | |
| 		actual.Spec.To.Name = serviceName
 | |
| 	}
 | |
| 	port := jenkins.Spec.Service.Port
 | |
| 	if actual.Spec.Port.TargetPort.IntVal != port {
 | |
| 		actual.Spec.Port.TargetPort = intstr.FromInt(int(port))
 | |
| 	}
 | |
| 	return actual
 | |
| }
 | |
| 
 | |
| // IsRouteAPIAvailable tells if the Route API is installed and discoverable
 | |
| func IsRouteAPIAvailable(clientSet *kubernetes.Clientset) bool {
 | |
| 	if routeAPIChecked {
 | |
| 		return isRouteAPIAvailable
 | |
| 	}
 | |
| 	gv := schema.GroupVersion{
 | |
| 		Group:   routev1.GroupName,
 | |
| 		Version: routev1.SchemeGroupVersion.Version,
 | |
| 	}
 | |
| 	if err := discovery.ServerSupportsVersion(clientSet, gv); err != nil {
 | |
| 		// error, API not available
 | |
| 		routeAPIChecked = true
 | |
| 		isRouteAPIAvailable = false
 | |
| 	} else {
 | |
| 		// API Exists
 | |
| 		routeAPIChecked = true
 | |
| 		isRouteAPIAvailable = true
 | |
| 	}
 | |
| 	return isRouteAPIAvailable
 | |
| }
 |