diff --git a/backend/api/go_client/auth.pb.gw.go b/backend/api/go_client/auth.pb.gw.go index 47433d483b2..54d0fd5899a 100644 --- a/backend/api/go_client/auth.pb.gw.go +++ b/backend/api/go_client/auth.pb.gw.go @@ -36,7 +36,10 @@ func request_AuthService_Authorize_0(ctx context.Context, marshaler runtime.Mars var protoReq AuthorizeRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_AuthService_Authorize_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_AuthService_Authorize_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -107,7 +110,7 @@ func RegisterAuthServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux } var ( - pattern_AuthService_Authorize_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "auth"}, "")) + pattern_AuthService_Authorize_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "auth"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/backend/api/go_client/experiment.pb.gw.go b/backend/api/go_client/experiment.pb.gw.go index c30fc1e3809..0bd6f9ec3f4 100644 --- a/backend/api/go_client/experiment.pb.gw.go +++ b/backend/api/go_client/experiment.pb.gw.go @@ -80,7 +80,10 @@ func request_ExperimentService_ListExperiment_0(ctx context.Context, marshaler r var protoReq ListExperimentsRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_ExperimentService_ListExperiment_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ExperimentService_ListExperiment_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -332,17 +335,17 @@ func RegisterExperimentServiceHandlerClient(ctx context.Context, mux *runtime.Se } var ( - pattern_ExperimentService_CreateExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "experiments"}, "")) + pattern_ExperimentService_CreateExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "experiments"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ExperimentService_GetExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "experiments", "id"}, "")) + pattern_ExperimentService_GetExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "experiments", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ExperimentService_ListExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "experiments"}, "")) + pattern_ExperimentService_ListExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "experiments"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ExperimentService_DeleteExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "experiments", "id"}, "")) + pattern_ExperimentService_DeleteExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "experiments", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ExperimentService_ArchiveExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "experiments", "id"}, "archive")) + pattern_ExperimentService_ArchiveExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "experiments", "id"}, "archive", runtime.AssumeColonVerbOpt(true))) - pattern_ExperimentService_UnarchiveExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "experiments", "id"}, "unarchive")) + pattern_ExperimentService_UnarchiveExperiment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "experiments", "id"}, "unarchive", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/backend/api/go_client/healthz.pb.gw.go b/backend/api/go_client/healthz.pb.gw.go index 26c9823faee..0ae0295cf73 100644 --- a/backend/api/go_client/healthz.pb.gw.go +++ b/backend/api/go_client/healthz.pb.gw.go @@ -100,7 +100,7 @@ func RegisterHealthzServiceHandlerClient(ctx context.Context, mux *runtime.Serve } var ( - pattern_HealthzService_GetHealthz_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "healthz"}, "")) + pattern_HealthzService_GetHealthz_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "healthz"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/backend/api/go_client/job.pb.go b/backend/api/go_client/job.pb.go index 7158c548672..ce2436ff691 100644 --- a/backend/api/go_client/job.pb.go +++ b/backend/api/go_client/job.pb.go @@ -750,6 +750,8 @@ type Job struct { // If true, the job will only schedule the latest interval if behind schedule. // If false, the job will catch up on each past interval. NoCatchup bool `protobuf:"varint,17,opt,name=no_catchup,json=noCatchup,proto3" json:"no_catchup,omitempty"` + // Optional input field. Specify, whether caching is enabled for this job. + DisableCache bool `protobuf:"varint,19,opt,name=disable_cache,json=disableCache,proto3" json:"disable_cache,omitempty"` } func (x *Job) Reset() { @@ -889,6 +891,13 @@ func (x *Job) GetNoCatchup() bool { return false } +func (x *Job) GetDisableCache() bool { + if x != nil { + return x.DisableCache + } + return false +} + var File_backend_api_job_proto protoreflect.FileDescriptor var file_backend_api_job_proto_rawDesc = []byte{ @@ -970,7 +979,7 @@ var file_backend_api_job_proto_rawDesc = []byte{ 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x10, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x69, 0x63, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x22, 0xfb, 0x04, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, + 0x67, 0x67, 0x65, 0x72, 0x22, 0xa0, 0x05, 0x0a, 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, @@ -1006,54 +1015,56 @@ var file_backend_api_job_proto_rawDesc = []byte{ 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x6f, 0x5f, 0x63, 0x61, 0x74, 0x63, 0x68, 0x75, 0x70, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x09, 0x6e, 0x6f, 0x43, 0x61, 0x74, 0x63, 0x68, 0x75, 0x70, 0x22, 0x33, 0x0a, - 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, - 0x10, 0x02, 0x32, 0xa1, 0x04, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x15, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x62, 0x22, - 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x3a, 0x03, 0x6a, 0x6f, 0x62, - 0x12, 0x47, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x12, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x62, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, - 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x53, 0x0a, 0x08, 0x4c, 0x69, 0x73, - 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x61, 0x70, 0x69, - 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x12, 0x62, - 0x0a, 0x09, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x15, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x20, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x65, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4a, 0x6f, 0x62, - 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4a, 0x6f, - 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x7d, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5b, 0x0a, 0x09, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x28, 0x08, 0x52, 0x09, 0x6e, 0x6f, 0x43, 0x61, 0x74, 0x63, 0x68, 0x75, 0x70, 0x12, 0x23, 0x0a, + 0x0d, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x13, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x22, 0x33, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, + 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x32, 0xa1, 0x04, 0x0a, 0x0a, 0x4a, 0x6f, 0x62, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4a, 0x6f, 0x62, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x4a, 0x6f, 0x62, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x12, 0x2f, 0x61, + 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, + 0x3a, 0x03, 0x6a, 0x6f, 0x62, 0x12, 0x47, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12, + 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x08, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4a, 0x6f, 0x62, 0x22, 0x1f, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x53, + 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, + 0x12, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6a, + 0x6f, 0x62, 0x73, 0x12, 0x62, 0x0a, 0x09, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4a, 0x6f, 0x62, + 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x65, 0x0a, 0x0a, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x2a, 0x17, 0x2f, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6a, 0x6f, 0x62, - 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0x85, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x70, - 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x92, 0x41, - 0x4d, 0x52, 0x1c, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x11, 0x12, 0x0f, - 0x0a, 0x0d, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5a, - 0x1f, 0x0a, 0x1d, 0x0a, 0x06, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x12, 0x13, 0x08, 0x02, 0x1a, - 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x02, - 0x62, 0x0c, 0x0a, 0x0a, 0x0a, 0x06, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x12, 0x00, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x5b, + 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x15, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x19, 0x2a, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0x85, 0x01, 0x5a, 0x33, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x66, + 0x6c, 0x6f, 0x77, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x62, 0x61, + 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x5f, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x92, 0x41, 0x4d, 0x52, 0x1c, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x12, 0x11, 0x12, 0x0f, 0x0a, 0x0d, 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x5a, 0x1f, 0x0a, 0x1d, 0x0a, 0x06, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, + 0x12, 0x13, 0x08, 0x02, 0x1a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x02, 0x62, 0x0c, 0x0a, 0x0a, 0x0a, 0x06, 0x42, 0x65, 0x61, 0x72, 0x65, + 0x72, 0x12, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/backend/api/go_client/job.pb.gw.go b/backend/api/go_client/job.pb.gw.go index 09d68b81b85..7d9a3a8a90d 100644 --- a/backend/api/go_client/job.pb.gw.go +++ b/backend/api/go_client/job.pb.gw.go @@ -80,7 +80,10 @@ func request_JobService_ListJobs_0(ctx context.Context, marshaler runtime.Marsha var protoReq ListJobsRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_JobService_ListJobs_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_JobService_ListJobs_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -332,17 +335,17 @@ func RegisterJobServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, } var ( - pattern_JobService_CreateJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "jobs"}, "")) + pattern_JobService_CreateJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "jobs"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_JobService_GetJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "jobs", "id"}, "")) + pattern_JobService_GetJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "jobs", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_JobService_ListJobs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "jobs"}, "")) + pattern_JobService_ListJobs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "jobs"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_JobService_EnableJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "jobs", "id", "enable"}, "")) + pattern_JobService_EnableJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "jobs", "id", "enable"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_JobService_DisableJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "jobs", "id", "disable"}, "")) + pattern_JobService_DisableJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "jobs", "id", "disable"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_JobService_DeleteJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "jobs", "id"}, "")) + pattern_JobService_DeleteJob_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "jobs", "id"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/backend/api/go_client/pipeline.pb.gw.go b/backend/api/go_client/pipeline.pb.gw.go index 76aee376b3a..35f6c546f7f 100644 --- a/backend/api/go_client/pipeline.pb.gw.go +++ b/backend/api/go_client/pipeline.pb.gw.go @@ -118,7 +118,10 @@ func request_PipelineService_ListPipelines_0(ctx context.Context, marshaler runt var protoReq ListPipelinesRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_PipelineService_ListPipelines_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PipelineService_ListPipelines_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -233,7 +236,10 @@ func request_PipelineService_ListPipelineVersions_0(ctx context.Context, marshal var protoReq ListPipelineVersionsRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_PipelineService_ListPipelineVersions_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PipelineService_ListPipelineVersions_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -616,29 +622,29 @@ func RegisterPipelineServiceHandlerClient(ctx context.Context, mux *runtime.Serv } var ( - pattern_PipelineService_CreatePipeline_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "pipelines"}, "")) + pattern_PipelineService_CreatePipeline_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "pipelines"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_GetPipeline_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "pipelines", "id"}, "")) + pattern_PipelineService_GetPipeline_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "pipelines", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_GetPipelineByName_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"apis", "v1beta1", "namespaces", "namespace", "pipelines", "name"}, "")) + pattern_PipelineService_GetPipelineByName_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"apis", "v1beta1", "namespaces", "namespace", "pipelines", "name"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_ListPipelines_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "pipelines"}, "")) + pattern_PipelineService_ListPipelines_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "pipelines"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_DeletePipeline_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "pipelines", "id"}, "")) + pattern_PipelineService_DeletePipeline_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "pipelines", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_GetTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "pipelines", "id", "templates"}, "")) + pattern_PipelineService_GetTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "pipelines", "id", "templates"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_CreatePipelineVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "pipeline_versions"}, "")) + pattern_PipelineService_CreatePipelineVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "pipeline_versions"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_GetPipelineVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "pipeline_versions", "version_id"}, "")) + pattern_PipelineService_GetPipelineVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "pipeline_versions", "version_id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_ListPipelineVersions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "pipeline_versions"}, "")) + pattern_PipelineService_ListPipelineVersions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "pipeline_versions"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_DeletePipelineVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "pipeline_versions", "version_id"}, "")) + pattern_PipelineService_DeletePipelineVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "pipeline_versions", "version_id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_GetPipelineVersionTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "pipeline_versions", "version_id", "templates"}, "")) + pattern_PipelineService_GetPipelineVersionTemplate_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "pipeline_versions", "version_id", "templates"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_PipelineService_UpdatePipelineDefaultVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"apis", "v1beta1", "pipelines", "pipeline_id", "default_version", "version_id"}, "")) + pattern_PipelineService_UpdatePipelineDefaultVersion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"apis", "v1beta1", "pipelines", "pipeline_id", "default_version", "version_id"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/backend/api/go_client/report.pb.gw.go b/backend/api/go_client/report.pb.gw.go index b2034bc6f93..ef9f0eac260 100644 --- a/backend/api/go_client/report.pb.gw.go +++ b/backend/api/go_client/report.pb.gw.go @@ -144,9 +144,9 @@ func RegisterReportServiceHandlerClient(ctx context.Context, mux *runtime.ServeM } var ( - pattern_ReportService_ReportWorkflow_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "workflows"}, "")) + pattern_ReportService_ReportWorkflow_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "workflows"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_ReportService_ReportScheduledWorkflow_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "scheduledworkflows"}, "")) + pattern_ReportService_ReportScheduledWorkflow_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "scheduledworkflows"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/backend/api/go_client/run.pb.go b/backend/api/go_client/run.pb.go index d43872fe462..1890eb2dba0 100644 --- a/backend/api/go_client/run.pb.go +++ b/backend/api/go_client/run.pb.go @@ -715,6 +715,8 @@ type Run struct { ResourceReferences []*ResourceReference `protobuf:"bytes,5,rep,name=resource_references,json=resourceReferences,proto3" json:"resource_references,omitempty"` // Optional input field. Specify which Kubernetes service account this run uses. ServiceAccount string `protobuf:"bytes,14,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"` + // Optional input field. Specify, whether caching is enabled for this run. + DisableCache bool `protobuf:"varint,15,opt,name=disable_cache,json=disableCache,proto3" json:"disable_cache,omitempty"` // Output. The time that the run created. CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Output. When this run is scheduled to run. This could be different from @@ -817,6 +819,13 @@ func (x *Run) GetServiceAccount() string { return "" } +func (x *Run) GetDisableCache() bool { + if x != nil { + return x.DisableCache + } + return false +} + func (x *Run) GetCreatedAt() *timestamppb.Timestamp { if x != nil { return x.CreatedAt @@ -1422,7 +1431,7 @@ var file_backend_api_run_proto_rawDesc = []byte{ 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x22, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x87, 0x05, 0x0a, 0x03, 0x52, 0x75, 0x6e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xac, 0x05, 0x0a, 0x03, 0x52, 0x75, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, @@ -1441,172 +1450,175 @@ var file_backend_api_run_proto_rawDesc = []byte{ 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x0c, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x66, + 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x45, 0x0a, 0x0c, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x53, - 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x56, 0x41, 0x49, - 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x4f, 0x52, 0x41, - 0x47, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, 0x45, 0x44, - 0x10, 0x01, 0x22, 0x6b, 0x0a, 0x0f, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, - 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, - 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, - 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x22, - 0x68, 0x0a, 0x09, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x1a, 0x0a, 0x03, - 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x52, 0x75, 0x6e, 0x52, 0x03, 0x72, 0x75, 0x6e, 0x12, 0x3f, 0x0a, 0x10, 0x70, 0x69, 0x70, 0x65, - 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, - 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, - 0x6e, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x09, 0x52, 0x75, - 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, - 0x64, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x66, 0x6f, 0x72, - 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, - 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x32, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x41, 0x57, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, - 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x41, 0x47, 0x45, 0x10, 0x02, 0x42, 0x07, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5a, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x15, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, - 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x22, 0x9e, 0x03, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, - 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0xb2, 0x02, - 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x52, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x64, 0x0a, 0x06, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x01, 0x12, - 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55, 0x4d, - 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x55, 0x50, 0x4c, 0x49, 0x43, 0x41, - 0x54, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x12, - 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x10, 0x04, 0x22, 0x6a, 0x0a, 0x13, 0x52, 0x65, 0x61, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x72, 0x75, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x69, + 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x75, + 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x22, 0x45, 0x0a, 0x0c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, + 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x52, 0x43, + 0x48, 0x49, 0x56, 0x45, 0x44, 0x10, 0x01, 0x22, 0x6b, 0x0a, 0x0f, 0x50, 0x69, 0x70, 0x65, 0x6c, + 0x69, 0x6e, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x69, + 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, + 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x66, + 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x22, 0x68, 0x0a, 0x09, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x12, 0x1a, 0x0a, 0x03, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x03, 0x72, 0x75, 0x6e, 0x12, 0x3f, 0x0a, + 0x10, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x69, + 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x0f, 0x70, + 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xc9, + 0x01, 0x0a, 0x09, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2a, - 0x0a, 0x14, 0x52, 0x65, 0x61, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xb2, 0x08, 0x0a, 0x0a, 0x52, - 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, 0x0a, 0x09, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x1f, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x3a, 0x03, 0x72, 0x75, 0x6e, 0x12, 0x51, - 0x0a, 0x06, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x23, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, - 0x7d, 0x12, 0x53, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x14, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x14, 0x12, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x65, 0x0a, 0x0a, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x52, 0x75, 0x6e, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, + 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, + 0x00, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, + 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x22, 0x32, 0x0a, + 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x52, 0x41, 0x57, 0x10, + 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x41, 0x47, 0x45, 0x10, + 0x02, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5a, 0x0a, 0x17, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x07, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x9e, 0x03, 0x0a, 0x18, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x1a, 0xb2, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, + 0x0e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x64, + 0x65, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x64, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, + 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, + 0x41, 0x52, 0x47, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x55, + 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, + 0x47, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x22, 0x6a, 0x0a, 0x13, 0x52, 0x65, 0x61, 0x64, 0x41, + 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, + 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x72, 0x75, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x23, + 0x0a, 0x0d, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x52, 0x65, 0x61, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, + 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, + 0xb2, 0x08, 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x53, + 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x15, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, + 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x3a, 0x03, + 0x72, 0x75, 0x6e, 0x12, 0x51, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x12, 0x12, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x0e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x73, + 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, + 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x53, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, + 0x6e, 0x73, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x12, 0x65, 0x0a, 0x0a, 0x41, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x16, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x21, 0x22, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x61, 0x72, 0x63, 0x68, 0x69, + 0x76, 0x65, 0x12, 0x6b, 0x0a, 0x0c, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, + 0x75, 0x6e, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1f, 0x2f, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x6b, 0x0a, - 0x0c, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x18, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x3a, 0x75, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, 0x5b, 0x0a, 0x09, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x2a, 0x17, - 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, - 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1c, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2e, 0x22, 0x29, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x3a, 0x01, 0x2a, 0x12, - 0x97, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, - 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, - 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x72, 0x74, 0x69, 0x66, - 0x61, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x72, 0x65, 0x61, 0x64, 0x12, 0x6f, 0x0a, 0x0c, 0x54, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2d, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x27, 0x22, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x12, 0x63, 0x0a, 0x08, 0x52, 0x65, - 0x74, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x74, - 0x72, 0x79, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, - 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x42, - 0x85, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, - 0x75, 0x62, 0x65, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, - 0x73, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x92, 0x41, 0x4d, 0x52, 0x1c, 0x0a, 0x07, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x11, 0x12, 0x0f, 0x0a, 0x0d, 0x1a, 0x0b, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5a, 0x1f, 0x0a, 0x1d, 0x0a, 0x06, 0x42, 0x65, - 0x61, 0x72, 0x65, 0x72, 0x12, 0x13, 0x08, 0x02, 0x1a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x02, 0x62, 0x0c, 0x0a, 0x0a, 0x0a, 0x06, 0x42, - 0x65, 0x61, 0x72, 0x65, 0x72, 0x12, 0x00, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x75, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x12, + 0x5b, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x15, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x1f, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x19, 0x2a, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, + 0x10, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, + 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x75, 0x6e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x22, 0x29, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, + 0x69, 0x64, 0x7d, 0x3a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x97, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x64, 0x41, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x18, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, + 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x72, 0x74, 0x69, 0x66, + 0x61, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x72, 0x65, 0x61, 0x64, 0x12, 0x6f, + 0x0a, 0x0c, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x12, 0x18, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x52, 0x75, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x22, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, + 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x12, + 0x63, 0x0a, 0x08, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x14, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x23, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, + 0x65, 0x74, 0x72, 0x79, 0x42, 0x85, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x75, 0x62, 0x65, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x70, 0x69, 0x70, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2f, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x92, 0x41, 0x4d, 0x52, + 0x1c, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x11, 0x12, 0x0f, 0x0a, 0x0d, + 0x1a, 0x0b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5a, 0x1f, 0x0a, + 0x1d, 0x0a, 0x06, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x12, 0x13, 0x08, 0x02, 0x1a, 0x0d, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x02, 0x62, 0x0c, + 0x0a, 0x0a, 0x0a, 0x06, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x12, 0x00, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/backend/api/go_client/run.pb.gw.go b/backend/api/go_client/run.pb.gw.go index 57347b77d23..a3a36e6ce64 100644 --- a/backend/api/go_client/run.pb.gw.go +++ b/backend/api/go_client/run.pb.gw.go @@ -80,7 +80,10 @@ func request_RunService_ListRuns_0(ctx context.Context, marshaler runtime.Marsha var protoReq ListRunsRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_RunService_ListRuns_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_RunService_ListRuns_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -550,25 +553,25 @@ func RegisterRunServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, } var ( - pattern_RunService_CreateRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "runs"}, "")) + pattern_RunService_CreateRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "runs"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_RunService_GetRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "run_id"}, "")) + pattern_RunService_GetRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "run_id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_RunService_ListRuns_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "runs"}, "")) + pattern_RunService_ListRuns_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1beta1", "runs"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_RunService_ArchiveRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "id"}, "archive")) + pattern_RunService_ArchiveRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "id"}, "archive", runtime.AssumeColonVerbOpt(true))) - pattern_RunService_UnarchiveRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "id"}, "unarchive")) + pattern_RunService_UnarchiveRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "id"}, "unarchive", runtime.AssumeColonVerbOpt(true))) - pattern_RunService_DeleteRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "id"}, "")) + pattern_RunService_DeleteRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_RunService_ReportRunMetrics_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "run_id"}, "reportMetrics")) + pattern_RunService_ReportRunMetrics_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "runs", "run_id"}, "reportMetrics", runtime.AssumeColonVerbOpt(true))) - pattern_RunService_ReadArtifact_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"apis", "v1beta1", "runs", "run_id", "nodes", "node_id", "artifacts", "artifact_name"}, "read")) + pattern_RunService_ReadArtifact_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"apis", "v1beta1", "runs", "run_id", "nodes", "node_id", "artifacts", "artifact_name"}, "read", runtime.AssumeColonVerbOpt(true))) - pattern_RunService_TerminateRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "runs", "run_id", "terminate"}, "")) + pattern_RunService_TerminateRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "runs", "run_id", "terminate"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_RunService_RetryRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "runs", "run_id", "retry"}, "")) + pattern_RunService_RetryRun_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"apis", "v1beta1", "runs", "run_id", "retry"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/backend/api/go_client/task.pb.gw.go b/backend/api/go_client/task.pb.gw.go index 91f2953afb5..bc848f15693 100644 --- a/backend/api/go_client/task.pb.gw.go +++ b/backend/api/go_client/task.pb.gw.go @@ -53,7 +53,10 @@ func request_TaskService_ListTasks_0(ctx context.Context, marshaler runtime.Mars var protoReq ListTasksRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_TaskService_ListTasks_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_TaskService_ListTasks_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -144,9 +147,9 @@ func RegisterTaskServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux } var ( - pattern_TaskService_CreateTask_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1alpha1", "tasks"}, "")) + pattern_TaskService_CreateTask_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1alpha1", "tasks"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_TaskService_ListTasks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1alpha1", "tasks"}, "")) + pattern_TaskService_ListTasks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"apis", "v1alpha1", "tasks"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/backend/api/go_client/visualization.pb.gw.go b/backend/api/go_client/visualization.pb.gw.go index af80a7b8c77..de8af315d59 100644 --- a/backend/api/go_client/visualization.pb.gw.go +++ b/backend/api/go_client/visualization.pb.gw.go @@ -125,7 +125,7 @@ func RegisterVisualizationServiceHandlerClient(ctx context.Context, mux *runtime } var ( - pattern_VisualizationService_CreateVisualization_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "visualizations", "namespace"}, "")) + pattern_VisualizationService_CreateVisualization_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"apis", "v1beta1", "visualizations", "namespace"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( diff --git a/backend/api/go_http_client/job_model/api_job.go b/backend/api/go_http_client/job_model/api_job.go index 3b93a6b8b16..fade3799336 100644 --- a/backend/api/go_http_client/job_model/api_job.go +++ b/backend/api/go_http_client/job_model/api_job.go @@ -26,6 +26,9 @@ type APIJob struct { // Optional input field. Describing the purpose of the job Description string `json:"description,omitempty"` + // Optional input field. Specify, whether caching is enabled for this job. + DisableCache bool `json:"disable_cache,omitempty"` + // Input. Whether the job is enabled or not. Enabled bool `json:"enabled,omitempty"` diff --git a/backend/api/go_http_client/job_model/pipeline_spec_runtime_config.go b/backend/api/go_http_client/job_model/pipeline_spec_runtime_config.go index 96344adbbfb..8cbbe7f42cf 100644 --- a/backend/api/go_http_client/job_model/pipeline_spec_runtime_config.go +++ b/backend/api/go_http_client/job_model/pipeline_spec_runtime_config.go @@ -8,9 +8,7 @@ package job_model import ( strfmt "github.com/go-openapi/strfmt" - "github.com/go-openapi/errors" "github.com/go-openapi/swag" - "github.com/go-openapi/validate" ) // PipelineSpecRuntimeConfig The runtime config of a PipelineSpec. @@ -20,7 +18,7 @@ type PipelineSpecRuntimeConfig struct { // The runtime parameters of the PipelineSpec. The parameters will be // used to replace the placeholders // at runtime. - Parameters map[string]ProtobufValue `json:"parameters,omitempty"` + Parameters map[string]interface{} `json:"parameters,omitempty"` // A path in a object store bucket which will be treated as the root // output directory of the pipeline. It is used by the system to @@ -30,37 +28,6 @@ type PipelineSpecRuntimeConfig struct { // Validate validates this pipeline spec runtime config func (m *PipelineSpecRuntimeConfig) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateParameters(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *PipelineSpecRuntimeConfig) validateParameters(formats strfmt.Registry) error { - - if swag.IsZero(m.Parameters) { // not required - return nil - } - - for k := range m.Parameters { - - if err := validate.Required("parameters"+"."+k, "body", m.Parameters[k]); err != nil { - return err - } - if val, ok := m.Parameters[k]; ok { - if err := val.Validate(formats); err != nil { - return err - } - } - - } - return nil } diff --git a/backend/api/go_http_client/job_model/protobuf_list_value.go b/backend/api/go_http_client/job_model/protobuf_list_value.go deleted file mode 100644 index 0feac350bfa..00000000000 --- a/backend/api/go_http_client/job_model/protobuf_list_value.go +++ /dev/null @@ -1,82 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package job_model - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - "strconv" - - strfmt "github.com/go-openapi/strfmt" - - "github.com/go-openapi/errors" - "github.com/go-openapi/swag" -) - -// ProtobufListValue `ListValue` is a wrapper around a repeated field of values. -// -// The JSON representation for `ListValue` is JSON array. -// swagger:model protobufListValue -type ProtobufListValue struct { - - // Repeated field of dynamically typed values. - Values []*ProtobufValue `json:"values"` -} - -// Validate validates this protobuf list value -func (m *ProtobufListValue) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateValues(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *ProtobufListValue) validateValues(formats strfmt.Registry) error { - - if swag.IsZero(m.Values) { // not required - return nil - } - - for i := 0; i < len(m.Values); i++ { - if swag.IsZero(m.Values[i]) { // not required - continue - } - - if m.Values[i] != nil { - if err := m.Values[i].Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("values" + "." + strconv.Itoa(i)) - } - return err - } - } - - } - - return nil -} - -// MarshalBinary interface implementation -func (m *ProtobufListValue) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *ProtobufListValue) UnmarshalBinary(b []byte) error { - var res ProtobufListValue - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/backend/api/go_http_client/job_model/protobuf_struct.go b/backend/api/go_http_client/job_model/protobuf_struct.go deleted file mode 100644 index baf90592c8b..00000000000 --- a/backend/api/go_http_client/job_model/protobuf_struct.go +++ /dev/null @@ -1,83 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package job_model - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - strfmt "github.com/go-openapi/strfmt" - - "github.com/go-openapi/errors" - "github.com/go-openapi/swag" - "github.com/go-openapi/validate" -) - -// ProtobufStruct `Struct` represents a structured data value, consisting of fields -// which map to dynamically typed values. In some languages, `Struct` -// might be supported by a native representation. For example, in -// scripting languages like JS a struct is represented as an -// object. The details of that representation are described together -// with the proto support for the language. -// -// The JSON representation for `Struct` is JSON object. -// swagger:model protobufStruct -type ProtobufStruct struct { - - // Unordered map of dynamically typed values. - Fields map[string]ProtobufValue `json:"fields,omitempty"` -} - -// Validate validates this protobuf struct -func (m *ProtobufStruct) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateFields(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *ProtobufStruct) validateFields(formats strfmt.Registry) error { - - if swag.IsZero(m.Fields) { // not required - return nil - } - - for k := range m.Fields { - - if err := validate.Required("fields"+"."+k, "body", m.Fields[k]); err != nil { - return err - } - if val, ok := m.Fields[k]; ok { - if err := val.Validate(formats); err != nil { - return err - } - } - - } - - return nil -} - -// MarshalBinary interface implementation -func (m *ProtobufStruct) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *ProtobufStruct) UnmarshalBinary(b []byte) error { - var res ProtobufStruct - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/backend/api/go_http_client/job_model/protobuf_value.go b/backend/api/go_http_client/job_model/protobuf_value.go deleted file mode 100644 index 30773aa5d45..00000000000 --- a/backend/api/go_http_client/job_model/protobuf_value.go +++ /dev/null @@ -1,133 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package job_model - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - strfmt "github.com/go-openapi/strfmt" - - "github.com/go-openapi/errors" - "github.com/go-openapi/swag" -) - -// ProtobufValue `Value` represents a dynamically typed value which can be either -// null, a number, a string, a boolean, a recursive struct value, or a -// list of values. A producer of value is expected to set one of that -// variants, absence of any variant indicates an error. -// -// The JSON representation for `Value` is JSON value. -// swagger:model protobufValue -type ProtobufValue struct { - - // Represents a boolean value. - BoolValue bool `json:"bool_value,omitempty"` - - // Represents a repeated `Value`. - ListValue *ProtobufListValue `json:"list_value,omitempty"` - - // Represents a null value. - NullValue ProtobufNullValue `json:"null_value,omitempty"` - - // Represents a double value. - NumberValue float64 `json:"number_value,omitempty"` - - // Represents a string value. - StringValue string `json:"string_value,omitempty"` - - // Represents a structured value. - StructValue *ProtobufStruct `json:"struct_value,omitempty"` -} - -// Validate validates this protobuf value -func (m *ProtobufValue) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateListValue(formats); err != nil { - res = append(res, err) - } - - if err := m.validateNullValue(formats); err != nil { - res = append(res, err) - } - - if err := m.validateStructValue(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *ProtobufValue) validateListValue(formats strfmt.Registry) error { - - if swag.IsZero(m.ListValue) { // not required - return nil - } - - if m.ListValue != nil { - if err := m.ListValue.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("list_value") - } - return err - } - } - - return nil -} - -func (m *ProtobufValue) validateNullValue(formats strfmt.Registry) error { - - if swag.IsZero(m.NullValue) { // not required - return nil - } - - if err := m.NullValue.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("null_value") - } - return err - } - - return nil -} - -func (m *ProtobufValue) validateStructValue(formats strfmt.Registry) error { - - if swag.IsZero(m.StructValue) { // not required - return nil - } - - if m.StructValue != nil { - if err := m.StructValue.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("struct_value") - } - return err - } - } - - return nil -} - -// MarshalBinary interface implementation -func (m *ProtobufValue) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *ProtobufValue) UnmarshalBinary(b []byte) error { - var res ProtobufValue - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/backend/api/go_http_client/run_model/api_run.go b/backend/api/go_http_client/run_model/api_run.go index b03d8ca9bf4..9e7b856c739 100644 --- a/backend/api/go_http_client/run_model/api_run.go +++ b/backend/api/go_http_client/run_model/api_run.go @@ -26,6 +26,9 @@ type APIRun struct { // Optional input field. Describing the purpose of the run Description string `json:"description,omitempty"` + // Optional input field. Specify, whether caching is enabled for this run. + DisableCache bool `json:"disable_cache,omitempty"` + // In case any error happens retrieving a run field, only run ID // and the error message is returned. Client has the flexibility of choosing // how to handle error. This is especially useful during listing call. diff --git a/backend/api/go_http_client/run_model/pipeline_spec_runtime_config.go b/backend/api/go_http_client/run_model/pipeline_spec_runtime_config.go index b8fb1ddf0f6..73c0a4890fe 100644 --- a/backend/api/go_http_client/run_model/pipeline_spec_runtime_config.go +++ b/backend/api/go_http_client/run_model/pipeline_spec_runtime_config.go @@ -8,9 +8,7 @@ package run_model import ( strfmt "github.com/go-openapi/strfmt" - "github.com/go-openapi/errors" "github.com/go-openapi/swag" - "github.com/go-openapi/validate" ) // PipelineSpecRuntimeConfig The runtime config of a PipelineSpec. @@ -20,7 +18,7 @@ type PipelineSpecRuntimeConfig struct { // The runtime parameters of the PipelineSpec. The parameters will be // used to replace the placeholders // at runtime. - Parameters map[string]ProtobufValue `json:"parameters,omitempty"` + Parameters map[string]interface{} `json:"parameters,omitempty"` // A path in a object store bucket which will be treated as the root // output directory of the pipeline. It is used by the system to @@ -30,37 +28,6 @@ type PipelineSpecRuntimeConfig struct { // Validate validates this pipeline spec runtime config func (m *PipelineSpecRuntimeConfig) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateParameters(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *PipelineSpecRuntimeConfig) validateParameters(formats strfmt.Registry) error { - - if swag.IsZero(m.Parameters) { // not required - return nil - } - - for k := range m.Parameters { - - if err := validate.Required("parameters"+"."+k, "body", m.Parameters[k]); err != nil { - return err - } - if val, ok := m.Parameters[k]; ok { - if err := val.Validate(formats); err != nil { - return err - } - } - - } - return nil } diff --git a/backend/api/go_http_client/run_model/protobuf_list_value.go b/backend/api/go_http_client/run_model/protobuf_list_value.go deleted file mode 100644 index 2e9f37e5fde..00000000000 --- a/backend/api/go_http_client/run_model/protobuf_list_value.go +++ /dev/null @@ -1,82 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package run_model - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - "strconv" - - strfmt "github.com/go-openapi/strfmt" - - "github.com/go-openapi/errors" - "github.com/go-openapi/swag" -) - -// ProtobufListValue `ListValue` is a wrapper around a repeated field of values. -// -// The JSON representation for `ListValue` is JSON array. -// swagger:model protobufListValue -type ProtobufListValue struct { - - // Repeated field of dynamically typed values. - Values []*ProtobufValue `json:"values"` -} - -// Validate validates this protobuf list value -func (m *ProtobufListValue) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateValues(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *ProtobufListValue) validateValues(formats strfmt.Registry) error { - - if swag.IsZero(m.Values) { // not required - return nil - } - - for i := 0; i < len(m.Values); i++ { - if swag.IsZero(m.Values[i]) { // not required - continue - } - - if m.Values[i] != nil { - if err := m.Values[i].Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("values" + "." + strconv.Itoa(i)) - } - return err - } - } - - } - - return nil -} - -// MarshalBinary interface implementation -func (m *ProtobufListValue) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *ProtobufListValue) UnmarshalBinary(b []byte) error { - var res ProtobufListValue - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/backend/api/go_http_client/run_model/protobuf_struct.go b/backend/api/go_http_client/run_model/protobuf_struct.go deleted file mode 100644 index 1477be46432..00000000000 --- a/backend/api/go_http_client/run_model/protobuf_struct.go +++ /dev/null @@ -1,83 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package run_model - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - strfmt "github.com/go-openapi/strfmt" - - "github.com/go-openapi/errors" - "github.com/go-openapi/swag" - "github.com/go-openapi/validate" -) - -// ProtobufStruct `Struct` represents a structured data value, consisting of fields -// which map to dynamically typed values. In some languages, `Struct` -// might be supported by a native representation. For example, in -// scripting languages like JS a struct is represented as an -// object. The details of that representation are described together -// with the proto support for the language. -// -// The JSON representation for `Struct` is JSON object. -// swagger:model protobufStruct -type ProtobufStruct struct { - - // Unordered map of dynamically typed values. - Fields map[string]ProtobufValue `json:"fields,omitempty"` -} - -// Validate validates this protobuf struct -func (m *ProtobufStruct) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateFields(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *ProtobufStruct) validateFields(formats strfmt.Registry) error { - - if swag.IsZero(m.Fields) { // not required - return nil - } - - for k := range m.Fields { - - if err := validate.Required("fields"+"."+k, "body", m.Fields[k]); err != nil { - return err - } - if val, ok := m.Fields[k]; ok { - if err := val.Validate(formats); err != nil { - return err - } - } - - } - - return nil -} - -// MarshalBinary interface implementation -func (m *ProtobufStruct) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *ProtobufStruct) UnmarshalBinary(b []byte) error { - var res ProtobufStruct - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/backend/api/go_http_client/run_model/protobuf_value.go b/backend/api/go_http_client/run_model/protobuf_value.go deleted file mode 100644 index 313534ffcf7..00000000000 --- a/backend/api/go_http_client/run_model/protobuf_value.go +++ /dev/null @@ -1,133 +0,0 @@ -// Code generated by go-swagger; DO NOT EDIT. - -package run_model - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -import ( - strfmt "github.com/go-openapi/strfmt" - - "github.com/go-openapi/errors" - "github.com/go-openapi/swag" -) - -// ProtobufValue `Value` represents a dynamically typed value which can be either -// null, a number, a string, a boolean, a recursive struct value, or a -// list of values. A producer of value is expected to set one of that -// variants, absence of any variant indicates an error. -// -// The JSON representation for `Value` is JSON value. -// swagger:model protobufValue -type ProtobufValue struct { - - // Represents a boolean value. - BoolValue bool `json:"bool_value,omitempty"` - - // Represents a repeated `Value`. - ListValue *ProtobufListValue `json:"list_value,omitempty"` - - // Represents a null value. - NullValue ProtobufNullValue `json:"null_value,omitempty"` - - // Represents a double value. - NumberValue float64 `json:"number_value,omitempty"` - - // Represents a string value. - StringValue string `json:"string_value,omitempty"` - - // Represents a structured value. - StructValue *ProtobufStruct `json:"struct_value,omitempty"` -} - -// Validate validates this protobuf value -func (m *ProtobufValue) Validate(formats strfmt.Registry) error { - var res []error - - if err := m.validateListValue(formats); err != nil { - res = append(res, err) - } - - if err := m.validateNullValue(formats); err != nil { - res = append(res, err) - } - - if err := m.validateStructValue(formats); err != nil { - res = append(res, err) - } - - if len(res) > 0 { - return errors.CompositeValidationError(res...) - } - return nil -} - -func (m *ProtobufValue) validateListValue(formats strfmt.Registry) error { - - if swag.IsZero(m.ListValue) { // not required - return nil - } - - if m.ListValue != nil { - if err := m.ListValue.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("list_value") - } - return err - } - } - - return nil -} - -func (m *ProtobufValue) validateNullValue(formats strfmt.Registry) error { - - if swag.IsZero(m.NullValue) { // not required - return nil - } - - if err := m.NullValue.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("null_value") - } - return err - } - - return nil -} - -func (m *ProtobufValue) validateStructValue(formats strfmt.Registry) error { - - if swag.IsZero(m.StructValue) { // not required - return nil - } - - if m.StructValue != nil { - if err := m.StructValue.Validate(formats); err != nil { - if ve, ok := err.(*errors.Validation); ok { - return ve.ValidateName("struct_value") - } - return err - } - } - - return nil -} - -// MarshalBinary interface implementation -func (m *ProtobufValue) MarshalBinary() ([]byte, error) { - if m == nil { - return nil, nil - } - return swag.WriteJSON(m) -} - -// UnmarshalBinary interface implementation -func (m *ProtobufValue) UnmarshalBinary(b []byte) error { - var res ProtobufValue - if err := swag.ReadJSON(b, &res); err != nil { - return err - } - *m = res - return nil -} diff --git a/backend/api/job.proto b/backend/api/job.proto index d6e66326983..e99625ca2c3 100644 --- a/backend/api/job.proto +++ b/backend/api/job.proto @@ -259,5 +259,8 @@ message Job { // If true, the job will only schedule the latest interval if behind schedule. // If false, the job will catch up on each past interval. bool no_catchup = 17; + + // Optional input field. Specify, whether caching is enabled for this job. + bool disable_cache = 19; } -// Next field number of Job will be 19 +// Next field number of Job will be 20 diff --git a/backend/api/python_http_client/README.md b/backend/api/python_http_client/README.md index b964cdd78df..61ba6858340 100644 --- a/backend/api/python_http_client/README.md +++ b/backend/api/python_http_client/README.md @@ -171,10 +171,7 @@ Class | Method | HTTP request | Description - [JobMode](docs/JobMode.md) - [PipelineSpecRuntimeConfig](docs/PipelineSpecRuntimeConfig.md) - [ProtobufAny](docs/ProtobufAny.md) - - [ProtobufListValue](docs/ProtobufListValue.md) - [ProtobufNullValue](docs/ProtobufNullValue.md) - - [ProtobufStruct](docs/ProtobufStruct.md) - - [ProtobufValue](docs/ProtobufValue.md) - [ReportRunMetricsResponseReportRunMetricResult](docs/ReportRunMetricsResponseReportRunMetricResult.md) - [ReportRunMetricsResponseReportRunMetricResultStatus](docs/ReportRunMetricsResponseReportRunMetricResultStatus.md) - [RunMetricFormat](docs/RunMetricFormat.md) diff --git a/backend/api/python_http_client/docs/ApiJob.md b/backend/api/python_http_client/docs/ApiJob.md index 6f4b0cbd488..a515831ed10 100644 --- a/backend/api/python_http_client/docs/ApiJob.md +++ b/backend/api/python_http_client/docs/ApiJob.md @@ -18,6 +18,7 @@ Name | Type | Description | Notes **error** | **str** | In case any error happens retrieving a job field, only job ID and the error message is returned. Client has the flexibility of choosing how to handle error. This is especially useful during listing call. | [optional] **enabled** | **bool** | Input. Whether the job is enabled or not. | [optional] **no_catchup** | **bool** | Optional input field. Whether the job should catch up if behind schedule. If true, the job will only schedule the latest interval if behind schedule. If false, the job will catch up on each past interval. | [optional] +**disable_cache** | **bool** | Optional input field. Specify, whether caching is enabled for this job. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/backend/api/python_http_client/docs/ApiRun.md b/backend/api/python_http_client/docs/ApiRun.md index 1c412ee5a3d..87b7206053c 100644 --- a/backend/api/python_http_client/docs/ApiRun.md +++ b/backend/api/python_http_client/docs/ApiRun.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes **pipeline_spec** | [**ApiPipelineSpec**](ApiPipelineSpec.md) | | [optional] **resource_references** | [**list[ApiResourceReference]**](ApiResourceReference.md) | Optional input field. Specify which resource this run belongs to. When creating a run from a particular pipeline version, the pipeline version can be specified here. | [optional] **service_account** | **str** | Optional input field. Specify which Kubernetes service account this run uses. | [optional] +**disable_cache** | **bool** | Optional input field. Specify, whether caching is enabled for this run. | [optional] **created_at** | **datetime** | Output. The time that the run created. | [optional] **scheduled_at** | **datetime** | Output. When this run is scheduled to run. This could be different from created_at. For example, if a run is from a backfilling job that was supposed to run 2 month ago, the scheduled_at is 2 month ago, v.s. created_at is the current time. | [optional] **finished_at** | **datetime** | Output. The time this run is finished. | [optional] diff --git a/backend/api/python_http_client/docs/PipelineSpecRuntimeConfig.md b/backend/api/python_http_client/docs/PipelineSpecRuntimeConfig.md index 6114983ee86..9e38f4fb608 100644 --- a/backend/api/python_http_client/docs/PipelineSpecRuntimeConfig.md +++ b/backend/api/python_http_client/docs/PipelineSpecRuntimeConfig.md @@ -4,7 +4,7 @@ The runtime config of a PipelineSpec. ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**parameters** | [**dict(str, ProtobufValue)**](ProtobufValue.md) | The runtime parameters of the PipelineSpec. The parameters will be used to replace the placeholders at runtime. | [optional] +**parameters** | **dict(str, object)** | The runtime parameters of the PipelineSpec. The parameters will be used to replace the placeholders at runtime. | [optional] **pipeline_root** | **str** | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/backend/api/python_http_client/docs/ProtobufListValue.md b/backend/api/python_http_client/docs/ProtobufListValue.md deleted file mode 100644 index eeb7566b5a2..00000000000 --- a/backend/api/python_http_client/docs/ProtobufListValue.md +++ /dev/null @@ -1,11 +0,0 @@ -# ProtobufListValue - -`ListValue` is a wrapper around a repeated field of values. The JSON representation for `ListValue` is JSON array. -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**values** | [**list[ProtobufValue]**](ProtobufValue.md) | Repeated field of dynamically typed values. | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/backend/api/python_http_client/docs/ProtobufStruct.md b/backend/api/python_http_client/docs/ProtobufStruct.md deleted file mode 100644 index 4689ffc967e..00000000000 --- a/backend/api/python_http_client/docs/ProtobufStruct.md +++ /dev/null @@ -1,11 +0,0 @@ -# ProtobufStruct - -`Struct` represents a structured data value, consisting of fields which map to dynamically typed values. In some languages, `Struct` might be supported by a native representation. For example, in scripting languages like JS a struct is represented as an object. The details of that representation are described together with the proto support for the language. The JSON representation for `Struct` is JSON object. -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**fields** | [**dict(str, ProtobufValue)**](ProtobufValue.md) | Unordered map of dynamically typed values. | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/backend/api/python_http_client/docs/ProtobufValue.md b/backend/api/python_http_client/docs/ProtobufValue.md deleted file mode 100644 index e6ba28260fb..00000000000 --- a/backend/api/python_http_client/docs/ProtobufValue.md +++ /dev/null @@ -1,16 +0,0 @@ -# ProtobufValue - -`Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of that variants, absence of any variant indicates an error. The JSON representation for `Value` is JSON value. -## Properties -Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- -**null_value** | [**ProtobufNullValue**](ProtobufNullValue.md) | | [optional] -**number_value** | **float** | Represents a double value. | [optional] -**string_value** | **str** | Represents a string value. | [optional] -**bool_value** | **bool** | Represents a boolean value. | [optional] -**struct_value** | [**ProtobufStruct**](ProtobufStruct.md) | | [optional] -**list_value** | [**ProtobufListValue**](ProtobufListValue.md) | | [optional] - -[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) - - diff --git a/backend/api/python_http_client/kfp_server_api/__init__.py b/backend/api/python_http_client/kfp_server_api/__init__.py index 5480f50f9de..95240ece121 100644 --- a/backend/api/python_http_client/kfp_server_api/__init__.py +++ b/backend/api/python_http_client/kfp_server_api/__init__.py @@ -67,10 +67,7 @@ from kfp_server_api.models.job_mode import JobMode from kfp_server_api.models.pipeline_spec_runtime_config import PipelineSpecRuntimeConfig from kfp_server_api.models.protobuf_any import ProtobufAny -from kfp_server_api.models.protobuf_list_value import ProtobufListValue from kfp_server_api.models.protobuf_null_value import ProtobufNullValue -from kfp_server_api.models.protobuf_struct import ProtobufStruct -from kfp_server_api.models.protobuf_value import ProtobufValue from kfp_server_api.models.report_run_metrics_response_report_run_metric_result import ReportRunMetricsResponseReportRunMetricResult from kfp_server_api.models.report_run_metrics_response_report_run_metric_result_status import ReportRunMetricsResponseReportRunMetricResultStatus from kfp_server_api.models.run_metric_format import RunMetricFormat diff --git a/backend/api/python_http_client/kfp_server_api/models/__init__.py b/backend/api/python_http_client/kfp_server_api/models/__init__.py index c5980eb5b01..ba6662fdbff 100644 --- a/backend/api/python_http_client/kfp_server_api/models/__init__.py +++ b/backend/api/python_http_client/kfp_server_api/models/__init__.py @@ -48,10 +48,7 @@ from kfp_server_api.models.job_mode import JobMode from kfp_server_api.models.pipeline_spec_runtime_config import PipelineSpecRuntimeConfig from kfp_server_api.models.protobuf_any import ProtobufAny -from kfp_server_api.models.protobuf_list_value import ProtobufListValue from kfp_server_api.models.protobuf_null_value import ProtobufNullValue -from kfp_server_api.models.protobuf_struct import ProtobufStruct -from kfp_server_api.models.protobuf_value import ProtobufValue from kfp_server_api.models.report_run_metrics_response_report_run_metric_result import ReportRunMetricsResponseReportRunMetricResult from kfp_server_api.models.report_run_metrics_response_report_run_metric_result_status import ReportRunMetricsResponseReportRunMetricResultStatus from kfp_server_api.models.run_metric_format import RunMetricFormat diff --git a/backend/api/python_http_client/kfp_server_api/models/api_job.py b/backend/api/python_http_client/kfp_server_api/models/api_job.py index 8638387a5e9..ef23b5453d7 100644 --- a/backend/api/python_http_client/kfp_server_api/models/api_job.py +++ b/backend/api/python_http_client/kfp_server_api/models/api_job.py @@ -47,7 +47,8 @@ class ApiJob(object): 'status': 'str', 'error': 'str', 'enabled': 'bool', - 'no_catchup': 'bool' + 'no_catchup': 'bool', + 'disable_cache': 'bool' } attribute_map = { @@ -65,10 +66,11 @@ class ApiJob(object): 'status': 'status', 'error': 'error', 'enabled': 'enabled', - 'no_catchup': 'no_catchup' + 'no_catchup': 'no_catchup', + 'disable_cache': 'disable_cache' } - def __init__(self, id=None, name=None, description=None, pipeline_spec=None, resource_references=None, service_account=None, max_concurrency=None, trigger=None, mode=None, created_at=None, updated_at=None, status=None, error=None, enabled=None, no_catchup=None, local_vars_configuration=None): # noqa: E501 + def __init__(self, id=None, name=None, description=None, pipeline_spec=None, resource_references=None, service_account=None, max_concurrency=None, trigger=None, mode=None, created_at=None, updated_at=None, status=None, error=None, enabled=None, no_catchup=None, disable_cache=None, local_vars_configuration=None): # noqa: E501 """ApiJob - a model defined in OpenAPI""" # noqa: E501 if local_vars_configuration is None: local_vars_configuration = Configuration() @@ -89,6 +91,7 @@ def __init__(self, id=None, name=None, description=None, pipeline_spec=None, res self._error = None self._enabled = None self._no_catchup = None + self._disable_cache = None self.discriminator = None if id is not None: @@ -121,6 +124,8 @@ def __init__(self, id=None, name=None, description=None, pipeline_spec=None, res self.enabled = enabled if no_catchup is not None: self.no_catchup = no_catchup + if disable_cache is not None: + self.disable_cache = disable_cache @property def id(self): @@ -455,6 +460,29 @@ def no_catchup(self, no_catchup): self._no_catchup = no_catchup + @property + def disable_cache(self): + """Gets the disable_cache of this ApiJob. # noqa: E501 + + Optional input field. Specify, whether caching is enabled for this job. # noqa: E501 + + :return: The disable_cache of this ApiJob. # noqa: E501 + :rtype: bool + """ + return self._disable_cache + + @disable_cache.setter + def disable_cache(self, disable_cache): + """Sets the disable_cache of this ApiJob. + + Optional input field. Specify, whether caching is enabled for this job. # noqa: E501 + + :param disable_cache: The disable_cache of this ApiJob. # noqa: E501 + :type disable_cache: bool + """ + + self._disable_cache = disable_cache + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/backend/api/python_http_client/kfp_server_api/models/api_run.py b/backend/api/python_http_client/kfp_server_api/models/api_run.py index 12dbcb758e3..9a944ddba7d 100644 --- a/backend/api/python_http_client/kfp_server_api/models/api_run.py +++ b/backend/api/python_http_client/kfp_server_api/models/api_run.py @@ -40,6 +40,7 @@ class ApiRun(object): 'pipeline_spec': 'ApiPipelineSpec', 'resource_references': 'list[ApiResourceReference]', 'service_account': 'str', + 'disable_cache': 'bool', 'created_at': 'datetime', 'scheduled_at': 'datetime', 'finished_at': 'datetime', @@ -56,6 +57,7 @@ class ApiRun(object): 'pipeline_spec': 'pipeline_spec', 'resource_references': 'resource_references', 'service_account': 'service_account', + 'disable_cache': 'disable_cache', 'created_at': 'created_at', 'scheduled_at': 'scheduled_at', 'finished_at': 'finished_at', @@ -64,7 +66,7 @@ class ApiRun(object): 'metrics': 'metrics' } - def __init__(self, id=None, name=None, storage_state=None, description=None, pipeline_spec=None, resource_references=None, service_account=None, created_at=None, scheduled_at=None, finished_at=None, status=None, error=None, metrics=None, local_vars_configuration=None): # noqa: E501 + def __init__(self, id=None, name=None, storage_state=None, description=None, pipeline_spec=None, resource_references=None, service_account=None, disable_cache=None, created_at=None, scheduled_at=None, finished_at=None, status=None, error=None, metrics=None, local_vars_configuration=None): # noqa: E501 """ApiRun - a model defined in OpenAPI""" # noqa: E501 if local_vars_configuration is None: local_vars_configuration = Configuration() @@ -77,6 +79,7 @@ def __init__(self, id=None, name=None, storage_state=None, description=None, pip self._pipeline_spec = None self._resource_references = None self._service_account = None + self._disable_cache = None self._created_at = None self._scheduled_at = None self._finished_at = None @@ -99,6 +102,8 @@ def __init__(self, id=None, name=None, storage_state=None, description=None, pip self.resource_references = resource_references if service_account is not None: self.service_account = service_account + if disable_cache is not None: + self.disable_cache = disable_cache if created_at is not None: self.created_at = created_at if scheduled_at is not None: @@ -267,6 +272,29 @@ def service_account(self, service_account): self._service_account = service_account + @property + def disable_cache(self): + """Gets the disable_cache of this ApiRun. # noqa: E501 + + Optional input field. Specify, whether caching is enabled for this run. # noqa: E501 + + :return: The disable_cache of this ApiRun. # noqa: E501 + :rtype: bool + """ + return self._disable_cache + + @disable_cache.setter + def disable_cache(self, disable_cache): + """Sets the disable_cache of this ApiRun. + + Optional input field. Specify, whether caching is enabled for this run. # noqa: E501 + + :param disable_cache: The disable_cache of this ApiRun. # noqa: E501 + :type disable_cache: bool + """ + + self._disable_cache = disable_cache + @property def created_at(self): """Gets the created_at of this ApiRun. # noqa: E501 diff --git a/backend/api/python_http_client/kfp_server_api/models/pipeline_spec_runtime_config.py b/backend/api/python_http_client/kfp_server_api/models/pipeline_spec_runtime_config.py index 94dbea843de..ec7c6ac8a49 100644 --- a/backend/api/python_http_client/kfp_server_api/models/pipeline_spec_runtime_config.py +++ b/backend/api/python_http_client/kfp_server_api/models/pipeline_spec_runtime_config.py @@ -33,7 +33,7 @@ class PipelineSpecRuntimeConfig(object): and the value is json key in definition. """ openapi_types = { - 'parameters': 'dict(str, ProtobufValue)', + 'parameters': 'dict(str, object)', 'pipeline_root': 'str' } @@ -64,7 +64,7 @@ def parameters(self): The runtime parameters of the PipelineSpec. The parameters will be used to replace the placeholders at runtime. # noqa: E501 :return: The parameters of this PipelineSpecRuntimeConfig. # noqa: E501 - :rtype: dict(str, ProtobufValue) + :rtype: dict(str, object) """ return self._parameters @@ -75,7 +75,7 @@ def parameters(self, parameters): The runtime parameters of the PipelineSpec. The parameters will be used to replace the placeholders at runtime. # noqa: E501 :param parameters: The parameters of this PipelineSpecRuntimeConfig. # noqa: E501 - :type parameters: dict(str, ProtobufValue) + :type parameters: dict(str, object) """ self._parameters = parameters diff --git a/backend/api/python_http_client/kfp_server_api/models/protobuf_list_value.py b/backend/api/python_http_client/kfp_server_api/models/protobuf_list_value.py deleted file mode 100644 index 4794acae5b0..00000000000 --- a/backend/api/python_http_client/kfp_server_api/models/protobuf_list_value.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubeflow Pipelines API - - This file contains REST API specification for Kubeflow Pipelines. The file is autogenerated from the swagger definition. - - Contact: kubeflow-pipelines@google.com - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kfp_server_api.configuration import Configuration - - -class ProtobufListValue(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'values': 'list[ProtobufValue]' - } - - attribute_map = { - 'values': 'values' - } - - def __init__(self, values=None, local_vars_configuration=None): # noqa: E501 - """ProtobufListValue - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._values = None - self.discriminator = None - - if values is not None: - self.values = values - - @property - def values(self): - """Gets the values of this ProtobufListValue. # noqa: E501 - - Repeated field of dynamically typed values. # noqa: E501 - - :return: The values of this ProtobufListValue. # noqa: E501 - :rtype: list[ProtobufValue] - """ - return self._values - - @values.setter - def values(self, values): - """Sets the values of this ProtobufListValue. - - Repeated field of dynamically typed values. # noqa: E501 - - :param values: The values of this ProtobufListValue. # noqa: E501 - :type values: list[ProtobufValue] - """ - - self._values = values - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, ProtobufListValue): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, ProtobufListValue): - return True - - return self.to_dict() != other.to_dict() diff --git a/backend/api/python_http_client/kfp_server_api/models/protobuf_struct.py b/backend/api/python_http_client/kfp_server_api/models/protobuf_struct.py deleted file mode 100644 index 5c43a043539..00000000000 --- a/backend/api/python_http_client/kfp_server_api/models/protobuf_struct.py +++ /dev/null @@ -1,122 +0,0 @@ -# coding: utf-8 - -""" - Kubeflow Pipelines API - - This file contains REST API specification for Kubeflow Pipelines. The file is autogenerated from the swagger definition. - - Contact: kubeflow-pipelines@google.com - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kfp_server_api.configuration import Configuration - - -class ProtobufStruct(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'fields': 'dict(str, ProtobufValue)' - } - - attribute_map = { - 'fields': 'fields' - } - - def __init__(self, fields=None, local_vars_configuration=None): # noqa: E501 - """ProtobufStruct - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._fields = None - self.discriminator = None - - if fields is not None: - self.fields = fields - - @property - def fields(self): - """Gets the fields of this ProtobufStruct. # noqa: E501 - - Unordered map of dynamically typed values. # noqa: E501 - - :return: The fields of this ProtobufStruct. # noqa: E501 - :rtype: dict(str, ProtobufValue) - """ - return self._fields - - @fields.setter - def fields(self, fields): - """Sets the fields of this ProtobufStruct. - - Unordered map of dynamically typed values. # noqa: E501 - - :param fields: The fields of this ProtobufStruct. # noqa: E501 - :type fields: dict(str, ProtobufValue) - """ - - self._fields = fields - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, ProtobufStruct): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, ProtobufStruct): - return True - - return self.to_dict() != other.to_dict() diff --git a/backend/api/python_http_client/kfp_server_api/models/protobuf_value.py b/backend/api/python_http_client/kfp_server_api/models/protobuf_value.py deleted file mode 100644 index 61334d78727..00000000000 --- a/backend/api/python_http_client/kfp_server_api/models/protobuf_value.py +++ /dev/null @@ -1,256 +0,0 @@ -# coding: utf-8 - -""" - Kubeflow Pipelines API - - This file contains REST API specification for Kubeflow Pipelines. The file is autogenerated from the swagger definition. - - Contact: kubeflow-pipelines@google.com - Generated by: https://openapi-generator.tech -""" - - -import pprint -import re # noqa: F401 - -import six - -from kfp_server_api.configuration import Configuration - - -class ProtobufValue(object): - """NOTE: This class is auto generated by OpenAPI Generator. - Ref: https://openapi-generator.tech - - Do not edit the class manually. - """ - - """ - Attributes: - openapi_types (dict): The key is attribute name - and the value is attribute type. - attribute_map (dict): The key is attribute name - and the value is json key in definition. - """ - openapi_types = { - 'null_value': 'ProtobufNullValue', - 'number_value': 'float', - 'string_value': 'str', - 'bool_value': 'bool', - 'struct_value': 'ProtobufStruct', - 'list_value': 'ProtobufListValue' - } - - attribute_map = { - 'null_value': 'null_value', - 'number_value': 'number_value', - 'string_value': 'string_value', - 'bool_value': 'bool_value', - 'struct_value': 'struct_value', - 'list_value': 'list_value' - } - - def __init__(self, null_value=None, number_value=None, string_value=None, bool_value=None, struct_value=None, list_value=None, local_vars_configuration=None): # noqa: E501 - """ProtobufValue - a model defined in OpenAPI""" # noqa: E501 - if local_vars_configuration is None: - local_vars_configuration = Configuration() - self.local_vars_configuration = local_vars_configuration - - self._null_value = None - self._number_value = None - self._string_value = None - self._bool_value = None - self._struct_value = None - self._list_value = None - self.discriminator = None - - if null_value is not None: - self.null_value = null_value - if number_value is not None: - self.number_value = number_value - if string_value is not None: - self.string_value = string_value - if bool_value is not None: - self.bool_value = bool_value - if struct_value is not None: - self.struct_value = struct_value - if list_value is not None: - self.list_value = list_value - - @property - def null_value(self): - """Gets the null_value of this ProtobufValue. # noqa: E501 - - - :return: The null_value of this ProtobufValue. # noqa: E501 - :rtype: ProtobufNullValue - """ - return self._null_value - - @null_value.setter - def null_value(self, null_value): - """Sets the null_value of this ProtobufValue. - - - :param null_value: The null_value of this ProtobufValue. # noqa: E501 - :type null_value: ProtobufNullValue - """ - - self._null_value = null_value - - @property - def number_value(self): - """Gets the number_value of this ProtobufValue. # noqa: E501 - - Represents a double value. # noqa: E501 - - :return: The number_value of this ProtobufValue. # noqa: E501 - :rtype: float - """ - return self._number_value - - @number_value.setter - def number_value(self, number_value): - """Sets the number_value of this ProtobufValue. - - Represents a double value. # noqa: E501 - - :param number_value: The number_value of this ProtobufValue. # noqa: E501 - :type number_value: float - """ - - self._number_value = number_value - - @property - def string_value(self): - """Gets the string_value of this ProtobufValue. # noqa: E501 - - Represents a string value. # noqa: E501 - - :return: The string_value of this ProtobufValue. # noqa: E501 - :rtype: str - """ - return self._string_value - - @string_value.setter - def string_value(self, string_value): - """Sets the string_value of this ProtobufValue. - - Represents a string value. # noqa: E501 - - :param string_value: The string_value of this ProtobufValue. # noqa: E501 - :type string_value: str - """ - - self._string_value = string_value - - @property - def bool_value(self): - """Gets the bool_value of this ProtobufValue. # noqa: E501 - - Represents a boolean value. # noqa: E501 - - :return: The bool_value of this ProtobufValue. # noqa: E501 - :rtype: bool - """ - return self._bool_value - - @bool_value.setter - def bool_value(self, bool_value): - """Sets the bool_value of this ProtobufValue. - - Represents a boolean value. # noqa: E501 - - :param bool_value: The bool_value of this ProtobufValue. # noqa: E501 - :type bool_value: bool - """ - - self._bool_value = bool_value - - @property - def struct_value(self): - """Gets the struct_value of this ProtobufValue. # noqa: E501 - - - :return: The struct_value of this ProtobufValue. # noqa: E501 - :rtype: ProtobufStruct - """ - return self._struct_value - - @struct_value.setter - def struct_value(self, struct_value): - """Sets the struct_value of this ProtobufValue. - - - :param struct_value: The struct_value of this ProtobufValue. # noqa: E501 - :type struct_value: ProtobufStruct - """ - - self._struct_value = struct_value - - @property - def list_value(self): - """Gets the list_value of this ProtobufValue. # noqa: E501 - - - :return: The list_value of this ProtobufValue. # noqa: E501 - :rtype: ProtobufListValue - """ - return self._list_value - - @list_value.setter - def list_value(self, list_value): - """Sets the list_value of this ProtobufValue. - - - :param list_value: The list_value of this ProtobufValue. # noqa: E501 - :type list_value: ProtobufListValue - """ - - self._list_value = list_value - - def to_dict(self): - """Returns the model properties as a dict""" - result = {} - - for attr, _ in six.iteritems(self.openapi_types): - value = getattr(self, attr) - if isinstance(value, list): - result[attr] = list(map( - lambda x: x.to_dict() if hasattr(x, "to_dict") else x, - value - )) - elif hasattr(value, "to_dict"): - result[attr] = value.to_dict() - elif isinstance(value, dict): - result[attr] = dict(map( - lambda item: (item[0], item[1].to_dict()) - if hasattr(item[1], "to_dict") else item, - value.items() - )) - else: - result[attr] = value - - return result - - def to_str(self): - """Returns the string representation of the model""" - return pprint.pformat(self.to_dict()) - - def __repr__(self): - """For `print` and `pprint`""" - return self.to_str() - - def __eq__(self, other): - """Returns true if both objects are equal""" - if not isinstance(other, ProtobufValue): - return False - - return self.to_dict() == other.to_dict() - - def __ne__(self, other): - """Returns true if both objects are not equal""" - if not isinstance(other, ProtobufValue): - return True - - return self.to_dict() != other.to_dict() diff --git a/backend/api/python_http_client/test/test_api_job.py b/backend/api/python_http_client/test/test_api_job.py index f85e93cf233..2365a8e2918 100644 --- a/backend/api/python_http_client/test/test_api_job.py +++ b/backend/api/python_http_client/test/test_api_job.py @@ -51,26 +51,7 @@ def make_instance(self, include_optional): ], runtime_config = kfp_server_api.models.pipeline_spec_runtime_config.PipelineSpecRuntimeConfig( parameters = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - ], ), ) - }, ), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue(), ) + 'key' : None }, pipeline_root = '0', ), ), resource_references = [ @@ -98,7 +79,8 @@ def make_instance(self, include_optional): status = '0', error = '0', enabled = True, - no_catchup = True + no_catchup = True, + disable_cache = True ) else : return ApiJob( diff --git a/backend/api/python_http_client/test/test_api_list_jobs_response.py b/backend/api/python_http_client/test/test_api_list_jobs_response.py index 6fde7ba1a8d..f4ade471a31 100644 --- a/backend/api/python_http_client/test/test_api_list_jobs_response.py +++ b/backend/api/python_http_client/test/test_api_list_jobs_response.py @@ -53,26 +53,7 @@ def make_instance(self, include_optional): ], runtime_config = kfp_server_api.models.pipeline_spec_runtime_config.PipelineSpecRuntimeConfig( parameters = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - ], ), ) - }, ), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue(), ) + 'key' : None }, pipeline_root = '0', ), ), resource_references = [ @@ -100,7 +81,8 @@ def make_instance(self, include_optional): status = '0', error = '0', enabled = True, - no_catchup = True, ) + no_catchup = True, + disable_cache = True, ) ], total_size = 56, next_page_token = '0' diff --git a/backend/api/python_http_client/test/test_api_list_runs_response.py b/backend/api/python_http_client/test/test_api_list_runs_response.py index 0910bdf0485..1c131cfa075 100644 --- a/backend/api/python_http_client/test/test_api_list_runs_response.py +++ b/backend/api/python_http_client/test/test_api_list_runs_response.py @@ -54,26 +54,7 @@ def make_instance(self, include_optional): ], runtime_config = kfp_server_api.models.pipeline_spec_runtime_config.PipelineSpecRuntimeConfig( parameters = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - ], ), ) - }, ), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue(), ) + 'key' : None }, pipeline_root = '0', ), ), resource_references = [ @@ -85,6 +66,7 @@ def make_instance(self, include_optional): relationship = 'UNKNOWN_RELATIONSHIP', ) ], service_account = '0', + disable_cache = True, created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), scheduled_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), finished_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), diff --git a/backend/api/python_http_client/test/test_api_pipeline_spec.py b/backend/api/python_http_client/test/test_api_pipeline_spec.py index f68b6709da7..283e92846bc 100644 --- a/backend/api/python_http_client/test/test_api_pipeline_spec.py +++ b/backend/api/python_http_client/test/test_api_pipeline_spec.py @@ -47,26 +47,7 @@ def make_instance(self, include_optional): ], runtime_config = kfp_server_api.models.pipeline_spec_runtime_config.PipelineSpecRuntimeConfig( parameters = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - ], ), ) - }, ), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue(), ) + 'key' : None }, pipeline_root = '0', ) ) diff --git a/backend/api/python_http_client/test/test_api_run.py b/backend/api/python_http_client/test/test_api_run.py index dcaadc85e55..d1f956473e0 100644 --- a/backend/api/python_http_client/test/test_api_run.py +++ b/backend/api/python_http_client/test/test_api_run.py @@ -52,26 +52,7 @@ def make_instance(self, include_optional): ], runtime_config = kfp_server_api.models.pipeline_spec_runtime_config.PipelineSpecRuntimeConfig( parameters = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - ], ), ) - }, ), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue(), ) + 'key' : None }, pipeline_root = '0', ), ), resource_references = [ @@ -83,6 +64,7 @@ def make_instance(self, include_optional): relationship = 'UNKNOWN_RELATIONSHIP', ) ], service_account = '0', + disable_cache = True, created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), scheduled_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), finished_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), diff --git a/backend/api/python_http_client/test/test_api_run_detail.py b/backend/api/python_http_client/test/test_api_run_detail.py index 3f1d63b1dfa..4d3447f61b8 100644 --- a/backend/api/python_http_client/test/test_api_run_detail.py +++ b/backend/api/python_http_client/test/test_api_run_detail.py @@ -53,26 +53,7 @@ def make_instance(self, include_optional): ], runtime_config = kfp_server_api.models.pipeline_spec_runtime_config.PipelineSpecRuntimeConfig( parameters = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - ], ), ) - }, ), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue(), ) + 'key' : None }, pipeline_root = '0', ), ), resource_references = [ @@ -84,6 +65,7 @@ def make_instance(self, include_optional): relationship = 'UNKNOWN_RELATIONSHIP', ) ], service_account = '0', + disable_cache = True, created_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), scheduled_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), finished_at = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f'), diff --git a/backend/api/python_http_client/test/test_pipeline_spec_runtime_config.py b/backend/api/python_http_client/test/test_pipeline_spec_runtime_config.py index 6aa563fec31..025564ea8f4 100644 --- a/backend/api/python_http_client/test/test_pipeline_spec_runtime_config.py +++ b/backend/api/python_http_client/test/test_pipeline_spec_runtime_config.py @@ -37,26 +37,7 @@ def make_instance(self, include_optional): if include_optional : return PipelineSpecRuntimeConfig( parameters = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - ], ), ) - }, ), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue(), ) + 'key' : None }, pipeline_root = '0' ) diff --git a/backend/api/python_http_client/test/test_protobuf_list_value.py b/backend/api/python_http_client/test/test_protobuf_list_value.py deleted file mode 100644 index 1b628ddf6be..00000000000 --- a/backend/api/python_http_client/test/test_protobuf_list_value.py +++ /dev/null @@ -1,67 +0,0 @@ -# coding: utf-8 - -""" - Kubeflow Pipelines API - - This file contains REST API specification for Kubeflow Pipelines. The file is autogenerated from the swagger definition. - - Contact: kubeflow-pipelines@google.com - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import unittest -import datetime - -import kfp_server_api -from kfp_server_api.models.protobuf_list_value import ProtobufListValue # noqa: E501 -from kfp_server_api.rest import ApiException - -class TestProtobufListValue(unittest.TestCase): - """ProtobufListValue unit test stubs""" - - def setUp(self): - pass - - def tearDown(self): - pass - - def make_instance(self, include_optional): - """Test ProtobufListValue - include_option is a boolean, when False only required - params are included, when True both required and - optional params are included """ - # model = kfp_server_api.models.protobuf_list_value.ProtobufListValue() # noqa: E501 - if include_optional : - return ProtobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue(), ) - }, ), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue(), ) - ] - ) - else : - return ProtobufListValue( - ) - - def testProtobufListValue(self): - """Test ProtobufListValue""" - inst_req_only = self.make_instance(include_optional=False) - inst_req_and_optional = self.make_instance(include_optional=True) - - -if __name__ == '__main__': - unittest.main() diff --git a/backend/api/python_http_client/test/test_protobuf_struct.py b/backend/api/python_http_client/test/test_protobuf_struct.py deleted file mode 100644 index eae30590c84..00000000000 --- a/backend/api/python_http_client/test/test_protobuf_struct.py +++ /dev/null @@ -1,66 +0,0 @@ -# coding: utf-8 - -""" - Kubeflow Pipelines API - - This file contains REST API specification for Kubeflow Pipelines. The file is autogenerated from the swagger definition. - - Contact: kubeflow-pipelines@google.com - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import unittest -import datetime - -import kfp_server_api -from kfp_server_api.models.protobuf_struct import ProtobufStruct # noqa: E501 -from kfp_server_api.rest import ApiException - -class TestProtobufStruct(unittest.TestCase): - """ProtobufStruct unit test stubs""" - - def setUp(self): - pass - - def tearDown(self): - pass - - def make_instance(self, include_optional): - """Test ProtobufStruct - include_option is a boolean, when False only required - params are included, when True both required and - optional params are included """ - # model = kfp_server_api.models.protobuf_struct.ProtobufStruct() # noqa: E501 - if include_optional : - return ProtobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct(), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - ], ), ) - } - ) - else : - return ProtobufStruct( - ) - - def testProtobufStruct(self): - """Test ProtobufStruct""" - inst_req_only = self.make_instance(include_optional=False) - inst_req_and_optional = self.make_instance(include_optional=True) - - -if __name__ == '__main__': - unittest.main() diff --git a/backend/api/python_http_client/test/test_protobuf_value.py b/backend/api/python_http_client/test/test_protobuf_value.py deleted file mode 100644 index ac72a3303bf..00000000000 --- a/backend/api/python_http_client/test/test_protobuf_value.py +++ /dev/null @@ -1,85 +0,0 @@ -# coding: utf-8 - -""" - Kubeflow Pipelines API - - This file contains REST API specification for Kubeflow Pipelines. The file is autogenerated from the swagger definition. - - Contact: kubeflow-pipelines@google.com - Generated by: https://openapi-generator.tech -""" - - -from __future__ import absolute_import - -import unittest -import datetime - -import kfp_server_api -from kfp_server_api.models.protobuf_value import ProtobufValue # noqa: E501 -from kfp_server_api.rest import ApiException - -class TestProtobufValue(unittest.TestCase): - """ProtobufValue unit test stubs""" - - def setUp(self): - pass - - def tearDown(self): - pass - - def make_instance(self, include_optional): - """Test ProtobufValue - include_option is a boolean, when False only required - params are included, when True both required and - optional params are included """ - # model = kfp_server_api.models.protobuf_value.ProtobufValue() # noqa: E501 - if include_optional : - return ProtobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - ], ), ) - }, ), - list_value = kfp_server_api.models.protobuf_list_value.protobufListValue( - values = [ - kfp_server_api.models.protobuf_value.protobufValue( - null_value = 'NULL_VALUE', - number_value = 1.337, - string_value = '0', - bool_value = True, - struct_value = kfp_server_api.models.protobuf_struct.protobufStruct( - fields = { - 'key' : kfp_server_api.models.protobuf_value.protobufValue( - number_value = 1.337, - string_value = '0', - bool_value = True, ) - }, ), ) - ], ) - ) - else : - return ProtobufValue( - ) - - def testProtobufValue(self): - """Test ProtobufValue""" - inst_req_only = self.make_instance(include_optional=False) - inst_req_and_optional = self.make_instance(include_optional=True) - - -if __name__ == '__main__': - unittest.main() diff --git a/backend/api/run.proto b/backend/api/run.proto index 6c3dea500d4..a0d9af13c5d 100644 --- a/backend/api/run.proto +++ b/backend/api/run.proto @@ -238,6 +238,9 @@ message Run { // Optional input field. Specify which Kubernetes service account this run uses. string service_account = 14; + // Optional input field. Specify, whether caching is enabled for this run. + bool disable_cache = 15; + // Output. The time that the run created. google.protobuf.Timestamp created_at = 6; @@ -263,7 +266,7 @@ message Run { // API. repeated RunMetric metrics = 9; } -// Next field number of Run will be 15 +// Next field number of Run will be 16 message PipelineRuntime { // Output. The runtime JSON manifest of the pipeline, including the status diff --git a/backend/api/swagger/job.swagger.json b/backend/api/swagger/job.swagger.json index cc9ee75d050..34f8750be35 100644 --- a/backend/api/swagger/job.swagger.json +++ b/backend/api/swagger/job.swagger.json @@ -268,7 +268,7 @@ "parameters": { "type": "object", "additionalProperties": { - "$ref": "#/definitions/protobufValue" + "type": "object" }, "description": "The runtime parameters of the PipelineSpec. The parameters will be\nused to replace the placeholders\nat runtime." }, @@ -368,6 +368,11 @@ "type": "boolean", "format": "boolean", "description": "Optional input field. Whether the job should catch up if behind schedule.\nIf true, the job will only schedule the latest interval if behind schedule.\nIf false, the job will catch up on each past interval." + }, + "disable_cache": { + "type": "boolean", + "format": "boolean", + "description": "Optional input field. Specify, whether caching is enabled for this job." } } }, @@ -551,19 +556,6 @@ }, "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" }, - "protobufListValue": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Repeated field of dynamically typed values." - } - }, - "description": "`ListValue` is a wrapper around a repeated field of values.\n\nThe JSON representation for `ListValue` is JSON array." - }, "protobufNullValue": { "type": "string", "enum": [ @@ -571,51 +563,6 @@ ], "default": "NULL_VALUE", "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." - }, - "protobufStruct": { - "type": "object", - "properties": { - "fields": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Unordered map of dynamically typed values." - } - }, - "description": "`Struct` represents a structured data value, consisting of fields\nwhich map to dynamically typed values. In some languages, `Struct`\nmight be supported by a native representation. For example, in\nscripting languages like JS a struct is represented as an\nobject. The details of that representation are described together\nwith the proto support for the language.\n\nThe JSON representation for `Struct` is JSON object." - }, - "protobufValue": { - "type": "object", - "properties": { - "null_value": { - "$ref": "#/definitions/protobufNullValue", - "description": "Represents a null value." - }, - "number_value": { - "type": "number", - "format": "double", - "description": "Represents a double value." - }, - "string_value": { - "type": "string", - "description": "Represents a string value." - }, - "bool_value": { - "type": "boolean", - "format": "boolean", - "description": "Represents a boolean value." - }, - "struct_value": { - "$ref": "#/definitions/protobufStruct", - "description": "Represents a structured value." - }, - "list_value": { - "$ref": "#/definitions/protobufListValue", - "description": "Represents a repeated `Value`." - } - }, - "description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value." } }, "securityDefinitions": { diff --git a/backend/api/swagger/kfp_api_single_file.swagger.json b/backend/api/swagger/kfp_api_single_file.swagger.json index df911567053..a5bb347b7ff 100644 --- a/backend/api/swagger/kfp_api_single_file.swagger.json +++ b/backend/api/swagger/kfp_api_single_file.swagger.json @@ -1499,7 +1499,7 @@ "parameters": { "type": "object", "additionalProperties": { - "$ref": "#/definitions/protobufValue" + "type": "object" }, "description": "The runtime parameters of the PipelineSpec. The parameters will be\nused to replace the placeholders\nat runtime." }, @@ -1750,6 +1750,11 @@ "type": "string", "description": "Optional input field. Specify which Kubernetes service account this run uses." }, + "disable_cache": { + "type": "boolean", + "format": "boolean", + "description": "Optional input field. Specify, whether caching is enabled for this run." + }, "created_at": { "type": "string", "format": "date-time", @@ -1856,19 +1861,6 @@ }, "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(&foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := &pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := &pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": ,\n \"lastName\": \n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" }, - "protobufListValue": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Repeated field of dynamically typed values." - } - }, - "description": "`ListValue` is a wrapper around a repeated field of values.\n\nThe JSON representation for `ListValue` is JSON array." - }, "protobufNullValue": { "type": "string", "enum": [ @@ -1877,51 +1869,6 @@ "default": "NULL_VALUE", "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." }, - "protobufStruct": { - "type": "object", - "properties": { - "fields": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Unordered map of dynamically typed values." - } - }, - "description": "`Struct` represents a structured data value, consisting of fields\nwhich map to dynamically typed values. In some languages, `Struct`\nmight be supported by a native representation. For example, in\nscripting languages like JS a struct is represented as an\nobject. The details of that representation are described together\nwith the proto support for the language.\n\nThe JSON representation for `Struct` is JSON object." - }, - "protobufValue": { - "type": "object", - "properties": { - "null_value": { - "$ref": "#/definitions/protobufNullValue", - "description": "Represents a null value." - }, - "number_value": { - "type": "number", - "format": "double", - "description": "Represents a double value." - }, - "string_value": { - "type": "string", - "description": "Represents a string value." - }, - "bool_value": { - "type": "boolean", - "format": "boolean", - "description": "Represents a boolean value." - }, - "struct_value": { - "$ref": "#/definitions/protobufStruct", - "description": "Represents a structured value." - }, - "list_value": { - "$ref": "#/definitions/protobufListValue", - "description": "Represents a repeated `Value`." - } - }, - "description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value." - }, "JobMode": { "type": "string", "enum": [ @@ -2021,6 +1968,11 @@ "type": "boolean", "format": "boolean", "description": "Optional input field. Whether the job should catch up if behind schedule.\nIf true, the job will only schedule the latest interval if behind schedule.\nIf false, the job will catch up on each past interval." + }, + "disable_cache": { + "type": "boolean", + "format": "boolean", + "description": "Optional input field. Specify, whether caching is enabled for this job." } } }, diff --git a/backend/api/swagger/run.swagger.json b/backend/api/swagger/run.swagger.json index 068099e622e..4b02ad4f7e5 100644 --- a/backend/api/swagger/run.swagger.json +++ b/backend/api/swagger/run.swagger.json @@ -409,7 +409,7 @@ "parameters": { "type": "object", "additionalProperties": { - "$ref": "#/definitions/protobufValue" + "type": "object" }, "description": "The runtime parameters of the PipelineSpec. The parameters will be\nused to replace the placeholders\nat runtime." }, @@ -660,6 +660,11 @@ "type": "string", "description": "Optional input field. Specify which Kubernetes service account this run uses." }, + "disable_cache": { + "type": "boolean", + "format": "boolean", + "description": "Optional input field. Specify, whether caching is enabled for this run." + }, "created_at": { "type": "string", "format": "date-time", @@ -766,19 +771,6 @@ }, "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" }, - "protobufListValue": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Repeated field of dynamically typed values." - } - }, - "description": "`ListValue` is a wrapper around a repeated field of values.\n\nThe JSON representation for `ListValue` is JSON array." - }, "protobufNullValue": { "type": "string", "enum": [ @@ -786,51 +778,6 @@ ], "default": "NULL_VALUE", "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." - }, - "protobufStruct": { - "type": "object", - "properties": { - "fields": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/protobufValue" - }, - "description": "Unordered map of dynamically typed values." - } - }, - "description": "`Struct` represents a structured data value, consisting of fields\nwhich map to dynamically typed values. In some languages, `Struct`\nmight be supported by a native representation. For example, in\nscripting languages like JS a struct is represented as an\nobject. The details of that representation are described together\nwith the proto support for the language.\n\nThe JSON representation for `Struct` is JSON object." - }, - "protobufValue": { - "type": "object", - "properties": { - "null_value": { - "$ref": "#/definitions/protobufNullValue", - "description": "Represents a null value." - }, - "number_value": { - "type": "number", - "format": "double", - "description": "Represents a double value." - }, - "string_value": { - "type": "string", - "description": "Represents a string value." - }, - "bool_value": { - "type": "boolean", - "format": "boolean", - "description": "Represents a boolean value." - }, - "struct_value": { - "$ref": "#/definitions/protobufStruct", - "description": "Represents a structured value." - }, - "list_value": { - "$ref": "#/definitions/protobufListValue", - "description": "Represents a repeated `Value`." - } - }, - "description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value." } }, "securityDefinitions": { diff --git a/backend/src/apiserver/template/argo_template.go b/backend/src/apiserver/template/argo_template.go index 4679dddd246..1619a9680f1 100644 --- a/backend/src/apiserver/template/argo_template.go +++ b/backend/src/apiserver/template/argo_template.go @@ -56,6 +56,11 @@ func (t *Argo) RunWorkflow(apiRun *api.Run, options RunWorkflowOptions) (util.Ex } workflow.SetPodMetadataLabels(util.LabelKeyWorkflowRunId, options.RunId) + // Set cache annotations + if err := t.applyCacheSettings(workflow, apiRun.DisableCache); err != nil { + return nil, util.Wrap(err, "Failed to apply cache settings") + } + // Marking auto-added artifacts as optional. Otherwise most older workflows will start failing after upgrade to Argo 2.3. // TODO: Fix the components to explicitly declare the artifacts they really output. for templateIdx, template := range workflow.Workflow.Spec.Templates { @@ -95,6 +100,11 @@ func (t *Argo) ScheduledWorkflow(apiJob *api.Job) (*scheduledworkflow.ScheduledW // TODO: Fix the components to explicitly declare the artifacts they really output. workflow.PatchTemplateOutputArtifacts() + // Set cache annotations + if err := t.applyCacheSettings(workflow, apiJob.DisableCache); err != nil { + return nil, util.Wrap(err, "Failed to apply cache settings") + } + scheduledWorkflow := &scheduledworkflow.ScheduledWorkflow{ ObjectMeta: metav1.ObjectMeta{GenerateName: swfGeneratedName}, Spec: scheduledworkflow.ScheduledWorkflowSpec{ @@ -112,6 +122,38 @@ func (t *Argo) ScheduledWorkflow(apiJob *api.Job) (*scheduledworkflow.ScheduledW return scheduledWorkflow, nil } +func (t *Argo) applyCacheSettings(workflow *util.Workflow, DisableCache bool) error { + // Enable/disable caching by setting the annotation `pipelines.kubeflow.org/max_cache_staleness` + // Use a separate annotation `initial_max_cache_staleness` to store non-mutated values. This way, steps in cloned runs may be restored to their initial cache state. + for _, template := range workflow.Spec.Templates { + annotations := template.Metadata.Annotations + if annotations != nil { + if DisableCache { + // If cache is disabled set maxStaleness to P0D and store initial value to annotations, so that value can be restored when cloning the run + if _, initMaxCacheStalenessExists := annotations["pipelines.kubeflow.org/initial_max_cache_staleness"]; !initMaxCacheStalenessExists { + if maxCacheStaleness, maxCacheStalenessExists := annotations["pipelines.kubeflow.org/max_cache_staleness"]; maxCacheStalenessExists { + annotations["pipelines.kubeflow.org/initial_max_cache_staleness"] = maxCacheStaleness + } else { + annotations["pipelines.kubeflow.org/initial_max_cache_staleness"] = "-1" + } + } + annotations["pipelines.kubeflow.org/max_cache_staleness"] = "P0D" + } else { + // If cache is enabled restore initial max cache staleness (if available) + if initMaxCacheStaleness, exists := annotations["pipelines.kubeflow.org/initial_max_cache_staleness"]; exists { + if initMaxCacheStaleness == "-1" { + delete(annotations, "pipelines.kubeflow.org/max_cache_staleness") + } else { + annotations["pipelines.kubeflow.org/max_cache_staleness"] = initMaxCacheStaleness + } + delete(annotations, "pipelines.kubeflow.org/initial_max_cache_staleness") + } + } + } + } + return nil +} + func (t *Argo) GetTemplateType() TemplateType { return V1 } diff --git a/backend/src/apiserver/template/v2_template.go b/backend/src/apiserver/template/v2_template.go index 057dfbc98e4..22dcb63e541 100644 --- a/backend/src/apiserver/template/v2_template.go +++ b/backend/src/apiserver/template/v2_template.go @@ -21,6 +21,10 @@ type V2Spec struct { } func (t *V2Spec) ScheduledWorkflow(apiJob *api.Job) (*scheduledworkflow.ScheduledWorkflow, error) { + for _, task := range t.spec.GetRoot().GetDag().GetTasks() { + task.CachingOptions.EnableCache = !apiJob.GetDisableCache() + } + bytes, err := protojson.Marshal(t.spec) if err != nil { return nil, util.Wrap(err, "Failed marshal pipeline spec to json") @@ -144,6 +148,10 @@ func (t *V2Spec) ParametersJSON() (string, error) { } func (t *V2Spec) RunWorkflow(apiRun *api.Run, options RunWorkflowOptions) (util.ExecutionSpec, error) { + for _, task := range t.spec.GetRoot().GetDag().GetTasks() { + task.CachingOptions.EnableCache = !apiRun.GetDisableCache() + } + bytes, err := protojson.Marshal(t.spec) if err != nil { return nil, util.Wrap(err, "Failed marshal pipeline spec to json") diff --git a/frontend/src/apis/job/api.ts b/frontend/src/apis/job/api.ts index 6c7a6228440..d0960954c75 100644 --- a/frontend/src/apis/job/api.ts +++ b/frontend/src/apis/job/api.ts @@ -203,6 +203,12 @@ export interface ApiJob { * @memberof ApiJob */ no_catchup?: boolean; + /** + * Optional. True, if caching for this job is to be disabled. + * @type {boolean} + * @memberof ApiRun + */ + disable_cache?: boolean; } /** diff --git a/frontend/src/apis/run/api.ts b/frontend/src/apis/run/api.ts index 306efe0f920..45292d483b0 100644 --- a/frontend/src/apis/run/api.ts +++ b/frontend/src/apis/run/api.ts @@ -394,6 +394,12 @@ export interface ApiRun { * @memberof ApiRun */ metrics?: Array; + /** + * Optional. True, if caching for this run is to be disabled. + * @type {boolean} + * @memberof ApiRun + */ + disable_cache?: boolean; } /** diff --git a/frontend/src/pages/NewRun.test.tsx b/frontend/src/pages/NewRun.test.tsx index 6c8374d4fbc..51e9c1e97f0 100644 --- a/frontend/src/pages/NewRun.test.tsx +++ b/frontend/src/pages/NewRun.test.tsx @@ -1358,6 +1358,7 @@ describe('NewRun', () => { parameters: MOCK_PIPELINE.parameters, }, service_account: 'service-account-name', + disable_cache: false, resource_references: [ { key: { @@ -1413,6 +1414,7 @@ describe('NewRun', () => { parameters: [{ name: 'testName', value: '{\n "test2": "value2"\n}' }], }, service_account: '', + disable_cache: false, resource_references: [ { key: { @@ -1507,6 +1509,7 @@ describe('NewRun', () => { }, service_account: 'pipeline-runner', resource_references: [], + disable_cache: false, }); // TODO: verify route change happens }); @@ -1853,6 +1856,7 @@ describe('NewRun', () => { parameters: MOCK_PIPELINE.parameters, }, service_account: 'service-account-name', + disable_cache: false, resource_references: [ { key: { diff --git a/frontend/src/pages/NewRun.tsx b/frontend/src/pages/NewRun.tsx index 4691408f337..aa11c7597a0 100644 --- a/frontend/src/pages/NewRun.tsx +++ b/frontend/src/pages/NewRun.tsx @@ -15,6 +15,7 @@ */ import Button from '@material-ui/core/Button'; +import Switch from '@material-ui/core/Switch'; import Dialog from '@material-ui/core/Dialog'; import DialogActions from '@material-ui/core/DialogActions'; import DialogContent from '@material-ui/core/DialogContent'; @@ -73,6 +74,7 @@ interface NewRunState { maxConcurrentRuns?: string; catchup: boolean; parameters: ApiParameter[]; + isCacheEnabled: boolean; pipeline?: ApiPipeline; pipelineVersion?: ApiPipelineVersion; // This represents a pipeline from a run that is being cloned, or if a user is creating a run from @@ -133,6 +135,7 @@ export class NewRun extends Page { isFirstRunInExperiment: false, isRecurringRun: false, parameters: [], + isCacheEnabled: true, pipelineName: '', pipelineSelectorOpen: false, pipelineVersionName: '', @@ -198,6 +201,7 @@ export class NewRun extends Page { isFirstRunInExperiment, isRecurringRun, parameters, + isCacheEnabled, pipelineName, pipelineVersionName, pipelineSelectorOpen, @@ -600,6 +604,18 @@ export class NewRun extends Page { handleParamChange={this._handleParamChange.bind(this)} /> + {/* Enable/Disable Caching Checkbox */} +
+ Enable Cache + ) => + this.setStateSafe({ isCacheEnabled: event.target.checked }) + } + /> +
+ {/* Create/Cancel buttons */}
{ }, resource_references: references, service_account: this.state.serviceAccount, + disable_cache: !this.state.isCacheEnabled, }; if (this.state.isRecurringRun) { newRun = Object.assign(newRun, { diff --git a/frontend/src/pages/NewRunV2.tsx b/frontend/src/pages/NewRunV2.tsx index f2326bdd134..96e246655ed 100644 --- a/frontend/src/pages/NewRunV2.tsx +++ b/frontend/src/pages/NewRunV2.tsx @@ -15,6 +15,7 @@ */ import { Button, Dialog, DialogActions, DialogContent, InputAdornment } from '@material-ui/core'; +import Switch from '@material-ui/core/Switch'; import React, { useEffect, useState } from 'react'; import { useMutation } from 'react-query'; import { Link } from 'react-router-dom'; @@ -122,6 +123,7 @@ function NewRunV2(props: NewRunV2Props) { const [errorMessage, setErrorMessage] = useState(''); const [isParameterValid, setIsParameterValid] = useState(false); const [clonedRuntimeConfig, setClonedRuntimeConfig] = useState({}); + const [isCacheEnabled, setIsCacheEnabled] = useState(true); const urlParser = new URLParser(props); const usePipelineFromRunLabel = 'Using pipeline from existing run.'; @@ -270,6 +272,7 @@ function NewRunV2(props: NewRunV2Props) { //TODO(jlyaoyuli): deprecate the resource reference and use pipeline / workflow manifest resource_references: apiResourceRefFromRun ? apiResourceRefFromRun : references, service_account: serviceAccount, + disable_cache: !isCacheEnabled, }; setIsStartingNewRun(true); @@ -457,6 +460,16 @@ function NewRunV2(props: NewRunV2Props) { setIsValidInput={setIsParameterValid} /> + {/* Enable/Disable Caching Checkbox */} +
+ Enable Cache + setIsCacheEnabled(event.target.checked)} + /> +
+ {/* Create/Cancel buttons */}
+
+ Enable Cache + +
@@ -964,6 +974,16 @@ exports[`NewRun changes the exit button's text if query params indicate this is initialParams={Array []} titleMessage="Parameters will appear after you select a pipeline" /> +
+ Enable Cache + +
@@ -1503,6 +1523,16 @@ exports[`NewRun changes title and form if the new run will recur, based on the r initialParams={Array []} titleMessage="Parameters will appear after you select a pipeline" /> +
+ Enable Cache + +
@@ -2024,6 +2054,16 @@ exports[`NewRun changes title and form to default state if the new run is a one- initialParams={Array []} titleMessage="Parameters will appear after you select a pipeline" /> +
+ Enable Cache + +
@@ -2545,6 +2585,16 @@ exports[`NewRun fetches the associated pipeline if one is present in the query p initialParams={Array []} titleMessage="This pipeline has no parameters" /> +
+ Enable Cache + +
@@ -3064,6 +3114,16 @@ exports[`NewRun renders the new run page 1`] = ` initialParams={Array []} titleMessage="Parameters will appear after you select a pipeline" /> +
+ Enable Cache + +
@@ -3603,6 +3663,16 @@ exports[`NewRun starting a new recurring run includes additional trigger input f initialParams={Array []} titleMessage="Parameters will appear after you select a pipeline" /> +
+ Enable Cache + +
@@ -4124,6 +4194,16 @@ exports[`NewRun updates the run's state with the associated experiment if one is initialParams={Array []} titleMessage="Parameters will appear after you select a pipeline" /> +
+ Enable Cache + +