Skip to content

Commit edf7de8

Browse files
authored
[refactor][1/N] Move FetchHeadServiceURL to util.go to reduce imported packages in dashboard_httpclient.go (#3983)
Signed-off-by: kaihsun <[email protected]>
1 parent 240e3f4 commit edf7de8

File tree

2 files changed

+37
-46
lines changed

2 files changed

+37
-46
lines changed

ray-operator/controllers/ray/utils/dashboard_httpclient.go

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,10 @@ import (
88
"net/http"
99
"time"
1010

11-
fmtErrors "github.com/pkg/errors"
12-
corev1 "k8s.io/api/core/v1"
1311
"k8s.io/apimachinery/pkg/api/errors"
1412
"k8s.io/apimachinery/pkg/util/json"
1513
"k8s.io/apimachinery/pkg/util/yaml"
1614
ctrl "sigs.k8s.io/controller-runtime"
17-
"sigs.k8s.io/controller-runtime/pkg/client"
1815

1916
rayv1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1"
2017
)
@@ -62,49 +59,6 @@ type RayDashboardClient struct {
6259
useKubernetesProxy bool
6360
}
6461

65-
// FetchHeadServiceURL fetches the URL that consists of the FQDN for the RayCluster's head service
66-
// and the port with the given port name (defaultPortName).
67-
func FetchHeadServiceURL(ctx context.Context, cli client.Client, rayCluster *rayv1.RayCluster, defaultPortName string) (string, error) {
68-
log := ctrl.LoggerFrom(ctx)
69-
headSvc := &corev1.Service{}
70-
headSvcName, err := GenerateHeadServiceName(RayClusterCRD, rayCluster.Spec, rayCluster.Name)
71-
if err != nil {
72-
log.Error(err, "Failed to generate head service name", "RayCluster name", rayCluster.Name, "RayCluster spec", rayCluster.Spec)
73-
return "", err
74-
}
75-
76-
if err = cli.Get(ctx, client.ObjectKey{Name: headSvcName, Namespace: rayCluster.Namespace}, headSvc); err != nil {
77-
if errors.IsNotFound(err) {
78-
log.Error(err, "Head service is not found", "head service name", headSvcName, "namespace", rayCluster.Namespace)
79-
}
80-
return "", err
81-
}
82-
83-
log.Info("FetchHeadServiceURL", "head service name", headSvc.Name, "namespace", headSvc.Namespace)
84-
servicePorts := headSvc.Spec.Ports
85-
port := int32(-1)
86-
87-
for _, servicePort := range servicePorts {
88-
if servicePort.Name == defaultPortName {
89-
port = servicePort.Port
90-
break
91-
}
92-
}
93-
94-
if port == int32(-1) {
95-
return "", fmtErrors.Errorf("%s port is not found", defaultPortName)
96-
}
97-
98-
domainName := GetClusterDomainName()
99-
headServiceURL := fmt.Sprintf("%s.%s.svc.%s:%v",
100-
headSvc.Name,
101-
headSvc.Namespace,
102-
domainName,
103-
port)
104-
log.Info("FetchHeadServiceURL", "head service URL", headServiceURL)
105-
return headServiceURL, nil
106-
}
107-
10862
func (r *RayDashboardClient) InitClient(ctx context.Context, url string, rayCluster *rayv1.RayCluster) error {
10963
log := ctrl.LoggerFrom(ctx)
11064

ray-operator/controllers/ray/utils/util.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"k8s.io/apimachinery/pkg/util/rand"
2121
"k8s.io/client-go/discovery"
2222
ctrl "sigs.k8s.io/controller-runtime"
23+
"sigs.k8s.io/controller-runtime/pkg/client"
2324
"sigs.k8s.io/controller-runtime/pkg/manager"
2425

2526
rayv1 "github.com/ray-project/kuberay/ray-operator/apis/ray/v1"
@@ -717,3 +718,39 @@ func GetContainerCommand(additionalOptions []string) []string {
717718
func IsDeterministicHeadPodNameEnabled() bool {
718719
return strings.ToLower(os.Getenv(ENABLE_DETERMINISTIC_HEAD_POD_NAME)) == "true"
719720
}
721+
722+
// FetchHeadServiceURL fetches the URL that consists of the FQDN for the RayCluster's head service
723+
// and the port with the given port name (defaultPortName).
724+
func FetchHeadServiceURL(ctx context.Context, cli client.Client, rayCluster *rayv1.RayCluster, defaultPortName string) (string, error) {
725+
headSvc := &corev1.Service{}
726+
headSvcName, err := GenerateHeadServiceName(RayClusterCRD, rayCluster.Spec, rayCluster.Name)
727+
if err != nil {
728+
return "", err
729+
}
730+
731+
if err = cli.Get(ctx, client.ObjectKey{Name: headSvcName, Namespace: rayCluster.Namespace}, headSvc); err != nil {
732+
return "", err
733+
}
734+
735+
servicePorts := headSvc.Spec.Ports
736+
port := int32(-1)
737+
738+
for _, servicePort := range servicePorts {
739+
if servicePort.Name == defaultPortName {
740+
port = servicePort.Port
741+
break
742+
}
743+
}
744+
745+
if port == int32(-1) {
746+
return "", fmt.Errorf("%s port is not found", defaultPortName)
747+
}
748+
749+
domainName := GetClusterDomainName()
750+
headServiceURL := fmt.Sprintf("%s.%s.svc.%s:%v",
751+
headSvc.Name,
752+
headSvc.Namespace,
753+
domainName,
754+
port)
755+
return headServiceURL, nil
756+
}

0 commit comments

Comments
 (0)