Skip to content

Commit 50d3765

Browse files
committed
Add function to retrieve OpenShift Prometheus API client
1 parent 0c3f3b3 commit 50d3765

File tree

5 files changed

+77
-14
lines changed

5 files changed

+77
-14
lines changed

go.mod

+4-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ require (
99
github.com/openshift/api v0.0.0-20230213134911-7ba313770556
1010
github.com/openshift/client-go v0.0.0-20221019143426-16aed247da5c
1111
github.com/project-codeflare/appwrapper v0.8.0
12+
github.com/prometheus/client_golang v1.18.0
13+
github.com/prometheus/common v0.45.0
1214
github.com/ray-project/kuberay/ray-operator v1.1.0-alpha.0
1315
k8s.io/api v0.29.2
1416
k8s.io/apimachinery v0.29.2
@@ -42,17 +44,17 @@ require (
4244
github.com/gorilla/css v1.0.0 // indirect
4345
github.com/imdario/mergo v0.3.16 // indirect
4446
github.com/josharian/intern v1.0.0 // indirect
47+
github.com/jpillora/backoff v1.0.0 // indirect
4548
github.com/json-iterator/go v1.1.12 // indirect
4649
github.com/mailru/easyjson v0.7.7 // indirect
4750
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
4851
github.com/microcosm-cc/bluemonday v1.0.18 // indirect
4952
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
5053
github.com/modern-go/reflect2 v1.0.2 // indirect
5154
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
55+
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
5256
github.com/pkg/errors v0.9.1 // indirect
53-
github.com/prometheus/client_golang v1.18.0 // indirect
5457
github.com/prometheus/client_model v0.5.0 // indirect
55-
github.com/prometheus/common v0.45.0 // indirect
5658
github.com/prometheus/procfs v0.12.0 // indirect
5759
github.com/sirupsen/logrus v1.9.3 // indirect
5860
github.com/spf13/pflag v1.0.5 // indirect

go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dv
274274
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
275275
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
276276
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
277+
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
277278
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
278279
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
279280
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
@@ -330,6 +331,7 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY
330331
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
331332
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
332333
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
334+
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
333335
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
334336
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
335337
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=

support/client.go

+11-11
Original file line numberDiff line numberDiff line change
@@ -90,56 +90,56 @@ func (t *testClient) Dynamic() dynamic.Interface {
9090
return t.dynamic
9191
}
9292

93-
func newTestClient(cfg *rest.Config) (Client, error) {
93+
func newTestClient(cfg *rest.Config) (Client, *rest.Config, error) {
9494
var err error
9595
if cfg == nil {
9696
cfg, err = clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
9797
clientcmd.NewDefaultClientConfigLoadingRules(),
9898
&clientcmd.ConfigOverrides{},
9999
).ClientConfig()
100100
if err != nil {
101-
return nil, err
101+
return nil, nil, err
102102
}
103103
}
104104

105105
kubeClient, err := kubernetes.NewForConfig(cfg)
106106
if err != nil {
107-
return nil, err
107+
return nil, nil, err
108108
}
109109

110110
kubeflowClient, err := kubeflowclient.NewForConfig(cfg)
111111
if err != nil {
112-
return nil, err
112+
return nil, nil, err
113113
}
114114

115115
kueueClient, err := kueueclient.NewForConfig(cfg)
116116
if err != nil {
117-
return nil, err
117+
return nil, nil, err
118118
}
119119

120120
machineClient, err := machinev1.NewForConfig(cfg)
121121
if err != nil {
122-
return nil, err
122+
return nil, nil, err
123123
}
124124

125125
routeClient, err := routev1.NewForConfig(cfg)
126126
if err != nil {
127-
return nil, err
127+
return nil, nil, err
128128
}
129129

130130
imageClient, err := imagev1.NewForConfig(cfg)
131131
if err != nil {
132-
return nil, err
132+
return nil, nil, err
133133
}
134134

135135
rayClient, err := rayclient.NewForConfig(cfg)
136136
if err != nil {
137-
return nil, err
137+
return nil, nil, err
138138
}
139139

140140
dynamicClient, err := dynamic.NewForConfig(cfg)
141141
if err != nil {
142-
return nil, err
142+
return nil, nil, err
143143
}
144144

145145
return &testClient{
@@ -151,5 +151,5 @@ func newTestClient(cfg *rest.Config) (Client, error) {
151151
image: imageClient,
152152
ray: rayClient,
153153
dynamic: dynamicClient,
154-
}, nil
154+
}, cfg, nil
155155
}

support/prometheus_api_client.go

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/*
2+
Copyright 2023.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package support
18+
19+
import (
20+
"crypto/tls"
21+
"net/http"
22+
23+
. "github.com/onsi/gomega"
24+
prometheusapi "github.com/prometheus/client_golang/api"
25+
prometheusapiv1 "github.com/prometheus/client_golang/api/prometheus/v1"
26+
prometheusconfig "github.com/prometheus/common/config"
27+
)
28+
29+
var prometheusApiClient prometheusapiv1.API
30+
31+
func GetOpenShiftPrometheusApiClient(t Test) prometheusapiv1.API {
32+
if prometheusApiClient == nil {
33+
prometheusOpenShiftRoute := GetRoute(t, "openshift-monitoring", "prometheus-k8s")
34+
35+
// Skip TLS check to work on clusters with insecure certificates too
36+
// Functionality intended just for testing purpose, DO NOT USE IN PRODUCTION
37+
tr := &http.Transport{
38+
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
39+
}
40+
client, err := prometheusapi.NewClient(prometheusapi.Config{
41+
Address: "https://" + prometheusOpenShiftRoute.Status.Ingress[0].Host,
42+
Client: &http.Client{Transport: prometheusconfig.NewAuthorizationCredentialsRoundTripper("Bearer", prometheusconfig.Secret(t.Config().BearerToken), tr)},
43+
})
44+
t.Expect(err).NotTo(HaveOccurred())
45+
46+
prometheusApiClient = prometheusapiv1.NewAPI(client)
47+
}
48+
49+
return prometheusApiClient
50+
}

support/test.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ type Test interface {
3333
T() *testing.T
3434
Ctx() context.Context
3535
Client() Client
36+
Config() *rest.Config
3637
OutputDir() string
3738

3839
gomega.Gomega
@@ -102,16 +103,24 @@ func (t *T) Client() Client {
102103
t.T().Helper()
103104
t.once.client.Do(func() {
104105
if t.client == nil {
105-
c, err := newTestClient(t.cfg)
106+
c, cfg, err := newTestClient(t.cfg)
106107
if err != nil {
107108
t.T().Fatalf("Error creating client: %v", err)
108109
}
109110
t.client = c
111+
t.cfg = cfg
110112
}
111113
})
112114
return t.client
113115
}
114116

117+
func (t *T) Config() *rest.Config {
118+
t.T().Helper()
119+
// Invoke Client() function to initialize client
120+
t.Client()
121+
return t.cfg
122+
}
123+
115124
func (t *T) OutputDir() string {
116125
t.T().Helper()
117126
t.once.outputDir.Do(func() {

0 commit comments

Comments
 (0)