Skip to content

Commit 1265113

Browse files
authored
feat(conformance): Enable experiment API tests in KF mode. (#7596)
* Conformance: Enable experiment API tests in KF mode. Added 3 flags: - isDebugMode is enables HTTP request/response logging - IsKubeflowMode enables the tests in full Kubeflow mode - resourceNamespace: the namespace/profile under which the test resources are created Added a new HTTP client that uses SA token volume projection auth. The test pods will be set up to project SA token. Plumbed everything through for experiment API tests. The other tests will be enabled in subsequent PRs. * Updated change to address comments.
1 parent 7d6edee commit 1265113

14 files changed

+369
-102
lines changed

backend/src/common/client/api_server/experiment_client.go

+27-10
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package api_server
33
import (
44
"fmt"
55

6+
"github.com/go-openapi/runtime"
67
"github.com/go-openapi/strfmt"
78
apiclient "github.com/kubeflow/pipelines/backend/api/go_http_client/experiment_client"
89
params "github.com/kubeflow/pipelines/backend/api/go_http_client/experiment_client/experiment_service"
@@ -23,22 +24,38 @@ type ExperimentInterface interface {
2324
}
2425

2526
type ExperimentClient struct {
26-
apiClient *apiclient.Experiment
27+
apiClient *apiclient.Experiment
28+
authInfoWriter runtime.ClientAuthInfoWriter
2729
}
2830

2931
func NewExperimentClient(clientConfig clientcmd.ClientConfig, debug bool) (
3032
*ExperimentClient, error) {
3133

3234
runtime, err := NewHTTPRuntime(clientConfig, debug)
3335
if err != nil {
34-
return nil, err
36+
return nil, fmt.Errorf("Error occurred when creating experiment client: %w", err)
3537
}
3638

3739
apiClient := apiclient.New(runtime, strfmt.Default)
3840

39-
// Creating upload client
41+
// Creating experiment client
4042
return &ExperimentClient{
41-
apiClient: apiClient,
43+
apiClient: apiClient,
44+
authInfoWriter: PassThroughAuth,
45+
}, nil
46+
}
47+
48+
func NewKubeflowInClusterExperimentClient(namespace string, debug bool) (
49+
*ExperimentClient, error) {
50+
51+
runtime := NewKubeflowInClusterHTTPRuntime(namespace, debug)
52+
53+
apiClient := apiclient.New(runtime, strfmt.Default)
54+
55+
// Creating experiment client
56+
return &ExperimentClient{
57+
apiClient: apiClient,
58+
authInfoWriter: SATokenVolumeProjectionAuth,
4259
}, nil
4360
}
4461

@@ -50,7 +67,7 @@ func (c *ExperimentClient) Create(parameters *params.CreateExperimentParams) (*m
5067

5168
// Make service call
5269
parameters.Context = ctx
53-
response, err := c.apiClient.ExperimentService.CreateExperiment(parameters, PassThroughAuth)
70+
response, err := c.apiClient.ExperimentService.CreateExperiment(parameters, c.authInfoWriter)
5471
if err != nil {
5572
if defaultError, ok := err.(*params.CreateExperimentDefault); ok {
5673
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -74,7 +91,7 @@ func (c *ExperimentClient) Get(parameters *params.GetExperimentParams) (*model.A
7491

7592
// Make service call
7693
parameters.Context = ctx
77-
response, err := c.apiClient.ExperimentService.GetExperiment(parameters, PassThroughAuth)
94+
response, err := c.apiClient.ExperimentService.GetExperiment(parameters, c.authInfoWriter)
7895
if err != nil {
7996
if defaultError, ok := err.(*params.GetExperimentDefault); ok {
8097
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -98,7 +115,7 @@ func (c *ExperimentClient) List(parameters *params.ListExperimentParams) (
98115

99116
// Make service call
100117
parameters.Context = ctx
101-
response, err := c.apiClient.ExperimentService.ListExperiment(parameters, PassThroughAuth)
118+
response, err := c.apiClient.ExperimentService.ListExperiment(parameters, c.authInfoWriter)
102119
if err != nil {
103120
if defaultError, ok := err.(*params.ListExperimentDefault); ok {
104121
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -121,7 +138,7 @@ func (c *ExperimentClient) Delete(parameters *params.DeleteExperimentParams) err
121138

122139
// Make service call
123140
parameters.Context = ctx
124-
_, err := c.apiClient.ExperimentService.DeleteExperiment(parameters, PassThroughAuth)
141+
_, err := c.apiClient.ExperimentService.DeleteExperiment(parameters, c.authInfoWriter)
125142
if err != nil {
126143
if defaultError, ok := err.(*params.DeleteExperimentDefault); ok {
127144
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -174,7 +191,7 @@ func (c *ExperimentClient) Archive(parameters *params.ArchiveExperimentParams) e
174191

175192
// Make service call
176193
parameters.Context = ctx
177-
_, err := c.apiClient.ExperimentService.ArchiveExperiment(parameters, PassThroughAuth)
194+
_, err := c.apiClient.ExperimentService.ArchiveExperiment(parameters, c.authInfoWriter)
178195

179196
if err != nil {
180197
if defaultError, ok := err.(*params.ArchiveExperimentDefault); ok {
@@ -198,7 +215,7 @@ func (c *ExperimentClient) Unarchive(parameters *params.UnarchiveExperimentParam
198215

199216
// Make service call
200217
parameters.Context = ctx
201-
_, err := c.apiClient.ExperimentService.UnarchiveExperiment(parameters, PassThroughAuth)
218+
_, err := c.apiClient.ExperimentService.UnarchiveExperiment(parameters, c.authInfoWriter)
202219

203220
if err != nil {
204221
if defaultError, ok := err.(*params.UnarchiveExperimentDefault); ok {

backend/src/common/client/api_server/job_client.go

+25-9
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package api_server
33
import (
44
"fmt"
55

6+
"github.com/go-openapi/runtime"
67
"github.com/go-openapi/strfmt"
78
apiclient "github.com/kubeflow/pipelines/backend/api/go_http_client/job_client"
89
params "github.com/kubeflow/pipelines/backend/api/go_http_client/job_client/job_service"
@@ -24,25 +25,40 @@ type JobInterface interface {
2425
}
2526

2627
type JobClient struct {
27-
apiClient *apiclient.Job
28+
apiClient *apiclient.Job
29+
authInfoWriter runtime.ClientAuthInfoWriter
2830
}
2931

3032
func NewJobClient(clientConfig clientcmd.ClientConfig, debug bool) (
3133
*JobClient, error) {
3234

3335
runtime, err := NewHTTPRuntime(clientConfig, debug)
3436
if err != nil {
35-
return nil, err
37+
return nil, fmt.Errorf("Error occurred when creating job client: %w", err)
3638
}
3739

3840
apiClient := apiclient.New(runtime, strfmt.Default)
3941

40-
// Creating upload client
42+
// Creating job client
4143
return &JobClient{
4244
apiClient: apiClient,
4345
}, nil
4446
}
4547

48+
func NewKubeflowInClusterJobClient(namespace string, debug bool) (
49+
*JobClient, error) {
50+
51+
runtime := NewKubeflowInClusterHTTPRuntime(namespace, debug)
52+
53+
apiClient := apiclient.New(runtime, strfmt.Default)
54+
55+
// Creating job client
56+
return &JobClient{
57+
apiClient: apiClient,
58+
authInfoWriter: SATokenVolumeProjectionAuth,
59+
}, nil
60+
}
61+
4662
func (c *JobClient) Create(parameters *params.CreateJobParams) (*model.APIJob,
4763
error) {
4864
// Create context with timeout
@@ -51,7 +67,7 @@ func (c *JobClient) Create(parameters *params.CreateJobParams) (*model.APIJob,
5167

5268
// Make service call
5369
parameters.Context = ctx
54-
response, err := c.apiClient.JobService.CreateJob(parameters, PassThroughAuth)
70+
response, err := c.apiClient.JobService.CreateJob(parameters, c.authInfoWriter)
5571
if err != nil {
5672
if defaultError, ok := err.(*params.CreateJobDefault); ok {
5773
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -75,7 +91,7 @@ func (c *JobClient) Get(parameters *params.GetJobParams) (*model.APIJob,
7591

7692
// Make service call
7793
parameters.Context = ctx
78-
response, err := c.apiClient.JobService.GetJob(parameters, PassThroughAuth)
94+
response, err := c.apiClient.JobService.GetJob(parameters, c.authInfoWriter)
7995
if err != nil {
8096
if defaultError, ok := err.(*params.GetJobDefault); ok {
8197
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -98,7 +114,7 @@ func (c *JobClient) Delete(parameters *params.DeleteJobParams) error {
98114

99115
// Make service call
100116
parameters.Context = ctx
101-
_, err := c.apiClient.JobService.DeleteJob(parameters, PassThroughAuth)
117+
_, err := c.apiClient.JobService.DeleteJob(parameters, c.authInfoWriter)
102118
if err != nil {
103119
if defaultError, ok := err.(*params.DeleteJobDefault); ok {
104120
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -121,7 +137,7 @@ func (c *JobClient) Enable(parameters *params.EnableJobParams) error {
121137

122138
// Make service call
123139
parameters.Context = ctx
124-
_, err := c.apiClient.JobService.EnableJob(parameters, PassThroughAuth)
140+
_, err := c.apiClient.JobService.EnableJob(parameters, c.authInfoWriter)
125141
if err != nil {
126142
if defaultError, ok := err.(*params.EnableJobDefault); ok {
127143
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -144,7 +160,7 @@ func (c *JobClient) Disable(parameters *params.DisableJobParams) error {
144160

145161
// Make service call
146162
parameters.Context = ctx
147-
_, err := c.apiClient.JobService.DisableJob(parameters, PassThroughAuth)
163+
_, err := c.apiClient.JobService.DisableJob(parameters, c.authInfoWriter)
148164
if err != nil {
149165
if defaultError, ok := err.(*params.DisableJobDefault); ok {
150166
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -168,7 +184,7 @@ func (c *JobClient) List(parameters *params.ListJobsParams) (
168184

169185
// Make service call
170186
parameters.Context = ctx
171-
response, err := c.apiClient.JobService.ListJobs(parameters, PassThroughAuth)
187+
response, err := c.apiClient.JobService.ListJobs(parameters, c.authInfoWriter)
172188
if err != nil {
173189
if defaultError, ok := err.(*params.ListJobsDefault); ok {
174190
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)

backend/src/common/client/api_server/pipeline_client.go

+29-13
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package api_server
33
import (
44
"fmt"
55

6+
"github.com/go-openapi/runtime"
67
"github.com/go-openapi/strfmt"
78
apiclient "github.com/kubeflow/pipelines/backend/api/go_http_client/pipeline_client"
89
params "github.com/kubeflow/pipelines/backend/api/go_http_client/pipeline_client/pipeline_service"
@@ -26,7 +27,8 @@ type PipelineInterface interface {
2627
}
2728

2829
type PipelineClient struct {
29-
apiClient *apiclient.Pipeline
30+
apiClient *apiclient.Pipeline
31+
authInfoWriter runtime.ClientAuthInfoWriter
3032
}
3133

3234
func (c *PipelineClient) UpdateDefaultVersion(parameters *params.UpdatePipelineDefaultVersionParams) error {
@@ -35,7 +37,7 @@ func (c *PipelineClient) UpdateDefaultVersion(parameters *params.UpdatePipelineD
3537
defer cancel()
3638
// Make service call
3739
parameters.Context = ctx
38-
_, err := c.apiClient.PipelineService.UpdatePipelineDefaultVersion(parameters, PassThroughAuth)
40+
_, err := c.apiClient.PipelineService.UpdatePipelineDefaultVersion(parameters, c.authInfoWriter)
3941
if err != nil {
4042
if defaultError, ok := err.(*params.GetPipelineDefault); ok {
4143
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -56,25 +58,39 @@ func NewPipelineClient(clientConfig clientcmd.ClientConfig, debug bool) (
5658

5759
runtime, err := NewHTTPRuntime(clientConfig, debug)
5860
if err != nil {
59-
return nil, err
61+
return nil, fmt.Errorf("Error occurred when creating pipeline client: %w", err)
6062
}
6163

6264
apiClient := apiclient.New(runtime, strfmt.Default)
6365

64-
// Creating upload client
66+
// Creating pipeline client
6567
return &PipelineClient{
6668
apiClient: apiClient,
6769
}, nil
6870
}
6971

72+
func NewKubeflowInClusterPipelineClient(namespace string, debug bool) (
73+
*PipelineClient, error) {
74+
75+
runtime := NewKubeflowInClusterHTTPRuntime(namespace, debug)
76+
77+
apiClient := apiclient.New(runtime, strfmt.Default)
78+
79+
// Creating pipeline client
80+
return &PipelineClient{
81+
apiClient: apiClient,
82+
authInfoWriter: SATokenVolumeProjectionAuth,
83+
}, nil
84+
}
85+
7086
func (c *PipelineClient) Create(parameters *params.CreatePipelineParams) (*model.APIPipeline,
7187
error) {
7288
// Create context with timeout
7389
ctx, cancel := context.WithTimeout(context.Background(), apiServerDefaultTimeout)
7490
defer cancel()
7591

7692
parameters.Context = ctx
77-
response, err := c.apiClient.PipelineService.CreatePipeline(parameters, PassThroughAuth)
93+
response, err := c.apiClient.PipelineService.CreatePipeline(parameters, c.authInfoWriter)
7894
if err != nil {
7995
if defaultError, ok := err.(*params.CreatePipelineDefault); ok {
8096
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -98,7 +114,7 @@ func (c *PipelineClient) Get(parameters *params.GetPipelineParams) (*model.APIPi
98114

99115
// Make service call
100116
parameters.Context = ctx
101-
response, err := c.apiClient.PipelineService.GetPipeline(parameters, PassThroughAuth)
117+
response, err := c.apiClient.PipelineService.GetPipeline(parameters, c.authInfoWriter)
102118
if err != nil {
103119
if defaultError, ok := err.(*params.GetPipelineDefault); ok {
104120
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -121,7 +137,7 @@ func (c *PipelineClient) Delete(parameters *params.DeletePipelineParams) error {
121137

122138
// Make service call
123139
parameters.Context = ctx
124-
_, err := c.apiClient.PipelineService.DeletePipeline(parameters, PassThroughAuth)
140+
_, err := c.apiClient.PipelineService.DeletePipeline(parameters, c.authInfoWriter)
125141
if err != nil {
126142
if defaultError, ok := err.(*params.DeletePipelineDefault); ok {
127143
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -144,7 +160,7 @@ func (c *PipelineClient) GetTemplate(parameters *params.GetTemplateParams) (temp
144160

145161
// Make service call
146162
parameters.Context = ctx
147-
response, err := c.apiClient.PipelineService.GetTemplate(parameters, PassThroughAuth)
163+
response, err := c.apiClient.PipelineService.GetTemplate(parameters, c.authInfoWriter)
148164
if err != nil {
149165
if defaultError, ok := err.(*params.GetTemplateDefault); ok {
150166
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -169,7 +185,7 @@ func (c *PipelineClient) List(parameters *params.ListPipelinesParams) (
169185

170186
// Make service call
171187
parameters.Context = ctx
172-
response, err := c.apiClient.PipelineService.ListPipelines(parameters, PassThroughAuth)
188+
response, err := c.apiClient.PipelineService.ListPipelines(parameters, c.authInfoWriter)
173189
if err != nil {
174190
if defaultError, ok := err.(*params.ListPipelinesDefault); ok {
175191
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -222,7 +238,7 @@ func (c *PipelineClient) CreatePipelineVersion(parameters *params.CreatePipeline
222238
defer cancel()
223239

224240
parameters.Context = ctx
225-
response, err := c.apiClient.PipelineService.CreatePipelineVersion(parameters, PassThroughAuth)
241+
response, err := c.apiClient.PipelineService.CreatePipelineVersion(parameters, c.authInfoWriter)
226242
if err != nil {
227243
if defaultError, ok := err.(*params.CreatePipelineVersionDefault); ok {
228244
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -246,7 +262,7 @@ func (c *PipelineClient) ListPipelineVersions(parameters *params.ListPipelineVer
246262

247263
// Make service call
248264
parameters.Context = ctx
249-
response, err := c.apiClient.PipelineService.ListPipelineVersions(parameters, PassThroughAuth)
265+
response, err := c.apiClient.PipelineService.ListPipelineVersions(parameters, c.authInfoWriter)
250266
if err != nil {
251267
if defaultError, ok := err.(*params.ListPipelineVersionsDefault); ok {
252268
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -270,7 +286,7 @@ func (c *PipelineClient) GetPipelineVersion(parameters *params.GetPipelineVersio
270286

271287
// Make service call
272288
parameters.Context = ctx
273-
response, err := c.apiClient.PipelineService.GetPipelineVersion(parameters, PassThroughAuth)
289+
response, err := c.apiClient.PipelineService.GetPipelineVersion(parameters, c.authInfoWriter)
274290
if err != nil {
275291
if defaultError, ok := err.(*params.GetPipelineVersionDefault); ok {
276292
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)
@@ -294,7 +310,7 @@ func (c *PipelineClient) GetPipelineVersionTemplate(parameters *params.GetPipeli
294310

295311
// Make service call
296312
parameters.Context = ctx
297-
response, err := c.apiClient.PipelineService.GetPipelineVersionTemplate(parameters, PassThroughAuth)
313+
response, err := c.apiClient.PipelineService.GetPipelineVersionTemplate(parameters, c.authInfoWriter)
298314
if err != nil {
299315
if defaultError, ok := err.(*params.GetPipelineVersionTemplateDefault); ok {
300316
err = CreateErrorFromAPIStatus(defaultError.Payload.Error, defaultError.Payload.Code)

0 commit comments

Comments
 (0)