From 3c2f8702cf7115f00ac611a791b27321f5fb6e37 Mon Sep 17 00:00:00 2001 From: hougang liu Date: Fri, 4 Jan 2019 22:58:46 +0800 Subject: [PATCH 1/3] delete obsolete data in db --- cmd/manager/main.go | 11 + pkg/api/api.pb.go | 549 ++++++++++-------- pkg/api/api.pb.gw.go | 60 ++ pkg/api/api.proto | 22 + pkg/api/api.swagger.json | 36 +- pkg/api/gen-doc/api.md | 33 ++ pkg/api/gen-doc/index.html | 61 ++ pkg/api/python/api_pb2.py | 426 +++++++++----- pkg/api/python/api_pb2_grpc.py | 20 +- pkg/controller/studyjob/katib_api_util.go | 20 + .../studyjob/studyjob_controller.go | 44 +- pkg/controller/studyjob/utils.go | 9 + pkg/db/db_init.go | 13 +- pkg/mock/api/manager.go | 18 + 14 files changed, 924 insertions(+), 398 deletions(-) diff --git a/cmd/manager/main.go b/cmd/manager/main.go index 7754876024a..0e814753d59 100644 --- a/cmd/manager/main.go +++ b/cmd/manager/main.go @@ -44,6 +44,17 @@ func (s *server) CreateStudy(ctx context.Context, in *api_pb.CreateStudyRequest) return &api_pb.CreateStudyReply{StudyId: studyID}, nil } +func (s *server) DeleteStudy(ctx context.Context, in *api_pb.DeleteStudyRequest) (*api_pb.DeleteStudyReply, error) { + if in == nil || in.StudyId == "" { + return &api_pb.DeleteStudyReply{}, errors.New("StudyId is missing.") + } + err := dbIf.DeleteStudy(in.StudyId) + if err != nil { + return &api_pb.DeleteStudyReply{}, err + } + return &api_pb.DeleteStudyReply{StudyId: in.StudyId}, nil +} + func (s *server) GetStudy(ctx context.Context, in *api_pb.GetStudyRequest) (*api_pb.GetStudyReply, error) { sc, err := dbIf.GetStudyConfig(in.StudyId) return &api_pb.GetStudyReply{StudyConfig: sc}, err diff --git a/pkg/api/api.pb.go b/pkg/api/api.pb.go index 118750edb43..ccee234f740 100644 --- a/pkg/api/api.pb.go +++ b/pkg/api/api.pb.go @@ -24,6 +24,8 @@ It has these top-level messages: StudyConfig CreateStudyRequest CreateStudyReply + DeleteStudyRequest + DeleteStudyReply GetStudyRequest GetStudyReply GetStudyListRequest @@ -802,6 +804,42 @@ func (m *CreateStudyReply) GetStudyId() string { return "" } +// * +// Delete a Study from DB by Study ID. +type DeleteStudyRequest struct { + StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"` +} + +func (m *DeleteStudyRequest) Reset() { *m = DeleteStudyRequest{} } +func (m *DeleteStudyRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteStudyRequest) ProtoMessage() {} +func (*DeleteStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } + +func (m *DeleteStudyRequest) GetStudyId() string { + if m != nil { + return m.StudyId + } + return "" +} + +// * +// Return deleted Study ID. +type DeleteStudyReply struct { + StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"` +} + +func (m *DeleteStudyReply) Reset() { *m = DeleteStudyReply{} } +func (m *DeleteStudyReply) String() string { return proto.CompactTextString(m) } +func (*DeleteStudyReply) ProtoMessage() {} +func (*DeleteStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } + +func (m *DeleteStudyReply) GetStudyId() string { + if m != nil { + return m.StudyId + } + return "" +} + // * // Get a Study Config from DB by ID of Study. type GetStudyRequest struct { @@ -811,7 +849,7 @@ type GetStudyRequest struct { func (m *GetStudyRequest) Reset() { *m = GetStudyRequest{} } func (m *GetStudyRequest) String() string { return proto.CompactTextString(m) } func (*GetStudyRequest) ProtoMessage() {} -func (*GetStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} } +func (*GetStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } func (m *GetStudyRequest) GetStudyId() string { if m != nil { @@ -829,7 +867,7 @@ type GetStudyReply struct { func (m *GetStudyReply) Reset() { *m = GetStudyReply{} } func (m *GetStudyReply) String() string { return proto.CompactTextString(m) } func (*GetStudyReply) ProtoMessage() {} -func (*GetStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } +func (*GetStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } func (m *GetStudyReply) GetStudyConfig() *StudyConfig { if m != nil { @@ -846,7 +884,7 @@ type GetStudyListRequest struct { func (m *GetStudyListRequest) Reset() { *m = GetStudyListRequest{} } func (m *GetStudyListRequest) String() string { return proto.CompactTextString(m) } func (*GetStudyListRequest) ProtoMessage() {} -func (*GetStudyListRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } +func (*GetStudyListRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } // * // Return a overview list of Studies. @@ -857,7 +895,7 @@ type GetStudyListReply struct { func (m *GetStudyListReply) Reset() { *m = GetStudyListReply{} } func (m *GetStudyListReply) String() string { return proto.CompactTextString(m) } func (*GetStudyListReply) ProtoMessage() {} -func (*GetStudyListReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } +func (*GetStudyListReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } func (m *GetStudyListReply) GetStudyOverviews() []*StudyOverview { if m != nil { @@ -876,7 +914,7 @@ type CreateTrialRequest struct { func (m *CreateTrialRequest) Reset() { *m = CreateTrialRequest{} } func (m *CreateTrialRequest) String() string { return proto.CompactTextString(m) } func (*CreateTrialRequest) ProtoMessage() {} -func (*CreateTrialRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} } +func (*CreateTrialRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } func (m *CreateTrialRequest) GetTrial() *Trial { if m != nil { @@ -894,7 +932,7 @@ type CreateTrialReply struct { func (m *CreateTrialReply) Reset() { *m = CreateTrialReply{} } func (m *CreateTrialReply) String() string { return proto.CompactTextString(m) } func (*CreateTrialReply) ProtoMessage() {} -func (*CreateTrialReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } +func (*CreateTrialReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } func (m *CreateTrialReply) GetTrialId() string { if m != nil { @@ -912,7 +950,7 @@ type GetTrialsRequest struct { func (m *GetTrialsRequest) Reset() { *m = GetTrialsRequest{} } func (m *GetTrialsRequest) String() string { return proto.CompactTextString(m) } func (*GetTrialsRequest) ProtoMessage() {} -func (*GetTrialsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} } +func (*GetTrialsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } func (m *GetTrialsRequest) GetStudyId() string { if m != nil { @@ -930,7 +968,7 @@ type GetTrialsReply struct { func (m *GetTrialsReply) Reset() { *m = GetTrialsReply{} } func (m *GetTrialsReply) String() string { return proto.CompactTextString(m) } func (*GetTrialsReply) ProtoMessage() {} -func (*GetTrialsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } +func (*GetTrialsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } func (m *GetTrialsReply) GetTrials() []*Trial { if m != nil { @@ -948,7 +986,7 @@ type GetTrialRequest struct { func (m *GetTrialRequest) Reset() { *m = GetTrialRequest{} } func (m *GetTrialRequest) String() string { return proto.CompactTextString(m) } func (*GetTrialRequest) ProtoMessage() {} -func (*GetTrialRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } +func (*GetTrialRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } func (m *GetTrialRequest) GetTrialId() string { if m != nil { @@ -966,7 +1004,7 @@ type GetTrialReply struct { func (m *GetTrialReply) Reset() { *m = GetTrialReply{} } func (m *GetTrialReply) String() string { return proto.CompactTextString(m) } func (*GetTrialReply) ProtoMessage() {} -func (*GetTrialReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{25} } +func (*GetTrialReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } func (m *GetTrialReply) GetTrial() *Trial { if m != nil { @@ -985,7 +1023,7 @@ type RegisterWorkerRequest struct { func (m *RegisterWorkerRequest) Reset() { *m = RegisterWorkerRequest{} } func (m *RegisterWorkerRequest) String() string { return proto.CompactTextString(m) } func (*RegisterWorkerRequest) ProtoMessage() {} -func (*RegisterWorkerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{26} } +func (*RegisterWorkerRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } func (m *RegisterWorkerRequest) GetWorker() *Worker { if m != nil { @@ -1003,7 +1041,7 @@ type RegisterWorkerReply struct { func (m *RegisterWorkerReply) Reset() { *m = RegisterWorkerReply{} } func (m *RegisterWorkerReply) String() string { return proto.CompactTextString(m) } func (*RegisterWorkerReply) ProtoMessage() {} -func (*RegisterWorkerReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } +func (*RegisterWorkerReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } func (m *RegisterWorkerReply) GetWorkerId() string { if m != nil { @@ -1021,7 +1059,7 @@ type StopWorkersRequest struct { func (m *StopWorkersRequest) Reset() { *m = StopWorkersRequest{} } func (m *StopWorkersRequest) String() string { return proto.CompactTextString(m) } func (*StopWorkersRequest) ProtoMessage() {} -func (*StopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} } +func (*StopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } func (m *StopWorkersRequest) GetStudyId() string { if m != nil { @@ -1050,7 +1088,7 @@ type StopWorkersReply struct { func (m *StopWorkersReply) Reset() { *m = StopWorkersReply{} } func (m *StopWorkersReply) String() string { return proto.CompactTextString(m) } func (*StopWorkersReply) ProtoMessage() {} -func (*StopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } +func (*StopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } // * // Get a configs and status of a Worker from DB by ID of Study, Trial or Worker. @@ -1063,7 +1101,7 @@ type GetWorkersRequest struct { func (m *GetWorkersRequest) Reset() { *m = GetWorkersRequest{} } func (m *GetWorkersRequest) String() string { return proto.CompactTextString(m) } func (*GetWorkersRequest) ProtoMessage() {} -func (*GetWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } +func (*GetWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } func (m *GetWorkersRequest) GetStudyId() string { if m != nil { @@ -1095,7 +1133,7 @@ type GetWorkersReply struct { func (m *GetWorkersReply) Reset() { *m = GetWorkersReply{} } func (m *GetWorkersReply) String() string { return proto.CompactTextString(m) } func (*GetWorkersReply) ProtoMessage() {} -func (*GetWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} } +func (*GetWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } func (m *GetWorkersReply) GetWorkers() []*Worker { if m != nil { @@ -1114,7 +1152,7 @@ type UpdateWorkerStateRequest struct { func (m *UpdateWorkerStateRequest) Reset() { *m = UpdateWorkerStateRequest{} } func (m *UpdateWorkerStateRequest) String() string { return proto.CompactTextString(m) } func (*UpdateWorkerStateRequest) ProtoMessage() {} -func (*UpdateWorkerStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } +func (*UpdateWorkerStateRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } func (m *UpdateWorkerStateRequest) GetWorkerId() string { if m != nil { @@ -1136,7 +1174,7 @@ type UpdateWorkerStateReply struct { func (m *UpdateWorkerStateReply) Reset() { *m = UpdateWorkerStateReply{} } func (m *UpdateWorkerStateReply) String() string { return proto.CompactTextString(m) } func (*UpdateWorkerStateReply) ProtoMessage() {} -func (*UpdateWorkerStateReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} } +func (*UpdateWorkerStateReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } // * // Get a full information related to specified Workers. @@ -1151,7 +1189,7 @@ type GetWorkerFullInfoRequest struct { func (m *GetWorkerFullInfoRequest) Reset() { *m = GetWorkerFullInfoRequest{} } func (m *GetWorkerFullInfoRequest) String() string { return proto.CompactTextString(m) } func (*GetWorkerFullInfoRequest) ProtoMessage() {} -func (*GetWorkerFullInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} } +func (*GetWorkerFullInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } func (m *GetWorkerFullInfoRequest) GetStudyId() string { if m != nil { @@ -1190,7 +1228,7 @@ type WorkerFullInfo struct { func (m *WorkerFullInfo) Reset() { *m = WorkerFullInfo{} } func (m *WorkerFullInfo) String() string { return proto.CompactTextString(m) } func (*WorkerFullInfo) ProtoMessage() {} -func (*WorkerFullInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} } +func (*WorkerFullInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } func (m *WorkerFullInfo) GetWorker() *Worker { if m != nil { @@ -1220,7 +1258,7 @@ type GetWorkerFullInfoReply struct { func (m *GetWorkerFullInfoReply) Reset() { *m = GetWorkerFullInfoReply{} } func (m *GetWorkerFullInfoReply) String() string { return proto.CompactTextString(m) } func (*GetWorkerFullInfoReply) ProtoMessage() {} -func (*GetWorkerFullInfoReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} } +func (*GetWorkerFullInfoReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } func (m *GetWorkerFullInfoReply) GetWorkerFullInfos() []*WorkerFullInfo { if m != nil { @@ -1240,7 +1278,7 @@ type GetSuggestionsRequest struct { func (m *GetSuggestionsRequest) Reset() { *m = GetSuggestionsRequest{} } func (m *GetSuggestionsRequest) String() string { return proto.CompactTextString(m) } func (*GetSuggestionsRequest) ProtoMessage() {} -func (*GetSuggestionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } +func (*GetSuggestionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } func (m *GetSuggestionsRequest) GetStudyId() string { if m != nil { @@ -1284,7 +1322,7 @@ type GetSuggestionsReply struct { func (m *GetSuggestionsReply) Reset() { *m = GetSuggestionsReply{} } func (m *GetSuggestionsReply) String() string { return proto.CompactTextString(m) } func (*GetSuggestionsReply) ProtoMessage() {} -func (*GetSuggestionsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} } +func (*GetSuggestionsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } func (m *GetSuggestionsReply) GetTrials() []*Trial { if m != nil { @@ -1302,7 +1340,7 @@ type GetShouldStopWorkersRequest struct { func (m *GetShouldStopWorkersRequest) Reset() { *m = GetShouldStopWorkersRequest{} } func (m *GetShouldStopWorkersRequest) String() string { return proto.CompactTextString(m) } func (*GetShouldStopWorkersRequest) ProtoMessage() {} -func (*GetShouldStopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } +func (*GetShouldStopWorkersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } func (m *GetShouldStopWorkersRequest) GetStudyId() string { if m != nil { @@ -1332,7 +1370,7 @@ type GetShouldStopWorkersReply struct { func (m *GetShouldStopWorkersReply) Reset() { *m = GetShouldStopWorkersReply{} } func (m *GetShouldStopWorkersReply) String() string { return proto.CompactTextString(m) } func (*GetShouldStopWorkersReply) ProtoMessage() {} -func (*GetShouldStopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} } +func (*GetShouldStopWorkersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } func (m *GetShouldStopWorkersReply) GetShouldStopWorkerIds() []string { if m != nil { @@ -1350,7 +1388,7 @@ type GetMetricsRequest struct { func (m *GetMetricsRequest) Reset() { *m = GetMetricsRequest{} } func (m *GetMetricsRequest) String() string { return proto.CompactTextString(m) } func (*GetMetricsRequest) ProtoMessage() {} -func (*GetMetricsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{41} } +func (*GetMetricsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } func (m *GetMetricsRequest) GetStudyId() string { if m != nil { @@ -1380,7 +1418,7 @@ type GetMetricsReply struct { func (m *GetMetricsReply) Reset() { *m = GetMetricsReply{} } func (m *GetMetricsReply) String() string { return proto.CompactTextString(m) } func (*GetMetricsReply) ProtoMessage() {} -func (*GetMetricsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{42} } +func (*GetMetricsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } func (m *GetMetricsReply) GetMetricsLogSets() []*MetricsLogSet { if m != nil { @@ -1397,7 +1435,7 @@ type ReportMetricsLogsRequest struct { func (m *ReportMetricsLogsRequest) Reset() { *m = ReportMetricsLogsRequest{} } func (m *ReportMetricsLogsRequest) String() string { return proto.CompactTextString(m) } func (*ReportMetricsLogsRequest) ProtoMessage() {} -func (*ReportMetricsLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{43} } +func (*ReportMetricsLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } func (m *ReportMetricsLogsRequest) GetStudyId() string { if m != nil { @@ -1419,7 +1457,7 @@ type ReportMetricsLogsReply struct { func (m *ReportMetricsLogsReply) Reset() { *m = ReportMetricsLogsReply{} } func (m *ReportMetricsLogsReply) String() string { return proto.CompactTextString(m) } func (*ReportMetricsLogsReply) ProtoMessage() {} -func (*ReportMetricsLogsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{44} } +func (*ReportMetricsLogsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } type ModelInfo struct { StudyName string `protobuf:"bytes,1,opt,name=study_name,json=studyName" json:"study_name,omitempty"` @@ -1432,7 +1470,7 @@ type ModelInfo struct { func (m *ModelInfo) Reset() { *m = ModelInfo{} } func (m *ModelInfo) String() string { return proto.CompactTextString(m) } func (*ModelInfo) ProtoMessage() {} -func (*ModelInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{45} } +func (*ModelInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } func (m *ModelInfo) GetStudyName() string { if m != nil { @@ -1477,7 +1515,7 @@ type DataSetInfo struct { func (m *DataSetInfo) Reset() { *m = DataSetInfo{} } func (m *DataSetInfo) String() string { return proto.CompactTextString(m) } func (*DataSetInfo) ProtoMessage() {} -func (*DataSetInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{46} } +func (*DataSetInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } func (m *DataSetInfo) GetName() string { if m != nil { @@ -1502,7 +1540,7 @@ type SaveStudyRequest struct { func (m *SaveStudyRequest) Reset() { *m = SaveStudyRequest{} } func (m *SaveStudyRequest) String() string { return proto.CompactTextString(m) } func (*SaveStudyRequest) ProtoMessage() {} -func (*SaveStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{47} } +func (*SaveStudyRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } func (m *SaveStudyRequest) GetStudyName() string { if m != nil { @@ -1531,7 +1569,7 @@ type SaveStudyReply struct { func (m *SaveStudyReply) Reset() { *m = SaveStudyReply{} } func (m *SaveStudyReply) String() string { return proto.CompactTextString(m) } func (*SaveStudyReply) ProtoMessage() {} -func (*SaveStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{48} } +func (*SaveStudyReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } type SaveModelRequest struct { Model *ModelInfo `protobuf:"bytes,1,opt,name=model" json:"model,omitempty"` @@ -1542,7 +1580,7 @@ type SaveModelRequest struct { func (m *SaveModelRequest) Reset() { *m = SaveModelRequest{} } func (m *SaveModelRequest) String() string { return proto.CompactTextString(m) } func (*SaveModelRequest) ProtoMessage() {} -func (*SaveModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{49} } +func (*SaveModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } func (m *SaveModelRequest) GetModel() *ModelInfo { if m != nil { @@ -1571,7 +1609,7 @@ type SaveModelReply struct { func (m *SaveModelReply) Reset() { *m = SaveModelReply{} } func (m *SaveModelReply) String() string { return proto.CompactTextString(m) } func (*SaveModelReply) ProtoMessage() {} -func (*SaveModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } +func (*SaveModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } type GetSavedStudiesRequest struct { } @@ -1579,7 +1617,7 @@ type GetSavedStudiesRequest struct { func (m *GetSavedStudiesRequest) Reset() { *m = GetSavedStudiesRequest{} } func (m *GetSavedStudiesRequest) String() string { return proto.CompactTextString(m) } func (*GetSavedStudiesRequest) ProtoMessage() {} -func (*GetSavedStudiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{51} } +func (*GetSavedStudiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } type GetSavedStudiesReply struct { Studies []*StudyOverview `protobuf:"bytes,1,rep,name=studies" json:"studies,omitempty"` @@ -1588,7 +1626,7 @@ type GetSavedStudiesReply struct { func (m *GetSavedStudiesReply) Reset() { *m = GetSavedStudiesReply{} } func (m *GetSavedStudiesReply) String() string { return proto.CompactTextString(m) } func (*GetSavedStudiesReply) ProtoMessage() {} -func (*GetSavedStudiesReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{52} } +func (*GetSavedStudiesReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } func (m *GetSavedStudiesReply) GetStudies() []*StudyOverview { if m != nil { @@ -1604,7 +1642,7 @@ type GetSavedModelsRequest struct { func (m *GetSavedModelsRequest) Reset() { *m = GetSavedModelsRequest{} } func (m *GetSavedModelsRequest) String() string { return proto.CompactTextString(m) } func (*GetSavedModelsRequest) ProtoMessage() {} -func (*GetSavedModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{53} } +func (*GetSavedModelsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } func (m *GetSavedModelsRequest) GetStudyName() string { if m != nil { @@ -1620,7 +1658,7 @@ type GetSavedModelsReply struct { func (m *GetSavedModelsReply) Reset() { *m = GetSavedModelsReply{} } func (m *GetSavedModelsReply) String() string { return proto.CompactTextString(m) } func (*GetSavedModelsReply) ProtoMessage() {} -func (*GetSavedModelsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{54} } +func (*GetSavedModelsReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } func (m *GetSavedModelsReply) GetModels() []*ModelInfo { if m != nil { @@ -1637,7 +1675,7 @@ type GetSavedModelRequest struct { func (m *GetSavedModelRequest) Reset() { *m = GetSavedModelRequest{} } func (m *GetSavedModelRequest) String() string { return proto.CompactTextString(m) } func (*GetSavedModelRequest) ProtoMessage() {} -func (*GetSavedModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{55} } +func (*GetSavedModelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } func (m *GetSavedModelRequest) GetStudyName() string { if m != nil { @@ -1660,7 +1698,7 @@ type GetSavedModelReply struct { func (m *GetSavedModelReply) Reset() { *m = GetSavedModelReply{} } func (m *GetSavedModelReply) String() string { return proto.CompactTextString(m) } func (*GetSavedModelReply) ProtoMessage() {} -func (*GetSavedModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{56} } +func (*GetSavedModelReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } func (m *GetSavedModelReply) GetModel() *ModelInfo { if m != nil { @@ -1679,7 +1717,7 @@ type SetSuggestionParametersRequest struct { func (m *SetSuggestionParametersRequest) Reset() { *m = SetSuggestionParametersRequest{} } func (m *SetSuggestionParametersRequest) String() string { return proto.CompactTextString(m) } func (*SetSuggestionParametersRequest) ProtoMessage() {} -func (*SetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{57} } +func (*SetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} } func (m *SetSuggestionParametersRequest) GetStudyId() string { if m != nil { @@ -1716,7 +1754,7 @@ type SetSuggestionParametersReply struct { func (m *SetSuggestionParametersReply) Reset() { *m = SetSuggestionParametersReply{} } func (m *SetSuggestionParametersReply) String() string { return proto.CompactTextString(m) } func (*SetSuggestionParametersReply) ProtoMessage() {} -func (*SetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{58} } +func (*SetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } func (m *SetSuggestionParametersReply) GetParamId() string { if m != nil { @@ -1732,7 +1770,7 @@ type GetSuggestionParametersRequest struct { func (m *GetSuggestionParametersRequest) Reset() { *m = GetSuggestionParametersRequest{} } func (m *GetSuggestionParametersRequest) String() string { return proto.CompactTextString(m) } func (*GetSuggestionParametersRequest) ProtoMessage() {} -func (*GetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} } +func (*GetSuggestionParametersRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} } func (m *GetSuggestionParametersRequest) GetParamId() string { if m != nil { @@ -1748,7 +1786,7 @@ type GetSuggestionParametersReply struct { func (m *GetSuggestionParametersReply) Reset() { *m = GetSuggestionParametersReply{} } func (m *GetSuggestionParametersReply) String() string { return proto.CompactTextString(m) } func (*GetSuggestionParametersReply) ProtoMessage() {} -func (*GetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } +func (*GetSuggestionParametersReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } func (m *GetSuggestionParametersReply) GetSuggestionParameters() []*SuggestionParameter { if m != nil { @@ -1765,7 +1803,7 @@ func (m *GetSuggestionParameterListRequest) Reset() { *m = GetSuggestion func (m *GetSuggestionParameterListRequest) String() string { return proto.CompactTextString(m) } func (*GetSuggestionParameterListRequest) ProtoMessage() {} func (*GetSuggestionParameterListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{61} + return fileDescriptor0, []int{63} } func (m *GetSuggestionParameterListRequest) GetStudyId() string { @@ -1784,7 +1822,7 @@ type SuggestionParameterSet struct { func (m *SuggestionParameterSet) Reset() { *m = SuggestionParameterSet{} } func (m *SuggestionParameterSet) String() string { return proto.CompactTextString(m) } func (*SuggestionParameterSet) ProtoMessage() {} -func (*SuggestionParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } +func (*SuggestionParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } func (m *SuggestionParameterSet) GetParamId() string { if m != nil { @@ -1815,7 +1853,7 @@ func (m *GetSuggestionParameterListReply) Reset() { *m = GetSuggestionPa func (m *GetSuggestionParameterListReply) String() string { return proto.CompactTextString(m) } func (*GetSuggestionParameterListReply) ProtoMessage() {} func (*GetSuggestionParameterListReply) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{63} + return fileDescriptor0, []int{65} } func (m *GetSuggestionParameterListReply) GetSuggestionParameterSets() []*SuggestionParameterSet { @@ -1832,7 +1870,7 @@ type StopSuggestionRequest struct { func (m *StopSuggestionRequest) Reset() { *m = StopSuggestionRequest{} } func (m *StopSuggestionRequest) String() string { return proto.CompactTextString(m) } func (*StopSuggestionRequest) ProtoMessage() {} -func (*StopSuggestionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } +func (*StopSuggestionRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} } func (m *StopSuggestionRequest) GetStudyId() string { if m != nil { @@ -1847,7 +1885,7 @@ type StopSuggestionReply struct { func (m *StopSuggestionReply) Reset() { *m = StopSuggestionReply{} } func (m *StopSuggestionReply) String() string { return proto.CompactTextString(m) } func (*StopSuggestionReply) ProtoMessage() {} -func (*StopSuggestionReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} } +func (*StopSuggestionReply) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{67} } type SetEarlyStoppingParametersRequest struct { StudyId string `protobuf:"bytes,1,opt,name=study_id,json=studyId" json:"study_id,omitempty"` @@ -1860,7 +1898,7 @@ func (m *SetEarlyStoppingParametersRequest) Reset() { *m = SetEarlyStopp func (m *SetEarlyStoppingParametersRequest) String() string { return proto.CompactTextString(m) } func (*SetEarlyStoppingParametersRequest) ProtoMessage() {} func (*SetEarlyStoppingParametersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{66} + return fileDescriptor0, []int{68} } func (m *SetEarlyStoppingParametersRequest) GetStudyId() string { @@ -1899,7 +1937,7 @@ func (m *SetEarlyStoppingParametersReply) Reset() { *m = SetEarlyStoppin func (m *SetEarlyStoppingParametersReply) String() string { return proto.CompactTextString(m) } func (*SetEarlyStoppingParametersReply) ProtoMessage() {} func (*SetEarlyStoppingParametersReply) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{67} + return fileDescriptor0, []int{69} } func (m *SetEarlyStoppingParametersReply) GetParamId() string { @@ -1917,7 +1955,7 @@ func (m *GetEarlyStoppingParametersRequest) Reset() { *m = GetEarlyStopp func (m *GetEarlyStoppingParametersRequest) String() string { return proto.CompactTextString(m) } func (*GetEarlyStoppingParametersRequest) ProtoMessage() {} func (*GetEarlyStoppingParametersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{68} + return fileDescriptor0, []int{70} } func (m *GetEarlyStoppingParametersRequest) GetParamId() string { @@ -1935,7 +1973,7 @@ func (m *GetEarlyStoppingParametersReply) Reset() { *m = GetEarlyStoppin func (m *GetEarlyStoppingParametersReply) String() string { return proto.CompactTextString(m) } func (*GetEarlyStoppingParametersReply) ProtoMessage() {} func (*GetEarlyStoppingParametersReply) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{69} + return fileDescriptor0, []int{71} } func (m *GetEarlyStoppingParametersReply) GetEarlyStoppingParameters() []*EarlyStoppingParameter { @@ -1953,7 +1991,7 @@ func (m *GetEarlyStoppingParameterListRequest) Reset() { *m = GetEarlySt func (m *GetEarlyStoppingParameterListRequest) String() string { return proto.CompactTextString(m) } func (*GetEarlyStoppingParameterListRequest) ProtoMessage() {} func (*GetEarlyStoppingParameterListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{70} + return fileDescriptor0, []int{72} } func (m *GetEarlyStoppingParameterListRequest) GetStudyId() string { @@ -1972,7 +2010,7 @@ type EarlyStoppingParameterSet struct { func (m *EarlyStoppingParameterSet) Reset() { *m = EarlyStoppingParameterSet{} } func (m *EarlyStoppingParameterSet) String() string { return proto.CompactTextString(m) } func (*EarlyStoppingParameterSet) ProtoMessage() {} -func (*EarlyStoppingParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{71} } +func (*EarlyStoppingParameterSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{73} } func (m *EarlyStoppingParameterSet) GetParamId() string { if m != nil { @@ -2003,7 +2041,7 @@ func (m *GetEarlyStoppingParameterListReply) Reset() { *m = GetEarlyStop func (m *GetEarlyStoppingParameterListReply) String() string { return proto.CompactTextString(m) } func (*GetEarlyStoppingParameterListReply) ProtoMessage() {} func (*GetEarlyStoppingParameterListReply) Descriptor() ([]byte, []int) { - return fileDescriptor0, []int{72} + return fileDescriptor0, []int{74} } func (m *GetEarlyStoppingParameterListReply) GetEarlyStoppingParameterSets() []*EarlyStoppingParameterSet { @@ -2031,6 +2069,8 @@ func init() { proto.RegisterType((*StudyConfig_ParameterConfigs)(nil), "api.StudyConfig.ParameterConfigs") proto.RegisterType((*CreateStudyRequest)(nil), "api.CreateStudyRequest") proto.RegisterType((*CreateStudyReply)(nil), "api.CreateStudyReply") + proto.RegisterType((*DeleteStudyRequest)(nil), "api.DeleteStudyRequest") + proto.RegisterType((*DeleteStudyReply)(nil), "api.DeleteStudyReply") proto.RegisterType((*GetStudyRequest)(nil), "api.GetStudyRequest") proto.RegisterType((*GetStudyReply)(nil), "api.GetStudyReply") proto.RegisterType((*GetStudyListRequest)(nil), "api.GetStudyListRequest") @@ -2112,6 +2152,9 @@ type ManagerClient interface { // Get a Study Config from DB by ID of Study. GetStudy(ctx context.Context, in *GetStudyRequest, opts ...grpc.CallOption) (*GetStudyReply, error) // * + // Delete a Study from DB by Study ID. + DeleteStudy(ctx context.Context, in *DeleteStudyRequest, opts ...grpc.CallOption) (*DeleteStudyReply, error) + // * // Get all Study Configs from DB. GetStudyList(ctx context.Context, in *GetStudyListRequest, opts ...grpc.CallOption) (*GetStudyListReply, error) // * @@ -2198,6 +2241,15 @@ func (c *managerClient) GetStudy(ctx context.Context, in *GetStudyRequest, opts return out, nil } +func (c *managerClient) DeleteStudy(ctx context.Context, in *DeleteStudyRequest, opts ...grpc.CallOption) (*DeleteStudyReply, error) { + out := new(DeleteStudyReply) + err := grpc.Invoke(ctx, "/api.Manager/DeleteStudy", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *managerClient) GetStudyList(ctx context.Context, in *GetStudyListRequest, opts ...grpc.CallOption) (*GetStudyListReply, error) { out := new(GetStudyListReply) err := grpc.Invoke(ctx, "/api.Manager/GetStudyList", in, out, c.cc, opts...) @@ -2407,6 +2459,9 @@ type ManagerServer interface { // Get a Study Config from DB by ID of Study. GetStudy(context.Context, *GetStudyRequest) (*GetStudyReply, error) // * + // Delete a Study from DB by Study ID. + DeleteStudy(context.Context, *DeleteStudyRequest) (*DeleteStudyReply, error) + // * // Get all Study Configs from DB. GetStudyList(context.Context, *GetStudyListRequest) (*GetStudyListReply, error) // * @@ -2507,6 +2562,24 @@ func _Manager_GetStudy_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Manager_DeleteStudy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteStudyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ManagerServer).DeleteStudy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/api.Manager/DeleteStudy", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ManagerServer).DeleteStudy(ctx, req.(*DeleteStudyRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Manager_GetStudyList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetStudyListRequest) if err := dec(in); err != nil { @@ -2915,6 +2988,10 @@ var _Manager_serviceDesc = grpc.ServiceDesc{ MethodName: "GetStudy", Handler: _Manager_GetStudy_Handler, }, + { + MethodName: "DeleteStudy", + Handler: _Manager_DeleteStudy_Handler, + }, { MethodName: "GetStudyList", Handler: _Manager_GetStudyList_Handler, @@ -3139,182 +3216,184 @@ var _EarlyStopping_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("api.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 2819 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x4b, 0x73, 0xdb, 0xd6, - 0xf5, 0x0f, 0x48, 0xbd, 0x78, 0x28, 0x52, 0xd4, 0xd5, 0x0b, 0xa2, 0x1e, 0x96, 0xae, 0x15, 0x5b, - 0x7e, 0x49, 0x31, 0x9d, 0x38, 0xb1, 0xe2, 0xfc, 0x33, 0xb2, 0x24, 0xf3, 0xcf, 0x89, 0x44, 0x69, - 0x40, 0xba, 0xca, 0x63, 0x26, 0x1c, 0x48, 0xbc, 0xa2, 0x11, 0x93, 0x04, 0x4b, 0x40, 0x76, 0x64, - 0x8f, 0x37, 0xdd, 0xb4, 0x9b, 0xce, 0xa4, 0xed, 0x74, 0xd3, 0x45, 0x96, 0xfd, 0x00, 0x9d, 0xe9, - 0xa2, 0x9b, 0xee, 0xbb, 0xe8, 0xaa, 0xd3, 0x99, 0x7e, 0x80, 0xee, 0xda, 0xef, 0xd0, 0xce, 0x7d, - 0x00, 0xb8, 0x00, 0x01, 0x90, 0x91, 0xe3, 0xee, 0x78, 0xef, 0x3d, 0xf7, 0x9c, 0xdf, 0x79, 0xde, - 0x83, 0x23, 0x41, 0x4a, 0xef, 0x18, 0x1b, 0x9d, 0xae, 0x69, 0x9b, 0x28, 0xa9, 0x77, 0x8c, 0xfc, - 0x62, 0xc3, 0x34, 0x1b, 0x4d, 0xb2, 0xa9, 0x77, 0x8c, 0x4d, 0xbd, 0xdd, 0x36, 0x6d, 0xdd, 0x36, - 0xcc, 0xb6, 0xc5, 0x49, 0x70, 0x11, 0x32, 0x8f, 0x89, 0x6e, 0x19, 0x27, 0x4d, 0x52, 0xe9, 0xe8, - 0xa7, 0x04, 0xe5, 0x20, 0xd9, 0xd2, 0xbf, 0x55, 0x95, 0x15, 0x65, 0x3d, 0xa5, 0xd1, 0x9f, 0x6c, - 0xc7, 0x68, 0xab, 0x09, 0xb1, 0x63, 0xb4, 0x11, 0x82, 0xa1, 0xa6, 0x61, 0xd9, 0x6a, 0x72, 0x25, - 0xb9, 0x9e, 0xd2, 0xd8, 0x6f, 0xfc, 0x9d, 0x02, 0x13, 0x47, 0x7a, 0x57, 0x6f, 0x11, 0x9b, 0x74, - 0x77, 0xcc, 0xf6, 0x99, 0xd1, 0xa0, 0x74, 0x6d, 0xbd, 0x45, 0x04, 0x33, 0xf6, 0x1b, 0x3d, 0x80, - 0x6c, 0xc7, 0x21, 0xab, 0xd9, 0x17, 0x1d, 0xc2, 0x18, 0x67, 0x0b, 0x68, 0x83, 0xe2, 0x76, 0x39, - 0x54, 0x2f, 0x3a, 0x44, 0xcb, 0x74, 0xe4, 0x25, 0xda, 0x80, 0xb1, 0x33, 0x81, 0x55, 0x4d, 0xae, - 0x28, 0xeb, 0x69, 0x71, 0xc9, 0xa7, 0x80, 0xe6, 0xd2, 0xe0, 0x0e, 0xa4, 0x5c, 0x7e, 0x3f, 0x36, - 0x96, 0x69, 0x18, 0x7e, 0xae, 0x37, 0xcf, 0x39, 0x90, 0x94, 0xc6, 0x17, 0xf8, 0x57, 0x0a, 0x64, - 0x0e, 0x88, 0xdd, 0x35, 0x4e, 0xad, 0x7d, 0xb3, 0x51, 0x21, 0x36, 0x5a, 0x80, 0xd4, 0x0b, 0xb3, - 0xfb, 0x8c, 0x74, 0x6b, 0x46, 0x5d, 0xc8, 0x1e, 0xe3, 0x1b, 0xa5, 0x3a, 0x2a, 0xc0, 0x78, 0x8b, - 0x53, 0xd7, 0x9a, 0x66, 0xc3, 0x52, 0x13, 0x2b, 0xc9, 0xf5, 0x74, 0x61, 0x82, 0x49, 0xf7, 0xd8, - 0x68, 0xe9, 0x96, 0xfb, 0xdb, 0x42, 0x9b, 0x90, 0x11, 0x0c, 0x2d, 0x5b, 0xb7, 0xcf, 0x2d, 0x06, - 0x20, 0x5b, 0x00, 0x76, 0xa9, 0x62, 0xeb, 0x36, 0xd1, 0xc6, 0x39, 0x41, 0x85, 0x9d, 0xe3, 0x7b, - 0x30, 0x2a, 0x78, 0x85, 0xda, 0xc0, 0x55, 0x24, 0x21, 0x2b, 0xf2, 0x10, 0x72, 0xe2, 0xd2, 0x4f, - 0xe8, 0xba, 0x6a, 0xb4, 0x08, 0xbd, 0x6d, 0x1b, 0xde, 0x6d, 0xfa, 0x3b, 0xe2, 0xf6, 0x21, 0x80, - 0x07, 0x3f, 0x54, 0xea, 0x1d, 0x18, 0x61, 0xa4, 0x8e, 0xce, 0x33, 0xb2, 0xce, 0xae, 0x48, 0x4d, - 0x10, 0xe1, 0x4f, 0x61, 0xaa, 0x72, 0xde, 0x68, 0x10, 0x8b, 0x86, 0x6e, 0xbc, 0x4f, 0xc3, 0x11, - 0x3d, 0x82, 0xd9, 0x3d, 0xbd, 0xdb, 0xbc, 0xa8, 0xd8, 0x66, 0xa7, 0x63, 0xb4, 0x1b, 0x97, 0xe1, - 0xb1, 0x09, 0xc9, 0xaa, 0xde, 0xf8, 0x01, 0x17, 0x9e, 0x41, 0xa6, 0x62, 0x9f, 0xd7, 0x2f, 0x0e, - 0x9f, 0x93, 0xee, 0x73, 0x83, 0xbc, 0x88, 0xba, 0x6a, 0xbe, 0x68, 0x93, 0xae, 0x73, 0x95, 0x2d, - 0x50, 0x16, 0x12, 0x46, 0x5d, 0xc4, 0x56, 0xc2, 0xa8, 0xa3, 0x15, 0x48, 0xd7, 0x89, 0x75, 0xda, - 0x35, 0x3a, 0xd4, 0x02, 0xea, 0x10, 0x3b, 0x90, 0xb7, 0xf0, 0x9f, 0x14, 0x18, 0xae, 0x76, 0x0d, - 0xbd, 0x89, 0xe6, 0x61, 0xcc, 0xa6, 0x3f, 0xbc, 0x88, 0x1b, 0x65, 0xeb, 0x52, 0x9d, 0x1e, 0x59, - 0x14, 0x11, 0x3d, 0xe2, 0xf2, 0x46, 0xd9, 0xba, 0x54, 0x47, 0xf7, 0xc0, 0x8b, 0xf0, 0x9a, 0x45, - 0x78, 0x72, 0xa7, 0x0b, 0x59, 0x7f, 0x2a, 0x68, 0xe3, 0x2e, 0x11, 0x8d, 0xee, 0xeb, 0x30, 0x61, - 0x9e, 0x7c, 0x43, 0x4e, 0x6d, 0xe3, 0x39, 0xa9, 0x71, 0x0b, 0x70, 0x68, 0x59, 0x77, 0x9b, 0x39, - 0x13, 0x2d, 0xc2, 0x90, 0xad, 0x37, 0x2c, 0x75, 0x98, 0x31, 0x1d, 0x63, 0x4c, 0xab, 0x7a, 0x43, - 0x63, 0xbb, 0xf8, 0xef, 0x0a, 0x8c, 0x1c, 0xb3, 0x98, 0x8d, 0xcf, 0x97, 0x18, 0xf8, 0xb2, 0xd2, - 0x49, 0xbf, 0xd2, 0x08, 0x86, 0x68, 0xca, 0x0a, 0x64, 0xec, 0x37, 0xc2, 0x30, 0x22, 0xd2, 0x67, - 0xb8, 0x27, 0x7d, 0xc4, 0x09, 0xc2, 0x30, 0x5e, 0x25, 0xad, 0x4e, 0x53, 0xb7, 0xc9, 0x91, 0x6e, - 0x3f, 0x55, 0x47, 0xd8, 0x7d, 0xdf, 0x9e, 0xab, 0xd7, 0x68, 0xa8, 0x5e, 0xff, 0x4a, 0x42, 0x9a, - 0x45, 0x40, 0x4c, 0x3d, 0x0c, 0xf7, 0xff, 0x23, 0x98, 0x34, 0x3b, 0xb6, 0xd1, 0x32, 0x5e, 0xb2, - 0x6a, 0xcd, 0x8b, 0x13, 0xcf, 0x74, 0x9e, 0x2a, 0x87, 0xd2, 0x29, 0xab, 0x4f, 0x39, 0x33, 0xb0, - 0x83, 0x6e, 0x05, 0x78, 0x34, 0x4c, 0xbd, 0xc9, 0x8c, 0xa0, 0xf8, 0x89, 0x8b, 0xa6, 0xde, 0x44, - 0x65, 0x98, 0xf4, 0xdc, 0x7f, 0xca, 0xe0, 0x72, 0xdb, 0xa4, 0x0b, 0xab, 0xc2, 0x36, 0xae, 0x1e, - 0x1b, 0x81, 0x3a, 0x6f, 0x69, 0xb9, 0x4e, 0x60, 0x07, 0xdd, 0x01, 0xa4, 0x9f, 0x9e, 0x12, 0xcb, - 0xaa, 0x75, 0x48, 0xb7, 0x65, 0x58, 0x16, 0x7d, 0x73, 0xd4, 0x11, 0xf6, 0x60, 0x4c, 0xf2, 0x93, - 0x23, 0xef, 0x20, 0xde, 0x8e, 0xe8, 0x3d, 0x98, 0x0e, 0x84, 0x59, 0x8d, 0xd9, 0x71, 0x8c, 0x99, - 0x0c, 0xf9, 0x63, 0xad, 0x4c, 0xad, 0xaa, 0xc2, 0xa8, 0x28, 0x9a, 0x6a, 0x8a, 0xc9, 0x74, 0x96, - 0xd4, 0xde, 0xdf, 0x98, 0x27, 0xa5, 0xba, 0x0a, 0xdc, 0xde, 0x6c, 0x91, 0x7f, 0x04, 0xb9, 0xa0, - 0x52, 0x68, 0x03, 0x46, 0x1d, 0x43, 0x28, 0x0c, 0xd6, 0xb4, 0x3f, 0x17, 0x38, 0x9d, 0xe6, 0x10, - 0xe1, 0x12, 0xa0, 0x9d, 0x2e, 0xd1, 0x6d, 0xc2, 0x4c, 0xa5, 0x91, 0x9f, 0x9e, 0x13, 0xcb, 0x46, - 0xf7, 0x60, 0x9c, 0xc7, 0x2c, 0x27, 0x63, 0xbe, 0x4f, 0x17, 0x72, 0x41, 0x9b, 0x6a, 0x69, 0xcb, - 0x5b, 0xe0, 0x3b, 0x90, 0xf3, 0xb1, 0xea, 0x34, 0x2f, 0x7c, 0xc1, 0xaf, 0xf8, 0x82, 0x1f, 0xdf, - 0x86, 0x89, 0x22, 0xb1, 0x7d, 0x62, 0x63, 0xa8, 0x77, 0x21, 0xe3, 0x51, 0x53, 0xce, 0x97, 0x82, - 0x38, 0x03, 0x53, 0x0e, 0x97, 0x7d, 0xc3, 0xb2, 0x85, 0x5c, 0x7c, 0x04, 0x93, 0xfe, 0x6d, 0x2a, - 0xe0, 0x63, 0x98, 0xe0, 0x02, 0x4c, 0x51, 0x09, 0x1d, 0x8b, 0x22, 0x4f, 0x86, 0x53, 0x24, 0xb5, - 0xac, 0x25, 0x2f, 0x2d, 0x7c, 0xdf, 0x31, 0x2b, 0xab, 0x6e, 0x8e, 0x7e, 0x2b, 0x30, 0xcc, 0xf2, - 0x5b, 0x80, 0xe5, 0xf9, 0xcb, 0x29, 0xf8, 0x81, 0x67, 0x43, 0x71, 0x4f, 0xd8, 0x30, 0xa2, 0x34, - 0x52, 0xf2, 0x22, 0xb1, 0x19, 0xad, 0x35, 0x80, 0x11, 0xdf, 0x87, 0xac, 0x44, 0x4e, 0x79, 0x63, - 0x18, 0x61, 0xbc, 0x1c, 0xdd, 0x64, 0x48, 0xe2, 0x44, 0x38, 0xca, 0xa7, 0x48, 0x0c, 0xa4, 0xbb, - 0xcc, 0x51, 0x12, 0xfc, 0xfe, 0x4a, 0x3f, 0x84, 0x19, 0x8d, 0x34, 0x0c, 0xcb, 0x26, 0x5d, 0x5e, - 0x50, 0x1d, 0x31, 0x57, 0x61, 0x84, 0x97, 0x51, 0x71, 0x37, 0xcd, 0xee, 0x0a, 0x1a, 0x71, 0x84, - 0x0b, 0x30, 0x15, 0xbc, 0x4d, 0xc5, 0xc6, 0xd5, 0x64, 0x6c, 0x02, 0xa2, 0x8f, 0x2a, 0xa7, 0x1f, - 0xc0, 0x72, 0x68, 0x09, 0xc0, 0xe5, 0xc6, 0x9f, 0xff, 0x94, 0x96, 0x72, 0xd8, 0x59, 0xe8, 0x0a, - 0xa4, 0x0d, 0xab, 0x76, 0x6a, 0xb6, 0x3a, 0x4d, 0x62, 0xf3, 0x9a, 0x37, 0xa6, 0x81, 0x61, 0xed, - 0x88, 0x1d, 0x8c, 0x20, 0xe7, 0x13, 0xd8, 0x69, 0x5e, 0xe0, 0x33, 0x16, 0x75, 0x83, 0x63, 0x90, - 0x8d, 0x9e, 0xf0, 0xbf, 0x16, 0x3e, 0x65, 0x93, 0x01, 0x65, 0x3f, 0x62, 0xfe, 0x93, 0x45, 0xa3, - 0x77, 0x61, 0x94, 0x1f, 0x3b, 0x7e, 0xf7, 0x59, 0xd6, 0x39, 0xc3, 0x5f, 0x81, 0xfa, 0xa4, 0x53, - 0xd7, 0x6d, 0x72, 0xec, 0xf6, 0x66, 0xc4, 0x01, 0x1a, 0xfb, 0xe6, 0x79, 0x2f, 0x55, 0x22, 0xea, - 0xa5, 0xc2, 0x2a, 0xcc, 0x86, 0x30, 0xa7, 0x86, 0xf9, 0xad, 0x02, 0xaa, 0x8b, 0xf8, 0xf1, 0x79, - 0xb3, 0x59, 0x6a, 0x9f, 0x99, 0x6f, 0xcf, 0x40, 0xe8, 0x1a, 0x4c, 0x98, 0xed, 0xe6, 0x45, 0x8d, - 0x3e, 0x90, 0x96, 0x4d, 0xbb, 0x5a, 0xf6, 0xe2, 0x8c, 0x69, 0x19, 0xba, 0xbd, 0xcf, 0x76, 0xf7, - 0xcd, 0x06, 0xfe, 0x5e, 0x81, 0xac, 0x1f, 0x14, 0x8d, 0xd0, 0xe3, 0xe8, 0x08, 0x15, 0xed, 0x41, - 0x4f, 0x97, 0x92, 0x18, 0xa0, 0x4b, 0x09, 0xb6, 0xd9, 0xc9, 0xfe, 0x6d, 0x36, 0xfe, 0x02, 0x66, - 0x43, 0xec, 0x46, 0x1d, 0xfe, 0x29, 0x4c, 0x0a, 0xfd, 0xcf, 0xce, 0x9b, 0xcd, 0x9a, 0xd1, 0x3e, - 0x33, 0x1d, 0xd7, 0x4f, 0x49, 0x90, 0xdd, 0x4b, 0x13, 0x2f, 0x7c, 0x6b, 0x0b, 0xff, 0x55, 0x81, - 0x19, 0x5a, 0x23, 0xdd, 0x86, 0x76, 0x90, 0x88, 0xbd, 0x0b, 0xd3, 0x96, 0x7b, 0xa1, 0xa6, 0x37, - 0x1b, 0x66, 0xd7, 0xb0, 0x9f, 0xb6, 0x84, 0x73, 0xa6, 0xbc, 0xb3, 0x6d, 0xe7, 0x08, 0xbd, 0x0b, - 0xd9, 0x2e, 0x67, 0x5c, 0x6b, 0x9f, 0xb7, 0x4e, 0x48, 0x97, 0x79, 0x6b, 0x58, 0xcb, 0x88, 0xdd, - 0x32, 0xdb, 0x44, 0x6b, 0x90, 0x6d, 0x9a, 0x8d, 0x9a, 0x94, 0x93, 0x43, 0x2c, 0x27, 0xc7, 0x9b, - 0x66, 0xe3, 0xd8, 0x4d, 0xcb, 0x79, 0x18, 0x63, 0x36, 0xa5, 0xd0, 0x86, 0x39, 0x34, 0xb6, 0x2e, - 0xd5, 0xf1, 0x03, 0xfe, 0x12, 0xc8, 0xea, 0x0c, 0x5a, 0x0f, 0x7f, 0xa9, 0xc0, 0x02, 0xbd, 0xfb, - 0xd4, 0x3c, 0x6f, 0xd6, 0x7f, 0x58, 0x19, 0xf9, 0x08, 0x54, 0x42, 0x3b, 0xfa, 0x9a, 0x25, 0x5a, - 0xfa, 0x1e, 0xa3, 0xcc, 0x12, 0xb9, 0xe3, 0xf7, 0xec, 0x12, 0xa3, 0xca, 0x11, 0xcc, 0x87, 0xc3, - 0xe1, 0xcf, 0xe4, 0xac, 0xc5, 0x4e, 0x98, 0x48, 0xd9, 0x60, 0x0a, 0x33, 0xd8, 0x94, 0x15, 0xb8, - 0x57, 0xaa, 0x5b, 0xb8, 0xcb, 0x2a, 0x93, 0x88, 0xb2, 0x37, 0xaf, 0x8e, 0x57, 0x21, 0xe3, 0x84, - 0x32, 0xed, 0x80, 0x2c, 0xf1, 0x09, 0xee, 0xc4, 0x37, 0xed, 0x7d, 0x2c, 0x7c, 0xc8, 0xaa, 0x94, - 0x2b, 0x93, 0x62, 0x7f, 0x08, 0x39, 0x29, 0x05, 0x68, 0xe6, 0xf8, 0x9f, 0x60, 0xdf, 0x47, 0xab, - 0x96, 0x6d, 0xc9, 0x4b, 0x0b, 0x5b, 0xa0, 0x6a, 0xa4, 0x63, 0x76, 0x6d, 0x8f, 0x6c, 0x10, 0x5d, - 0xc2, 0x84, 0x26, 0x07, 0x16, 0xaa, 0xc2, 0x6c, 0x88, 0x50, 0x5a, 0xd4, 0xfe, 0xac, 0x40, 0xea, - 0xc0, 0xac, 0x13, 0x5e, 0x37, 0x96, 0x00, 0x38, 0x00, 0xa9, 0xb5, 0x4e, 0xb1, 0x1d, 0xd6, 0x09, - 0xfa, 0xca, 0x55, 0x22, 0x50, 0xae, 0x36, 0x00, 0xdc, 0x4a, 0x61, 0x45, 0x7c, 0xf1, 0x48, 0x14, - 0xe8, 0x9a, 0xd7, 0x56, 0x0e, 0x31, 0xe2, 0x71, 0x59, 0x11, 0xaf, 0xc9, 0x5c, 0x02, 0x68, 0x51, - 0x80, 0xb5, 0x0e, 0xfd, 0x70, 0xe0, 0x41, 0x96, 0x62, 0x3b, 0xf4, 0xab, 0x01, 0x7f, 0x00, 0xe9, - 0x5d, 0xdd, 0xd6, 0x2b, 0xc4, 0x66, 0x1a, 0x84, 0x7d, 0x16, 0x20, 0x18, 0x62, 0x77, 0x39, 0x62, - 0xf6, 0x1b, 0x1b, 0x90, 0xab, 0xe8, 0xcf, 0xfd, 0xed, 0x65, 0x1f, 0xed, 0xc3, 0xbf, 0x2e, 0x02, - 0x5f, 0x93, 0xc9, 0xde, 0xaf, 0xc9, 0x1c, 0x64, 0x25, 0x51, 0xd4, 0xe8, 0xbf, 0x50, 0xb8, 0x74, - 0x66, 0x78, 0x47, 0xfa, 0x1a, 0x0c, 0x33, 0xad, 0x44, 0xc9, 0xe6, 0xa6, 0x73, 0x5d, 0xa3, 0xf1, - 0x43, 0x74, 0x0b, 0xc6, 0xea, 0xba, 0xad, 0x8b, 0x7a, 0xed, 0xf5, 0x96, 0x92, 0x0d, 0xb4, 0xd1, - 0x3a, 0x5f, 0xa0, 0x55, 0x18, 0xb7, 0x49, 0xdb, 0x32, 0xbb, 0xb5, 0x13, 0x53, 0xef, 0xd6, 0x45, - 0x03, 0x90, 0xe6, 0x7b, 0x8f, 0xe8, 0x96, 0x03, 0x4e, 0x20, 0xa1, 0xe0, 0x54, 0x56, 0xad, 0xe9, - 0x66, 0x9d, 0x42, 0x36, 0x88, 0x13, 0x9e, 0x78, 0x17, 0xa6, 0x7b, 0x4e, 0x68, 0x42, 0xdc, 0x06, - 0x16, 0xa6, 0x06, 0x89, 0x6b, 0x45, 0x1d, 0x12, 0x7c, 0x9f, 0x57, 0x6c, 0xca, 0x85, 0x49, 0xb5, - 0x06, 0x33, 0x3f, 0xfe, 0x84, 0x97, 0x46, 0xf9, 0x1e, 0x15, 0x7e, 0x0d, 0x46, 0x98, 0x65, 0x1c, - 0xd9, 0x41, 0xbb, 0x89, 0x53, 0xac, 0x79, 0xe0, 0x7d, 0x66, 0x7f, 0x83, 0x90, 0xc7, 0x5b, 0x80, - 0x02, 0x3c, 0x29, 0xa2, 0x81, 0x1c, 0x89, 0xff, 0xa1, 0xc0, 0x72, 0x45, 0x2e, 0xf5, 0x6e, 0x96, - 0xbc, 0xa5, 0x27, 0x4c, 0x2e, 0xd5, 0x49, 0x5f, 0xa9, 0x46, 0x07, 0x30, 0x23, 0x71, 0x93, 0xb2, - 0x98, 0x27, 0xa6, 0xca, 0xdd, 0xd9, 0x8b, 0x54, 0x93, 0x40, 0x78, 0xf0, 0xf1, 0x03, 0x58, 0x8c, - 0xd4, 0x4c, 0x7c, 0x39, 0xb8, 0x48, 0x14, 0xff, 0xa3, 0xf1, 0x31, 0x2c, 0x17, 0xfb, 0x1a, 0x25, - 0xea, 0x72, 0x0b, 0x16, 0x8b, 0x71, 0x72, 0x23, 0xd5, 0x54, 0x2e, 0xa5, 0xe6, 0xff, 0xc1, 0x6a, - 0xb8, 0x38, 0xe9, 0x1b, 0x2e, 0xee, 0xb3, 0xe7, 0x8f, 0x0a, 0xcc, 0x86, 0xdc, 0xa6, 0x89, 0x1b, - 0xad, 0xe4, 0x65, 0x3c, 0x1f, 0xa9, 0x77, 0xf2, 0x52, 0x7a, 0xbf, 0x84, 0x2b, 0x71, 0x7a, 0x53, - 0x4b, 0x1f, 0xc3, 0x7c, 0x98, 0x44, 0xf9, 0xad, 0x5c, 0x88, 0x92, 0x4a, 0xdf, 0xaf, 0x39, 0x2b, - 0x74, 0xdf, 0xc2, 0x05, 0x98, 0xa1, 0x3d, 0x81, 0x77, 0x6d, 0x00, 0x3b, 0xcf, 0xc0, 0x54, 0xf0, - 0x0e, 0xad, 0x73, 0xff, 0x56, 0x60, 0xb5, 0x42, 0xec, 0xf0, 0x51, 0xe6, 0xff, 0xae, 0x6b, 0x0a, - 0xa4, 0xe2, 0x31, 0xcc, 0x07, 0x98, 0xf6, 0xa4, 0x23, 0xb7, 0x5c, 0x38, 0x6e, 0x6d, 0x8e, 0x84, - 0xeb, 0x83, 0x1f, 0xc2, 0x95, 0x38, 0x6d, 0xfb, 0xe4, 0x25, 0x8f, 0xf5, 0xfe, 0xb6, 0x8a, 0xba, - 0xcf, 0x63, 0x26, 0x56, 0x7a, 0xac, 0xe6, 0xca, 0x1b, 0x68, 0xbe, 0x0d, 0x6b, 0x91, 0xb2, 0x07, - 0x4c, 0xd5, 0xbf, 0x28, 0x30, 0x1f, 0xce, 0xa0, 0x4f, 0xb6, 0x5e, 0x3e, 0x46, 0x62, 0xcd, 0x91, - 0x7c, 0x03, 0x73, 0xfc, 0x5c, 0x01, 0xdc, 0xc7, 0x1e, 0xd4, 0x1d, 0x3a, 0x2c, 0x45, 0xc9, 0x97, - 0xd3, 0x78, 0x39, 0x06, 0x03, 0xcd, 0xe4, 0x3c, 0x89, 0x3a, 0xb2, 0x6e, 0x3e, 0x81, 0x8c, 0xef, - 0xef, 0x42, 0x28, 0x07, 0xe3, 0x4f, 0xca, 0x9f, 0x95, 0x0f, 0x8f, 0xcb, 0xb5, 0xea, 0x17, 0x47, - 0x7b, 0xb9, 0x77, 0x10, 0xc0, 0xc8, 0xee, 0xe1, 0x93, 0x47, 0xfb, 0x7b, 0x39, 0x05, 0x8d, 0x42, - 0xb2, 0x54, 0xae, 0xe6, 0x12, 0x68, 0x1c, 0xc6, 0x76, 0x4b, 0x95, 0x1d, 0x6d, 0xaf, 0xba, 0x97, - 0x4b, 0xa2, 0x09, 0x48, 0xef, 0x6c, 0x57, 0xf7, 0x8a, 0x87, 0x5a, 0x69, 0x67, 0x7b, 0x3f, 0x37, - 0x74, 0xf3, 0xff, 0x21, 0x17, 0x9c, 0xe8, 0x22, 0x15, 0xa6, 0x1d, 0xce, 0x87, 0x47, 0xd5, 0xd2, - 0x41, 0xe9, 0xcb, 0xed, 0x6a, 0xe9, 0xb0, 0x9c, 0x7b, 0x87, 0x32, 0x3b, 0x28, 0x95, 0xe9, 0x0e, - 0x95, 0x41, 0x57, 0xdb, 0x9f, 0xf3, 0x55, 0xe2, 0x66, 0x11, 0x86, 0xd9, 0xf7, 0x3f, 0x4a, 0xc3, - 0xe8, 0xd1, 0x5e, 0x79, 0xb7, 0x54, 0x2e, 0xe6, 0xde, 0xa1, 0x0b, 0xed, 0x49, 0xb9, 0x4c, 0x17, - 0x0a, 0xca, 0x40, 0x6a, 0xe7, 0xf0, 0xe0, 0x68, 0x7f, 0xaf, 0xba, 0xb7, 0x9b, 0x4b, 0x50, 0xbc, - 0x9f, 0x95, 0xf6, 0xf7, 0xf7, 0x76, 0x73, 0x49, 0x94, 0x82, 0xe1, 0x3d, 0x4d, 0x3b, 0xd4, 0x72, - 0xdf, 0x16, 0xfe, 0x33, 0x0b, 0xa3, 0x07, 0x7a, 0x5b, 0x6f, 0x90, 0x2e, 0x6a, 0x41, 0x5a, 0x9a, - 0x47, 0xa2, 0x39, 0x66, 0xc0, 0xde, 0x61, 0x67, 0x7e, 0xa6, 0xf7, 0x80, 0x96, 0xad, 0x8d, 0x9f, - 0xfd, 0xed, 0x9f, 0xbf, 0x49, 0xac, 0x63, 0x95, 0xfd, 0x11, 0x52, 0x30, 0xdd, 0x94, 0xc8, 0xb6, - 0x7c, 0x03, 0x48, 0xf4, 0x35, 0x8c, 0x39, 0x43, 0x44, 0xc4, 0x87, 0xae, 0x81, 0xf1, 0x66, 0x1e, - 0x05, 0x76, 0xa9, 0x94, 0x75, 0x26, 0x05, 0xa3, 0x15, 0x9f, 0x14, 0x87, 0x66, 0xf3, 0x95, 0x93, - 0x28, 0xaf, 0xd1, 0x29, 0x8c, 0xcb, 0x43, 0x4a, 0xa4, 0xfa, 0xb8, 0x49, 0xf9, 0x95, 0x9f, 0x0d, - 0x39, 0xa1, 0xb2, 0x56, 0x99, 0xac, 0x05, 0x34, 0x1f, 0x2a, 0x8b, 0x31, 0x3d, 0x73, 0x6c, 0xc6, - 0xff, 0x2a, 0x23, 0xdb, 0x4c, 0x1e, 0x00, 0xfa, 0x6c, 0xe6, 0xcd, 0xfa, 0xf0, 0x75, 0x26, 0x61, - 0x35, 0xd4, 0x66, 0x8c, 0x6c, 0x8b, 0x8f, 0xfc, 0xd0, 0x09, 0xa4, 0xdc, 0x49, 0x24, 0x9a, 0x71, - 0xf0, 0xfa, 0x06, 0x99, 0xf9, 0xa9, 0xe0, 0x36, 0x95, 0x70, 0x83, 0x49, 0xb8, 0x8a, 0x56, 0x83, - 0x3a, 0x70, 0x22, 0xd9, 0x60, 0xdc, 0x21, 0x5c, 0x91, 0x69, 0x1f, 0xaf, 0x1e, 0x87, 0x48, 0x2a, - 0x44, 0x3a, 0x84, 0xd1, 0x6c, 0xbe, 0x72, 0x26, 0x4c, 0xaf, 0x91, 0x05, 0x59, 0xff, 0xe0, 0x11, - 0xe5, 0x19, 0xbf, 0xd0, 0x59, 0x66, 0x5e, 0x0d, 0x3d, 0xa3, 0x12, 0x6f, 0x31, 0x89, 0xef, 0xe2, - 0x05, 0x9f, 0x44, 0x3f, 0xe5, 0x96, 0x98, 0x76, 0xa2, 0xaf, 0x00, 0xbc, 0x61, 0x1e, 0x72, 0x3d, - 0xed, 0x1f, 0x41, 0xe4, 0xa7, 0x7b, 0xf6, 0xa9, 0xa0, 0x2b, 0x4c, 0xd0, 0x3c, 0x9a, 0x0b, 0xaa, - 0xe6, 0xb0, 0x7b, 0x09, 0x93, 0x3d, 0x23, 0x39, 0xb4, 0xc4, 0x78, 0x45, 0xcd, 0x01, 0xf3, 0x0b, - 0x51, 0xc7, 0x92, 0xb7, 0xf2, 0xcb, 0x3e, 0x89, 0x3d, 0xc4, 0x5b, 0xca, 0x4d, 0xf4, 0x42, 0x9a, - 0x86, 0xba, 0xe3, 0xb5, 0x25, 0xbf, 0x1e, 0x81, 0x59, 0xa0, 0x90, 0x1d, 0x3e, 0xf2, 0xc2, 0xd7, - 0x98, 0xec, 0x15, 0xb4, 0x1c, 0xae, 0xad, 0x2b, 0xa3, 0xcd, 0x86, 0xe2, 0xd2, 0x24, 0x48, 0xb8, - 0x31, 0x74, 0xda, 0x95, 0x57, 0x43, 0xcf, 0x24, 0x79, 0x01, 0x37, 0xfa, 0x29, 0xa9, 0xa2, 0xdf, - 0x29, 0xfc, 0x03, 0x29, 0x38, 0xaf, 0x41, 0x2b, 0x2e, 0xeb, 0x88, 0xc9, 0x52, 0x7e, 0x39, 0x86, - 0x82, 0x42, 0xb8, 0xcf, 0x20, 0xbc, 0x87, 0x6f, 0x45, 0x24, 0x47, 0xd8, 0x4d, 0x0a, 0xe9, 0x6b, - 0x16, 0x54, 0xce, 0x1f, 0xdc, 0xdd, 0xa0, 0xf2, 0x0f, 0x80, 0xbc, 0xa0, 0x92, 0x87, 0x34, 0x18, - 0x33, 0x99, 0x8b, 0xb8, 0x27, 0xa8, 0x04, 0x15, 0xe5, 0xff, 0x6b, 0x05, 0xe6, 0x22, 0x3e, 0x54, - 0xd0, 0x55, 0xde, 0x9e, 0xc6, 0x7e, 0x8b, 0xe4, 0x57, 0xe3, 0x89, 0x28, 0x8e, 0x4d, 0x86, 0xe3, - 0x06, 0x5e, 0xf3, 0xe1, 0x88, 0xb8, 0x42, 0x41, 0xfd, 0x4e, 0x81, 0xb9, 0x62, 0x2c, 0xa8, 0xe2, - 0x20, 0xa0, 0xe2, 0x3e, 0x84, 0xf0, 0x87, 0x0c, 0xd4, 0x5d, 0xb4, 0x19, 0x1d, 0x13, 0xde, 0x95, - 0xcd, 0x57, 0x4e, 0x73, 0xf3, 0x1a, 0xfd, 0x5e, 0x81, 0x7c, 0x74, 0xef, 0x8f, 0xae, 0xc5, 0x88, - 0x96, 0x5f, 0x82, 0xb5, 0xbe, 0x74, 0x14, 0xe5, 0x16, 0x43, 0xf9, 0x3e, 0x2a, 0x0c, 0x80, 0x92, - 0xde, 0x92, 0x8b, 0xec, 0xf7, 0x0a, 0xe4, 0xa3, 0xdb, 0x5d, 0x01, 0xb4, 0x6f, 0xf7, 0x2f, 0x80, - 0xf6, 0xe9, 0x9b, 0x71, 0x81, 0x01, 0xbd, 0x8d, 0xaf, 0x07, 0x7d, 0x1c, 0x71, 0x8b, 0xba, 0x59, - 0x58, 0x32, 0x1e, 0x60, 0x71, 0x40, 0x80, 0x7d, 0x5a, 0xeb, 0x68, 0x4b, 0x46, 0xdc, 0x92, 0x5d, - 0xfe, 0x07, 0x05, 0x96, 0x62, 0xdb, 0x45, 0x74, 0x23, 0x1e, 0x83, 0xec, 0xf8, 0xeb, 0x83, 0x90, - 0x52, 0xc4, 0x9f, 0x30, 0xc4, 0x1f, 0xa2, 0x0f, 0x06, 0x43, 0x1c, 0x74, 0xff, 0x97, 0x90, 0x72, - 0x47, 0x6e, 0xe2, 0x1d, 0x0f, 0x4e, 0xfb, 0xc4, 0x3b, 0x1e, 0x98, 0xcc, 0x89, 0x5e, 0x04, 0xcf, - 0xfa, 0x5d, 0xe9, 0x10, 0x51, 0xcf, 0x09, 0xde, 0x6c, 0xa0, 0x23, 0xf1, 0x96, 0x87, 0x4a, 0x12, - 0x6f, 0x69, 0xb0, 0x16, 0xcd, 0x9b, 0x11, 0x51, 0xde, 0x2f, 0x61, 0xb2, 0x67, 0x4e, 0x2b, 0x5e, - 0x9b, 0xa8, 0xa1, 0xb1, 0x78, 0x6d, 0x22, 0xc6, 0xbb, 0xe2, 0xa5, 0xc3, 0xcb, 0x81, 0x47, 0x3c, - 0x40, 0x4c, 0x65, 0x9b, 0xfc, 0x0f, 0xdf, 0xd2, 0x74, 0x0f, 0xb9, 0x0f, 0x59, 0xc8, 0x34, 0x30, - 0x3f, 0x1f, 0x7e, 0x48, 0xa5, 0xae, 0x31, 0xa9, 0xcb, 0x68, 0xb1, 0x27, 0x73, 0x65, 0xee, 0xcf, - 0xf8, 0x0b, 0xe7, 0x0d, 0xf4, 0xa4, 0x17, 0xae, 0x67, 0x3a, 0x28, 0xbd, 0x70, 0x81, 0x09, 0x20, - 0xbe, 0xca, 0xa4, 0x2d, 0xa1, 0x85, 0x50, 0x69, 0x9c, 0xb2, 0x50, 0x05, 0xf0, 0xca, 0x06, 0x7a, - 0xfc, 0xe3, 0x3c, 0xae, 0x05, 0x03, 0x32, 0xbe, 0x80, 0x44, 0x9f, 0xbf, 0xad, 0x47, 0xf4, 0x64, - 0x84, 0xfd, 0x8f, 0xe1, 0xbd, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x3a, 0x50, 0x27, 0x40, 0x93, - 0x28, 0x00, 0x00, + // 2858 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0x49, 0x73, 0x1b, 0xc7, + 0xf5, 0xf7, 0x00, 0xdc, 0xf0, 0x40, 0x82, 0x60, 0x73, 0x1b, 0x82, 0x22, 0x45, 0xb6, 0x64, 0x49, + 0x96, 0x2c, 0xd2, 0x86, 0xbc, 0xca, 0xf2, 0xdf, 0x25, 0x91, 0x34, 0xff, 0x28, 0x93, 0x20, 0x6b, + 0x08, 0x85, 0x5e, 0xaa, 0x8c, 0x1a, 0x12, 0x4d, 0x78, 0x6c, 0x00, 0x83, 0x60, 0x86, 0x92, 0x29, + 0x97, 0x2f, 0xb9, 0x24, 0x97, 0x54, 0x39, 0x49, 0xe5, 0x92, 0x83, 0x8f, 0xf9, 0x00, 0xa9, 0xca, + 0x21, 0x97, 0xdc, 0x73, 0xc8, 0x29, 0x95, 0xaa, 0x7c, 0x80, 0xdc, 0x9c, 0x0f, 0x91, 0xea, 0xd7, + 0x3d, 0x33, 0x3d, 0x83, 0x99, 0x01, 0x4c, 0x59, 0xb9, 0x4d, 0x77, 0xbf, 0xe5, 0xf7, 0x96, 0x7e, + 0xdd, 0xfd, 0x00, 0xc8, 0x99, 0x5d, 0x6b, 0xa3, 0xdb, 0xb3, 0x5d, 0x9b, 0x64, 0xcd, 0xae, 0x55, + 0xba, 0xd2, 0xb4, 0xed, 0x66, 0x8b, 0x6d, 0x9a, 0x5d, 0x6b, 0xd3, 0xec, 0x74, 0x6c, 0xd7, 0x74, + 0x2d, 0xbb, 0xe3, 0x08, 0x12, 0xba, 0x0b, 0x53, 0x1f, 0x32, 0xd3, 0xb1, 0x4e, 0x5a, 0xec, 0xa8, + 0x6b, 0x9e, 0x32, 0x52, 0x84, 0x6c, 0xdb, 0xfc, 0x5a, 0xd7, 0xd6, 0xb4, 0x5b, 0x39, 0x83, 0x7f, + 0xe2, 0x8c, 0xd5, 0xd1, 0x33, 0x72, 0xc6, 0xea, 0x10, 0x02, 0x23, 0x2d, 0xcb, 0x71, 0xf5, 0xec, + 0x5a, 0xf6, 0x56, 0xce, 0xc0, 0x6f, 0xfa, 0x9d, 0x06, 0xd3, 0x87, 0x66, 0xcf, 0x6c, 0x33, 0x97, + 0xf5, 0xb6, 0xec, 0xce, 0x99, 0xd5, 0xe4, 0x74, 0x1d, 0xb3, 0xcd, 0xa4, 0x30, 0xfc, 0x26, 0xef, + 0x42, 0xa1, 0xeb, 0x91, 0xd5, 0xdd, 0x8b, 0x2e, 0x43, 0xc1, 0x85, 0x32, 0xd9, 0xe0, 0xb8, 0x7d, + 0x09, 0xb5, 0x8b, 0x2e, 0x33, 0xa6, 0xba, 0xea, 0x90, 0x6c, 0xc0, 0xc4, 0x99, 0xc4, 0xaa, 0x67, + 0xd7, 0xb4, 0x5b, 0x79, 0xc9, 0x14, 0x32, 0xc0, 0xf0, 0x69, 0x68, 0x17, 0x72, 0xbe, 0xbc, 0x9f, + 0x1a, 0xcb, 0x1c, 0x8c, 0x3e, 0x31, 0x5b, 0xe7, 0x02, 0x48, 0xce, 0x10, 0x03, 0xfa, 0x1b, 0x0d, + 0xa6, 0xf6, 0x99, 0xdb, 0xb3, 0x4e, 0x9d, 0x3d, 0xbb, 0x79, 0xc4, 0x5c, 0xb2, 0x0c, 0xb9, 0xa7, + 0x76, 0xef, 0x2b, 0xd6, 0xab, 0x5b, 0x0d, 0xa9, 0x7b, 0x42, 0x4c, 0x54, 0x1a, 0xa4, 0x0c, 0x93, + 0x6d, 0x41, 0x5d, 0x6f, 0xd9, 0x4d, 0x47, 0xcf, 0xac, 0x65, 0x6f, 0xe5, 0xcb, 0xd3, 0xa8, 0x3d, + 0x10, 0x63, 0xe4, 0xdb, 0xfe, 0xb7, 0x43, 0x36, 0x61, 0x4a, 0x0a, 0x74, 0x5c, 0xd3, 0x3d, 0x77, + 0x10, 0x40, 0xa1, 0x0c, 0xc8, 0x74, 0xe4, 0x9a, 0x2e, 0x33, 0x26, 0x05, 0xc1, 0x11, 0xae, 0xd3, + 0x7b, 0x30, 0x2e, 0x65, 0xc5, 0xfa, 0xc0, 0x37, 0x24, 0xa3, 0x1a, 0xf2, 0x00, 0x8a, 0x92, 0xe9, + 0x67, 0x7c, 0x5c, 0xb3, 0xda, 0x8c, 0x73, 0xbb, 0x56, 0xc0, 0xcd, 0xbf, 0x13, 0xb8, 0x0f, 0x00, + 0x02, 0xf8, 0xb1, 0x5a, 0xef, 0xc2, 0x18, 0x92, 0x7a, 0x36, 0xcf, 0xab, 0x36, 0xfb, 0x2a, 0x0d, + 0x49, 0x44, 0x3f, 0x80, 0xd9, 0xa3, 0xf3, 0x66, 0x93, 0x39, 0x3c, 0x75, 0xd3, 0x63, 0x1a, 0x8f, + 0xe8, 0x11, 0x2c, 0xec, 0x98, 0xbd, 0xd6, 0xc5, 0x91, 0x6b, 0x77, 0xbb, 0x56, 0xa7, 0x79, 0x19, + 0x19, 0x9b, 0x90, 0xad, 0x99, 0xcd, 0x1f, 0xc1, 0xf0, 0x15, 0x4c, 0x1d, 0xb9, 0xe7, 0x8d, 0x8b, + 0x83, 0x27, 0xac, 0xf7, 0xc4, 0x62, 0x4f, 0x93, 0x58, 0xed, 0xa7, 0x1d, 0xd6, 0xf3, 0x58, 0x71, + 0x40, 0x0a, 0x90, 0xb1, 0x1a, 0x32, 0xb7, 0x32, 0x56, 0x83, 0xac, 0x41, 0xbe, 0xc1, 0x9c, 0xd3, + 0x9e, 0xd5, 0xe5, 0x1e, 0xd0, 0x47, 0x70, 0x41, 0x9d, 0xa2, 0x7f, 0xd1, 0x60, 0xb4, 0xd6, 0xb3, + 0xcc, 0x16, 0x59, 0x82, 0x09, 0x97, 0x7f, 0x04, 0x19, 0x37, 0x8e, 0xe3, 0x4a, 0x83, 0x2f, 0x39, + 0x1c, 0x11, 0x5f, 0x12, 0xfa, 0xc6, 0x71, 0x5c, 0x69, 0x90, 0x7b, 0x10, 0x64, 0x78, 0xdd, 0x61, + 0x62, 0x73, 0xe7, 0xcb, 0x85, 0xf0, 0x56, 0x30, 0x26, 0x7d, 0x22, 0x9e, 0xdd, 0x37, 0x61, 0xda, + 0x3e, 0xf9, 0x92, 0x9d, 0xba, 0xd6, 0x13, 0x56, 0x17, 0x1e, 0x10, 0xd0, 0x0a, 0xfe, 0x34, 0x06, + 0x93, 0x5c, 0x81, 0x11, 0xd7, 0x6c, 0x3a, 0xfa, 0x28, 0x0a, 0x9d, 0x40, 0xa1, 0x35, 0xb3, 0x69, + 0xe0, 0x2c, 0xfd, 0xa7, 0x06, 0x63, 0xc7, 0x98, 0xb3, 0xe9, 0xfb, 0x25, 0x05, 0xbe, 0x6a, 0x74, + 0x36, 0x6c, 0x34, 0x81, 0x11, 0xbe, 0x65, 0x25, 0x32, 0xfc, 0x26, 0x14, 0xc6, 0xe4, 0xf6, 0x19, + 0xed, 0xdb, 0x3e, 0x72, 0x85, 0x50, 0x98, 0xac, 0xb1, 0x76, 0xb7, 0x65, 0xba, 0xec, 0xd0, 0x74, + 0xbf, 0xd0, 0xc7, 0x90, 0x3f, 0x34, 0xe7, 0xdb, 0x35, 0x1e, 0x6b, 0xd7, 0x0f, 0x59, 0xc8, 0x63, + 0x06, 0xa4, 0xd4, 0xc3, 0xf8, 0xf8, 0x3f, 0x82, 0x19, 0xbb, 0xeb, 0x5a, 0x6d, 0xeb, 0x19, 0x56, + 0x6b, 0x51, 0x9c, 0xc4, 0x4e, 0x17, 0x5b, 0xe5, 0x40, 0x59, 0xc5, 0xfa, 0x54, 0xb4, 0x23, 0x33, + 0xe4, 0x4e, 0x44, 0x46, 0xd3, 0x36, 0x5b, 0xe8, 0x04, 0x2d, 0x4c, 0xbc, 0x6b, 0x9b, 0x2d, 0x52, + 0x85, 0x99, 0x20, 0xfc, 0xa7, 0x08, 0x57, 0xf8, 0x26, 0x5f, 0x5e, 0x97, 0xbe, 0xf1, 0xed, 0xd8, + 0x88, 0xd4, 0x79, 0xc7, 0x28, 0x76, 0x23, 0x33, 0xe4, 0x2e, 0x10, 0xf3, 0xf4, 0x94, 0x39, 0x4e, + 0xbd, 0xcb, 0x7a, 0x6d, 0xcb, 0x71, 0xf8, 0x99, 0xa3, 0x8f, 0xe1, 0x81, 0x31, 0x23, 0x56, 0x0e, + 0x83, 0x85, 0x74, 0x3f, 0x92, 0xd7, 0x60, 0x2e, 0x92, 0x66, 0x75, 0xf4, 0xe3, 0x04, 0xba, 0x8c, + 0x84, 0x73, 0xad, 0xca, 0xbd, 0xaa, 0xc3, 0xb8, 0x2c, 0x9a, 0x7a, 0x0e, 0x75, 0x7a, 0x43, 0xee, + 0xef, 0x2f, 0xed, 0x93, 0x4a, 0x43, 0x07, 0xe1, 0x6f, 0x1c, 0x94, 0x1e, 0x41, 0x31, 0x6a, 0x14, + 0xd9, 0x80, 0x71, 0xcf, 0x11, 0x1a, 0xc2, 0x9a, 0x0b, 0xef, 0x05, 0x41, 0x67, 0x78, 0x44, 0xb4, + 0x02, 0x64, 0xab, 0xc7, 0x4c, 0x97, 0xa1, 0xab, 0x0c, 0xf6, 0xf3, 0x73, 0xe6, 0xb8, 0xe4, 0x1e, + 0x4c, 0x8a, 0x9c, 0x15, 0x64, 0x18, 0xfb, 0x7c, 0xb9, 0x18, 0xf5, 0xa9, 0x91, 0x77, 0x82, 0x01, + 0xbd, 0x0b, 0xc5, 0x90, 0xa8, 0x6e, 0xeb, 0x22, 0x94, 0xfc, 0x5a, 0x28, 0xf9, 0xe9, 0x26, 0x90, + 0x6d, 0xd6, 0x62, 0x11, 0xcd, 0x29, 0x0c, 0x77, 0xa1, 0x18, 0x62, 0x18, 0x20, 0xff, 0x55, 0x98, + 0xde, 0x65, 0xee, 0xb0, 0xc2, 0xb7, 0x61, 0x2a, 0xa0, 0xe6, 0x92, 0x2f, 0xe5, 0x82, 0x79, 0x98, + 0xf5, 0xa4, 0xec, 0x59, 0x8e, 0x2b, 0xf5, 0xd2, 0x43, 0x98, 0x09, 0x4f, 0x73, 0x05, 0xef, 0xc1, + 0xb4, 0x50, 0x60, 0xcb, 0x4a, 0xeb, 0x45, 0x8c, 0x04, 0x3a, 0xbc, 0x22, 0x6c, 0x14, 0x1c, 0x75, + 0xe8, 0xd0, 0xb7, 0xbc, 0xb0, 0x61, 0xf5, 0xf4, 0xec, 0x5b, 0x83, 0x51, 0xac, 0x1f, 0x12, 0xac, + 0xa8, 0x0f, 0x82, 0x42, 0x2c, 0x04, 0x31, 0x92, 0x7c, 0xd2, 0x87, 0x09, 0xa5, 0x97, 0x93, 0xef, + 0x32, 0x17, 0x69, 0x9d, 0x21, 0x9c, 0xf8, 0x06, 0x14, 0x14, 0x72, 0x2e, 0x9b, 0xc2, 0x18, 0xca, + 0xf2, 0x6c, 0x53, 0x21, 0xc9, 0x15, 0x19, 0xa8, 0x90, 0x21, 0x29, 0x90, 0x5e, 0xc7, 0x40, 0x29, + 0xf0, 0x07, 0x1b, 0xfd, 0x00, 0xe6, 0x0d, 0xd6, 0xb4, 0x1c, 0x97, 0xf5, 0x44, 0xc1, 0xf6, 0xd4, + 0x5c, 0x83, 0x31, 0x51, 0xa6, 0x25, 0x6f, 0x1e, 0x79, 0x25, 0x8d, 0x5c, 0xa2, 0x65, 0x98, 0x8d, + 0x72, 0x73, 0xb5, 0x69, 0x35, 0x9f, 0xda, 0x40, 0xf8, 0xa1, 0x2d, 0xe8, 0x87, 0xf0, 0x1c, 0x59, + 0x01, 0xf0, 0xa5, 0x89, 0xeb, 0x45, 0xce, 0xc8, 0x79, 0xe2, 0x1c, 0x72, 0x15, 0xf2, 0x96, 0x53, + 0x3f, 0xb5, 0xdb, 0x5d, 0x9e, 0xff, 0x58, 0x53, 0x27, 0x0c, 0xb0, 0x9c, 0x2d, 0x39, 0x43, 0x09, + 0x14, 0x43, 0x0a, 0xbb, 0xad, 0x0b, 0x7a, 0x86, 0x59, 0x37, 0x3c, 0x06, 0xd5, 0xe9, 0x99, 0xf0, + 0x69, 0x14, 0x32, 0x36, 0x1b, 0x31, 0xf6, 0x1d, 0x8c, 0x9f, 0xaa, 0x9a, 0xbc, 0x0c, 0xe3, 0x62, + 0xd9, 0x8b, 0x7b, 0xc8, 0xb3, 0xde, 0x1a, 0xfd, 0x0c, 0xf4, 0xc7, 0xdd, 0x86, 0xe9, 0xb2, 0x63, + 0xff, 0xee, 0xc7, 0x3c, 0xa0, 0xa9, 0x67, 0x6a, 0x70, 0x12, 0x66, 0x92, 0x4e, 0x42, 0xaa, 0xc3, + 0x42, 0x8c, 0x70, 0xee, 0x98, 0xdf, 0x6b, 0xa0, 0xfb, 0x88, 0x3f, 0x3c, 0x6f, 0xb5, 0x2a, 0x9d, + 0x33, 0xfb, 0xc5, 0x39, 0x88, 0xdc, 0x80, 0x69, 0xbb, 0xd3, 0xba, 0xa8, 0xf3, 0x03, 0xd8, 0x71, + 0xf9, 0xad, 0x19, 0x4f, 0xb4, 0x09, 0x63, 0x8a, 0x4f, 0xef, 0xe1, 0xec, 0x9e, 0xdd, 0xa4, 0xdf, + 0x6b, 0x50, 0x08, 0x83, 0xe2, 0x19, 0x7a, 0x9c, 0x9c, 0xa1, 0xf2, 0xfa, 0xd1, 0x77, 0x0b, 0xca, + 0x0c, 0x71, 0x0b, 0x8a, 0x5e, 0xe3, 0xb3, 0x83, 0xaf, 0xf1, 0xf4, 0x13, 0x58, 0x88, 0xf1, 0x1b, + 0x0f, 0xf8, 0x07, 0x30, 0x23, 0xed, 0x3f, 0x3b, 0x6f, 0xb5, 0xea, 0x56, 0xe7, 0xcc, 0xf6, 0x42, + 0x3f, 0xab, 0x40, 0xf6, 0x99, 0xa6, 0x9f, 0x86, 0xc6, 0x0e, 0xfd, 0xbb, 0x06, 0xf3, 0xbc, 0x46, + 0xfa, 0x17, 0xe6, 0x61, 0x32, 0xf6, 0x75, 0x98, 0x73, 0x7c, 0x86, 0xba, 0xd9, 0x6a, 0xda, 0x3d, + 0xcb, 0xfd, 0xa2, 0x2d, 0x83, 0x33, 0x1b, 0xac, 0x3d, 0xf4, 0x96, 0xc8, 0xcb, 0x50, 0xe8, 0x09, + 0xc1, 0xf5, 0xce, 0x79, 0xfb, 0x84, 0xf5, 0x30, 0x5a, 0xa3, 0xc6, 0x94, 0x9c, 0xad, 0xe2, 0x24, + 0xb9, 0x0e, 0x85, 0x96, 0xdd, 0xac, 0x2b, 0x7b, 0x72, 0x04, 0xf7, 0xe4, 0x64, 0xcb, 0x6e, 0x1e, + 0xfb, 0xdb, 0x72, 0x09, 0x26, 0xd0, 0xa7, 0x1c, 0xda, 0xa8, 0x80, 0x86, 0xe3, 0x4a, 0x83, 0xbe, + 0x2b, 0x4e, 0x02, 0xd5, 0x9c, 0x61, 0xeb, 0xe1, 0xaf, 0x35, 0x58, 0xe6, 0xbc, 0x5f, 0xd8, 0xe7, + 0xad, 0xc6, 0x8f, 0x2b, 0x23, 0xef, 0x80, 0xce, 0xf8, 0x8b, 0xa1, 0xee, 0xc8, 0x27, 0x43, 0x9f, + 0x53, 0x16, 0x98, 0xfa, 0xa2, 0x08, 0xfc, 0x92, 0x62, 0xca, 0x21, 0x2c, 0xc5, 0xc3, 0x11, 0xc7, + 0xe4, 0x82, 0x83, 0x2b, 0xa8, 0x52, 0x75, 0x98, 0x86, 0x0e, 0x9b, 0x75, 0x22, 0x7c, 0x95, 0x86, + 0x43, 0x7b, 0x58, 0x99, 0x64, 0x96, 0x3d, 0x7f, 0x75, 0xbc, 0x06, 0x53, 0x5e, 0x2a, 0xf3, 0x1b, + 0x96, 0x23, 0x9f, 0xf8, 0x5e, 0x7e, 0xf3, 0xbb, 0x95, 0x43, 0x0f, 0xb0, 0x4a, 0xf9, 0x3a, 0x39, + 0xf6, 0x07, 0x50, 0x54, 0xb6, 0x00, 0xdf, 0x39, 0xe1, 0x23, 0x38, 0xf4, 0x28, 0x36, 0x0a, 0x6d, + 0x75, 0xe8, 0x50, 0x07, 0x74, 0x83, 0x75, 0xed, 0x9e, 0x1b, 0x90, 0x0d, 0x63, 0x4b, 0x9c, 0xd2, + 0xec, 0xd0, 0x4a, 0x75, 0x58, 0x88, 0x51, 0xca, 0x8b, 0xda, 0x5f, 0x35, 0xc8, 0xed, 0xdb, 0x0d, + 0x26, 0xea, 0xc6, 0x0a, 0x80, 0x00, 0xa0, 0x5c, 0xdd, 0x73, 0x38, 0x83, 0x37, 0xcd, 0x50, 0xb9, + 0xca, 0x44, 0xca, 0xd5, 0x06, 0x80, 0x5f, 0x29, 0x9c, 0x84, 0x17, 0x95, 0x42, 0x41, 0x6e, 0x04, + 0xd7, 0xd6, 0x11, 0x24, 0x9e, 0x54, 0x0d, 0x09, 0x2e, 0xb1, 0x2b, 0x00, 0x6d, 0x0e, 0xb0, 0xde, + 0xe5, 0x0f, 0x13, 0x91, 0x64, 0x39, 0x9c, 0xe1, 0xaf, 0x12, 0xfa, 0x26, 0xe4, 0xb7, 0x4d, 0xd7, + 0x3c, 0x62, 0x2e, 0x5a, 0x10, 0xf7, 0xec, 0x20, 0x30, 0x82, 0xbc, 0x02, 0x31, 0x7e, 0x53, 0x0b, + 0x8a, 0x47, 0xe6, 0x93, 0xf0, 0x25, 0x72, 0x80, 0xf5, 0xf1, 0xaf, 0x97, 0xc8, 0x6b, 0x35, 0xdb, + 0xff, 0x5a, 0x2d, 0x42, 0x41, 0x51, 0xc5, 0x9d, 0xfe, 0x2b, 0x4d, 0x68, 0x47, 0xc7, 0x7b, 0xda, + 0xaf, 0xc3, 0x28, 0x5a, 0x25, 0x4b, 0xb6, 0x70, 0x9d, 0x1f, 0x1a, 0x43, 0x2c, 0x92, 0x3b, 0x30, + 0xd1, 0x30, 0x5d, 0x53, 0xd6, 0xeb, 0xe0, 0x6e, 0xa9, 0xf8, 0xc0, 0x18, 0x6f, 0x88, 0x01, 0x59, + 0x87, 0x49, 0x97, 0x75, 0x1c, 0xbb, 0x57, 0x3f, 0xb1, 0xcd, 0x5e, 0x43, 0x5e, 0x00, 0xf2, 0x62, + 0xee, 0x11, 0x9f, 0xf2, 0xc0, 0x49, 0x24, 0x1c, 0x9c, 0x8e, 0xd5, 0x9a, 0x4f, 0x36, 0x38, 0x64, + 0x8b, 0x79, 0xe9, 0x49, 0xb7, 0x61, 0xae, 0x6f, 0x85, 0x6f, 0x88, 0x57, 0x01, 0xd3, 0xd4, 0x62, + 0x69, 0x57, 0x51, 0x8f, 0x84, 0xbe, 0x25, 0x2a, 0x36, 0x97, 0x82, 0x5a, 0x9d, 0xe1, 0xdc, 0x4f, + 0xdf, 0x17, 0xa5, 0x51, 0xe5, 0xe3, 0xca, 0x6f, 0xc0, 0x18, 0x7a, 0xc6, 0xd3, 0x1d, 0xf5, 0x9b, + 0x5c, 0xa5, 0x46, 0x00, 0x3e, 0xe4, 0xf6, 0xe7, 0x48, 0x79, 0x7a, 0x1f, 0x48, 0x44, 0x26, 0x47, + 0x34, 0x54, 0x20, 0xe9, 0xbf, 0x34, 0x58, 0x3d, 0x52, 0x4b, 0xbd, 0xbf, 0x4b, 0x5e, 0xd0, 0x11, + 0xa6, 0x96, 0xea, 0x6c, 0xa8, 0x54, 0x93, 0x7d, 0x98, 0x57, 0xa4, 0x29, 0xbb, 0x58, 0x6c, 0x4c, + 0x5d, 0x84, 0xb3, 0x1f, 0xa9, 0xa1, 0x80, 0x08, 0xe0, 0xd3, 0x77, 0xe1, 0x4a, 0xa2, 0x65, 0xf2, + 0xe5, 0xe0, 0x23, 0xd1, 0xc2, 0x87, 0xc6, 0x7b, 0xb0, 0xba, 0x3b, 0xd0, 0x29, 0x49, 0xcc, 0x6d, + 0xb8, 0xb2, 0x9b, 0xa6, 0x37, 0xd1, 0x4c, 0xed, 0x52, 0x66, 0xfe, 0x1f, 0xac, 0xc7, 0xab, 0x53, + 0xde, 0x70, 0x69, 0xcf, 0x9e, 0x3f, 0x6b, 0xb0, 0x10, 0xc3, 0xcd, 0x37, 0x6e, 0xb2, 0x91, 0x97, + 0x89, 0x7c, 0xa2, 0xdd, 0xd9, 0x4b, 0xd9, 0xfd, 0x0c, 0xae, 0xa6, 0xd9, 0xcd, 0x3d, 0x7d, 0x0c, + 0x4b, 0x71, 0x1a, 0xd5, 0xb3, 0x72, 0x39, 0x49, 0x2b, 0x3f, 0xbf, 0x16, 0x9d, 0xd8, 0x79, 0x87, + 0x96, 0x61, 0x9e, 0xdf, 0x09, 0x02, 0xb6, 0x21, 0xfc, 0x3c, 0x0f, 0xb3, 0x51, 0x1e, 0x5e, 0xe7, + 0xfe, 0xa3, 0xc1, 0xfa, 0x11, 0x73, 0xe3, 0x5b, 0xa5, 0xff, 0xbb, 0x5b, 0x53, 0x64, 0x2b, 0x1e, + 0xc3, 0x52, 0x44, 0x68, 0xdf, 0x76, 0x14, 0x9e, 0x8b, 0xc7, 0x6d, 0x2c, 0xb2, 0x78, 0x7b, 0xe8, + 0x03, 0xb8, 0x9a, 0x66, 0xed, 0x80, 0x7d, 0x29, 0x72, 0x7d, 0xb0, 0xaf, 0x92, 0xf8, 0x45, 0xce, + 0xa4, 0x6a, 0x4f, 0xb5, 0x5c, 0x7b, 0x0e, 0xcb, 0x1f, 0xc2, 0xf5, 0x44, 0xdd, 0x43, 0x6e, 0xd5, + 0xbf, 0x69, 0xb0, 0x14, 0x2f, 0x60, 0xc0, 0x6e, 0xbd, 0x7c, 0x8e, 0xa4, 0xba, 0x23, 0xfb, 0x1c, + 0xee, 0xf8, 0xa5, 0x06, 0x74, 0x80, 0x3f, 0x78, 0x38, 0x4c, 0x58, 0x49, 0xd2, 0xaf, 0x6e, 0xe3, + 0xd5, 0x14, 0x0c, 0x7c, 0x27, 0x97, 0x58, 0xd2, 0x92, 0x73, 0xfb, 0x31, 0x4c, 0x85, 0x7e, 0x77, + 0x22, 0x45, 0x98, 0x7c, 0x5c, 0xfd, 0xa8, 0x7a, 0x70, 0x5c, 0xad, 0xd7, 0x3e, 0x39, 0xdc, 0x29, + 0xbe, 0x44, 0x00, 0xc6, 0xb6, 0x0f, 0x1e, 0x3f, 0xda, 0xdb, 0x29, 0x6a, 0x64, 0x1c, 0xb2, 0x95, + 0x6a, 0xad, 0x98, 0x21, 0x93, 0x30, 0xb1, 0x5d, 0x39, 0xda, 0x32, 0x76, 0x6a, 0x3b, 0xc5, 0x2c, + 0x99, 0x86, 0xfc, 0xd6, 0xc3, 0xda, 0xce, 0xee, 0x81, 0x51, 0xd9, 0x7a, 0xb8, 0x57, 0x1c, 0xb9, + 0xfd, 0xff, 0x50, 0x8c, 0x76, 0x8c, 0x89, 0x0e, 0x73, 0x9e, 0xe4, 0x83, 0xc3, 0x5a, 0x65, 0xbf, + 0xf2, 0xe9, 0xc3, 0x5a, 0xe5, 0xa0, 0x5a, 0x7c, 0x89, 0x0b, 0xdb, 0xaf, 0x54, 0xf9, 0x0c, 0xd7, + 0xc1, 0x47, 0x0f, 0x3f, 0x16, 0xa3, 0xcc, 0xed, 0x5d, 0x18, 0xc5, 0xf7, 0x3f, 0xc9, 0xc3, 0xf8, + 0xe1, 0x4e, 0x75, 0xbb, 0x52, 0xdd, 0x2d, 0xbe, 0xc4, 0x07, 0xc6, 0xe3, 0x6a, 0x95, 0x0f, 0x34, + 0x32, 0x05, 0xb9, 0xad, 0x83, 0xfd, 0xc3, 0xbd, 0x9d, 0xda, 0xce, 0x76, 0x31, 0xc3, 0xf1, 0x7e, + 0x54, 0xd9, 0xdb, 0xdb, 0xd9, 0x2e, 0x66, 0x49, 0x0e, 0x46, 0x77, 0x0c, 0xe3, 0xc0, 0x28, 0x7e, + 0x5d, 0xfe, 0x61, 0x11, 0xc6, 0xf7, 0xcd, 0x8e, 0xd9, 0x64, 0x3d, 0xd2, 0x86, 0xbc, 0xd2, 0xef, + 0x24, 0x8b, 0xe8, 0xc0, 0xfe, 0x66, 0x6a, 0x69, 0xbe, 0x7f, 0x81, 0x97, 0xad, 0x8d, 0x5f, 0xfc, + 0xe3, 0xdf, 0xbf, 0xcb, 0xdc, 0xa2, 0x3a, 0xfe, 0xc8, 0x29, 0x85, 0x6e, 0x2a, 0x64, 0xf7, 0x43, + 0x0d, 0x48, 0xf2, 0x39, 0x4c, 0x78, 0x4d, 0x44, 0x22, 0x9a, 0xba, 0x91, 0xf6, 0x66, 0x89, 0x44, + 0x66, 0xb9, 0x96, 0x5b, 0xa8, 0x85, 0x92, 0xb5, 0x90, 0x16, 0x8f, 0x66, 0xf3, 0x1b, 0x6f, 0xa3, + 0x7c, 0x4b, 0xbe, 0x84, 0xbc, 0xd2, 0x5e, 0x95, 0xe6, 0xf4, 0x77, 0x68, 0xa5, 0x39, 0xd1, 0x4e, + 0x2c, 0xbd, 0x83, 0x8a, 0x5e, 0x26, 0xd7, 0x42, 0x8a, 0x14, 0x32, 0x55, 0xd7, 0x29, 0x4c, 0xaa, + 0x0d, 0x51, 0xa2, 0x87, 0x90, 0x2b, 0x7b, 0xb9, 0xb4, 0x10, 0xb3, 0xc2, 0xd5, 0xad, 0xa3, 0xba, + 0x65, 0xb2, 0x14, 0x6b, 0x17, 0x0a, 0x3d, 0xf3, 0xe2, 0x23, 0x7e, 0x61, 0x52, 0xe3, 0xa3, 0x36, + 0x1b, 0x43, 0xf1, 0x09, 0xfa, 0x8a, 0xf4, 0x26, 0x6a, 0x58, 0x8f, 0x8d, 0x0f, 0x92, 0xdd, 0x17, + 0xed, 0x45, 0x72, 0x02, 0x39, 0xbf, 0xeb, 0x49, 0xe6, 0x3d, 0xbc, 0xa1, 0xa6, 0x69, 0x69, 0x36, + 0x3a, 0xcd, 0x35, 0xbc, 0x82, 0x1a, 0xae, 0x91, 0xf5, 0xa8, 0x0d, 0x82, 0x48, 0x75, 0x98, 0x08, + 0xbe, 0x30, 0x64, 0x2e, 0x24, 0xab, 0x2f, 0xf8, 0x8a, 0x09, 0x89, 0xc1, 0x47, 0x9a, 0xcd, 0x6f, + 0xbc, 0x6e, 0xd6, 0xb7, 0xc4, 0x81, 0x42, 0xb8, 0xc9, 0x49, 0x4a, 0x28, 0x2f, 0xb6, 0x6f, 0x5a, + 0xd2, 0x63, 0xd7, 0x94, 0x2c, 0xa0, 0xcb, 0x21, 0x8d, 0x61, 0xca, 0xfb, 0xb2, 0xb3, 0x4a, 0x3e, + 0x03, 0x08, 0x1a, 0x87, 0xc4, 0x8f, 0x74, 0xb8, 0xdd, 0x51, 0x9a, 0xeb, 0x9b, 0xe7, 0x8a, 0xae, + 0xa2, 0xa2, 0x25, 0xb2, 0x18, 0x35, 0xcd, 0x13, 0xf7, 0x0c, 0x66, 0xfa, 0xda, 0x7f, 0x64, 0x05, + 0x65, 0x25, 0xf5, 0x1c, 0x4b, 0xcb, 0x49, 0xcb, 0x4a, 0xb4, 0x4a, 0xab, 0x21, 0x8d, 0x7d, 0xc4, + 0xf7, 0xb5, 0xdb, 0xe4, 0xa9, 0xd2, 0x79, 0xf5, 0x5b, 0x79, 0x2b, 0x61, 0x3b, 0x22, 0x7d, 0x47, + 0xa9, 0x3b, 0xbe, 0xbd, 0x46, 0x6f, 0xa0, 0xee, 0x35, 0xb2, 0x1a, 0x6f, 0xad, 0xaf, 0xa3, 0x83, + 0x0d, 0x78, 0xa5, 0xeb, 0x24, 0xc3, 0x18, 0xdb, 0x59, 0x2b, 0xe9, 0xb1, 0x6b, 0x8a, 0xbe, 0x48, + 0x18, 0xc3, 0x94, 0xdc, 0xd0, 0xef, 0x34, 0xf1, 0x18, 0x8b, 0xf6, 0x86, 0xc8, 0x9a, 0x2f, 0x3a, + 0xa1, 0x8b, 0x55, 0x5a, 0x4d, 0xa1, 0xe0, 0x10, 0xde, 0x42, 0x08, 0xaf, 0xd1, 0x3b, 0x09, 0x9b, + 0x23, 0x8e, 0x93, 0x43, 0xfa, 0x1c, 0x93, 0xca, 0xfb, 0xf3, 0x80, 0x9f, 0x54, 0xe1, 0x66, 0x53, + 0x90, 0x54, 0x6a, 0x43, 0x88, 0x52, 0xd4, 0x79, 0x85, 0xf6, 0x25, 0x95, 0xa4, 0xe2, 0xf2, 0x7f, + 0xab, 0xc1, 0x62, 0xc2, 0xa3, 0x88, 0x5c, 0x13, 0x57, 0xe1, 0xd4, 0x77, 0x4f, 0x69, 0x3d, 0x9d, + 0x88, 0xe3, 0xd8, 0x44, 0x1c, 0xaf, 0xd0, 0xeb, 0x21, 0x1c, 0x09, 0x2c, 0x1c, 0xd4, 0x1f, 0x34, + 0x58, 0xdc, 0x4d, 0x05, 0xb5, 0x3b, 0x0c, 0xa8, 0xb4, 0x47, 0x17, 0x7d, 0x1b, 0x41, 0xbd, 0x4e, + 0x36, 0x93, 0x73, 0x22, 0x60, 0xd9, 0xfc, 0xc6, 0xbb, 0x48, 0x7d, 0x4b, 0xfe, 0xa8, 0x41, 0x29, + 0xf9, 0x9d, 0x41, 0x6e, 0xa4, 0xa8, 0x56, 0x4f, 0x82, 0xeb, 0x03, 0xe9, 0x38, 0xca, 0xfb, 0x88, + 0xf2, 0x0d, 0x52, 0x1e, 0x02, 0x25, 0xe7, 0x52, 0x8b, 0xec, 0xf7, 0x1a, 0x94, 0x92, 0xaf, 0xd6, + 0x12, 0xe8, 0xc0, 0x97, 0x86, 0x04, 0x3a, 0xe0, 0x8e, 0x4e, 0xcb, 0x08, 0xf4, 0x55, 0x7a, 0x33, + 0x1a, 0xe3, 0x04, 0x2e, 0x1e, 0x66, 0xe9, 0xc9, 0x74, 0x80, 0xbb, 0x43, 0x02, 0x1c, 0x70, 0x8d, + 0x4f, 0xf6, 0x64, 0x02, 0x97, 0x1a, 0xf2, 0x3f, 0x69, 0xb0, 0x92, 0x7a, 0x35, 0x25, 0xaf, 0xa4, + 0x63, 0x50, 0x03, 0x7f, 0x73, 0x18, 0x52, 0x8e, 0xf8, 0x7d, 0x44, 0xfc, 0x36, 0x79, 0x73, 0x38, + 0xc4, 0xd1, 0xf0, 0x7f, 0x0a, 0x39, 0xbf, 0xbd, 0x27, 0xcf, 0xf1, 0x68, 0x67, 0x51, 0x9e, 0xe3, + 0x91, 0x2e, 0xa0, 0xbc, 0x8b, 0xd0, 0x85, 0x70, 0x28, 0x3d, 0x22, 0x1e, 0x39, 0x29, 0x1b, 0x9b, + 0x47, 0x8a, 0x6c, 0xb5, 0x81, 0xa5, 0xc8, 0x56, 0x9a, 0x78, 0xc9, 0xb2, 0x91, 0x88, 0xcb, 0x7e, + 0x06, 0x33, 0x7d, 0x3d, 0x61, 0x79, 0xda, 0x24, 0x35, 0xa8, 0xe5, 0x69, 0x93, 0xd0, 0x4a, 0x96, + 0x27, 0x1d, 0x5d, 0x8d, 0x1c, 0xe2, 0x11, 0x62, 0xae, 0xdb, 0x16, 0x3f, 0xb2, 0x2b, 0x9d, 0x44, + 0xe2, 0x1f, 0x64, 0x31, 0x9d, 0xc7, 0xd2, 0x52, 0xfc, 0x22, 0xd7, 0x7a, 0x1d, 0xb5, 0xae, 0x92, + 0x2b, 0x7d, 0x3b, 0x57, 0x95, 0xfe, 0x95, 0x38, 0xe1, 0x82, 0xe6, 0xa1, 0x72, 0xc2, 0xf5, 0x75, + 0x22, 0x95, 0x13, 0x2e, 0xd2, 0x6d, 0xa4, 0xd7, 0x50, 0xdb, 0x0a, 0x59, 0x8e, 0xd5, 0x26, 0x28, + 0xcb, 0x35, 0x80, 0xa0, 0x6c, 0x90, 0x0f, 0x7f, 0x9a, 0xc3, 0xb5, 0x6c, 0xc1, 0x54, 0x28, 0x21, + 0xc9, 0xc7, 0x2f, 0xea, 0x10, 0x3d, 0x19, 0xc3, 0xff, 0x4b, 0xde, 0xfb, 0x6f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x05, 0xd2, 0x81, 0x35, 0x5f, 0x29, 0x00, 0x00, } diff --git a/pkg/api/api.pb.gw.go b/pkg/api/api.pb.gw.go index 3d726c3494b..8903e6991ec 100644 --- a/pkg/api/api.pb.gw.go +++ b/pkg/api/api.pb.gw.go @@ -68,6 +68,33 @@ func request_Manager_GetStudy_0(ctx context.Context, marshaler runtime.Marshaler } +func request_Manager_DeleteStudy_0(ctx context.Context, marshaler runtime.Marshaler, client ManagerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteStudyRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["study_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "study_id") + } + + protoReq.StudyId, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "study_id", err) + } + + msg, err := client.DeleteStudy(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + func request_Manager_GetStudyList_0(ctx context.Context, marshaler runtime.Marshaler, client ManagerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetStudyListRequest var metadata runtime.ServerMetadata @@ -530,6 +557,35 @@ func RegisterManagerHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr }) + mux.Handle("GET", pattern_Manager_DeleteStudy_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(ctx) + defer cancel() + if cn, ok := w.(http.CloseNotifier); ok { + go func(done <-chan struct{}, closed <-chan bool) { + select { + case <-done: + case <-closed: + cancel() + } + }(ctx.Done(), cn.CloseNotify()) + } + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Manager_DeleteStudy_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Manager_DeleteStudy_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Manager_GetStudyList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -1176,6 +1232,8 @@ var ( pattern_Manager_GetStudy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "Manager", "GetStudy", "study_id"}, "")) + pattern_Manager_DeleteStudy_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "Manager", "DeleteStudy", "study_id"}, "")) + pattern_Manager_GetStudyList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "Manager", "GetStudyList"}, "")) pattern_Manager_CreateTrial_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "Manager", "CreateTrial"}, "")) @@ -1226,6 +1284,8 @@ var ( forward_Manager_GetStudy_0 = runtime.ForwardResponseMessage + forward_Manager_DeleteStudy_0 = runtime.ForwardResponseMessage + forward_Manager_GetStudyList_0 = runtime.ForwardResponseMessage forward_Manager_CreateTrial_0 = runtime.ForwardResponseMessage diff --git a/pkg/api/api.proto b/pkg/api/api.proto index f4e38393ab4..e42a1376185 100644 --- a/pkg/api/api.proto +++ b/pkg/api/api.proto @@ -33,6 +33,14 @@ service Manager { }; }; /** + * Delete a Study from DB by Study ID. + */ + rpc DeleteStudy(DeleteStudyRequest) returns (DeleteStudyReply){ + option (google.api.http) = { + get: "/api/Manager/DeleteStudy/{study_id}" + }; + }; + /** * Get all Study Configs from DB. */ rpc GetStudyList(GetStudyListRequest) returns (GetStudyListReply){ @@ -413,6 +421,20 @@ message CreateStudyReply { } /** + * Delete a Study from DB by Study ID. + */ +message DeleteStudyRequest { + string study_id = 1; +} + +/** + * Return deleted Study ID. + */ +message DeleteStudyReply { + string study_id = 1; +} + +/** * Get a Study Config from DB by ID of Study. */ message GetStudyRequest { diff --git a/pkg/api/api.swagger.json b/pkg/api/api.swagger.json index 937bb3fde2c..2630a27dbf6 100644 --- a/pkg/api/api.swagger.json +++ b/pkg/api/api.swagger.json @@ -69,6 +69,31 @@ ] } }, + "/api/Manager/DeleteStudy/{study_id}": { + "get": { + "summary": "* \nDelete a Study from DB by Study ID.", + "operationId": "DeleteStudy", + "responses": { + "200": { + "description": "", + "schema": { + "$ref": "#/definitions/apiDeleteStudyReply" + } + } + }, + "parameters": [ + { + "name": "study_id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "Manager" + ] + } + }, "/api/Manager/GetEarlyStoppingParameterList/{study_id}": { "get": { "operationId": "GetEarlyStoppingParameterList", @@ -211,7 +236,7 @@ }, "/api/Manager/GetStudyList": { "get": { - "summary": "* \nGet all Study Configs from DB.", + "summary": "*\nGet all Study Configs from DB.", "operationId": "GetStudyList", "responses": { "200": { @@ -689,6 +714,15 @@ } } }, + "apiDeleteStudyReply": { + "type": "object", + "properties": { + "study_id": { + "type": "string" + } + }, + "description": "*\nReturn deleted Study ID." + }, "apiEarlyStoppingParameter": { "type": "object", "properties": { diff --git a/pkg/api/gen-doc/api.md b/pkg/api/gen-doc/api.md index 8510bf6add4..c0aa3b664d8 100644 --- a/pkg/api/gen-doc/api.md +++ b/pkg/api/gen-doc/api.md @@ -9,6 +9,8 @@ - [CreateTrialReply](#api.CreateTrialReply) - [CreateTrialRequest](#api.CreateTrialRequest) - [DataSetInfo](#api.DataSetInfo) + - [DeleteStudyReply](#api.DeleteStudyReply) + - [DeleteStudyRequest](#api.DeleteStudyRequest) - [EarlyStoppingParameter](#api.EarlyStoppingParameter) - [EarlyStoppingParameterSet](#api.EarlyStoppingParameterSet) - [FeasibleSpace](#api.FeasibleSpace) @@ -178,6 +180,36 @@ Generate an unique ID and store the Trial to DB. + + +### DeleteStudyReply +Return deleted Study ID. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| study_id | [string](#string) | | | + + + + + + + + +### DeleteStudyRequest +Delete a Study from DB by Study ID. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| study_id | [string](#string) | | | + + + + + + ### EarlyStoppingParameter @@ -1330,6 +1362,7 @@ https://cloud.google.com/service-infrastructure/docs/service-management/referenc | ----------- | ------------ | ------------- | ------------| | CreateStudy | [CreateStudyRequest](#api.CreateStudyRequest) | [CreateStudyReply](#api.CreateStudyRequest) | Create a Study from Study Config. Generate a unique ID and store the Study to DB. | | GetStudy | [GetStudyRequest](#api.GetStudyRequest) | [GetStudyReply](#api.GetStudyRequest) | Get a Study Config from DB by ID of Study. | +| DeleteStudy | [DeleteStudyRequest](#api.DeleteStudyRequest) | [DeleteStudyReply](#api.DeleteStudyRequest) | Delete a Study from DB by Study ID. | | GetStudyList | [GetStudyListRequest](#api.GetStudyListRequest) | [GetStudyListReply](#api.GetStudyListRequest) | Get all Study Configs from DB. | | CreateTrial | [CreateTrialRequest](#api.CreateTrialRequest) | [CreateTrialReply](#api.CreateTrialRequest) | Create a Trial from Trial Config. Generate a unique ID and store the Trial to DB. | | GetTrials | [GetTrialsRequest](#api.GetTrialsRequest) | [GetTrialsReply](#api.GetTrialsRequest) | Get a Trial Configs from DB by ID of Study. | diff --git a/pkg/api/gen-doc/index.html b/pkg/api/gen-doc/index.html index fa0b014dd7f..f36dc065195 100644 --- a/pkg/api/gen-doc/index.html +++ b/pkg/api/gen-doc/index.html @@ -198,6 +198,14 @@

Table of Contents

MDataSetInfo +
  • + MDeleteStudyReply +
  • + +
  • + MDeleteStudyRequest +
  • +
  • MEarlyStoppingParameter
  • @@ -638,6 +646,52 @@

    DataSetInfo

    +

    DeleteStudyReply

    +

    Return deleted Study ID.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    study_idstring

    + + + + +

    DeleteStudyRequest

    +

    Delete a Study from DB by Study ID.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    study_idstring

    + + + +

    EarlyStoppingParameter

    Parameter for EarlyStopping service. Key-value format.

    @@ -2773,6 +2827,13 @@

    Manager

    Get a Study Config from DB by ID of Study.

    + + DeleteStudy + DeleteStudyRequest + DeleteStudyReply +

    Delete a Study from DB by Study ID.

    + + GetStudyList GetStudyListRequest diff --git a/pkg/api/python/api_pb2.py b/pkg/api/python/api_pb2.py index 3bef6a7c8c7..3ec65a9995d 100644 --- a/pkg/api/python/api_pb2.py +++ b/pkg/api/python/api_pb2.py @@ -21,7 +21,7 @@ name='api.proto', package='api', syntax='proto3', - serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"7\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x83\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\xe2\x02\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\xff\x16\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels2T\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') + serialized_pb=_b('\n\tapi.proto\x12\x03\x61pi\x1a\x1cgoogle/api/annotations.proto\"7\n\rFeasibleSpace\x12\x0b\n\x03max\x18\x01 \x01(\t\x12\x0b\n\x03min\x18\x02 \x01(\t\x12\x0c\n\x04list\x18\x03 \x03(\t\"q\n\x0fParameterConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12$\n\x08\x66\x65\x61sible\x18\x03 \x01(\x0b\x32\x12.api.FeasibleSpace\"T\n\tParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x0eparameter_type\x18\x02 \x01(\x0e\x32\x12.api.ParameterType\x12\r\n\x05value\x18\x03 \x01(\t\"l\n\rMetricsLogSet\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12%\n\x0cmetrics_logs\x18\x02 \x03(\x0b\x32\x0f.api.MetricsLog\x12!\n\rworker_status\x18\x03 \x01(\x0e\x32\n.api.State\"&\n\x07Metrics\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x10MetricsValueTime\x12\x0c\n\x04time\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"A\n\nMetricsLog\x12\x0c\n\x04name\x18\x01 \x01(\t\x12%\n\x06values\x18\x02 \x03(\x0b\x32\x15.api.MetricsValueTime\"2\n\x13SuggestionParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"5\n\x16\x45\x61rlyStoppingParameter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\"\n\x03Tag\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"M\n\rStudyOverview\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\n\n\x02id\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\"\x83\x01\n\x05Trial\x12\x10\n\x08trial_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12%\n\rparameter_set\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x17\n\x0fobjective_value\x18\x04 \x01(\t\x12\x16\n\x04tags\x18\x05 \x03(\x0b\x32\x08.api.Tag\"\x97\x01\n\x06Worker\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x10\n\x08study_id\x18\x02 \x01(\t\x12\x10\n\x08trial_id\x18\x03 \x01(\t\x12\x0c\n\x04Type\x18\x04 \x01(\t\x12\x1a\n\x06status\x18\x05 \x01(\x0e\x32\n.api.State\x12\x14\n\x0cTemplatePath\x18\x06 \x01(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\"\xe2\x02\n\x0bStudyConfig\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x30\n\x11optimization_type\x18\x03 \x01(\x0e\x32\x15.api.OptimizationType\x12\x19\n\x11optimization_goal\x18\x04 \x01(\x01\x12<\n\x11parameter_configs\x18\x05 \x01(\x0b\x32!.api.StudyConfig.ParameterConfigs\x12\x1a\n\x12\x61\x63\x63\x65ss_permissions\x18\x06 \x03(\t\x12\x16\n\x04tags\x18\x07 \x03(\x0b\x32\x08.api.Tag\x12\x1c\n\x14objective_value_name\x18\x08 \x01(\t\x12\x0f\n\x07metrics\x18\t \x03(\t\x12\r\n\x05jobId\x18\n \x01(\t\x1a\x39\n\x10ParameterConfigs\x12%\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\x14.api.ParameterConfig\"<\n\x12\x43reateStudyRequest\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"$\n\x10\x43reateStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"&\n\x12\x44\x65leteStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"$\n\x10\x44\x65leteStudyReply\x12\x10\n\x08study_id\x18\x01 \x01(\t\"#\n\x0fGetStudyRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"7\n\rGetStudyReply\x12&\n\x0cstudy_config\x18\x01 \x01(\x0b\x32\x10.api.StudyConfig\"\x15\n\x13GetStudyListRequest\"@\n\x11GetStudyListReply\x12+\n\x0fstudy_overviews\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"/\n\x12\x43reateTrialRequest\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"$\n\x10\x43reateTrialReply\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"$\n\x10GetTrialsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\",\n\x0eGetTrialsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"#\n\x0fGetTrialRequest\x12\x10\n\x08trial_id\x18\x01 \x01(\t\"*\n\rGetTrialReply\x12\x19\n\x05trial\x18\x01 \x01(\x0b\x32\n.api.Trial\"4\n\x15RegisterWorkerRequest\x12\x1b\n\x06worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\"(\n\x13RegisterWorkerReply\x12\x11\n\tworker_id\x18\x01 \x01(\t\"O\n\x12StopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x13\n\x0bis_complete\x18\x03 \x01(\x08\"\x12\n\x10StopWorkersReply\"J\n\x11GetWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\"/\n\x0fGetWorkersReply\x12\x1c\n\x07workers\x18\x01 \x03(\x0b\x32\x0b.api.Worker\"I\n\x18UpdateWorkerStateRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x1a\n\x06status\x18\x02 \x01(\x0e\x32\n.api.State\"\x18\n\x16UpdateWorkerStateReply\"j\n\x18GetWorkerFullInfoRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x10\n\x08trial_id\x18\x02 \x01(\t\x12\x11\n\tworker_id\x18\x03 \x01(\t\x12\x17\n\x0fonly_latest_log\x18\x04 \x01(\x08\"{\n\x0eWorkerFullInfo\x12\x1b\n\x06Worker\x18\x01 \x01(\x0b\x32\x0b.api.Worker\x12%\n\rparameter_set\x18\x02 \x03(\x0b\x32\x0e.api.Parameter\x12%\n\x0cmetrics_logs\x18\x03 \x03(\x0b\x32\x0f.api.MetricsLog\"H\n\x16GetWorkerFullInfoReply\x12.\n\x11worker_full_infos\x18\x01 \x03(\x0b\x32\x13.api.WorkerFullInfo\"\x89\x01\n\x15GetSuggestionsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x16\n\x0erequest_number\x18\x03 \x01(\x05\x12\x16\n\x0elog_worker_ids\x18\x04 \x03(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\"1\n\x13GetSuggestionsReply\x12\x1a\n\x06trials\x18\x01 \x03(\x0b\x32\n.api.Trial\"c\n\x1bGetShouldStopWorkersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x05 \x01(\t\";\n\x19GetShouldStopWorkersReply\x12\x1e\n\x16should_stop_worker_ids\x18\x01 \x03(\t\"P\n\x11GetMetricsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x12\n\nworker_ids\x18\x02 \x03(\t\x12\x15\n\rmetrics_names\x18\x03 \x03(\t\"?\n\x0fGetMetricsReply\x12,\n\x10metrics_log_sets\x18\x01 \x03(\x0b\x32\x12.api.MetricsLogSet\"Z\n\x18ReportMetricsLogsRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12,\n\x10metrics_log_sets\x18\x03 \x03(\x0b\x32\x12.api.MetricsLogSet\"\x18\n\x16ReportMetricsLogsReply\"\x89\x01\n\tModelInfo\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\"\n\nparameters\x18\x03 \x03(\x0b\x32\x0e.api.Parameter\x12\x1d\n\x07metrics\x18\x04 \x03(\x0b\x32\x0c.api.Metrics\x12\x12\n\nmodel_path\x18\x05 \x01(\t\")\n\x0b\x44\x61taSetInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"J\n\x10SaveStudyRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\r\n\x05owner\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\"\x10\n\x0eSaveStudyReply\"k\n\x10SaveModelRequest\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\x12\"\n\x08\x64\x61ta_set\x18\x02 \x01(\x0b\x32\x10.api.DataSetInfo\x12\x14\n\x0ctensor_board\x18\x03 \x01(\x08\"\x10\n\x0eSaveModelReply\"\x18\n\x16GetSavedStudiesRequest\";\n\x14GetSavedStudiesReply\x12#\n\x07studies\x18\x01 \x03(\x0b\x32\x12.api.StudyOverview\"+\n\x15GetSavedModelsRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\"5\n\x13GetSavedModelsReply\x12\x1e\n\x06models\x18\x01 \x03(\x0b\x32\x0e.api.ModelInfo\"=\n\x14GetSavedModelRequest\x12\x12\n\nstudy_name\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"3\n\x12GetSavedModelReply\x12\x1d\n\x05model\x18\x01 \x01(\x0b\x32\x0e.api.ModelInfo\"\x9b\x01\n\x1eSetSuggestionParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x04 \x03(\x0b\x32\x18.api.SuggestionParameter\"0\n\x1cSetSuggestionParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"2\n\x1eGetSuggestionParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"W\n\x1cGetSuggestionParametersReply\x12\x37\n\x15suggestion_parameters\x18\x01 \x03(\x0b\x32\x18.api.SuggestionParameter\"5\n!GetSuggestionParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x81\x01\n\x16SuggestionParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12\x1c\n\x14suggestion_algorithm\x18\x02 \x01(\t\x12\x37\n\x15suggestion_parameters\x18\x03 \x03(\x0b\x32\x18.api.SuggestionParameter\"a\n\x1fGetSuggestionParameterListReply\x12>\n\x19suggestion_parameter_sets\x18\x01 \x03(\x0b\x32\x1b.api.SuggestionParameterSet\")\n\x15StopSuggestionRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x15\n\x13StopSuggestionReply\"\xa9\x01\n!SetEarlyStoppingParametersRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12\x10\n\x08param_id\x18\x03 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x04 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"3\n\x1fSetEarlyStoppingParametersReply\x12\x10\n\x08param_id\x18\x01 \x01(\t\"5\n!GetEarlyStoppingParametersRequest\x12\x10\n\x08param_id\x18\x01 \x01(\t\"a\n\x1fGetEarlyStoppingParametersReply\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x01 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"8\n$GetEarlyStoppingParameterListRequest\x12\x10\n\x08study_id\x18\x01 \x01(\t\"\x8f\x01\n\x19\x45\x61rlyStoppingParameterSet\x12\x10\n\x08param_id\x18\x01 \x01(\t\x12 \n\x18\x65\x61rly_stopping_algorithm\x18\x02 \x01(\t\x12>\n\x19\x65\x61rly_stopping_parameters\x18\x03 \x03(\x0b\x32\x1b.api.EarlyStoppingParameter\"k\n\"GetEarlyStoppingParameterListReply\x12\x45\n\x1d\x65\x61rly_stopping_parameter_sets\x18\x01 \x03(\x0b\x32\x1e.api.EarlyStoppingParameterSet*U\n\rParameterType\x12\x10\n\x0cUNKNOWN_TYPE\x10\x00\x12\n\n\x06\x44OUBLE\x10\x01\x12\x07\n\x03INT\x10\x02\x12\x0c\n\x08\x44ISCRETE\x10\x03\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x04*H\n\x10OptimizationType\x12\x18\n\x14UNKNOWN_OPTIMIZATION\x10\x00\x12\x0c\n\x08MINIMIZE\x10\x01\x12\x0c\n\x08MAXIMIZE\x10\x02*G\n\x05State\x12\x0b\n\x07PENDING\x10\x00\x12\x0b\n\x07RUNNING\x10\x01\x12\r\n\tCOMPLETED\x10\x02\x12\n\n\x06KILLED\x10\x03\x12\t\n\x05\x45RROR\x10x2\xeb\x17\n\x07Manager\x12m\n\x0b\x43reateStudy\x12\x17.api.CreateStudyRequest\x1a\x15.api.CreateStudyReply\".\x82\xd3\xe4\x93\x02(\"\x18/api/Manager/CreateStudy:\x0cstudy_config\x12^\n\x08GetStudy\x12\x14.api.GetStudyRequest\x1a\x12.api.GetStudyReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetStudy/{study_id}\x12j\n\x0b\x44\x65leteStudy\x12\x17.api.DeleteStudyRequest\x1a\x15.api.DeleteStudyReply\"+\x82\xd3\xe4\x93\x02%\x12#/api/Manager/DeleteStudy/{study_id}\x12\x63\n\x0cGetStudyList\x12\x18.api.GetStudyListRequest\x1a\x16.api.GetStudyListReply\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/api/Manager/GetStudyList\x12\x66\n\x0b\x43reateTrial\x12\x17.api.CreateTrialRequest\x1a\x15.api.CreateTrialReply\"\'\x82\xd3\xe4\x93\x02!\"\x18/api/Manager/CreateTrial:\x05trial\x12\x62\n\tGetTrials\x12\x15.api.GetTrialsRequest\x1a\x13.api.GetTrialsReply\")\x82\xd3\xe4\x93\x02#\x12!/api/Manager/GetTrials/{study_id}\x12^\n\x08GetTrial\x12\x14.api.GetTrialRequest\x1a\x12.api.GetTrialReply\"(\x82\xd3\xe4\x93\x02\"\x12 /api/Manager/GetTrial/{trial_id}\x12s\n\x0eRegisterWorker\x12\x1a.api.RegisterWorkerRequest\x1a\x18.api.RegisterWorkerReply\"+\x82\xd3\xe4\x93\x02%\"\x1b/api/Manager/RegisterWorker:\x06worker\x12[\n\nGetWorkers\x12\x16.api.GetWorkersRequest\x1a\x14.api.GetWorkersReply\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/api/Manager/GetWorkers\x12z\n\x11UpdateWorkerState\x12\x1d.api.UpdateWorkerStateRequest\x1a\x1b.api.UpdateWorkerStateReply\")\x82\xd3\xe4\x93\x02#\x1a\x1e/api/Manager/UpdateWorkerState:\x01*\x12w\n\x11GetWorkerFullInfo\x12\x1d.api.GetWorkerFullInfoRequest\x1a\x1b.api.GetWorkerFullInfoReply\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/Manager/GetWorkerFullInfo\x12n\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply\"&\x82\xd3\xe4\x93\x02 \"\x1b/api/Manager/GetSuggestions:\x01*\x12\x90\x01\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReply\"6\x82\xd3\xe4\x93\x02\x30\"+/api/Manager/GetTrials/GetShouldStopWorkers:\x01*\x12^\n\nGetMetrics\x12\x16.api.GetMetricsRequest\x1a\x14.api.GetMetricsReply\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/api/Manager/GetMetrics:\x01*\x12\x92\x01\n\x17SetSuggestionParameters\x12#.api.SetSuggestionParametersRequest\x1a!.api.SetSuggestionParametersReply\"/\x82\xd3\xe4\x93\x02)\"$/api/Manager/SetSuggestionParameters:\x01*\x12\x9a\x01\n\x17GetSuggestionParameters\x12#.api.GetSuggestionParametersRequest\x1a!.api.GetSuggestionParametersReply\"7\x82\xd3\xe4\x93\x02\x31\x12//api/Manager/GetSuggestionParameters/{param_id}\x12\xa6\x01\n\x1aGetSuggestionParameterList\x12&.api.GetSuggestionParameterListRequest\x1a$.api.GetSuggestionParameterListReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetSuggestionParameterList/{study_id}\x12\x9e\x01\n\x1aSetEarlyStoppingParameters\x12&.api.SetEarlyStoppingParametersRequest\x1a$.api.SetEarlyStoppingParametersReply\"2\x82\xd3\xe4\x93\x02,\"\'/api/Manager/SetEarlyStoppingParameters:\x01*\x12\xa6\x01\n\x1aGetEarlyStoppingParameters\x12&.api.GetEarlyStoppingParametersRequest\x1a$.api.GetEarlyStoppingParametersReply\":\x82\xd3\xe4\x93\x02\x34\x12\x32/api/Manager/GetEarlyStoppingParameters/{param_id}\x12\xb2\x01\n\x1dGetEarlyStoppingParameterList\x12).api.GetEarlyStoppingParameterListRequest\x1a\'.api.GetEarlyStoppingParameterListReply\"=\x82\xd3\xe4\x93\x02\x37\x12\x35/api/Manager/GetEarlyStoppingParameterList/{study_id}\x12Z\n\tSaveStudy\x12\x15.api.SaveStudyRequest\x1a\x13.api.SaveStudyReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveStudy:\x01*\x12Z\n\tSaveModel\x12\x15.api.SaveModelRequest\x1a\x13.api.SaveModelReply\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/api/Manager/SaveModel:\x01*\x12z\n\x11ReportMetricsLogs\x12\x1d.api.ReportMetricsLogsRequest\x1a\x1b.api.ReportMetricsLogsReply\")\x82\xd3\xe4\x93\x02#\"\x1e/api/Manager/ReportMetricsLogs:\x01*\x12o\n\x0fGetSavedStudies\x12\x1b.api.GetSavedStudiesRequest\x1a\x19.api.GetSavedStudiesReply\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/Manager/GetSavedStudies\x12k\n\x0eGetSavedModels\x12\x1a.api.GetSavedModelsRequest\x1a\x18.api.GetSavedModelsReply\"#\x82\xd3\xe4\x93\x02\x1d\x12\x1b/api/Manager/GetSavedModels2T\n\nSuggestion\x12\x46\n\x0eGetSuggestions\x12\x1a.api.GetSuggestionsRequest\x1a\x18.api.GetSuggestionsReply2i\n\rEarlyStopping\x12X\n\x14GetShouldStopWorkers\x12 .api.GetShouldStopWorkersRequest\x1a\x1e.api.GetShouldStopWorkersReplyb\x06proto3') , dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,]) @@ -54,8 +54,8 @@ ], containing_type=None, options=None, - serialized_start=5422, - serialized_end=5507, + serialized_start=5500, + serialized_end=5585, ) _sym_db.RegisterEnumDescriptor(_PARAMETERTYPE) @@ -81,8 +81,8 @@ ], containing_type=None, options=None, - serialized_start=5509, - serialized_end=5581, + serialized_start=5587, + serialized_end=5659, ) _sym_db.RegisterEnumDescriptor(_OPTIMIZATIONTYPE) @@ -116,8 +116,8 @@ ], containing_type=None, options=None, - serialized_start=5583, - serialized_end=5654, + serialized_start=5661, + serialized_end=5732, ) _sym_db.RegisterEnumDescriptor(_STATE) @@ -916,6 +916,68 @@ ) +_DELETESTUDYREQUEST = _descriptor.Descriptor( + name='DeleteStudyRequest', + full_name='api.DeleteStudyRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='study_id', full_name='api.DeleteStudyRequest.study_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1539, + serialized_end=1577, +) + + +_DELETESTUDYREPLY = _descriptor.Descriptor( + name='DeleteStudyReply', + full_name='api.DeleteStudyReply', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='study_id', full_name='api.DeleteStudyReply.study_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=_b("").decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + options=None), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1579, + serialized_end=1615, +) + + _GETSTUDYREQUEST = _descriptor.Descriptor( name='GetStudyRequest', full_name='api.GetStudyRequest', @@ -942,8 +1004,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1539, - serialized_end=1574, + serialized_start=1617, + serialized_end=1652, ) @@ -973,8 +1035,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1576, - serialized_end=1631, + serialized_start=1654, + serialized_end=1709, ) @@ -997,8 +1059,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1633, - serialized_end=1654, + serialized_start=1711, + serialized_end=1732, ) @@ -1028,8 +1090,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1656, - serialized_end=1720, + serialized_start=1734, + serialized_end=1798, ) @@ -1059,8 +1121,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1722, - serialized_end=1769, + serialized_start=1800, + serialized_end=1847, ) @@ -1090,8 +1152,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1771, - serialized_end=1807, + serialized_start=1849, + serialized_end=1885, ) @@ -1121,8 +1183,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1809, - serialized_end=1845, + serialized_start=1887, + serialized_end=1923, ) @@ -1152,8 +1214,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1847, - serialized_end=1891, + serialized_start=1925, + serialized_end=1969, ) @@ -1183,8 +1245,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1893, - serialized_end=1928, + serialized_start=1971, + serialized_end=2006, ) @@ -1214,8 +1276,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1930, - serialized_end=1972, + serialized_start=2008, + serialized_end=2050, ) @@ -1245,8 +1307,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1974, - serialized_end=2026, + serialized_start=2052, + serialized_end=2104, ) @@ -1276,8 +1338,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2028, - serialized_end=2068, + serialized_start=2106, + serialized_end=2146, ) @@ -1321,8 +1383,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2070, - serialized_end=2149, + serialized_start=2148, + serialized_end=2227, ) @@ -1345,8 +1407,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2151, - serialized_end=2169, + serialized_start=2229, + serialized_end=2247, ) @@ -1390,8 +1452,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2171, - serialized_end=2245, + serialized_start=2249, + serialized_end=2323, ) @@ -1421,8 +1483,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2247, - serialized_end=2294, + serialized_start=2325, + serialized_end=2372, ) @@ -1459,8 +1521,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2296, - serialized_end=2369, + serialized_start=2374, + serialized_end=2447, ) @@ -1483,8 +1545,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2371, - serialized_end=2395, + serialized_start=2449, + serialized_end=2473, ) @@ -1535,8 +1597,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2397, - serialized_end=2503, + serialized_start=2475, + serialized_end=2581, ) @@ -1580,8 +1642,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2505, - serialized_end=2628, + serialized_start=2583, + serialized_end=2706, ) @@ -1611,8 +1673,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2630, - serialized_end=2702, + serialized_start=2708, + serialized_end=2780, ) @@ -1670,8 +1732,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2705, - serialized_end=2842, + serialized_start=2783, + serialized_end=2920, ) @@ -1701,8 +1763,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2844, - serialized_end=2893, + serialized_start=2922, + serialized_end=2971, ) @@ -1746,8 +1808,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2895, - serialized_end=2994, + serialized_start=2973, + serialized_end=3072, ) @@ -1777,8 +1839,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2996, - serialized_end=3055, + serialized_start=3074, + serialized_end=3133, ) @@ -1822,8 +1884,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3057, - serialized_end=3137, + serialized_start=3135, + serialized_end=3215, ) @@ -1853,8 +1915,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3139, - serialized_end=3202, + serialized_start=3217, + serialized_end=3280, ) @@ -1891,8 +1953,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3204, - serialized_end=3294, + serialized_start=3282, + serialized_end=3372, ) @@ -1915,8 +1977,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3296, - serialized_end=3320, + serialized_start=3374, + serialized_end=3398, ) @@ -1974,8 +2036,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3323, - serialized_end=3460, + serialized_start=3401, + serialized_end=3538, ) @@ -2012,8 +2074,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3462, - serialized_end=3503, + serialized_start=3540, + serialized_end=3581, ) @@ -2057,8 +2119,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3505, - serialized_end=3579, + serialized_start=3583, + serialized_end=3657, ) @@ -2081,8 +2143,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3581, - serialized_end=3597, + serialized_start=3659, + serialized_end=3675, ) @@ -2126,8 +2188,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3599, - serialized_end=3706, + serialized_start=3677, + serialized_end=3784, ) @@ -2150,8 +2212,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3708, - serialized_end=3724, + serialized_start=3786, + serialized_end=3802, ) @@ -2174,8 +2236,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3726, - serialized_end=3750, + serialized_start=3804, + serialized_end=3828, ) @@ -2205,8 +2267,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3752, - serialized_end=3811, + serialized_start=3830, + serialized_end=3889, ) @@ -2236,8 +2298,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3813, - serialized_end=3856, + serialized_start=3891, + serialized_end=3934, ) @@ -2267,8 +2329,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3858, - serialized_end=3911, + serialized_start=3936, + serialized_end=3989, ) @@ -2305,8 +2367,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3913, - serialized_end=3974, + serialized_start=3991, + serialized_end=4052, ) @@ -2336,8 +2398,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3976, - serialized_end=4027, + serialized_start=4054, + serialized_end=4105, ) @@ -2388,8 +2450,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4030, - serialized_end=4185, + serialized_start=4108, + serialized_end=4263, ) @@ -2419,8 +2481,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4187, - serialized_end=4235, + serialized_start=4265, + serialized_end=4313, ) @@ -2450,8 +2512,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4237, - serialized_end=4287, + serialized_start=4315, + serialized_end=4365, ) @@ -2481,8 +2543,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4289, - serialized_end=4376, + serialized_start=4367, + serialized_end=4454, ) @@ -2512,8 +2574,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4378, - serialized_end=4431, + serialized_start=4456, + serialized_end=4509, ) @@ -2557,8 +2619,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4434, - serialized_end=4563, + serialized_start=4512, + serialized_end=4641, ) @@ -2588,8 +2650,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4565, - serialized_end=4662, + serialized_start=4643, + serialized_end=4740, ) @@ -2619,8 +2681,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4664, - serialized_end=4705, + serialized_start=4742, + serialized_end=4783, ) @@ -2643,8 +2705,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4707, - serialized_end=4728, + serialized_start=4785, + serialized_end=4806, ) @@ -2695,8 +2757,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4731, - serialized_end=4900, + serialized_start=4809, + serialized_end=4978, ) @@ -2726,8 +2788,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4902, - serialized_end=4953, + serialized_start=4980, + serialized_end=5031, ) @@ -2757,8 +2819,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4955, - serialized_end=5008, + serialized_start=5033, + serialized_end=5086, ) @@ -2788,8 +2850,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5010, - serialized_end=5107, + serialized_start=5088, + serialized_end=5185, ) @@ -2819,8 +2881,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5109, - serialized_end=5165, + serialized_start=5187, + serialized_end=5243, ) @@ -2864,8 +2926,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5168, - serialized_end=5311, + serialized_start=5246, + serialized_end=5389, ) @@ -2895,8 +2957,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5313, - serialized_end=5420, + serialized_start=5391, + serialized_end=5498, ) _PARAMETERCONFIG.fields_by_name['parameter_type'].enum_type = _PARAMETERTYPE @@ -2961,6 +3023,8 @@ DESCRIPTOR.message_types_by_name['StudyConfig'] = _STUDYCONFIG DESCRIPTOR.message_types_by_name['CreateStudyRequest'] = _CREATESTUDYREQUEST DESCRIPTOR.message_types_by_name['CreateStudyReply'] = _CREATESTUDYREPLY +DESCRIPTOR.message_types_by_name['DeleteStudyRequest'] = _DELETESTUDYREQUEST +DESCRIPTOR.message_types_by_name['DeleteStudyReply'] = _DELETESTUDYREPLY DESCRIPTOR.message_types_by_name['GetStudyRequest'] = _GETSTUDYREQUEST DESCRIPTOR.message_types_by_name['GetStudyReply'] = _GETSTUDYREPLY DESCRIPTOR.message_types_by_name['GetStudyListRequest'] = _GETSTUDYLISTREQUEST @@ -3143,6 +3207,20 @@ )) _sym_db.RegisterMessage(CreateStudyReply) +DeleteStudyRequest = _reflection.GeneratedProtocolMessageType('DeleteStudyRequest', (_message.Message,), dict( + DESCRIPTOR = _DELETESTUDYREQUEST, + __module__ = 'api_pb2' + # @@protoc_insertion_point(class_scope:api.DeleteStudyRequest) + )) +_sym_db.RegisterMessage(DeleteStudyRequest) + +DeleteStudyReply = _reflection.GeneratedProtocolMessageType('DeleteStudyReply', (_message.Message,), dict( + DESCRIPTOR = _DELETESTUDYREPLY, + __module__ = 'api_pb2' + # @@protoc_insertion_point(class_scope:api.DeleteStudyReply) + )) +_sym_db.RegisterMessage(DeleteStudyReply) + GetStudyRequest = _reflection.GeneratedProtocolMessageType('GetStudyRequest', (_message.Message,), dict( DESCRIPTOR = _GETSTUDYREQUEST, __module__ = 'api_pb2' @@ -3550,8 +3628,8 @@ file=DESCRIPTOR, index=0, options=None, - serialized_start=5657, - serialized_end=8600, + serialized_start=5735, + serialized_end=8786, methods=[ _descriptor.MethodDescriptor( name='CreateStudy', @@ -3571,10 +3649,19 @@ output_type=_GETSTUDYREPLY, options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002\"\022 /api/Manager/GetStudy/{study_id}')), ), + _descriptor.MethodDescriptor( + name='DeleteStudy', + full_name='api.Manager.DeleteStudy', + index=2, + containing_service=None, + input_type=_DELETESTUDYREQUEST, + output_type=_DELETESTUDYREPLY, + options=_descriptor._ParseOptions(descriptor_pb2.MethodOptions(), _b('\202\323\344\223\002%\022#/api/Manager/DeleteStudy/{study_id}')), + ), _descriptor.MethodDescriptor( name='GetStudyList', full_name='api.Manager.GetStudyList', - index=2, + index=3, containing_service=None, input_type=_GETSTUDYLISTREQUEST, output_type=_GETSTUDYLISTREPLY, @@ -3583,7 +3670,7 @@ _descriptor.MethodDescriptor( name='CreateTrial', full_name='api.Manager.CreateTrial', - index=3, + index=4, containing_service=None, input_type=_CREATETRIALREQUEST, output_type=_CREATETRIALREPLY, @@ -3592,7 +3679,7 @@ _descriptor.MethodDescriptor( name='GetTrials', full_name='api.Manager.GetTrials', - index=4, + index=5, containing_service=None, input_type=_GETTRIALSREQUEST, output_type=_GETTRIALSREPLY, @@ -3601,7 +3688,7 @@ _descriptor.MethodDescriptor( name='GetTrial', full_name='api.Manager.GetTrial', - index=5, + index=6, containing_service=None, input_type=_GETTRIALREQUEST, output_type=_GETTRIALREPLY, @@ -3610,7 +3697,7 @@ _descriptor.MethodDescriptor( name='RegisterWorker', full_name='api.Manager.RegisterWorker', - index=6, + index=7, containing_service=None, input_type=_REGISTERWORKERREQUEST, output_type=_REGISTERWORKERREPLY, @@ -3619,7 +3706,7 @@ _descriptor.MethodDescriptor( name='GetWorkers', full_name='api.Manager.GetWorkers', - index=7, + index=8, containing_service=None, input_type=_GETWORKERSREQUEST, output_type=_GETWORKERSREPLY, @@ -3628,7 +3715,7 @@ _descriptor.MethodDescriptor( name='UpdateWorkerState', full_name='api.Manager.UpdateWorkerState', - index=8, + index=9, containing_service=None, input_type=_UPDATEWORKERSTATEREQUEST, output_type=_UPDATEWORKERSTATEREPLY, @@ -3637,7 +3724,7 @@ _descriptor.MethodDescriptor( name='GetWorkerFullInfo', full_name='api.Manager.GetWorkerFullInfo', - index=9, + index=10, containing_service=None, input_type=_GETWORKERFULLINFOREQUEST, output_type=_GETWORKERFULLINFOREPLY, @@ -3646,7 +3733,7 @@ _descriptor.MethodDescriptor( name='GetSuggestions', full_name='api.Manager.GetSuggestions', - index=10, + index=11, containing_service=None, input_type=_GETSUGGESTIONSREQUEST, output_type=_GETSUGGESTIONSREPLY, @@ -3655,7 +3742,7 @@ _descriptor.MethodDescriptor( name='GetShouldStopWorkers', full_name='api.Manager.GetShouldStopWorkers', - index=11, + index=12, containing_service=None, input_type=_GETSHOULDSTOPWORKERSREQUEST, output_type=_GETSHOULDSTOPWORKERSREPLY, @@ -3664,7 +3751,7 @@ _descriptor.MethodDescriptor( name='GetMetrics', full_name='api.Manager.GetMetrics', - index=12, + index=13, containing_service=None, input_type=_GETMETRICSREQUEST, output_type=_GETMETRICSREPLY, @@ -3673,7 +3760,7 @@ _descriptor.MethodDescriptor( name='SetSuggestionParameters', full_name='api.Manager.SetSuggestionParameters', - index=13, + index=14, containing_service=None, input_type=_SETSUGGESTIONPARAMETERSREQUEST, output_type=_SETSUGGESTIONPARAMETERSREPLY, @@ -3682,7 +3769,7 @@ _descriptor.MethodDescriptor( name='GetSuggestionParameters', full_name='api.Manager.GetSuggestionParameters', - index=14, + index=15, containing_service=None, input_type=_GETSUGGESTIONPARAMETERSREQUEST, output_type=_GETSUGGESTIONPARAMETERSREPLY, @@ -3691,7 +3778,7 @@ _descriptor.MethodDescriptor( name='GetSuggestionParameterList', full_name='api.Manager.GetSuggestionParameterList', - index=15, + index=16, containing_service=None, input_type=_GETSUGGESTIONPARAMETERLISTREQUEST, output_type=_GETSUGGESTIONPARAMETERLISTREPLY, @@ -3700,7 +3787,7 @@ _descriptor.MethodDescriptor( name='SetEarlyStoppingParameters', full_name='api.Manager.SetEarlyStoppingParameters', - index=16, + index=17, containing_service=None, input_type=_SETEARLYSTOPPINGPARAMETERSREQUEST, output_type=_SETEARLYSTOPPINGPARAMETERSREPLY, @@ -3709,7 +3796,7 @@ _descriptor.MethodDescriptor( name='GetEarlyStoppingParameters', full_name='api.Manager.GetEarlyStoppingParameters', - index=17, + index=18, containing_service=None, input_type=_GETEARLYSTOPPINGPARAMETERSREQUEST, output_type=_GETEARLYSTOPPINGPARAMETERSREPLY, @@ -3718,7 +3805,7 @@ _descriptor.MethodDescriptor( name='GetEarlyStoppingParameterList', full_name='api.Manager.GetEarlyStoppingParameterList', - index=18, + index=19, containing_service=None, input_type=_GETEARLYSTOPPINGPARAMETERLISTREQUEST, output_type=_GETEARLYSTOPPINGPARAMETERLISTREPLY, @@ -3727,7 +3814,7 @@ _descriptor.MethodDescriptor( name='SaveStudy', full_name='api.Manager.SaveStudy', - index=19, + index=20, containing_service=None, input_type=_SAVESTUDYREQUEST, output_type=_SAVESTUDYREPLY, @@ -3736,7 +3823,7 @@ _descriptor.MethodDescriptor( name='SaveModel', full_name='api.Manager.SaveModel', - index=20, + index=21, containing_service=None, input_type=_SAVEMODELREQUEST, output_type=_SAVEMODELREPLY, @@ -3745,7 +3832,7 @@ _descriptor.MethodDescriptor( name='ReportMetricsLogs', full_name='api.Manager.ReportMetricsLogs', - index=21, + index=22, containing_service=None, input_type=_REPORTMETRICSLOGSREQUEST, output_type=_REPORTMETRICSLOGSREPLY, @@ -3754,7 +3841,7 @@ _descriptor.MethodDescriptor( name='GetSavedStudies', full_name='api.Manager.GetSavedStudies', - index=22, + index=23, containing_service=None, input_type=_GETSAVEDSTUDIESREQUEST, output_type=_GETSAVEDSTUDIESREPLY, @@ -3763,7 +3850,7 @@ _descriptor.MethodDescriptor( name='GetSavedModels', full_name='api.Manager.GetSavedModels', - index=23, + index=24, containing_service=None, input_type=_GETSAVEDMODELSREQUEST, output_type=_GETSAVEDMODELSREPLY, @@ -3781,8 +3868,8 @@ file=DESCRIPTOR, index=1, options=None, - serialized_start=8602, - serialized_end=8686, + serialized_start=8788, + serialized_end=8872, methods=[ _descriptor.MethodDescriptor( name='GetSuggestions', @@ -3805,8 +3892,8 @@ file=DESCRIPTOR, index=2, options=None, - serialized_start=8688, - serialized_end=8793, + serialized_start=8874, + serialized_end=8979, methods=[ _descriptor.MethodDescriptor( name='GetShouldStopWorkers', @@ -3856,6 +3943,11 @@ def __init__(self, channel): request_serializer=GetStudyRequest.SerializeToString, response_deserializer=GetStudyReply.FromString, ) + self.DeleteStudy = channel.unary_unary( + '/api.Manager/DeleteStudy', + request_serializer=DeleteStudyRequest.SerializeToString, + response_deserializer=DeleteStudyReply.FromString, + ) self.GetStudyList = channel.unary_unary( '/api.Manager/GetStudyList', request_serializer=GetStudyListRequest.SerializeToString, @@ -3993,8 +4085,16 @@ def GetStudy(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def GetStudyList(self, request, context): + def DeleteStudy(self, request, context): """* + Delete a Study from DB by Study ID. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetStudyList(self, request, context): + """* Get all Study Configs from DB. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -4183,6 +4283,11 @@ def add_ManagerServicer_to_server(servicer, server): request_deserializer=GetStudyRequest.FromString, response_serializer=GetStudyReply.SerializeToString, ), + 'DeleteStudy': grpc.unary_unary_rpc_method_handler( + servicer.DeleteStudy, + request_deserializer=DeleteStudyRequest.FromString, + response_serializer=DeleteStudyReply.SerializeToString, + ), 'GetStudyList': grpc.unary_unary_rpc_method_handler( servicer.GetStudyList, request_deserializer=GetStudyListRequest.FromString, @@ -4406,8 +4511,13 @@ def GetStudy(self, request, context): Get a Study Config from DB by ID of Study. """ context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) - def GetStudyList(self, request, context): + def DeleteStudy(self, request, context): """* + Delete a Study from DB by Study ID. + """ + context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) + def GetStudyList(self, request, context): + """* Get all Study Configs from DB. """ context.code(beta_interfaces.StatusCode.UNIMPLEMENTED) @@ -4544,8 +4654,14 @@ def GetStudy(self, request, timeout, metadata=None, with_call=False, protocol_op """ raise NotImplementedError() GetStudy.future = None - def GetStudyList(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + def DeleteStudy(self, request, timeout, metadata=None, with_call=False, protocol_options=None): """* + Delete a Study from DB by Study ID. + """ + raise NotImplementedError() + DeleteStudy.future = None + def GetStudyList(self, request, timeout, metadata=None, with_call=False, protocol_options=None): + """* Get all Study Configs from DB. """ raise NotImplementedError() @@ -4688,6 +4804,7 @@ def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_time request_deserializers = { ('api.Manager', 'CreateStudy'): CreateStudyRequest.FromString, ('api.Manager', 'CreateTrial'): CreateTrialRequest.FromString, + ('api.Manager', 'DeleteStudy'): DeleteStudyRequest.FromString, ('api.Manager', 'GetEarlyStoppingParameterList'): GetEarlyStoppingParameterListRequest.FromString, ('api.Manager', 'GetEarlyStoppingParameters'): GetEarlyStoppingParametersRequest.FromString, ('api.Manager', 'GetMetrics'): GetMetricsRequest.FromString, @@ -4714,6 +4831,7 @@ def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_time response_serializers = { ('api.Manager', 'CreateStudy'): CreateStudyReply.SerializeToString, ('api.Manager', 'CreateTrial'): CreateTrialReply.SerializeToString, + ('api.Manager', 'DeleteStudy'): DeleteStudyReply.SerializeToString, ('api.Manager', 'GetEarlyStoppingParameterList'): GetEarlyStoppingParameterListReply.SerializeToString, ('api.Manager', 'GetEarlyStoppingParameters'): GetEarlyStoppingParametersReply.SerializeToString, ('api.Manager', 'GetMetrics'): GetMetricsReply.SerializeToString, @@ -4740,6 +4858,7 @@ def beta_create_Manager_server(servicer, pool=None, pool_size=None, default_time method_implementations = { ('api.Manager', 'CreateStudy'): face_utilities.unary_unary_inline(servicer.CreateStudy), ('api.Manager', 'CreateTrial'): face_utilities.unary_unary_inline(servicer.CreateTrial), + ('api.Manager', 'DeleteStudy'): face_utilities.unary_unary_inline(servicer.DeleteStudy), ('api.Manager', 'GetEarlyStoppingParameterList'): face_utilities.unary_unary_inline(servicer.GetEarlyStoppingParameterList), ('api.Manager', 'GetEarlyStoppingParameters'): face_utilities.unary_unary_inline(servicer.GetEarlyStoppingParameters), ('api.Manager', 'GetMetrics'): face_utilities.unary_unary_inline(servicer.GetMetrics), @@ -4776,6 +4895,7 @@ def beta_create_Manager_stub(channel, host=None, metadata_transformer=None, pool request_serializers = { ('api.Manager', 'CreateStudy'): CreateStudyRequest.SerializeToString, ('api.Manager', 'CreateTrial'): CreateTrialRequest.SerializeToString, + ('api.Manager', 'DeleteStudy'): DeleteStudyRequest.SerializeToString, ('api.Manager', 'GetEarlyStoppingParameterList'): GetEarlyStoppingParameterListRequest.SerializeToString, ('api.Manager', 'GetEarlyStoppingParameters'): GetEarlyStoppingParametersRequest.SerializeToString, ('api.Manager', 'GetMetrics'): GetMetricsRequest.SerializeToString, @@ -4802,6 +4922,7 @@ def beta_create_Manager_stub(channel, host=None, metadata_transformer=None, pool response_deserializers = { ('api.Manager', 'CreateStudy'): CreateStudyReply.FromString, ('api.Manager', 'CreateTrial'): CreateTrialReply.FromString, + ('api.Manager', 'DeleteStudy'): DeleteStudyReply.FromString, ('api.Manager', 'GetEarlyStoppingParameterList'): GetEarlyStoppingParameterListReply.FromString, ('api.Manager', 'GetEarlyStoppingParameters'): GetEarlyStoppingParametersReply.FromString, ('api.Manager', 'GetMetrics'): GetMetricsReply.FromString, @@ -4828,6 +4949,7 @@ def beta_create_Manager_stub(channel, host=None, metadata_transformer=None, pool cardinalities = { 'CreateStudy': cardinality.Cardinality.UNARY_UNARY, 'CreateTrial': cardinality.Cardinality.UNARY_UNARY, + 'DeleteStudy': cardinality.Cardinality.UNARY_UNARY, 'GetEarlyStoppingParameterList': cardinality.Cardinality.UNARY_UNARY, 'GetEarlyStoppingParameters': cardinality.Cardinality.UNARY_UNARY, 'GetMetrics': cardinality.Cardinality.UNARY_UNARY, diff --git a/pkg/api/python/api_pb2_grpc.py b/pkg/api/python/api_pb2_grpc.py index 2180171306a..1163a3e19f6 100644 --- a/pkg/api/python/api_pb2_grpc.py +++ b/pkg/api/python/api_pb2_grpc.py @@ -28,6 +28,11 @@ def __init__(self, channel): request_serializer=api__pb2.GetStudyRequest.SerializeToString, response_deserializer=api__pb2.GetStudyReply.FromString, ) + self.DeleteStudy = channel.unary_unary( + '/api.Manager/DeleteStudy', + request_serializer=api__pb2.DeleteStudyRequest.SerializeToString, + response_deserializer=api__pb2.DeleteStudyReply.FromString, + ) self.GetStudyList = channel.unary_unary( '/api.Manager/GetStudyList', request_serializer=api__pb2.GetStudyListRequest.SerializeToString, @@ -165,8 +170,16 @@ def GetStudy(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def GetStudyList(self, request, context): + def DeleteStudy(self, request, context): """* + Delete a Study from DB by Study ID. + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def GetStudyList(self, request, context): + """* Get all Study Configs from DB. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -355,6 +368,11 @@ def add_ManagerServicer_to_server(servicer, server): request_deserializer=api__pb2.GetStudyRequest.FromString, response_serializer=api__pb2.GetStudyReply.SerializeToString, ), + 'DeleteStudy': grpc.unary_unary_rpc_method_handler( + servicer.DeleteStudy, + request_deserializer=api__pb2.DeleteStudyRequest.FromString, + response_serializer=api__pb2.DeleteStudyReply.SerializeToString, + ), 'GetStudyList': grpc.unary_unary_rpc_method_handler( servicer.GetStudyList, request_deserializer=api__pb2.GetStudyListRequest.FromString, diff --git a/pkg/controller/studyjob/katib_api_util.go b/pkg/controller/studyjob/katib_api_util.go index ef58027f95d..87e3fc14947 100644 --- a/pkg/controller/studyjob/katib_api_util.go +++ b/pkg/controller/studyjob/katib_api_util.go @@ -128,6 +128,26 @@ func getStudyConf(instance *katibv1alpha1.StudyJob) (*katibapi.StudyConfig, erro return sconf, nil } +func deleteStudy(instance *katibv1alpha1.StudyJob) error { + conn, err := grpc.Dial(pkg.ManagerAddr, grpc.WithInsecure()) + if err != nil { + log.Printf("Connect katib manager error %v", err) + return err + } + defer conn.Close() + c := katibapi.NewManagerClient(conn) + ctx := context.Background() + studyID := instance.Status.StudyID + deleteStudyreq := &katibapi.DeleteStudyRequest{ + StudyId: studyID, + } + if _, err = c.DeleteStudy(ctx, deleteStudyreq); err != nil { + log.Printf("DeleteStudy error %v", err) + return err + } + return nil +} + func createStudy(c katibapi.ManagerClient, studyConfig *katibapi.StudyConfig) (string, error) { ctx := context.Background() createStudyreq := &katibapi.CreateStudyRequest{ diff --git a/pkg/controller/studyjob/studyjob_controller.go b/pkg/controller/studyjob/studyjob_controller.go index 7a21288a5c2..0fdaf74d094 100644 --- a/pkg/controller/studyjob/studyjob_controller.go +++ b/pkg/controller/studyjob/studyjob_controller.go @@ -46,8 +46,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/controller-runtime/pkg/source" ) - -const maxMsgSize = 1<<31 - 1 +const ( + maxMsgSize = 1<<31 - 1 + cleanDataFinalizer = "clean-studyjob-data" +) /** * USER ACTION REQUIRED: This is a scaffold file intended for the user to modify with their own Controller @@ -177,8 +179,32 @@ func (r *ReconcileStudyJobController) Reconcile(request reconcile.Request) (reco // Error reading the object - requeue the request. return reconcile.Result{}, err } - var update bool = false + deleted := instance.GetDeletionTimestamp() != nil + pendingFinalizers := instance.GetFinalizers() + if !deleted && !contains(pendingFinalizers, cleanDataFinalizer) { + log.Printf("Adding finalizer %s", cleanDataFinalizer) + finalizers := append(pendingFinalizers, cleanDataFinalizer) + return r.updateFinalizers(instance, finalizers) + } + if deleted { + if !contains(pendingFinalizers, cleanDataFinalizer) { + return reconcile.Result{}, nil + } + err = deleteStudy(instance) + if err != nil { + log.Printf("Fail to delete %v", err) + return reconcile.Result{}, err + } + finalizers := []string{} + for _, pendingFinalizer := range pendingFinalizers { + if pendingFinalizer != cleanDataFinalizer { + finalizers = append(finalizers, pendingFinalizer) + } + } + return r.updateFinalizers(instance, finalizers) + } + switch instance.Status.Condition { case katibv1alpha1.ConditionCompleted, katibv1alpha1.ConditionFailed, @@ -212,6 +238,18 @@ func (r *ReconcileStudyJobController) Reconcile(request reconcile.Request) (reco return reconcile.Result{}, nil } +func (r *ReconcileStudyJobController) updateFinalizers(instance *katibv1alpha1.StudyJob, finalizers []string) (reconcile.Result, error) { + instance.SetFinalizers(finalizers) + err := r.Update(context.TODO(), instance) + if err != nil { + log.Printf("Fail to Update StudyJob %v : %v", instance.Status.StudyID, err) + return reconcile.Result{}, err + } else { + // Need to requeue because finalizer update does not change metadata.generation + return reconcile.Result{Requeue: true}, err + } +} + func (r *ReconcileStudyJobController) checkGoal(instance *katibv1alpha1.StudyJob, c katibapi.ManagerClient, wids []string) (bool, error) { if instance.Spec.OptimizationGoal == nil { return false, nil diff --git a/pkg/controller/studyjob/utils.go b/pkg/controller/studyjob/utils.go index 5aaf3bd1fd5..a8595ac7ded 100644 --- a/pkg/controller/studyjob/utils.go +++ b/pkg/controller/studyjob/utils.go @@ -135,3 +135,12 @@ func checkGoalAndUpdateObject(curValue float64, instance *katibv1alpha1.StudyJob return goal } + +func contains(l []string, s string) bool { + for _, elem := range l { + if elem == s { + return true + } + } + return false +} diff --git a/pkg/db/db_init.go b/pkg/db/db_init.go index df8602fdbeb..e5ef38b9700 100644 --- a/pkg/db/db_init.go +++ b/pkg/db/db_init.go @@ -25,7 +25,8 @@ func (d *dbConn) DBInit() { _, err = db.Exec(`CREATE TABLE IF NOT EXISTS study_permissions (study_id CHAR(16) NOT NULL, access_permission VARCHAR(255), - PRIMARY KEY (study_id, access_permission))`) + PRIMARY KEY (study_id, access_permission), + FOREIGN KEY(study_id) REFERENCES studies(id) ON DELETE CASCADE)`) if err != nil { log.Fatalf("Error creating study_permissions table: %v", err) } @@ -36,7 +37,7 @@ func (d *dbConn) DBInit() { parameters TEXT, objective_value VARCHAR(255), tags TEXT, - FOREIGN KEY(study_id) REFERENCES studies(id))`) + FOREIGN KEY(study_id) REFERENCES studies(id) ON DELETE CASCADE)`) if err != nil { log.Fatalf("Error creating trials table: %v", err) } @@ -49,8 +50,8 @@ func (d *dbConn) DBInit() { status TINYINT, template_path TEXT, tags TEXT, - FOREIGN KEY(study_id) REFERENCES studies(id), - FOREIGN KEY(trial_id) REFERENCES trials(id))`) + FOREIGN KEY(study_id) REFERENCES studies(id) ON DELETE CASCADE, + FOREIGN KEY(trial_id) REFERENCES trials(id) ON DELETE CASCADE)`) if err != nil { log.Fatalf("Error creating workers table: %v", err) } @@ -80,7 +81,7 @@ func (d *dbConn) DBInit() { suggestion_algo TEXT, study_id CHAR(16), parameters TEXT, - FOREIGN KEY(study_id) REFERENCES studies(id))`) + FOREIGN KEY(study_id) REFERENCES studies(id) ON DELETE CASCADE)`) if err != nil { log.Fatalf("Error creating suggestion_param table: %v", err) } @@ -90,7 +91,7 @@ func (d *dbConn) DBInit() { earlystop_argo TEXT, study_id CHAR(16), parameters TEXT, - FOREIGN KEY(study_id) REFERENCES studies(id))`) + FOREIGN KEY(study_id) REFERENCES studies(id) ON DELETE CASCADE)`) if err != nil { log.Fatalf("Error creating earlystop_param table: %v", err) } diff --git a/pkg/mock/api/manager.go b/pkg/mock/api/manager.go index 7d7fbf784b8..b68fba741b6 100644 --- a/pkg/mock/api/manager.go +++ b/pkg/mock/api/manager.go @@ -71,6 +71,24 @@ func (mr *MockManagerClientMockRecorder) CreateTrial(arg0, arg1 interface{}, arg return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateTrial", reflect.TypeOf((*MockManagerClient)(nil).CreateTrial), varargs...) } +// DeleteStudy mocks base method +func (m *MockManagerClient) DeleteStudy(arg0 context.Context, arg1 *api.DeleteStudyRequest, arg2 ...grpc.CallOption) (*api.DeleteStudyReply, error) { + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "DeleteStudy", varargs...) + ret0, _ := ret[0].(*api.DeleteStudyReply) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteStudy indicates an expected call of DeleteStudy +func (mr *MockManagerClientMockRecorder) DeleteStudy(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteStudy", reflect.TypeOf((*MockManagerClient)(nil).DeleteStudy), varargs...) +} + // GetEarlyStoppingParameterList mocks base method func (m *MockManagerClient) GetEarlyStoppingParameterList(arg0 context.Context, arg1 *api.GetEarlyStoppingParameterListRequest, arg2 ...grpc.CallOption) (*api.GetEarlyStoppingParameterListReply, error) { varargs := []interface{}{arg0, arg1} From fb38265f5129b56942383cd545a297eea32d78c9 Mon Sep 17 00:00:00 2001 From: hougang liu Date: Sat, 5 Jan 2019 23:28:32 +0800 Subject: [PATCH 2/3] add delete study test --- test/e2e/test-client.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/e2e/test-client.go b/test/e2e/test-client.go index 7427477edef..cf36f2fb7d8 100644 --- a/test/e2e/test-client.go +++ b/test/e2e/test-client.go @@ -101,6 +101,7 @@ func main() { getSuggestReply := getSuggestion(c, studyID, paramID) checkSuggestions(getSuggestReply, iter) } + DeleteStudy(c, studyID) conn.Close() log.Println("E2E test OK!") } @@ -151,6 +152,17 @@ func CreateStudy(c api.ManagerClient) string { return studyID } +func DeleteStudy(c api.ManagerClient, studyID string) { + ctx := context.Background() + deleteStudyreq := &api.DeleteStudyRequest{ + StudyId: studyID, + } + if _, err := c.DeleteStudy(ctx, deleteStudyreq); err != nil { + log.Fatalf("DeleteStudy error %v", err) + } + log.Printf("Study %s is deleted", studyID) +} + func setSuggestionParam(c api.ManagerClient, studyID string) string { ctx := context.Background() switch *suggestArgo { From 13ccfe23fa26a3cf13a6657f4c6bb64363e9aa46 Mon Sep 17 00:00:00 2001 From: hougang liu Date: Sun, 6 Jan 2019 14:02:18 +0800 Subject: [PATCH 3/3] make sure trials and workers deleted when study deleted in ut test --- test/e2e/test-client.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/e2e/test-client.go b/test/e2e/test-client.go index cf36f2fb7d8..fb47909f4a3 100644 --- a/test/e2e/test-client.go +++ b/test/e2e/test-client.go @@ -160,6 +160,27 @@ func DeleteStudy(c api.ManagerClient, studyID string) { if _, err := c.DeleteStudy(ctx, deleteStudyreq); err != nil { log.Fatalf("DeleteStudy error %v", err) } + getStudyreq := &api.GetStudyRequest{ + StudyId: studyID, + } + getStudyReply, _ := c.GetStudy(ctx, getStudyreq) + if getStudyReply != nil && getStudyReply.StudyConfig != nil { + log.Fatalf("Failed to delete Study %s", studyID) + } + getTrialsRequest := &api.GetTrialsRequest{ + StudyId: studyID, + } + gtrep, _ := c.GetTrials(ctx, getTrialsRequest) + if gtrep != nil && len(gtrep.Trials) > 0 { + log.Fatalf("Failed to delete Trials of Study %s", studyID) + } + getWorkersRequest := &api.GetWorkersRequest{ + StudyId: studyID, + } + gwrep, _ := c.GetWorkers(ctx, getWorkersRequest) + if gwrep != nil && len(gwrep.Workers) > 0 { + log.Fatalf("Failed to delete Workers of Study %s", studyID) + } log.Printf("Study %s is deleted", studyID) }