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
|
|
}
|