From 2ef2f122f4c698ccfd2200c171c34da766b9ec18 Mon Sep 17 00:00:00 2001 From: jesse-amano-hpe Date: Mon, 14 Oct 2024 15:45:03 -0700 Subject: [PATCH] feat: bulk actions matching filters (ET-241) (#9895) --- harness/determined/common/api/bindings.py | 594 +++++++- master/internal/api_searches.go | 673 +++++++++ master/internal/api_searches_intg_test.go | 549 +++++++ proto/pkg/apiv1/api.pb.go | 1549 ++++++++++++-------- proto/pkg/apiv1/api.pb.gw.go | 546 +++++++ proto/pkg/apiv1/search.pb.go | 1302 ++++++++++++++++ proto/src/determined/api/v1/api.proto | 84 +- proto/src/determined/api/v1/search.proto | 183 +++ webui/react/src/services/api-ts-sdk/api.ts | 880 ++++++++++- 9 files changed, 5745 insertions(+), 615 deletions(-) create mode 100644 master/internal/api_searches.go create mode 100644 master/internal/api_searches_intg_test.go create mode 100644 proto/pkg/apiv1/search.pb.go create mode 100644 proto/src/determined/api/v1/search.proto diff --git a/harness/determined/common/api/bindings.py b/harness/determined/common/api/bindings.py index 32bdcd34eb4..2366f447f22 100644 --- a/harness/determined/common/api/bindings.py +++ b/harness/determined/common/api/bindings.py @@ -1781,6 +1781,63 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: } return out +class v1ArchiveSearchesRequest(Printable): + filter: "typing.Optional[str]" = None + + def __init__( + self, + *, + projectId: int, + searchIds: "typing.Sequence[int]", + filter: "typing.Union[str, None, Unset]" = _unset, + ): + self.projectId = projectId + self.searchIds = searchIds + if not isinstance(filter, Unset): + self.filter = filter + + @classmethod + def from_json(cls, obj: Json) -> "v1ArchiveSearchesRequest": + kwargs: "typing.Dict[str, typing.Any]" = { + "projectId": obj["projectId"], + "searchIds": obj["searchIds"], + } + if "filter" in obj: + kwargs["filter"] = obj["filter"] + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "projectId": self.projectId, + "searchIds": self.searchIds, + } + if not omit_unset or "filter" in vars(self): + out["filter"] = self.filter + return out + +class v1ArchiveSearchesResponse(Printable): + """Response to ArchiveSearchesRequest.""" + + def __init__( + self, + *, + results: "typing.Sequence[v1SearchActionResult]", + ): + self.results = results + + @classmethod + def from_json(cls, obj: Json) -> "v1ArchiveSearchesResponse": + kwargs: "typing.Dict[str, typing.Any]" = { + "results": [v1SearchActionResult.from_json(x) for x in obj["results"]], + } + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "results": [x.to_json(omit_unset) for x in self.results], + } + return out + class v1AssignMultipleGroupsRequest(Printable): """Add and remove multiple users from multiple groups.""" @@ -3403,6 +3460,68 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: } return out +class v1DeleteSearchesRequest(Printable): + """Delete searches.""" + filter: "typing.Optional[str]" = None + projectId: "typing.Optional[int]" = None + + def __init__( + self, + *, + searchIds: "typing.Sequence[int]", + filter: "typing.Union[str, None, Unset]" = _unset, + projectId: "typing.Union[int, None, Unset]" = _unset, + ): + self.searchIds = searchIds + if not isinstance(filter, Unset): + self.filter = filter + if not isinstance(projectId, Unset): + self.projectId = projectId + + @classmethod + def from_json(cls, obj: Json) -> "v1DeleteSearchesRequest": + kwargs: "typing.Dict[str, typing.Any]" = { + "searchIds": obj["searchIds"], + } + if "filter" in obj: + kwargs["filter"] = obj["filter"] + if "projectId" in obj: + kwargs["projectId"] = obj["projectId"] + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "searchIds": self.searchIds, + } + if not omit_unset or "filter" in vars(self): + out["filter"] = self.filter + if not omit_unset or "projectId" in vars(self): + out["projectId"] = self.projectId + return out + +class v1DeleteSearchesResponse(Printable): + """Response to DeleteSearchesResponse.""" + + def __init__( + self, + *, + results: "typing.Sequence[v1SearchActionResult]", + ): + self.results = results + + @classmethod + def from_json(cls, obj: Json) -> "v1DeleteSearchesResponse": + kwargs: "typing.Dict[str, typing.Any]" = { + "results": [v1SearchActionResult.from_json(x) for x in obj["results"]], + } + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "results": [x.to_json(omit_unset) for x in self.results], + } + return out + class v1DeleteWorkspaceResponse(Printable): """Response to DeleteWorkspaceRequest.""" @@ -7997,6 +8116,68 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: } return out +class v1KillSearchesRequest(Printable): + """Kill searches.""" + filter: "typing.Optional[str]" = None + projectId: "typing.Optional[int]" = None + + def __init__( + self, + *, + searchIds: "typing.Sequence[int]", + filter: "typing.Union[str, None, Unset]" = _unset, + projectId: "typing.Union[int, None, Unset]" = _unset, + ): + self.searchIds = searchIds + if not isinstance(filter, Unset): + self.filter = filter + if not isinstance(projectId, Unset): + self.projectId = projectId + + @classmethod + def from_json(cls, obj: Json) -> "v1KillSearchesRequest": + kwargs: "typing.Dict[str, typing.Any]" = { + "searchIds": obj["searchIds"], + } + if "filter" in obj: + kwargs["filter"] = obj["filter"] + if "projectId" in obj: + kwargs["projectId"] = obj["projectId"] + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "searchIds": self.searchIds, + } + if not omit_unset or "filter" in vars(self): + out["filter"] = self.filter + if not omit_unset or "projectId" in vars(self): + out["projectId"] = self.projectId + return out + +class v1KillSearchesResponse(Printable): + """Response to KillSearchesResponse.""" + + def __init__( + self, + *, + results: "typing.Sequence[v1SearchActionResult]", + ): + self.results = results + + @classmethod + def from_json(cls, obj: Json) -> "v1KillSearchesResponse": + kwargs: "typing.Dict[str, typing.Any]" = { + "results": [v1SearchActionResult.from_json(x) for x in obj["results"]], + } + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "results": [x.to_json(omit_unset) for x in self.results], + } + return out + class v1KillShellResponse(Printable): """Response to KillShellRequest.""" shell: "typing.Optional[v1Shell]" = None @@ -9527,6 +9708,68 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: } return out +class v1MoveSearchesRequest(Printable): + """Request to move the search to a different project.""" + filter: "typing.Optional[str]" = None + + def __init__( + self, + *, + destinationProjectId: int, + searchIds: "typing.Sequence[int]", + sourceProjectId: int, + filter: "typing.Union[str, None, Unset]" = _unset, + ): + self.destinationProjectId = destinationProjectId + self.searchIds = searchIds + self.sourceProjectId = sourceProjectId + if not isinstance(filter, Unset): + self.filter = filter + + @classmethod + def from_json(cls, obj: Json) -> "v1MoveSearchesRequest": + kwargs: "typing.Dict[str, typing.Any]" = { + "destinationProjectId": obj["destinationProjectId"], + "searchIds": obj["searchIds"], + "sourceProjectId": obj["sourceProjectId"], + } + if "filter" in obj: + kwargs["filter"] = obj["filter"] + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "destinationProjectId": self.destinationProjectId, + "searchIds": self.searchIds, + "sourceProjectId": self.sourceProjectId, + } + if not omit_unset or "filter" in vars(self): + out["filter"] = self.filter + return out + +class v1MoveSearchesResponse(Printable): + """Response to MoveSearchesRequest.""" + + def __init__( + self, + *, + results: "typing.Sequence[v1SearchActionResult]", + ): + self.results = results + + @classmethod + def from_json(cls, obj: Json) -> "v1MoveSearchesResponse": + kwargs: "typing.Dict[str, typing.Any]" = { + "results": [v1SearchActionResult.from_json(x) for x in obj["results"]], + } + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "results": [x.to_json(omit_unset) for x in self.results], + } + return out + class v1Note(Printable): """Note is a user comment connected to a project.""" @@ -10817,6 +11060,64 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: } return out +class v1PauseSearchesRequest(Printable): + """Request to pause the experiment associated witha search.""" + filter: "typing.Optional[str]" = None + + def __init__( + self, + *, + projectId: int, + searchIds: "typing.Sequence[int]", + filter: "typing.Union[str, None, Unset]" = _unset, + ): + self.projectId = projectId + self.searchIds = searchIds + if not isinstance(filter, Unset): + self.filter = filter + + @classmethod + def from_json(cls, obj: Json) -> "v1PauseSearchesRequest": + kwargs: "typing.Dict[str, typing.Any]" = { + "projectId": obj["projectId"], + "searchIds": obj["searchIds"], + } + if "filter" in obj: + kwargs["filter"] = obj["filter"] + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "projectId": self.projectId, + "searchIds": self.searchIds, + } + if not omit_unset or "filter" in vars(self): + out["filter"] = self.filter + return out + +class v1PauseSearchesResponse(Printable): + """Response to PauseSearchesRequest.""" + + def __init__( + self, + *, + results: "typing.Sequence[v1SearchActionResult]", + ): + self.results = results + + @classmethod + def from_json(cls, obj: Json) -> "v1PauseSearchesResponse": + kwargs: "typing.Dict[str, typing.Any]" = { + "results": [v1SearchActionResult.from_json(x) for x in obj["results"]], + } + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "results": [x.to_json(omit_unset) for x in self.results], + } + return out + class v1Permission(Printable): name: "typing.Optional[str]" = None scopeTypeMask: "typing.Optional[v1ScopeTypeMask]" = None @@ -13782,6 +14083,64 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: } return out +class v1ResumeSearchesRequest(Printable): + """Request to unpause the experiment associated witha search.""" + filter: "typing.Optional[str]" = None + + def __init__( + self, + *, + projectId: int, + searchIds: "typing.Sequence[int]", + filter: "typing.Union[str, None, Unset]" = _unset, + ): + self.projectId = projectId + self.searchIds = searchIds + if not isinstance(filter, Unset): + self.filter = filter + + @classmethod + def from_json(cls, obj: Json) -> "v1ResumeSearchesRequest": + kwargs: "typing.Dict[str, typing.Any]" = { + "projectId": obj["projectId"], + "searchIds": obj["searchIds"], + } + if "filter" in obj: + kwargs["filter"] = obj["filter"] + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "projectId": self.projectId, + "searchIds": self.searchIds, + } + if not omit_unset or "filter" in vars(self): + out["filter"] = self.filter + return out + +class v1ResumeSearchesResponse(Printable): + """Response to ResumeSearchesRequest.""" + + def __init__( + self, + *, + results: "typing.Sequence[v1SearchActionResult]", + ): + self.results = results + + @classmethod + def from_json(cls, obj: Json) -> "v1ResumeSearchesResponse": + kwargs: "typing.Dict[str, typing.Any]" = { + "results": [v1SearchActionResult.from_json(x) for x in obj["results"]], + } + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "results": [x.to_json(omit_unset) for x in self.results], + } + return out + class v1Role(Printable): name: "typing.Optional[str]" = None permissions: "typing.Optional[typing.Sequence[v1Permission]]" = None @@ -14180,6 +14539,33 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: out["workspace"] = self.workspace return out +class v1SearchActionResult(Printable): + """Message for results of individual searches in a multi-search action.""" + + def __init__( + self, + *, + error: str, + id: int, + ): + self.error = error + self.id = id + + @classmethod + def from_json(cls, obj: Json) -> "v1SearchActionResult": + kwargs: "typing.Dict[str, typing.Any]" = { + "error": obj["error"], + "id": obj["id"], + } + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "error": self.error, + "id": self.id, + } + return out + class v1SearchExperimentExperiment(Printable): bestTrial: "typing.Optional[trialv1Trial]" = None @@ -16785,6 +17171,63 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: } return out +class v1UnarchiveSearchesRequest(Printable): + filter: "typing.Optional[str]" = None + + def __init__( + self, + *, + projectId: int, + searchIds: "typing.Sequence[int]", + filter: "typing.Union[str, None, Unset]" = _unset, + ): + self.projectId = projectId + self.searchIds = searchIds + if not isinstance(filter, Unset): + self.filter = filter + + @classmethod + def from_json(cls, obj: Json) -> "v1UnarchiveSearchesRequest": + kwargs: "typing.Dict[str, typing.Any]" = { + "projectId": obj["projectId"], + "searchIds": obj["searchIds"], + } + if "filter" in obj: + kwargs["filter"] = obj["filter"] + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "projectId": self.projectId, + "searchIds": self.searchIds, + } + if not omit_unset or "filter" in vars(self): + out["filter"] = self.filter + return out + +class v1UnarchiveSearchesResponse(Printable): + """Response to UnarchiveSearchesRequest.""" + + def __init__( + self, + *, + results: "typing.Sequence[v1SearchActionResult]", + ): + self.results = results + + @classmethod + def from_json(cls, obj: Json) -> "v1UnarchiveSearchesResponse": + kwargs: "typing.Dict[str, typing.Any]" = { + "results": [v1SearchActionResult.from_json(x) for x in obj["results"]], + } + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "results": [x.to_json(omit_unset) for x in self.results], + } + return out + class v1UnbindRPFromWorkspaceRequest(Printable): """Unbind a resource pool to workspaces.""" workspaceIds: "typing.Optional[typing.Sequence[int]]" = None @@ -17996,6 +18439,27 @@ def post_ArchiveRuns( return v1ArchiveRunsResponse.from_json(_resp.json()) raise APIHttpError("post_ArchiveRuns", _resp) +def post_ArchiveSearches( + session: "api.BaseSession", + *, + body: "v1ArchiveSearchesRequest", +) -> "v1ArchiveSearchesResponse": + """Archive searches.""" + _params = None + _resp = session._do_request( + method="POST", + path="/api/v1/searches/archive", + params=_params, + json=body.to_json(True), + data=None, + headers=None, + timeout=None, + stream=False, + ) + if _resp.status_code == 200: + return v1ArchiveSearchesResponse.from_json(_resp.json()) + raise APIHttpError("post_ArchiveSearches", _resp) + def post_ArchiveWorkspace( session: "api.BaseSession", *, @@ -18700,7 +19164,7 @@ def post_DeleteRuns( *, body: "v1DeleteRunsRequest", ) -> "v1DeleteRunsResponse": - """Delete a list of runs.""" + """Delete runs.""" _params = None _resp = session._do_request( method="POST", @@ -18716,6 +19180,27 @@ def post_DeleteRuns( return v1DeleteRunsResponse.from_json(_resp.json()) raise APIHttpError("post_DeleteRuns", _resp) +def post_DeleteSearches( + session: "api.BaseSession", + *, + body: "v1DeleteSearchesRequest", +) -> "v1DeleteSearchesResponse": + """Delete searches.""" + _params = None + _resp = session._do_request( + method="POST", + path="/api/v1/searches/delete", + params=_params, + json=body.to_json(True), + data=None, + headers=None, + timeout=None, + stream=False, + ) + if _resp.status_code == 200: + return v1DeleteSearchesResponse.from_json(_resp.json()) + raise APIHttpError("post_DeleteSearches", _resp) + def delete_DeleteTemplate( session: "api.BaseSession", *, @@ -22136,7 +22621,7 @@ def post_KillRuns( *, body: "v1KillRunsRequest", ) -> "v1KillRunsResponse": - """Get a list of runs.""" + """Kill runs.""" _params = None _resp = session._do_request( method="POST", @@ -22152,6 +22637,27 @@ def post_KillRuns( return v1KillRunsResponse.from_json(_resp.json()) raise APIHttpError("post_KillRuns", _resp) +def post_KillSearches( + session: "api.BaseSession", + *, + body: "v1KillSearchesRequest", +) -> "v1KillSearchesResponse": + """Kill searches.""" + _params = None + _resp = session._do_request( + method="POST", + path="/api/v1/searches/kill", + params=_params, + json=body.to_json(True), + data=None, + headers=None, + timeout=None, + stream=False, + ) + if _resp.status_code == 200: + return v1KillSearchesResponse.from_json(_resp.json()) + raise APIHttpError("post_KillSearches", _resp) + def post_KillShell( session: "api.BaseSession", *, @@ -22718,6 +23224,27 @@ def post_MoveRuns( return v1MoveRunsResponse.from_json(_resp.json()) raise APIHttpError("post_MoveRuns", _resp) +def post_MoveSearches( + session: "api.BaseSession", + *, + body: "v1MoveSearchesRequest", +) -> "v1MoveSearchesResponse": + """Move searches.""" + _params = None + _resp = session._do_request( + method="POST", + path="/api/v1/searches/move", + params=_params, + json=body.to_json(True), + data=None, + headers=None, + timeout=None, + stream=False, + ) + if _resp.status_code == 200: + return v1MoveSearchesResponse.from_json(_resp.json()) + raise APIHttpError("post_MoveSearches", _resp) + def post_NotifyContainerRunning( session: "api.BaseSession", *, @@ -23198,6 +23725,27 @@ def post_PauseRuns( return v1PauseRunsResponse.from_json(_resp.json()) raise APIHttpError("post_PauseRuns", _resp) +def post_PauseSearches( + session: "api.BaseSession", + *, + body: "v1PauseSearchesRequest", +) -> "v1PauseSearchesResponse": + """Pause experiment associated with provided searches.""" + _params = None + _resp = session._do_request( + method="POST", + path="/api/v1/searches/pause", + params=_params, + json=body.to_json(True), + data=None, + headers=None, + timeout=None, + stream=False, + ) + if _resp.status_code == 200: + return v1PauseSearchesResponse.from_json(_resp.json()) + raise APIHttpError("post_PauseSearches", _resp) + def post_PinWorkspace( session: "api.BaseSession", *, @@ -24242,6 +24790,27 @@ def post_ResumeRuns( return v1ResumeRunsResponse.from_json(_resp.json()) raise APIHttpError("post_ResumeRuns", _resp) +def post_ResumeSearches( + session: "api.BaseSession", + *, + body: "v1ResumeSearchesRequest", +) -> "v1ResumeSearchesResponse": + """Unpause experiment associated with provided searches.""" + _params = None + _resp = session._do_request( + method="POST", + path="/api/v1/searches/resume", + params=_params, + json=body.to_json(True), + data=None, + headers=None, + timeout=None, + stream=False, + ) + if _resp.status_code == 200: + return v1ResumeSearchesResponse.from_json(_resp.json()) + raise APIHttpError("post_ResumeSearches", _resp) + def post_RunPrepareForReporting( session: "api.BaseSession", *, @@ -25088,6 +25657,27 @@ def post_UnarchiveRuns( return v1UnarchiveRunsResponse.from_json(_resp.json()) raise APIHttpError("post_UnarchiveRuns", _resp) +def post_UnarchiveSearches( + session: "api.BaseSession", + *, + body: "v1UnarchiveSearchesRequest", +) -> "v1UnarchiveSearchesResponse": + """Unarchive searches.""" + _params = None + _resp = session._do_request( + method="POST", + path="/api/v1/searches/unarchive", + params=_params, + json=body.to_json(True), + data=None, + headers=None, + timeout=None, + stream=False, + ) + if _resp.status_code == 200: + return v1UnarchiveSearchesResponse.from_json(_resp.json()) + raise APIHttpError("post_UnarchiveSearches", _resp) + def post_UnarchiveWorkspace( session: "api.BaseSession", *, diff --git a/master/internal/api_searches.go b/master/internal/api_searches.go new file mode 100644 index 00000000000..732de70eb8f --- /dev/null +++ b/master/internal/api_searches.go @@ -0,0 +1,673 @@ +package internal + +import ( + "context" + "database/sql" + "encoding/json" + "fmt" + + "github.com/pkg/errors" + log "github.com/sirupsen/logrus" + "github.com/uptrace/bun" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + + "github.com/determined-ai/determined/master/internal/db" + "github.com/determined-ai/determined/master/internal/experiment" + "github.com/determined-ai/determined/master/internal/grpcutil" + "github.com/determined-ai/determined/master/pkg/model" + "github.com/determined-ai/determined/master/pkg/set" + "github.com/determined-ai/determined/proto/pkg/apiv1" + "github.com/determined-ai/determined/proto/pkg/rbacv1" +) + +type searchCandidateResult struct { + Archived bool + ID int32 + IsTerminal bool +} + +func filterSearchQuery(getQ *bun.SelectQuery, filter *string) (*bun.SelectQuery, error) { + var efr experimentFilterRoot + err := json.Unmarshal([]byte(*filter), &efr) + if err != nil { + return nil, err + } + getQ = getQ.WhereGroup(" AND ", func(q *bun.SelectQuery) *bun.SelectQuery { + _, err = efr.toSQL(q) + return q + }).WhereGroup(" AND ", func(q *bun.SelectQuery) *bun.SelectQuery { + if !efr.ShowArchived { + return q.Where(`NOT e.archived`) + } + return q + }) + if err != nil { + return nil, err + } + return getQ, nil +} + +func getSelectSearchesQueryTables() *bun.SelectQuery { + return db.Bun().NewSelect(). + ModelTableExpr("experiments AS e"). + Join("JOIN projects p ON e.project_id = p.id"). + Join("JOIN workspaces w ON p.workspace_id = w.id") +} + +func (a *apiServer) MoveSearches( + ctx context.Context, req *apiv1.MoveSearchesRequest, +) (*apiv1.MoveSearchesResponse, error) { + curUser, _, err := grpcutil.GetUser(ctx) + if err != nil { + return nil, err + } + // check that user can view source project + srcProject, err := a.GetProjectByID(ctx, req.SourceProjectId, *curUser) + if err != nil { + return nil, err + } + if srcProject.Archived { + return nil, errors.Errorf("project (%v) is archived and cannot have searches moved from it", + srcProject.Id) + } + + // check suitable destination project + destProject, err := a.GetProjectByID(ctx, req.DestinationProjectId, *curUser) + if err != nil { + return nil, err + } + if destProject.Archived { + return nil, errors.Errorf("project (%v) is archived and cannot add new searches", + req.DestinationProjectId) + } + if err = experiment.AuthZProvider.Get().CanCreateExperiment(ctx, *curUser, destProject); err != nil { + return nil, status.Error(codes.PermissionDenied, err.Error()) + } + + if req.SourceProjectId == req.DestinationProjectId { + return &apiv1.MoveSearchesResponse{Results: []*apiv1.SearchActionResult{}}, nil + } + + var searchChecks []searchCandidateResult + getQ := db.Bun().NewSelect(). + ModelTableExpr("experiments AS e"). + Model(&searchChecks). + Column("e.id"). + ColumnExpr("COALESCE((e.archived OR p.archived OR w.archived), FALSE) AS archived"). + Join("JOIN projects p ON e.project_id = p.id"). + Join("JOIN workspaces w ON p.workspace_id = w.id"). + Where("e.project_id = ?", req.SourceProjectId) + + if req.Filter == nil { + getQ = getQ.Where("e.id IN (?)", bun.In(req.SearchIds)) + } else { + getQ, err = filterSearchQuery(getQ, req.Filter) + if err != nil { + return nil, err + } + } + + if getQ, err = experiment.AuthZProvider.Get().FilterExperimentsQuery(ctx, *curUser, nil, getQ, + []rbacv1.PermissionType{ + rbacv1.PermissionType_PERMISSION_TYPE_VIEW_EXPERIMENT_METADATA, + rbacv1.PermissionType_PERMISSION_TYPE_DELETE_EXPERIMENT, + }); err != nil { + return nil, err + } + + err = getQ.Scan(ctx) + if err != nil { + return nil, err + } + + var results []*apiv1.SearchActionResult + visibleIDs := set.New[int32]() + var validIDs []int32 + for _, check := range searchChecks { + visibleIDs.Insert(check.ID) + if check.Archived { + results = append(results, &apiv1.SearchActionResult{ + Error: "Search is archived.", + Id: check.ID, + }) + continue + } + validIDs = append(validIDs, check.ID) + } + if req.Filter == nil { + for _, originalID := range req.SearchIds { + if !visibleIDs.Contains(originalID) { + results = append(results, &apiv1.SearchActionResult{ + Error: fmt.Sprintf("Search with id '%d' not found in project with id '%d'", originalID, req.SourceProjectId), + Id: originalID, + }) + } + } + } + if len(validIDs) > 0 { + expMoveResults, err := experiment.MoveExperiments(ctx, srcProject.Id, validIDs, nil, req.DestinationProjectId) + if err != nil { + return nil, err + } + failedExpMoveIds := []int32{-1} + successExpMoveIds := []int32{-1} + for _, res := range expMoveResults { + if res.Error != nil { + failedExpMoveIds = append(failedExpMoveIds, res.ID) + } else { + successExpMoveIds = append(successExpMoveIds, res.ID) + } + } + + tx, err := db.Bun().BeginTx(ctx, nil) + if err != nil { + return nil, err + } + defer func() { + txErr := tx.Rollback() + if txErr != nil && txErr != sql.ErrTxDone { + log.WithError(txErr).Error("error rolling back transaction in MoveSearches") + } + }() + + if err = db.RemoveOutdatedProjectHparams(ctx, tx, int(req.SourceProjectId)); err != nil { + return nil, err + } + + var failedSearchIDs []int32 + if err = tx.NewSelect().Table("experiments"). + Column("id"). + Where("experiments.id IN (?)", bun.In(validIDs)). + Where("experiments.id IN (?)", bun.In(failedExpMoveIds)). + Scan(ctx, &failedSearchIDs); err != nil { + return nil, fmt.Errorf("getting failed experiment move IDs: %w", err) + } + for _, failedSearchID := range failedSearchIDs { + results = append(results, &apiv1.SearchActionResult{ + Error: "Failed to move experiment", + Id: failedSearchID, + }) + } + + var successSearchIDs []int32 + if err = tx.NewSelect().Table("experiments"). + Column("id"). + Where("experiments.id IN (?)", bun.In(successExpMoveIds)). + Scan(ctx, &successSearchIDs); err != nil { + return nil, fmt.Errorf("getting failed experiment move search IDs: %w", err) + } + for _, successSearchID := range successSearchIDs { + results = append(results, &apiv1.SearchActionResult{ + Error: "", + Id: successSearchID, + }) + } + if err = tx.Commit(); err != nil { + return nil, err + } + } + return &apiv1.MoveSearchesResponse{Results: results}, nil +} + +func (a *apiServer) KillSearches(ctx context.Context, req *apiv1.KillSearchesRequest, +) (*apiv1.KillSearchesResponse, error) { + curUser, _, err := grpcutil.GetUser(ctx) + if err != nil { + return nil, err + } + + type killSearchOKResult struct { + ID int32 + RequestID *string + IsTerminal bool + } + + var killCandidatees []killSearchOKResult + getQ := getSelectSearchesQueryTables(). + Model(&killCandidatees). + Column("e.id"). + ColumnExpr("t.request_id"). + ColumnExpr("e.state IN (?) AS is_terminal", bun.In(model.StatesToStrings(model.TerminalStates))). + Where("e.project_id = ?", req.ProjectId) + + if req.Filter == nil { + getQ = getQ.Where("e.id IN (?)", bun.In(req.SearchIds)) + } else { + getQ, err = filterSearchQuery(getQ, req.Filter) + if err != nil { + return nil, err + } + } + + if getQ, err = experiment.AuthZProvider.Get(). + FilterExperimentsQuery(ctx, *curUser, nil, getQ, + []rbacv1.PermissionType{rbacv1.PermissionType_PERMISSION_TYPE_UPDATE_EXPERIMENT}); err != nil { + return nil, err + } + + err = getQ.Scan(ctx) + if err != nil { + return nil, err + } + + var results []*apiv1.SearchActionResult + visibleIDs := set.New[int32]() + var validIDs []int32 + for _, cand := range killCandidatees { + visibleIDs.Insert(cand.ID) + switch { + case cand.IsTerminal: + results = append(results, &apiv1.SearchActionResult{ + Error: "", + Id: cand.ID, + }) + // This should be impossible in the current system but we will leave this check here + // to cover a possible error in integration tests + case cand.RequestID == nil: + results = append(results, &apiv1.SearchActionResult{ + Error: "Search has no associated request id.", + Id: cand.ID, + }) + default: + validIDs = append(validIDs, cand.ID) + } + } + if req.Filter == nil { + for _, originalID := range req.SearchIds { + if !visibleIDs.Contains(originalID) { + results = append(results, &apiv1.SearchActionResult{ + Error: fmt.Sprintf("Search with id '%d' not found", originalID), + Id: originalID, + }) + } + } + } + + for _, searchID := range validIDs { + _, err = a.KillExperiment(ctx, &apiv1.KillExperimentRequest{ + Id: searchID, + }) + if err != nil { + results = append(results, &apiv1.SearchActionResult{ + Error: fmt.Sprintf("Failed to kill search: %s", err), + Id: searchID, + }) + } else { + results = append(results, &apiv1.SearchActionResult{ + Error: "", + Id: searchID, + }) + } + } + return &apiv1.KillSearchesResponse{Results: results}, nil +} + +func (a *apiServer) DeleteSearches(ctx context.Context, req *apiv1.DeleteSearchesRequest, +) (*apiv1.DeleteSearchesResponse, error) { + if len(req.SearchIds) > 0 && req.Filter != nil { + return nil, fmt.Errorf("if filter is provided search id list must be empty") + } + curUser, _, err := grpcutil.GetUser(ctx) + if err != nil { + return nil, err + } + // get searches to delete + var deleteCandidates []searchCandidateResult + getQ := getSelectSearchesQueryTables(). + Model(&deleteCandidates). + Column("e.id"). + ColumnExpr("COALESCE((e.archived OR p.archived OR w.archived), FALSE) AS archived"). + ColumnExpr("e.state IN (?) AS is_terminal", bun.In(model.StatesToStrings(model.TerminalStates))). + Where("e.project_id = ?", req.ProjectId) + + if req.Filter == nil { + getQ = getQ.Where("e.id IN (?)", bun.In(req.SearchIds)) + } else { + getQ, err = filterSearchQuery(getQ, req.Filter) + if err != nil { + return nil, err + } + } + + if getQ, err = experiment.AuthZProvider.Get().FilterExperimentsQuery(ctx, *curUser, nil, getQ, + []rbacv1.PermissionType{ + rbacv1.PermissionType_PERMISSION_TYPE_DELETE_EXPERIMENT, + }); err != nil { + return nil, err + } + + err = getQ.Scan(ctx) + if err != nil { + return nil, err + } + + var results []*apiv1.SearchActionResult + visibleIDs := set.New[int32]() + var validIDs []int32 + for _, cand := range deleteCandidates { + visibleIDs.Insert(cand.ID) + if !cand.IsTerminal { + results = append(results, &apiv1.SearchActionResult{ + Error: "Search is not in a terminal state.", + Id: cand.ID, + }) + } else { + validIDs = append(validIDs, cand.ID) + } + } + if req.Filter == nil { + for _, originalID := range req.SearchIds { + if !visibleIDs.Contains(originalID) { + results = append(results, &apiv1.SearchActionResult{ + Error: fmt.Sprintf("Search with id '%d' not found in project with id '%d'", originalID, req.ProjectId), + Id: originalID, + }) + } + } + } + if len(validIDs) == 0 { + return &apiv1.DeleteSearchesResponse{Results: results}, nil + } + tx, err := db.Bun().BeginTx(ctx, nil) + if err != nil { + return nil, err + } + defer func() { + txErr := tx.Rollback() + if txErr != nil && txErr != sql.ErrTxDone { + log.WithError(txErr).Error("error rolling back transaction in DeleteSearches") + } + }() + + var deleteRunIDs []int32 + getQ = db.Bun().NewSelect(). + TableExpr("runs AS r"). + Model(&deleteRunIDs). + Column("r.id"). + Where("r.experiment_id IN (?)", bun.In(validIDs)) + + err = getQ.Scan(ctx) + if err != nil { + return nil, err + } + + // delete run logs + if _, err = tx.NewDelete().Table("trial_logs"). + Where("trial_logs.trial_id IN (?)", bun.In(deleteRunIDs)). + Exec(ctx); err != nil { + return nil, fmt.Errorf("delete run logs: %w", err) + } + + // delete task logs + trialTaskQuery := tx.NewSelect().Table("run_id_task_id"). + ColumnExpr("task_id"). + Where("run_id IN (?)", bun.In(deleteRunIDs)) + if _, err = tx.NewDelete().Table("task_logs"). + Where("task_logs.task_id IN (?)", trialTaskQuery). + Exec(ctx); err != nil { + return nil, fmt.Errorf("delete task logs: %w", err) + } + + // delete runs + if _, err = tx.NewDelete().Table("runs"). + Where("runs.id IN (?)", bun.In(deleteRunIDs)). + Exec(ctx); err != nil { + return nil, fmt.Errorf("delete runs: %w", err) + } + + var acceptedIDs []int + if _, err = tx.NewDelete().Table("experiments"). + Where("id IN (?)", bun.In(validIDs)). + Returning("id"). + Model(&acceptedIDs). + Exec(ctx); err != nil { + return nil, fmt.Errorf("delete runs: %w", err) + } + + for _, acceptID := range acceptedIDs { + results = append(results, &apiv1.SearchActionResult{ + Error: "", + Id: int32(acceptID), + }) + } + + // delete run hparams + if _, err = tx.NewDelete().Table("run_hparams"). + Where("run_id IN (?)", bun.In(deleteRunIDs)). + Exec(ctx); err != nil { + return nil, fmt.Errorf("deleting run hparams: %w", err) + } + // remove project hparams + if err = db.RemoveOutdatedProjectHparams(ctx, tx, int(req.ProjectId)); err != nil { + return nil, err + } + + if err = tx.Commit(); err != nil { + return nil, err + } + + return &apiv1.DeleteSearchesResponse{Results: results}, nil +} + +func (a *apiServer) ArchiveSearches( + ctx context.Context, req *apiv1.ArchiveSearchesRequest, +) (*apiv1.ArchiveSearchesResponse, error) { + results, err := archiveUnarchiveSearchAction(ctx, true, req.SearchIds, req.ProjectId, req.Filter) + if err != nil { + return nil, err + } + return &apiv1.ArchiveSearchesResponse{Results: results}, nil +} + +func (a *apiServer) UnarchiveSearches( + ctx context.Context, req *apiv1.UnarchiveSearchesRequest, +) (*apiv1.UnarchiveSearchesResponse, error) { + results, err := archiveUnarchiveSearchAction(ctx, false, req.SearchIds, req.ProjectId, req.Filter) + if err != nil { + return nil, err + } + return &apiv1.UnarchiveSearchesResponse{Results: results}, nil +} + +func archiveUnarchiveSearchAction(ctx context.Context, archive bool, runIDs []int32, + projectID int32, filter *string, +) ([]*apiv1.SearchActionResult, error) { + if len(runIDs) > 0 && filter != nil { + return nil, fmt.Errorf("if filter is provided run id list must be empty") + } + curUser, _, err := grpcutil.GetUser(ctx) + if err != nil { + return nil, err + } + + var searchCandidates []searchCandidateResult + query := db.Bun().NewSelect(). + ModelTableExpr("experiments AS e"). + Model(&searchCandidates). + Column("e.id"). + ColumnExpr("COALESCE((e.archived OR p.archived OR w.archived), FALSE) AS archived"). + ColumnExpr("e.state IN (?) AS is_terminal", bun.In(model.StatesToStrings(model.TerminalStates))). + Join("JOIN projects p ON e.project_id = p.id"). + Join("JOIN workspaces w ON p.workspace_id = w.id"). + Where("e.project_id = ?", projectID) + + if filter == nil { + query = query.Where("e.id IN (?)", bun.In(runIDs)) + } else { + query, err = filterSearchQuery(query, filter) + if err != nil { + return nil, err + } + } + + query, err = experiment.AuthZProvider.Get(). + FilterExperimentsQuery(ctx, *curUser, nil, query, + []rbacv1.PermissionType{rbacv1.PermissionType_PERMISSION_TYPE_UPDATE_EXPERIMENT_METADATA}) + if err != nil { + return nil, err + } + + err = query.Scan(ctx) + if err != nil { + return nil, err + } + + var results []*apiv1.SearchActionResult + visibleIDs := set.New[int32]() + var validIDs []int32 + for _, cand := range searchCandidates { + visibleIDs.Insert(cand.ID) + switch { + case !cand.IsTerminal: + results = append(results, &apiv1.SearchActionResult{ + Error: "Search is not in terminal state.", + Id: cand.ID, + }) + case cand.Archived == archive: + results = append(results, &apiv1.SearchActionResult{ + Id: cand.ID, + }) + default: + validIDs = append(validIDs, cand.ID) + } + } + + if filter == nil { + for _, originalID := range runIDs { + if !visibleIDs.Contains(originalID) { + results = append(results, &apiv1.SearchActionResult{ + Error: fmt.Sprintf("Search with id '%d' not found in project with id '%d'", originalID, projectID), + Id: originalID, + }) + } + } + } + + if len(validIDs) > 0 { + var acceptedIDs []int32 + _, err = db.Bun().NewUpdate(). + ModelTableExpr("experiments as e"). + Set("archived = ?", archive). + Where("id IN (?)", bun.In(validIDs)). + Returning("id"). + Model(&acceptedIDs). + Exec(ctx) + if err != nil { + return nil, fmt.Errorf("failed to archive/unarchive searches: %w", err) + } + for _, acceptID := range acceptedIDs { + results = append(results, &apiv1.SearchActionResult{ + Error: "", + Id: acceptID, + }) + } + } + + return results, nil +} + +func (a *apiServer) PauseSearches(ctx context.Context, req *apiv1.PauseSearchesRequest, +) (*apiv1.PauseSearchesResponse, error) { + results, err := pauseResumeSearchAction(ctx, true, req.ProjectId, req.SearchIds, req.Filter) + if err != nil { + return nil, err + } + return &apiv1.PauseSearchesResponse{Results: results}, nil +} + +func (a *apiServer) ResumeSearches(ctx context.Context, req *apiv1.ResumeSearchesRequest, +) (*apiv1.ResumeSearchesResponse, error) { + results, err := pauseResumeSearchAction(ctx, false, req.ProjectId, req.SearchIds, req.Filter) + if err != nil { + return nil, err + } + return &apiv1.ResumeSearchesResponse{Results: results}, nil +} + +func pauseResumeSearchAction(ctx context.Context, isPause bool, projectID int32, + searchIds []int32, filter *string) ( + []*apiv1.SearchActionResult, error, +) { + if len(searchIds) > 0 && filter != nil { + return nil, fmt.Errorf("if filter is provided search id list must be empty") + } + // Get experiment ids + var err error + var searchCandidates []searchCandidateResult + isSearchIDAction := (len(searchIds) > 0) + getQ := db.Bun().NewSelect(). + ModelTableExpr("experiments AS e"). + Model(&searchCandidates). + Column("e.id"). + ColumnExpr("COALESCE((e.archived OR p.archived OR w.archived), FALSE) AS archived"). + Join("JOIN projects p ON e.project_id = p.id"). + Join("JOIN workspaces w ON p.workspace_id = w.id"). + Where("e.project_id = ?", projectID) + + if isSearchIDAction { + getQ = getQ.Where("e.id IN (?)", bun.In(searchIds)) + } else { + getQ, err = filterSearchQuery(getQ, filter) + if err != nil { + return nil, err + } + } + + err = getQ.Scan(ctx) + if err != nil { + return nil, err + } + + var results []*apiv1.SearchActionResult + visibleIDs := set.New[int32]() + expIDs := set.New[int32]() + for _, cand := range searchCandidates { + visibleIDs.Insert(cand.ID) + if cand.Archived { + results = append(results, &apiv1.SearchActionResult{ + Error: "Search is archived.", + Id: cand.ID, + }) + continue + } + expIDs.Insert(cand.ID) + } + if isSearchIDAction { + for _, originalID := range searchIds { + if !visibleIDs.Contains(originalID) { + results = append(results, &apiv1.SearchActionResult{ + Error: fmt.Sprintf("Search with id '%d' not found in project with id '%d'", originalID, projectID), + Id: originalID, + }) + } + } + } + // Pause/Resume experiments + var expResults []experiment.ExperimentActionResult + var errMsg string + if isPause { + expResults, err = experiment.PauseExperiments(ctx, projectID, expIDs.ToSlice(), nil) + errMsg = "Failed to pause experiment: %s" + } else { + expResults, err = experiment.ActivateExperiments(ctx, projectID, expIDs.ToSlice(), nil) + errMsg = "Failed to resume experiment: %s" + } + if err != nil { + return nil, err + } + for _, expRes := range expResults { + if expRes.Error != nil { + results = append(results, &apiv1.SearchActionResult{ + Error: fmt.Sprintf(errMsg, expRes.Error), + Id: expRes.ID, + }) + } else { + results = append(results, &apiv1.SearchActionResult{ + Error: "", + Id: expRes.ID, + }) + } + } + return results, nil +} diff --git a/master/internal/api_searches_intg_test.go b/master/internal/api_searches_intg_test.go new file mode 100644 index 00000000000..183cdcf6586 --- /dev/null +++ b/master/internal/api_searches_intg_test.go @@ -0,0 +1,549 @@ +//go:build integration +// +build integration + +package internal + +import ( + "encoding/json" + "fmt" + "slices" + "strings" + "testing" + "time" + + "github.com/stretchr/testify/require" + + "github.com/determined-ai/determined/master/internal/db" + "github.com/determined-ai/determined/master/pkg/model" + "github.com/determined-ai/determined/master/pkg/ptrs" + "github.com/determined-ai/determined/master/pkg/schemas" + "github.com/determined-ai/determined/master/pkg/schemas/expconf" + "github.com/determined-ai/determined/proto/pkg/apiv1" +) + +// nolint: exhaustruct +func createTestSearchWithHParams( + t *testing.T, api *apiServer, curUser model.User, projectID int, hparams map[string]any, +) *model.Experiment { + experimentConfig := expconf.ExperimentConfig{ + RawDescription: ptrs.Ptr("desc"), + RawName: expconf.Name{RawString: ptrs.Ptr("name")}, + } + + b, err := json.Marshal(hparams) + require.NoError(t, err) + err = json.Unmarshal(b, &experimentConfig.RawHyperparameters) + require.NoError(t, err) + + activeConfig := schemas.WithDefaults(schemas.Merge(minExpConfig, experimentConfig)) + return createTestExpWithActiveConfig(t, api, curUser, projectID, activeConfig) +} + +func TestMoveSearchesIds(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + _, projectIDInt := createProjectAndWorkspace(ctx, t, api) + sourceprojectID := int32(1) + destprojectID := int32(projectIDInt) + + search1 := createTestExp(t, api, curUser) + search2 := createTestExp(t, api, curUser) + + moveIds := []int32{int32(search1.ID)} + + moveReq := &apiv1.MoveSearchesRequest{ + SearchIds: moveIds, + SourceProjectId: sourceprojectID, + DestinationProjectId: destprojectID, + } + + moveResp, err := api.MoveSearches(ctx, moveReq) + require.NoError(t, err) + require.Len(t, moveResp.Results, 1) + require.Equal(t, "", moveResp.Results[0].Error) + + // run no longer in old project + filter := fmt.Sprintf(`{"filterGroup":{"children":[{"columnName":"id","kind":"field",`+ + `"location":"LOCATION_TYPE_EXPERIMENT","operator":"=","type":"COLUMN_TYPE_NUMBER","value":%d}],`+ + `"conjunction":"and","kind":"group"},"showArchived":false}`, int32(search2.ID)) + req := &apiv1.SearchExperimentsRequest{ + ProjectId: &sourceprojectID, + Filter: &filter, + } + resp, err := api.SearchExperiments(ctx, req) + require.NoError(t, err) + require.Len(t, resp.Experiments, 1) + require.Equal(t, int32(search2.ID), resp.Experiments[0].Experiment.Id) + + // runs in new project + req = &apiv1.SearchExperimentsRequest{ + ProjectId: &destprojectID, + Sort: ptrs.Ptr("id=desc"), + } + + resp, err = api.SearchExperiments(ctx, req) + require.NoError(t, err) + require.Len(t, resp.Experiments, 1) + require.Equal(t, moveIds[0], resp.Experiments[0].Experiment.Id) +} + +func TestMoveSearchesSameIds(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + sourceprojectID := int32(1) + + search1 := createTestExp(t, api, curUser) + moveIds := []int32{int32(search1.ID)} + + moveReq := &apiv1.MoveSearchesRequest{ + SearchIds: moveIds, + SourceProjectId: sourceprojectID, + DestinationProjectId: sourceprojectID, + } + + moveResp, err := api.MoveSearches(ctx, moveReq) + require.NoError(t, err) + require.Empty(t, moveResp.Results) +} + +func TestMoveSearchesFilter(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + _, projectIDInt := createProjectAndWorkspace(ctx, t, api) + _, projectID2Int := createProjectAndWorkspace(ctx, t, api) + sourceprojectID := int32(projectIDInt) + destprojectID := int32(projectID2Int) + + hyperparameters1 := map[string]any{"global_batch_size": 1, "test1": map[string]any{"test2": 1}} + hyperparameters2 := map[string]any{"test1": map[string]any{"test2": 5}} + exp1 := createTestSearchWithHParams(t, api, curUser, projectIDInt, hyperparameters1) + exp2 := createTestSearchWithHParams(t, api, curUser, projectIDInt, hyperparameters2) + + task1 := &model.Task{TaskType: model.TaskTypeTrial, TaskID: model.NewTaskID()} + require.NoError(t, db.AddTask(ctx, task1)) + require.NoError(t, db.AddTrial(ctx, &model.Trial{ + State: model.PausedState, + ExperimentID: exp1.ID, + StartTime: time.Now(), + HParams: hyperparameters1, + }, task1.TaskID)) + + task2 := &model.Task{TaskType: model.TaskTypeTrial, TaskID: model.NewTaskID()} + require.NoError(t, db.AddTask(ctx, task2)) + require.NoError(t, db.AddTrial(ctx, &model.Trial{ + State: model.PausedState, + ExperimentID: exp2.ID, + StartTime: time.Now(), + HParams: hyperparameters2, + }, task2.TaskID)) + + projHparam := getTestProjectHyperparmeters(ctx, t, projectIDInt) + require.Len(t, projHparam, 2) + require.True(t, slices.Contains(projHparam, "test1.test2")) + require.True(t, slices.Contains(projHparam, "global_batch_size")) + + req := &apiv1.SearchRunsRequest{ + ProjectId: &sourceprojectID, + Sort: ptrs.Ptr("id=asc"), + } + _, err := api.SearchRuns(ctx, req) + require.NoError(t, err) + + // If provided with filter MoveSearches should ignore these move ids + moveIds := []int32{int32(exp1.ID), int32(exp2.ID)} + + moveReq := &apiv1.MoveSearchesRequest{ + SearchIds: moveIds, + SourceProjectId: sourceprojectID, + DestinationProjectId: destprojectID, + Filter: ptrs.Ptr(`{"filterGroup":{"children":[{"columnName":"hp.test1.test2","kind":"field",` + + `"location":"LOCATION_TYPE_HYPERPARAMETERS","operator":"<=","type":"COLUMN_TYPE_NUMBER","value":1}],` + + `"conjunction":"and","kind":"group"},"showArchived":false}`), + } + + moveResp, err := api.MoveSearches(ctx, moveReq) + require.NoError(t, err) + require.Len(t, moveResp.Results, 1) + require.Equal(t, "", moveResp.Results[0].Error) + + // check 1 run moved in old project + resp, err := api.SearchRuns(ctx, req) + require.NoError(t, err) + require.Len(t, resp.Runs, 1) + + // run in new project + req = &apiv1.SearchRunsRequest{ + ProjectId: &destprojectID, + Sort: ptrs.Ptr("id=asc"), + } + + resp, err = api.SearchRuns(ctx, req) + require.NoError(t, err) + require.Len(t, resp.Runs, 1) + + // Hyperparam moved out of project A + projHparam = getTestProjectHyperparmeters(ctx, t, projectIDInt) + require.Len(t, projHparam, 1) + require.Equal(t, "test1.test2", projHparam[0]) + + // Hyperparams moved into project B + projHparam = getTestProjectHyperparmeters(ctx, t, projectID2Int) + require.Len(t, projHparam, 2) + require.True(t, slices.Contains(projHparam, "test1.test2")) + require.True(t, slices.Contains(projHparam, "global_batch_size")) + + i := strings.Index(resp.Runs[0].LocalId, "-") + localID := resp.Runs[0].LocalId[i+1:] + require.Equal(t, "1", localID) +} + +func TestDeleteSearchesNonTerminal(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + _, projectIDInt := createProjectAndWorkspace(ctx, t, api) + projectID := int32(projectIDInt) + + exp := createTestExpWithProjectID(t, api, curUser, projectIDInt) + + task1 := &model.Task{TaskType: model.TaskTypeTrial, TaskID: model.NewTaskID()} + require.NoError(t, db.AddTask(ctx, task1)) + require.NoError(t, db.AddTrial(ctx, &model.Trial{ + State: model.ActiveState, + ExperimentID: exp.ID, + StartTime: time.Now(), + }, task1.TaskID)) + + task2 := &model.Task{TaskType: model.TaskTypeTrial, TaskID: model.NewTaskID()} + require.NoError(t, db.AddTask(ctx, task2)) + require.NoError(t, db.AddTrial(ctx, &model.Trial{ + State: model.ActiveState, + ExperimentID: exp.ID, + StartTime: time.Now(), + }, task2.TaskID)) + + searchReq := &apiv1.SearchRunsRequest{ + ProjectId: &projectID, + Sort: ptrs.Ptr("id=asc"), + } + searchResp, err := api.SearchRuns(ctx, searchReq) + require.NoError(t, err) + require.Len(t, searchResp.Runs, 2) + + searchIDs := []int32{int32(exp.ID)} + req := &apiv1.DeleteSearchesRequest{ + SearchIds: searchIDs, + ProjectId: projectID, + } + res, err := api.DeleteSearches(ctx, req) + require.NoError(t, err) + require.Len(t, res.Results, 1) + require.Equal(t, "Search is not in a terminal state.", res.Results[0].Error) + + searchReq = &apiv1.SearchRunsRequest{ + ProjectId: &projectID, + Filter: ptrs.Ptr(`{"showArchived":true}`), + Sort: ptrs.Ptr("id=asc"), + } + + searchResp, err = api.SearchRuns(ctx, searchReq) + require.NoError(t, err) + require.Len(t, searchResp.Runs, 2) +} + +func TestDeleteSearchesIds(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + projectID, _, _, _, expID := setUpMultiTrialExperiments(ctx, t, api, curUser) //nolint:dogsled + require.NoError(t, completeExp(ctx, expID)) + + expIDs := []int32{expID} + req := &apiv1.DeleteSearchesRequest{ + SearchIds: expIDs, + ProjectId: projectID, + } + res, err := api.DeleteSearches(ctx, req) + require.NoError(t, err) + require.Len(t, res.Results, 1) + require.Equal(t, "", res.Results[0].Error) + + searchReq := &apiv1.SearchRunsRequest{ + ProjectId: &projectID, + Filter: ptrs.Ptr(`{"showArchived":true}`), + Sort: ptrs.Ptr("id=asc"), + } + + searchResp, err := api.SearchRuns(ctx, searchReq) + require.NoError(t, err) + require.Empty(t, searchResp.Runs) +} + +func TestDeleteSearchesIdsNonExistent(t *testing.T) { + api, _, ctx := setupAPITest(t, nil) + _, projectIDInt := createProjectAndWorkspace(ctx, t, api) + projectID := int32(projectIDInt) + + // delete runs + searchIDs := []int32{-1} + req := &apiv1.DeleteSearchesRequest{ + SearchIds: searchIDs, + ProjectId: projectID, + } + res, err := api.DeleteSearches(ctx, req) + require.NoError(t, err) + require.Len(t, res.Results, 1) + require.Equal(t, fmt.Sprintf("Search with id '%d' not found in project with id '%d'", -1, projectID), + res.Results[0].Error) +} + +func TestDeleteSearchesFilter(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + _, projectIDInt := createProjectAndWorkspace(ctx, t, api) + projectID := int32(projectIDInt) + + hyperparameters1 := map[string]any{"global_batch_size": 1, "test1": map[string]any{"test2": 1}} + exp1 := createTestSearchWithHParams(t, api, curUser, projectIDInt, hyperparameters1) + hyperparameters2 := map[string]any{"test1": map[string]any{"test2": 5}} + exp2 := createTestSearchWithHParams(t, api, curUser, projectIDInt, hyperparameters2) + + task1 := &model.Task{TaskType: model.TaskTypeTrial, TaskID: model.NewTaskID()} + require.NoError(t, db.AddTask(ctx, task1)) + require.NoError(t, db.AddTrial(ctx, &model.Trial{ + State: model.CompletedState, + ExperimentID: exp1.ID, + StartTime: time.Now(), + HParams: hyperparameters1, + }, task1.TaskID)) + + task2 := &model.Task{TaskType: model.TaskTypeTrial, TaskID: model.NewTaskID()} + require.NoError(t, db.AddTask(ctx, task2)) + require.NoError(t, db.AddTrial(ctx, &model.Trial{ + State: model.CompletedState, + ExperimentID: exp2.ID, + StartTime: time.Now(), + HParams: hyperparameters2, + }, task2.TaskID)) + + projHparam := getTestProjectHyperparmeters(ctx, t, projectIDInt) + require.Len(t, projHparam, 2) + require.True(t, slices.Contains(projHparam, "test1.test2")) + require.True(t, slices.Contains(projHparam, "global_batch_size")) + + require.NoError(t, completeExp(ctx, int32(exp1.ID))) + require.NoError(t, completeExp(ctx, int32(exp2.ID))) + + filter := `{ + "filterGroup": { + "children": [ + { + "columnName": "hp.test1.test2", + "kind": "field", + "location": "LOCATION_TYPE_HYPERPARAMETERS", + "operator": "<=", + "type": "COLUMN_TYPE_NUMBER", + "value": 1 + } + ], + "conjunction": "and", + "kind": "group" + }, + "showArchived": true + }` + req := &apiv1.DeleteSearchesRequest{ + Filter: &filter, + ProjectId: projectID, + } + res, err := api.DeleteSearches(ctx, req) + require.NoError(t, err) + require.Len(t, res.Results, 1) + require.Equal(t, "", res.Results[0].Error) + + searchReq := &apiv1.SearchRunsRequest{ + ProjectId: &projectID, + Filter: ptrs.Ptr(`{"showArchived":true}`), + Sort: ptrs.Ptr("id=asc"), + } + + projHparam = getTestProjectHyperparmeters(ctx, t, projectIDInt) + require.Len(t, projHparam, 1) + require.Equal(t, "test1.test2", projHparam[0]) + + searchResp, err := api.SearchRuns(ctx, searchReq) + require.NoError(t, err) + require.Len(t, searchResp.Runs, 1) +} + +func TestArchiveUnarchiveSearchIds(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + projectID, _, _, _, expID := setUpMultiTrialExperiments(ctx, t, api, curUser) //nolint:dogsled + require.NoError(t, completeExp(ctx, expID)) + + searchIDs := []int32{expID} + archReq := &apiv1.ArchiveSearchesRequest{ + SearchIds: searchIDs, + ProjectId: projectID, + } + archRes, err := api.ArchiveSearches(ctx, archReq) + require.NoError(t, err) + require.Len(t, archRes.Results, 1) + require.Equal(t, "", archRes.Results[0].Error) + + searchReq := &apiv1.SearchRunsRequest{ + ProjectId: &projectID, + Filter: ptrs.Ptr(`{"showArchived":false}`), + Sort: ptrs.Ptr("id=asc"), + } + + searchResp, err := api.SearchRuns(ctx, searchReq) + require.NoError(t, err) + require.Empty(t, searchResp.Runs) + + // Unarchive runs + unarchReq := &apiv1.UnarchiveSearchesRequest{ + SearchIds: searchIDs, + ProjectId: projectID, + } + unarchRes, err := api.UnarchiveSearches(ctx, unarchReq) + require.NoError(t, err) + require.Len(t, unarchRes.Results, 1) + require.Equal(t, "", unarchRes.Results[0].Error) + + searchResp, err = api.SearchRuns(ctx, searchReq) + require.NoError(t, err) + require.Len(t, searchResp.Runs, 2) +} + +func TestArchiveUnarchiveSearchFilter(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + _, projectIDInt := createProjectAndWorkspace(ctx, t, api) + projectID := int32(projectIDInt) + + hyperparameters1 := map[string]any{"global_batch_size": 1, "test1": map[string]any{"test2": 1}} + exp1 := createTestSearchWithHParams(t, api, curUser, projectIDInt, hyperparameters1) + hyperparameters2 := map[string]any{"global_batch_size": 1, "test1": map[string]any{"test2": 5}} + exp2 := createTestSearchWithHParams(t, api, curUser, projectIDInt, hyperparameters2) + + task1 := &model.Task{TaskType: model.TaskTypeTrial, TaskID: model.NewTaskID()} + require.NoError(t, db.AddTask(ctx, task1)) + require.NoError(t, db.AddTrial(ctx, &model.Trial{ + State: model.CompletedState, + ExperimentID: exp1.ID, + StartTime: time.Now(), + HParams: hyperparameters1, + }, task1.TaskID)) + + task2 := &model.Task{TaskType: model.TaskTypeTrial, TaskID: model.NewTaskID()} + require.NoError(t, db.AddTask(ctx, task2)) + require.NoError(t, db.AddTrial(ctx, &model.Trial{ + State: model.CompletedState, + ExperimentID: exp2.ID, + StartTime: time.Now(), + HParams: hyperparameters2, + }, task2.TaskID)) + + require.NoError(t, completeExp(ctx, int32(exp1.ID))) + require.NoError(t, completeExp(ctx, int32(exp2.ID))) + + filter := `{"filterGroup":{"children":[{"columnName":"hp.test1.test2","kind":"field",` + + `"location":"LOCATION_TYPE_HYPERPARAMETERS","operator":"<=","type":"COLUMN_TYPE_NUMBER","value":1}],` + + `"conjunction":"and","kind":"group"},"showArchived":true}` + archReq := &apiv1.ArchiveSearchesRequest{ + Filter: &filter, + ProjectId: projectID, + } + archRes, err := api.ArchiveSearches(ctx, archReq) + require.NoError(t, err) + require.Len(t, archRes.Results, 1) + require.Equal(t, "", archRes.Results[0].Error) + + searchReq := &apiv1.SearchRunsRequest{ + ProjectId: &projectID, + Filter: ptrs.Ptr(`{"showArchived":false}`), + Sort: ptrs.Ptr("id=asc"), + } + + searchResp, err := api.SearchRuns(ctx, searchReq) + require.NoError(t, err) + require.Len(t, searchResp.Runs, 1) + + // Unarchive runs + unarchReq := &apiv1.UnarchiveSearchesRequest{ + Filter: &filter, + ProjectId: projectID, + } + unarchRes, err := api.UnarchiveSearches(ctx, unarchReq) + require.NoError(t, err) + require.Len(t, unarchRes.Results, 1) + require.Equal(t, "", unarchRes.Results[0].Error) + + searchResp, err = api.SearchRuns(ctx, searchReq) + require.NoError(t, err) + require.Len(t, searchResp.Runs, 2) +} + +func TestArchiveAlreadyArchivedSearch(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + projectID, _, _, _, expID := setUpMultiTrialExperiments(ctx, t, api, curUser) //nolint:dogsled + require.NoError(t, completeExp(ctx, expID)) + + // Archive runs + searchIDs := []int32{expID} + archReq := &apiv1.ArchiveSearchesRequest{ + SearchIds: searchIDs, + ProjectId: projectID, + } + archRes, err := api.ArchiveSearches(ctx, archReq) + require.NoError(t, err) + require.Len(t, archRes.Results, 1) + require.Equal(t, "", archRes.Results[0].Error) + + searchReq := &apiv1.SearchRunsRequest{ + ProjectId: &projectID, + Filter: ptrs.Ptr(`{"showArchived":false}`), + Sort: ptrs.Ptr("id=asc"), + } + + searchResp, err := api.SearchRuns(ctx, searchReq) + require.NoError(t, err) + require.Empty(t, searchResp.Runs) + + // Try to archive again + archRes, err = api.ArchiveSearches(ctx, archReq) + require.NoError(t, err) + require.Len(t, archRes.Results, 1) + require.Equal(t, "", archRes.Results[0].Error) +} + +func TestArchiveSearchNonTerminalState(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + _, projectIDInt := createProjectAndWorkspace(ctx, t, api) + projectID := int32(projectIDInt) + + exp := createTestExpWithProjectID(t, api, curUser, projectIDInt) + + task1 := &model.Task{TaskType: model.TaskTypeTrial, TaskID: model.NewTaskID()} + require.NoError(t, db.AddTask(ctx, task1)) + require.NoError(t, db.AddTrial(ctx, &model.Trial{ + State: model.ActiveState, + ExperimentID: exp.ID, + StartTime: time.Now(), + }, task1.TaskID)) + + archReq := &apiv1.ArchiveSearchesRequest{ + SearchIds: []int32{int32(exp.ID)}, + ProjectId: projectID, + } + archRes, err := api.ArchiveSearches(ctx, archReq) + require.NoError(t, err) + require.Len(t, archRes.Results, 1) + require.Equal(t, "Search is not in terminal state.", archRes.Results[0].Error) +} + +func TestUnarchiveSearchAlreadyUnarchived(t *testing.T) { + api, curUser, ctx := setupAPITest(t, nil) + projectID, _, _, _, exp := setUpMultiTrialExperiments(ctx, t, api, curUser) //nolint:dogsled + require.NoError(t, completeExp(ctx, exp)) + + unarchReq := &apiv1.UnarchiveSearchesRequest{ + SearchIds: []int32{exp}, + ProjectId: projectID, + } + unarchRes, err := api.UnarchiveSearches(ctx, unarchReq) + require.NoError(t, err) + require.Len(t, unarchRes.Results, 1) + require.Equal(t, "", unarchRes.Results[0].Error) +} diff --git a/proto/pkg/apiv1/api.pb.go b/proto/pkg/apiv1/api.pb.go index 64c6f23d20c..ebcf40fbd6c 100644 --- a/proto/pkg/apiv1/api.pb.go +++ b/proto/pkg/apiv1/api.pb.go @@ -62,6 +62,8 @@ var file_determined_api_v1_api_proto_rawDesc = []byte{ 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x62, 0x61, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x61, @@ -81,7 +83,7 @@ var file_determined_api_v1_api_proto_rawDesc = []byte{ 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, - 0x8b, 0xde, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x12, + 0xb6, 0xe6, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x7e, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1f, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x65, 0x74, 0x65, @@ -2881,70 +2883,136 @@ var file_determined_api_v1_api_proto_rawDesc = []byte{ 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x2a, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x7b, - 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x42, 0xda, - 0x07, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2d, 0x61, 0x69, 0x2f, 0x64, 0x65, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6b, 0x67, - 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x92, 0x41, 0xa1, 0x07, 0x12, 0x95, 0x06, 0x0a, 0x15, 0x44, - 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x28, 0x42, - 0x65, 0x74, 0x61, 0x29, 0x12, 0xf5, 0x04, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x20, 0x68, 0x65, 0x6c, 0x70, 0x73, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x6c, 0x65, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x20, 0x74, 0x72, 0x61, 0x69, - 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x71, 0x75, - 0x69, 0x63, 0x6b, 0x6c, 0x79, 0x2c, 0x20, 0x65, 0x61, 0x73, 0x69, 0x6c, 0x79, 0x20, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x20, 0x47, 0x50, 0x55, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x6c, 0x79, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x20, - 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x73, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, - 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x6f, 0x63, - 0x75, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x73, 0x20, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x6f, 0x75, 0x74, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, - 0x77, 0x6f, 0x72, 0x72, 0x79, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x44, 0x65, 0x76, 0x4f, - 0x70, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, - 0x6f, 0x72, 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x72, - 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x0a, 0x59, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, - 0x20, 0x74, 0x68, 0x69, 0x6e, 0x6b, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x67, 0x61, 0x70, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, - 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x54, 0x65, 0x6e, 0x73, 0x6f, - 0x72, 0x46, 0x6c, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x50, 0x79, 0x54, 0x6f, 0x72, 0x63, - 0x68, 0x20, 0x2d, 0x2d, 0x2d, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x47, 0x50, 0x55, - 0x20, 0x2d, 0x2d, 0x2d, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6c, - 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x69, 0x73, - 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x64, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x65, - 0x70, 0x20, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x74, 0x20, 0x73, 0x63, - 0x61, 0x6c, 0x65, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x61, 0x74, - 0x61, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x61, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2e, 0x22, 0x40, 0x0a, 0x0d, - 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x41, 0x49, 0x12, 0x16, 0x68, - 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2e, 0x61, 0x69, 0x2f, 0x1a, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, - 0x40, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x69, 0x2a, 0x3d, - 0x0a, 0x0a, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x20, 0x32, 0x2e, 0x30, 0x12, 0x2f, 0x68, 0x74, - 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x2f, 0x4c, 0x49, 0x43, - 0x45, 0x4e, 0x53, 0x45, 0x2d, 0x32, 0x2e, 0x30, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x32, 0x03, 0x30, - 0x2e, 0x31, 0x2a, 0x02, 0x01, 0x02, 0x5a, 0x4a, 0x0a, 0x48, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x72, - 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x08, 0x02, 0x12, 0x24, 0x42, 0x65, 0x61, - 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, - 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x1a, 0x0d, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x02, 0x62, 0x11, 0x0a, 0x0f, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x00, 0x72, 0x24, 0x0a, 0x1b, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x65, 0x64, 0x20, 0x41, 0x49, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x05, 0x2f, 0x64, 0x6f, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0x8e, + 0x01, 0x0a, 0x0c, 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x12, + 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x6d, 0x6f, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x12, + 0x8e, 0x01, 0x0a, 0x0c, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x12, 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6c, + 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x6b, 0x69, 0x6c, 0x6c, 0x3a, 0x01, 0x2a, + 0x12, 0x96, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x2f, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x9a, 0x01, 0x0a, 0x0f, 0x41, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x12, 0x29, 0x2e, + 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0xa2, 0x01, 0x0a, 0x11, 0x55, 0x6e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x75, + 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x92, 0x01, 0x0a, 0x0d, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x12, 0x27, 0x2e, + 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2e, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x3a, 0x01, 0x2a, + 0x12, 0x96, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x2f, + 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x42, 0xda, 0x07, 0x5a, 0x33, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2d, 0x61, 0x69, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, + 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x76, + 0x31, 0x92, 0x41, 0xa1, 0x07, 0x12, 0x95, 0x06, 0x0a, 0x15, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x28, 0x42, 0x65, 0x74, 0x61, 0x29, 0x12, + 0xf5, 0x04, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x68, 0x65, 0x6c, + 0x70, 0x73, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, + 0x20, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x20, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x6c, 0x79, + 0x2c, 0x20, 0x65, 0x61, 0x73, 0x69, 0x6c, 0x79, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x47, + 0x50, 0x55, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x20, 0x63, 0x6f, + 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x20, 0x44, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x64, 0x65, 0x65, + 0x70, 0x20, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x6e, 0x67, 0x69, 0x6e, + 0x65, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x20, 0x6f, 0x6e, + 0x20, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x72, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x61, 0x74, + 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, + 0x6e, 0x65, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x72, 0x79, + 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x44, 0x65, 0x76, 0x4f, 0x70, 0x73, 0x20, 0x6f, 0x72, + 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, + 0x63, 0x6f, 0x64, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, + 0x74, 0x61, 0x73, 0x6b, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x20, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, + 0x67, 0x2e, 0x0a, 0x0a, 0x59, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x6e, + 0x6b, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, + 0x61, 0x73, 0x20, 0x61, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, + 0x61, 0x70, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x73, + 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x46, 0x6c, 0x6f, 0x77, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x50, 0x79, 0x54, 0x6f, 0x72, 0x63, 0x68, 0x20, 0x2d, 0x2d, 0x2d, + 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x67, 0x72, 0x65, 0x61, + 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x72, + 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, + 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x47, 0x50, 0x55, 0x20, 0x2d, 0x2d, 0x2d, 0x20, + 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, + 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x69, 0x73, 0x65, 0x20, 0x77, 0x68, 0x65, + 0x6e, 0x20, 0x64, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x6c, 0x65, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, 0x20, + 0x61, 0x73, 0x20, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x65, 0x74, + 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x20, 0x69, + 0x6e, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2e, 0x22, 0x40, 0x0a, 0x0d, 0x44, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x41, 0x49, 0x12, 0x16, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x69, 0x2f, + 0x1a, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x40, 0x64, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x69, 0x2a, 0x3d, 0x0a, 0x0a, 0x41, 0x70, 0x61, + 0x63, 0x68, 0x65, 0x20, 0x32, 0x2e, 0x30, 0x12, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x77, 0x77, 0x77, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, + 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x2d, + 0x32, 0x2e, 0x30, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x32, 0x03, 0x30, 0x2e, 0x31, 0x2a, 0x02, 0x01, + 0x02, 0x5a, 0x4a, 0x0a, 0x48, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x39, 0x08, 0x02, 0x12, 0x24, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0x0d, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x02, 0x62, 0x11, 0x0a, + 0x0f, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x00, + 0x72, 0x24, 0x0a, 0x1b, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x41, + 0x49, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x05, 0x2f, 0x64, 0x6f, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_determined_api_v1_api_proto_goTypes = []interface{}{ @@ -3209,267 +3277,281 @@ var file_determined_api_v1_api_proto_goTypes = []interface{}{ (*GetGlobalConfigPoliciesRequest)(nil), // 258: determined.api.v1.GetGlobalConfigPoliciesRequest (*DeleteWorkspaceConfigPoliciesRequest)(nil), // 259: determined.api.v1.DeleteWorkspaceConfigPoliciesRequest (*DeleteGlobalConfigPoliciesRequest)(nil), // 260: determined.api.v1.DeleteGlobalConfigPoliciesRequest - (*LoginResponse)(nil), // 261: determined.api.v1.LoginResponse - (*CurrentUserResponse)(nil), // 262: determined.api.v1.CurrentUserResponse - (*LogoutResponse)(nil), // 263: determined.api.v1.LogoutResponse - (*GetUsersResponse)(nil), // 264: determined.api.v1.GetUsersResponse - (*GetUserSettingResponse)(nil), // 265: determined.api.v1.GetUserSettingResponse - (*ResetUserSettingResponse)(nil), // 266: determined.api.v1.ResetUserSettingResponse - (*PostUserSettingResponse)(nil), // 267: determined.api.v1.PostUserSettingResponse - (*GetUserResponse)(nil), // 268: determined.api.v1.GetUserResponse - (*GetUserByUsernameResponse)(nil), // 269: determined.api.v1.GetUserByUsernameResponse - (*GetMeResponse)(nil), // 270: determined.api.v1.GetMeResponse - (*PostUserResponse)(nil), // 271: determined.api.v1.PostUserResponse - (*SetUserPasswordResponse)(nil), // 272: determined.api.v1.SetUserPasswordResponse - (*AssignMultipleGroupsResponse)(nil), // 273: determined.api.v1.AssignMultipleGroupsResponse - (*PatchUserResponse)(nil), // 274: determined.api.v1.PatchUserResponse - (*PatchUsersResponse)(nil), // 275: determined.api.v1.PatchUsersResponse - (*GetTelemetryResponse)(nil), // 276: determined.api.v1.GetTelemetryResponse - (*GetMasterResponse)(nil), // 277: determined.api.v1.GetMasterResponse - (*GetMasterConfigResponse)(nil), // 278: determined.api.v1.GetMasterConfigResponse - (*PatchMasterConfigResponse)(nil), // 279: determined.api.v1.PatchMasterConfigResponse - (*MasterLogsResponse)(nil), // 280: determined.api.v1.MasterLogsResponse - (*GetClusterMessageResponse)(nil), // 281: determined.api.v1.GetClusterMessageResponse - (*SetClusterMessageResponse)(nil), // 282: determined.api.v1.SetClusterMessageResponse - (*DeleteClusterMessageResponse)(nil), // 283: determined.api.v1.DeleteClusterMessageResponse - (*GetAgentsResponse)(nil), // 284: determined.api.v1.GetAgentsResponse - (*GetAgentResponse)(nil), // 285: determined.api.v1.GetAgentResponse - (*GetSlotsResponse)(nil), // 286: determined.api.v1.GetSlotsResponse - (*GetSlotResponse)(nil), // 287: determined.api.v1.GetSlotResponse - (*EnableAgentResponse)(nil), // 288: determined.api.v1.EnableAgentResponse - (*DisableAgentResponse)(nil), // 289: determined.api.v1.DisableAgentResponse - (*EnableSlotResponse)(nil), // 290: determined.api.v1.EnableSlotResponse - (*DisableSlotResponse)(nil), // 291: determined.api.v1.DisableSlotResponse - (*CreateGenericTaskResponse)(nil), // 292: determined.api.v1.CreateGenericTaskResponse - (*CreateExperimentResponse)(nil), // 293: determined.api.v1.CreateExperimentResponse - (*PutExperimentResponse)(nil), // 294: determined.api.v1.PutExperimentResponse - (*ContinueExperimentResponse)(nil), // 295: determined.api.v1.ContinueExperimentResponse - (*GetExperimentResponse)(nil), // 296: determined.api.v1.GetExperimentResponse - (*GetExperimentsResponse)(nil), // 297: determined.api.v1.GetExperimentsResponse - (*PutExperimentRetainLogsResponse)(nil), // 298: determined.api.v1.PutExperimentRetainLogsResponse - (*PutExperimentsRetainLogsResponse)(nil), // 299: determined.api.v1.PutExperimentsRetainLogsResponse - (*PutTrialRetainLogsResponse)(nil), // 300: determined.api.v1.PutTrialRetainLogsResponse - (*GetModelDefResponse)(nil), // 301: determined.api.v1.GetModelDefResponse - (*GetTaskContextDirectoryResponse)(nil), // 302: determined.api.v1.GetTaskContextDirectoryResponse - (*GetModelDefTreeResponse)(nil), // 303: determined.api.v1.GetModelDefTreeResponse - (*GetModelDefFileResponse)(nil), // 304: determined.api.v1.GetModelDefFileResponse - (*GetExperimentLabelsResponse)(nil), // 305: determined.api.v1.GetExperimentLabelsResponse - (*GetExperimentValidationHistoryResponse)(nil), // 306: determined.api.v1.GetExperimentValidationHistoryResponse - (*ActivateExperimentResponse)(nil), // 307: determined.api.v1.ActivateExperimentResponse - (*ActivateExperimentsResponse)(nil), // 308: determined.api.v1.ActivateExperimentsResponse - (*PauseExperimentResponse)(nil), // 309: determined.api.v1.PauseExperimentResponse - (*PauseExperimentsResponse)(nil), // 310: determined.api.v1.PauseExperimentsResponse - (*CancelExperimentResponse)(nil), // 311: determined.api.v1.CancelExperimentResponse - (*CancelExperimentsResponse)(nil), // 312: determined.api.v1.CancelExperimentsResponse - (*KillExperimentResponse)(nil), // 313: determined.api.v1.KillExperimentResponse - (*KillExperimentsResponse)(nil), // 314: determined.api.v1.KillExperimentsResponse - (*ArchiveExperimentResponse)(nil), // 315: determined.api.v1.ArchiveExperimentResponse - (*ArchiveExperimentsResponse)(nil), // 316: determined.api.v1.ArchiveExperimentsResponse - (*UnarchiveExperimentResponse)(nil), // 317: determined.api.v1.UnarchiveExperimentResponse - (*UnarchiveExperimentsResponse)(nil), // 318: determined.api.v1.UnarchiveExperimentsResponse - (*PatchExperimentResponse)(nil), // 319: determined.api.v1.PatchExperimentResponse - (*DeleteExperimentsResponse)(nil), // 320: determined.api.v1.DeleteExperimentsResponse - (*DeleteExperimentResponse)(nil), // 321: determined.api.v1.DeleteExperimentResponse - (*GetBestSearcherValidationMetricResponse)(nil), // 322: determined.api.v1.GetBestSearcherValidationMetricResponse - (*GetExperimentCheckpointsResponse)(nil), // 323: determined.api.v1.GetExperimentCheckpointsResponse - (*PutExperimentLabelResponse)(nil), // 324: determined.api.v1.PutExperimentLabelResponse - (*DeleteExperimentLabelResponse)(nil), // 325: determined.api.v1.DeleteExperimentLabelResponse - (*PreviewHPSearchResponse)(nil), // 326: determined.api.v1.PreviewHPSearchResponse - (*GetExperimentTrialsResponse)(nil), // 327: determined.api.v1.GetExperimentTrialsResponse - (*GetTrialRemainingLogRetentionDaysResponse)(nil), // 328: determined.api.v1.GetTrialRemainingLogRetentionDaysResponse - (*CompareTrialsResponse)(nil), // 329: determined.api.v1.CompareTrialsResponse - (*ReportTrialSourceInfoResponse)(nil), // 330: determined.api.v1.ReportTrialSourceInfoResponse - (*CreateTrialResponse)(nil), // 331: determined.api.v1.CreateTrialResponse - (*PutTrialResponse)(nil), // 332: determined.api.v1.PutTrialResponse - (*PatchTrialResponse)(nil), // 333: determined.api.v1.PatchTrialResponse - (*StartTrialResponse)(nil), // 334: determined.api.v1.StartTrialResponse - (*RunPrepareForReportingResponse)(nil), // 335: determined.api.v1.RunPrepareForReportingResponse - (*GetTrialResponse)(nil), // 336: determined.api.v1.GetTrialResponse - (*GetTrialByExternalIDResponse)(nil), // 337: determined.api.v1.GetTrialByExternalIDResponse - (*GetTrialWorkloadsResponse)(nil), // 338: determined.api.v1.GetTrialWorkloadsResponse - (*TrialLogsResponse)(nil), // 339: determined.api.v1.TrialLogsResponse - (*TrialLogsFieldsResponse)(nil), // 340: determined.api.v1.TrialLogsFieldsResponse - (*AllocationReadyResponse)(nil), // 341: determined.api.v1.AllocationReadyResponse - (*GetAllocationResponse)(nil), // 342: determined.api.v1.GetAllocationResponse - (*AllocationWaitingResponse)(nil), // 343: determined.api.v1.AllocationWaitingResponse - (*PostTaskLogsResponse)(nil), // 344: determined.api.v1.PostTaskLogsResponse - (*TaskLogsResponse)(nil), // 345: determined.api.v1.TaskLogsResponse - (*TaskLogsFieldsResponse)(nil), // 346: determined.api.v1.TaskLogsFieldsResponse - (*GetTrialProfilerMetricsResponse)(nil), // 347: determined.api.v1.GetTrialProfilerMetricsResponse - (*GetTrialProfilerAvailableSeriesResponse)(nil), // 348: determined.api.v1.GetTrialProfilerAvailableSeriesResponse - (*PostTrialProfilerMetricsBatchResponse)(nil), // 349: determined.api.v1.PostTrialProfilerMetricsBatchResponse - (*GetMetricsResponse)(nil), // 350: determined.api.v1.GetMetricsResponse - (*GetTrainingMetricsResponse)(nil), // 351: determined.api.v1.GetTrainingMetricsResponse - (*GetValidationMetricsResponse)(nil), // 352: determined.api.v1.GetValidationMetricsResponse - (*KillTrialResponse)(nil), // 353: determined.api.v1.KillTrialResponse - (*GetTrialCheckpointsResponse)(nil), // 354: determined.api.v1.GetTrialCheckpointsResponse - (*CleanupLogsResponse)(nil), // 355: determined.api.v1.CleanupLogsResponse - (*AllocationPreemptionSignalResponse)(nil), // 356: determined.api.v1.AllocationPreemptionSignalResponse - (*AllocationPendingPreemptionSignalResponse)(nil), // 357: determined.api.v1.AllocationPendingPreemptionSignalResponse - (*AckAllocationPreemptionSignalResponse)(nil), // 358: determined.api.v1.AckAllocationPreemptionSignalResponse - (*MarkAllocationResourcesDaemonResponse)(nil), // 359: determined.api.v1.MarkAllocationResourcesDaemonResponse - (*AllocationRendezvousInfoResponse)(nil), // 360: determined.api.v1.AllocationRendezvousInfoResponse - (*PostAllocationProxyAddressResponse)(nil), // 361: determined.api.v1.PostAllocationProxyAddressResponse - (*GetTaskAcceleratorDataResponse)(nil), // 362: determined.api.v1.GetTaskAcceleratorDataResponse - (*PostAllocationAcceleratorDataResponse)(nil), // 363: determined.api.v1.PostAllocationAcceleratorDataResponse - (*AllocationAllGatherResponse)(nil), // 364: determined.api.v1.AllocationAllGatherResponse - (*NotifyContainerRunningResponse)(nil), // 365: determined.api.v1.NotifyContainerRunningResponse - (*GetCurrentTrialSearcherOperationResponse)(nil), // 366: determined.api.v1.GetCurrentTrialSearcherOperationResponse - (*CompleteTrialSearcherValidationResponse)(nil), // 367: determined.api.v1.CompleteTrialSearcherValidationResponse - (*ReportTrialSearcherEarlyExitResponse)(nil), // 368: determined.api.v1.ReportTrialSearcherEarlyExitResponse - (*ReportTrialProgressResponse)(nil), // 369: determined.api.v1.ReportTrialProgressResponse - (*PostTrialRunnerMetadataResponse)(nil), // 370: determined.api.v1.PostTrialRunnerMetadataResponse - (*ReportTrialMetricsResponse)(nil), // 371: determined.api.v1.ReportTrialMetricsResponse - (*ReportTrialTrainingMetricsResponse)(nil), // 372: determined.api.v1.ReportTrialTrainingMetricsResponse - (*ReportTrialValidationMetricsResponse)(nil), // 373: determined.api.v1.ReportTrialValidationMetricsResponse - (*ReportCheckpointResponse)(nil), // 374: determined.api.v1.ReportCheckpointResponse - (*GetJobsResponse)(nil), // 375: determined.api.v1.GetJobsResponse - (*GetJobsV2Response)(nil), // 376: determined.api.v1.GetJobsV2Response - (*GetJobQueueStatsResponse)(nil), // 377: determined.api.v1.GetJobQueueStatsResponse - (*UpdateJobQueueResponse)(nil), // 378: determined.api.v1.UpdateJobQueueResponse - (*GetTemplatesResponse)(nil), // 379: determined.api.v1.GetTemplatesResponse - (*GetTemplateResponse)(nil), // 380: determined.api.v1.GetTemplateResponse - (*PutTemplateResponse)(nil), // 381: determined.api.v1.PutTemplateResponse - (*PostTemplateResponse)(nil), // 382: determined.api.v1.PostTemplateResponse - (*PatchTemplateConfigResponse)(nil), // 383: determined.api.v1.PatchTemplateConfigResponse - (*PatchTemplateNameResponse)(nil), // 384: determined.api.v1.PatchTemplateNameResponse - (*DeleteTemplateResponse)(nil), // 385: determined.api.v1.DeleteTemplateResponse - (*GetNotebooksResponse)(nil), // 386: determined.api.v1.GetNotebooksResponse - (*GetNotebookResponse)(nil), // 387: determined.api.v1.GetNotebookResponse - (*IdleNotebookResponse)(nil), // 388: determined.api.v1.IdleNotebookResponse - (*KillNotebookResponse)(nil), // 389: determined.api.v1.KillNotebookResponse - (*SetNotebookPriorityResponse)(nil), // 390: determined.api.v1.SetNotebookPriorityResponse - (*LaunchNotebookResponse)(nil), // 391: determined.api.v1.LaunchNotebookResponse - (*GetShellsResponse)(nil), // 392: determined.api.v1.GetShellsResponse - (*GetShellResponse)(nil), // 393: determined.api.v1.GetShellResponse - (*KillShellResponse)(nil), // 394: determined.api.v1.KillShellResponse - (*SetShellPriorityResponse)(nil), // 395: determined.api.v1.SetShellPriorityResponse - (*LaunchShellResponse)(nil), // 396: determined.api.v1.LaunchShellResponse - (*GetCommandsResponse)(nil), // 397: determined.api.v1.GetCommandsResponse - (*GetCommandResponse)(nil), // 398: determined.api.v1.GetCommandResponse - (*KillCommandResponse)(nil), // 399: determined.api.v1.KillCommandResponse - (*SetCommandPriorityResponse)(nil), // 400: determined.api.v1.SetCommandPriorityResponse - (*LaunchCommandResponse)(nil), // 401: determined.api.v1.LaunchCommandResponse - (*GetTensorboardsResponse)(nil), // 402: determined.api.v1.GetTensorboardsResponse - (*GetTensorboardResponse)(nil), // 403: determined.api.v1.GetTensorboardResponse - (*KillTensorboardResponse)(nil), // 404: determined.api.v1.KillTensorboardResponse - (*SetTensorboardPriorityResponse)(nil), // 405: determined.api.v1.SetTensorboardPriorityResponse - (*LaunchTensorboardResponse)(nil), // 406: determined.api.v1.LaunchTensorboardResponse - (*DeleteTensorboardFilesResponse)(nil), // 407: determined.api.v1.DeleteTensorboardFilesResponse - (*GetActiveTasksCountResponse)(nil), // 408: determined.api.v1.GetActiveTasksCountResponse - (*GetTaskResponse)(nil), // 409: determined.api.v1.GetTaskResponse - (*GetTasksResponse)(nil), // 410: determined.api.v1.GetTasksResponse - (*GetModelResponse)(nil), // 411: determined.api.v1.GetModelResponse - (*PostModelResponse)(nil), // 412: determined.api.v1.PostModelResponse - (*PatchModelResponse)(nil), // 413: determined.api.v1.PatchModelResponse - (*ArchiveModelResponse)(nil), // 414: determined.api.v1.ArchiveModelResponse - (*UnarchiveModelResponse)(nil), // 415: determined.api.v1.UnarchiveModelResponse - (*MoveModelResponse)(nil), // 416: determined.api.v1.MoveModelResponse - (*DeleteModelResponse)(nil), // 417: determined.api.v1.DeleteModelResponse - (*GetModelsResponse)(nil), // 418: determined.api.v1.GetModelsResponse - (*GetModelLabelsResponse)(nil), // 419: determined.api.v1.GetModelLabelsResponse - (*GetModelVersionResponse)(nil), // 420: determined.api.v1.GetModelVersionResponse - (*GetModelVersionsResponse)(nil), // 421: determined.api.v1.GetModelVersionsResponse - (*PostModelVersionResponse)(nil), // 422: determined.api.v1.PostModelVersionResponse - (*PatchModelVersionResponse)(nil), // 423: determined.api.v1.PatchModelVersionResponse - (*DeleteModelVersionResponse)(nil), // 424: determined.api.v1.DeleteModelVersionResponse - (*GetTrialMetricsByModelVersionResponse)(nil), // 425: determined.api.v1.GetTrialMetricsByModelVersionResponse - (*GetCheckpointResponse)(nil), // 426: determined.api.v1.GetCheckpointResponse - (*PostCheckpointMetadataResponse)(nil), // 427: determined.api.v1.PostCheckpointMetadataResponse - (*CheckpointsRemoveFilesResponse)(nil), // 428: determined.api.v1.CheckpointsRemoveFilesResponse - (*PatchCheckpointsResponse)(nil), // 429: determined.api.v1.PatchCheckpointsResponse - (*DeleteCheckpointsResponse)(nil), // 430: determined.api.v1.DeleteCheckpointsResponse - (*GetTrialMetricsByCheckpointResponse)(nil), // 431: determined.api.v1.GetTrialMetricsByCheckpointResponse - (*GetSearcherEventsResponse)(nil), // 432: determined.api.v1.GetSearcherEventsResponse - (*PostSearcherOperationsResponse)(nil), // 433: determined.api.v1.PostSearcherOperationsResponse - (*ExpMetricNamesResponse)(nil), // 434: determined.api.v1.ExpMetricNamesResponse - (*MetricBatchesResponse)(nil), // 435: determined.api.v1.MetricBatchesResponse - (*TrialsSnapshotResponse)(nil), // 436: determined.api.v1.TrialsSnapshotResponse - (*TrialsSampleResponse)(nil), // 437: determined.api.v1.TrialsSampleResponse - (*GetResourcePoolsResponse)(nil), // 438: determined.api.v1.GetResourcePoolsResponse - (*GetKubernetesResourceManagersResponse)(nil), // 439: determined.api.v1.GetKubernetesResourceManagersResponse - (*ResourceAllocationRawResponse)(nil), // 440: determined.api.v1.ResourceAllocationRawResponse - (*ResourceAllocationAggregatedResponse)(nil), // 441: determined.api.v1.ResourceAllocationAggregatedResponse - (*GetWorkspaceResponse)(nil), // 442: determined.api.v1.GetWorkspaceResponse - (*GetWorkspaceProjectsResponse)(nil), // 443: determined.api.v1.GetWorkspaceProjectsResponse - (*GetWorkspacesResponse)(nil), // 444: determined.api.v1.GetWorkspacesResponse - (*PostWorkspaceResponse)(nil), // 445: determined.api.v1.PostWorkspaceResponse - (*PatchWorkspaceResponse)(nil), // 446: determined.api.v1.PatchWorkspaceResponse - (*DeleteWorkspaceResponse)(nil), // 447: determined.api.v1.DeleteWorkspaceResponse - (*ArchiveWorkspaceResponse)(nil), // 448: determined.api.v1.ArchiveWorkspaceResponse - (*UnarchiveWorkspaceResponse)(nil), // 449: determined.api.v1.UnarchiveWorkspaceResponse - (*PinWorkspaceResponse)(nil), // 450: determined.api.v1.PinWorkspaceResponse - (*UnpinWorkspaceResponse)(nil), // 451: determined.api.v1.UnpinWorkspaceResponse - (*SetWorkspaceNamespaceBindingsResponse)(nil), // 452: determined.api.v1.SetWorkspaceNamespaceBindingsResponse - (*SetResourceQuotasResponse)(nil), // 453: determined.api.v1.SetResourceQuotasResponse - (*ListWorkspaceNamespaceBindingsResponse)(nil), // 454: determined.api.v1.ListWorkspaceNamespaceBindingsResponse - (*GetWorkspacesWithDefaultNamespaceBindingsResponse)(nil), // 455: determined.api.v1.GetWorkspacesWithDefaultNamespaceBindingsResponse - (*BulkAutoCreateWorkspaceNamespaceBindingsResponse)(nil), // 456: determined.api.v1.BulkAutoCreateWorkspaceNamespaceBindingsResponse - (*DeleteWorkspaceNamespaceBindingsResponse)(nil), // 457: determined.api.v1.DeleteWorkspaceNamespaceBindingsResponse - (*GetKubernetesResourceQuotasResponse)(nil), // 458: determined.api.v1.GetKubernetesResourceQuotasResponse - (*GetProjectResponse)(nil), // 459: determined.api.v1.GetProjectResponse - (*GetProjectByKeyResponse)(nil), // 460: determined.api.v1.GetProjectByKeyResponse - (*GetProjectColumnsResponse)(nil), // 461: determined.api.v1.GetProjectColumnsResponse - (*GetProjectNumericMetricsRangeResponse)(nil), // 462: determined.api.v1.GetProjectNumericMetricsRangeResponse - (*PostProjectResponse)(nil), // 463: determined.api.v1.PostProjectResponse - (*AddProjectNoteResponse)(nil), // 464: determined.api.v1.AddProjectNoteResponse - (*PutProjectNotesResponse)(nil), // 465: determined.api.v1.PutProjectNotesResponse - (*PatchProjectResponse)(nil), // 466: determined.api.v1.PatchProjectResponse - (*DeleteProjectResponse)(nil), // 467: determined.api.v1.DeleteProjectResponse - (*ArchiveProjectResponse)(nil), // 468: determined.api.v1.ArchiveProjectResponse - (*UnarchiveProjectResponse)(nil), // 469: determined.api.v1.UnarchiveProjectResponse - (*MoveProjectResponse)(nil), // 470: determined.api.v1.MoveProjectResponse - (*MoveExperimentResponse)(nil), // 471: determined.api.v1.MoveExperimentResponse - (*MoveExperimentsResponse)(nil), // 472: determined.api.v1.MoveExperimentsResponse - (*GetWebhooksResponse)(nil), // 473: determined.api.v1.GetWebhooksResponse - (*PatchWebhookResponse)(nil), // 474: determined.api.v1.PatchWebhookResponse - (*PostWebhookResponse)(nil), // 475: determined.api.v1.PostWebhookResponse - (*DeleteWebhookResponse)(nil), // 476: determined.api.v1.DeleteWebhookResponse - (*TestWebhookResponse)(nil), // 477: determined.api.v1.TestWebhookResponse - (*PostWebhookEventDataResponse)(nil), // 478: determined.api.v1.PostWebhookEventDataResponse - (*GetGroupResponse)(nil), // 479: determined.api.v1.GetGroupResponse - (*GetGroupsResponse)(nil), // 480: determined.api.v1.GetGroupsResponse - (*CreateGroupResponse)(nil), // 481: determined.api.v1.CreateGroupResponse - (*UpdateGroupResponse)(nil), // 482: determined.api.v1.UpdateGroupResponse - (*DeleteGroupResponse)(nil), // 483: determined.api.v1.DeleteGroupResponse - (*GetPermissionsSummaryResponse)(nil), // 484: determined.api.v1.GetPermissionsSummaryResponse - (*GetGroupsAndUsersAssignedToWorkspaceResponse)(nil), // 485: determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceResponse - (*GetRolesByIDResponse)(nil), // 486: determined.api.v1.GetRolesByIDResponse - (*GetRolesAssignedToUserResponse)(nil), // 487: determined.api.v1.GetRolesAssignedToUserResponse - (*GetRolesAssignedToGroupResponse)(nil), // 488: determined.api.v1.GetRolesAssignedToGroupResponse - (*SearchRolesAssignableToScopeResponse)(nil), // 489: determined.api.v1.SearchRolesAssignableToScopeResponse - (*ListRolesResponse)(nil), // 490: determined.api.v1.ListRolesResponse - (*AssignRolesResponse)(nil), // 491: determined.api.v1.AssignRolesResponse - (*RemoveAssignmentsResponse)(nil), // 492: determined.api.v1.RemoveAssignmentsResponse - (*PostUserActivityResponse)(nil), // 493: determined.api.v1.PostUserActivityResponse - (*GetProjectsByUserActivityResponse)(nil), // 494: determined.api.v1.GetProjectsByUserActivityResponse - (*SearchExperimentsResponse)(nil), // 495: determined.api.v1.SearchExperimentsResponse - (*BindRPToWorkspaceResponse)(nil), // 496: determined.api.v1.BindRPToWorkspaceResponse - (*UnbindRPFromWorkspaceResponse)(nil), // 497: determined.api.v1.UnbindRPFromWorkspaceResponse - (*OverwriteRPWorkspaceBindingsResponse)(nil), // 498: determined.api.v1.OverwriteRPWorkspaceBindingsResponse - (*ListRPsBoundToWorkspaceResponse)(nil), // 499: determined.api.v1.ListRPsBoundToWorkspaceResponse - (*ListWorkspacesBoundToRPResponse)(nil), // 500: determined.api.v1.ListWorkspacesBoundToRPResponse - (*GetGenericTaskConfigResponse)(nil), // 501: determined.api.v1.GetGenericTaskConfigResponse - (*KillGenericTaskResponse)(nil), // 502: determined.api.v1.KillGenericTaskResponse - (*PauseGenericTaskResponse)(nil), // 503: determined.api.v1.PauseGenericTaskResponse - (*UnpauseGenericTaskResponse)(nil), // 504: determined.api.v1.UnpauseGenericTaskResponse - (*SearchRunsResponse)(nil), // 505: determined.api.v1.SearchRunsResponse - (*MoveRunsResponse)(nil), // 506: determined.api.v1.MoveRunsResponse - (*KillRunsResponse)(nil), // 507: determined.api.v1.KillRunsResponse - (*DeleteRunsResponse)(nil), // 508: determined.api.v1.DeleteRunsResponse - (*ArchiveRunsResponse)(nil), // 509: determined.api.v1.ArchiveRunsResponse - (*UnarchiveRunsResponse)(nil), // 510: determined.api.v1.UnarchiveRunsResponse - (*PauseRunsResponse)(nil), // 511: determined.api.v1.PauseRunsResponse - (*ResumeRunsResponse)(nil), // 512: determined.api.v1.ResumeRunsResponse - (*GetRunMetadataResponse)(nil), // 513: determined.api.v1.GetRunMetadataResponse - (*PostRunMetadataResponse)(nil), // 514: determined.api.v1.PostRunMetadataResponse - (*GetMetadataValuesResponse)(nil), // 515: determined.api.v1.GetMetadataValuesResponse - (*PutWorkspaceConfigPoliciesResponse)(nil), // 516: determined.api.v1.PutWorkspaceConfigPoliciesResponse - (*PutGlobalConfigPoliciesResponse)(nil), // 517: determined.api.v1.PutGlobalConfigPoliciesResponse - (*GetWorkspaceConfigPoliciesResponse)(nil), // 518: determined.api.v1.GetWorkspaceConfigPoliciesResponse - (*GetGlobalConfigPoliciesResponse)(nil), // 519: determined.api.v1.GetGlobalConfigPoliciesResponse - (*DeleteWorkspaceConfigPoliciesResponse)(nil), // 520: determined.api.v1.DeleteWorkspaceConfigPoliciesResponse - (*DeleteGlobalConfigPoliciesResponse)(nil), // 521: determined.api.v1.DeleteGlobalConfigPoliciesResponse + (*MoveSearchesRequest)(nil), // 261: determined.api.v1.MoveSearchesRequest + (*KillSearchesRequest)(nil), // 262: determined.api.v1.KillSearchesRequest + (*DeleteSearchesRequest)(nil), // 263: determined.api.v1.DeleteSearchesRequest + (*ArchiveSearchesRequest)(nil), // 264: determined.api.v1.ArchiveSearchesRequest + (*UnarchiveSearchesRequest)(nil), // 265: determined.api.v1.UnarchiveSearchesRequest + (*PauseSearchesRequest)(nil), // 266: determined.api.v1.PauseSearchesRequest + (*ResumeSearchesRequest)(nil), // 267: determined.api.v1.ResumeSearchesRequest + (*LoginResponse)(nil), // 268: determined.api.v1.LoginResponse + (*CurrentUserResponse)(nil), // 269: determined.api.v1.CurrentUserResponse + (*LogoutResponse)(nil), // 270: determined.api.v1.LogoutResponse + (*GetUsersResponse)(nil), // 271: determined.api.v1.GetUsersResponse + (*GetUserSettingResponse)(nil), // 272: determined.api.v1.GetUserSettingResponse + (*ResetUserSettingResponse)(nil), // 273: determined.api.v1.ResetUserSettingResponse + (*PostUserSettingResponse)(nil), // 274: determined.api.v1.PostUserSettingResponse + (*GetUserResponse)(nil), // 275: determined.api.v1.GetUserResponse + (*GetUserByUsernameResponse)(nil), // 276: determined.api.v1.GetUserByUsernameResponse + (*GetMeResponse)(nil), // 277: determined.api.v1.GetMeResponse + (*PostUserResponse)(nil), // 278: determined.api.v1.PostUserResponse + (*SetUserPasswordResponse)(nil), // 279: determined.api.v1.SetUserPasswordResponse + (*AssignMultipleGroupsResponse)(nil), // 280: determined.api.v1.AssignMultipleGroupsResponse + (*PatchUserResponse)(nil), // 281: determined.api.v1.PatchUserResponse + (*PatchUsersResponse)(nil), // 282: determined.api.v1.PatchUsersResponse + (*GetTelemetryResponse)(nil), // 283: determined.api.v1.GetTelemetryResponse + (*GetMasterResponse)(nil), // 284: determined.api.v1.GetMasterResponse + (*GetMasterConfigResponse)(nil), // 285: determined.api.v1.GetMasterConfigResponse + (*PatchMasterConfigResponse)(nil), // 286: determined.api.v1.PatchMasterConfigResponse + (*MasterLogsResponse)(nil), // 287: determined.api.v1.MasterLogsResponse + (*GetClusterMessageResponse)(nil), // 288: determined.api.v1.GetClusterMessageResponse + (*SetClusterMessageResponse)(nil), // 289: determined.api.v1.SetClusterMessageResponse + (*DeleteClusterMessageResponse)(nil), // 290: determined.api.v1.DeleteClusterMessageResponse + (*GetAgentsResponse)(nil), // 291: determined.api.v1.GetAgentsResponse + (*GetAgentResponse)(nil), // 292: determined.api.v1.GetAgentResponse + (*GetSlotsResponse)(nil), // 293: determined.api.v1.GetSlotsResponse + (*GetSlotResponse)(nil), // 294: determined.api.v1.GetSlotResponse + (*EnableAgentResponse)(nil), // 295: determined.api.v1.EnableAgentResponse + (*DisableAgentResponse)(nil), // 296: determined.api.v1.DisableAgentResponse + (*EnableSlotResponse)(nil), // 297: determined.api.v1.EnableSlotResponse + (*DisableSlotResponse)(nil), // 298: determined.api.v1.DisableSlotResponse + (*CreateGenericTaskResponse)(nil), // 299: determined.api.v1.CreateGenericTaskResponse + (*CreateExperimentResponse)(nil), // 300: determined.api.v1.CreateExperimentResponse + (*PutExperimentResponse)(nil), // 301: determined.api.v1.PutExperimentResponse + (*ContinueExperimentResponse)(nil), // 302: determined.api.v1.ContinueExperimentResponse + (*GetExperimentResponse)(nil), // 303: determined.api.v1.GetExperimentResponse + (*GetExperimentsResponse)(nil), // 304: determined.api.v1.GetExperimentsResponse + (*PutExperimentRetainLogsResponse)(nil), // 305: determined.api.v1.PutExperimentRetainLogsResponse + (*PutExperimentsRetainLogsResponse)(nil), // 306: determined.api.v1.PutExperimentsRetainLogsResponse + (*PutTrialRetainLogsResponse)(nil), // 307: determined.api.v1.PutTrialRetainLogsResponse + (*GetModelDefResponse)(nil), // 308: determined.api.v1.GetModelDefResponse + (*GetTaskContextDirectoryResponse)(nil), // 309: determined.api.v1.GetTaskContextDirectoryResponse + (*GetModelDefTreeResponse)(nil), // 310: determined.api.v1.GetModelDefTreeResponse + (*GetModelDefFileResponse)(nil), // 311: determined.api.v1.GetModelDefFileResponse + (*GetExperimentLabelsResponse)(nil), // 312: determined.api.v1.GetExperimentLabelsResponse + (*GetExperimentValidationHistoryResponse)(nil), // 313: determined.api.v1.GetExperimentValidationHistoryResponse + (*ActivateExperimentResponse)(nil), // 314: determined.api.v1.ActivateExperimentResponse + (*ActivateExperimentsResponse)(nil), // 315: determined.api.v1.ActivateExperimentsResponse + (*PauseExperimentResponse)(nil), // 316: determined.api.v1.PauseExperimentResponse + (*PauseExperimentsResponse)(nil), // 317: determined.api.v1.PauseExperimentsResponse + (*CancelExperimentResponse)(nil), // 318: determined.api.v1.CancelExperimentResponse + (*CancelExperimentsResponse)(nil), // 319: determined.api.v1.CancelExperimentsResponse + (*KillExperimentResponse)(nil), // 320: determined.api.v1.KillExperimentResponse + (*KillExperimentsResponse)(nil), // 321: determined.api.v1.KillExperimentsResponse + (*ArchiveExperimentResponse)(nil), // 322: determined.api.v1.ArchiveExperimentResponse + (*ArchiveExperimentsResponse)(nil), // 323: determined.api.v1.ArchiveExperimentsResponse + (*UnarchiveExperimentResponse)(nil), // 324: determined.api.v1.UnarchiveExperimentResponse + (*UnarchiveExperimentsResponse)(nil), // 325: determined.api.v1.UnarchiveExperimentsResponse + (*PatchExperimentResponse)(nil), // 326: determined.api.v1.PatchExperimentResponse + (*DeleteExperimentsResponse)(nil), // 327: determined.api.v1.DeleteExperimentsResponse + (*DeleteExperimentResponse)(nil), // 328: determined.api.v1.DeleteExperimentResponse + (*GetBestSearcherValidationMetricResponse)(nil), // 329: determined.api.v1.GetBestSearcherValidationMetricResponse + (*GetExperimentCheckpointsResponse)(nil), // 330: determined.api.v1.GetExperimentCheckpointsResponse + (*PutExperimentLabelResponse)(nil), // 331: determined.api.v1.PutExperimentLabelResponse + (*DeleteExperimentLabelResponse)(nil), // 332: determined.api.v1.DeleteExperimentLabelResponse + (*PreviewHPSearchResponse)(nil), // 333: determined.api.v1.PreviewHPSearchResponse + (*GetExperimentTrialsResponse)(nil), // 334: determined.api.v1.GetExperimentTrialsResponse + (*GetTrialRemainingLogRetentionDaysResponse)(nil), // 335: determined.api.v1.GetTrialRemainingLogRetentionDaysResponse + (*CompareTrialsResponse)(nil), // 336: determined.api.v1.CompareTrialsResponse + (*ReportTrialSourceInfoResponse)(nil), // 337: determined.api.v1.ReportTrialSourceInfoResponse + (*CreateTrialResponse)(nil), // 338: determined.api.v1.CreateTrialResponse + (*PutTrialResponse)(nil), // 339: determined.api.v1.PutTrialResponse + (*PatchTrialResponse)(nil), // 340: determined.api.v1.PatchTrialResponse + (*StartTrialResponse)(nil), // 341: determined.api.v1.StartTrialResponse + (*RunPrepareForReportingResponse)(nil), // 342: determined.api.v1.RunPrepareForReportingResponse + (*GetTrialResponse)(nil), // 343: determined.api.v1.GetTrialResponse + (*GetTrialByExternalIDResponse)(nil), // 344: determined.api.v1.GetTrialByExternalIDResponse + (*GetTrialWorkloadsResponse)(nil), // 345: determined.api.v1.GetTrialWorkloadsResponse + (*TrialLogsResponse)(nil), // 346: determined.api.v1.TrialLogsResponse + (*TrialLogsFieldsResponse)(nil), // 347: determined.api.v1.TrialLogsFieldsResponse + (*AllocationReadyResponse)(nil), // 348: determined.api.v1.AllocationReadyResponse + (*GetAllocationResponse)(nil), // 349: determined.api.v1.GetAllocationResponse + (*AllocationWaitingResponse)(nil), // 350: determined.api.v1.AllocationWaitingResponse + (*PostTaskLogsResponse)(nil), // 351: determined.api.v1.PostTaskLogsResponse + (*TaskLogsResponse)(nil), // 352: determined.api.v1.TaskLogsResponse + (*TaskLogsFieldsResponse)(nil), // 353: determined.api.v1.TaskLogsFieldsResponse + (*GetTrialProfilerMetricsResponse)(nil), // 354: determined.api.v1.GetTrialProfilerMetricsResponse + (*GetTrialProfilerAvailableSeriesResponse)(nil), // 355: determined.api.v1.GetTrialProfilerAvailableSeriesResponse + (*PostTrialProfilerMetricsBatchResponse)(nil), // 356: determined.api.v1.PostTrialProfilerMetricsBatchResponse + (*GetMetricsResponse)(nil), // 357: determined.api.v1.GetMetricsResponse + (*GetTrainingMetricsResponse)(nil), // 358: determined.api.v1.GetTrainingMetricsResponse + (*GetValidationMetricsResponse)(nil), // 359: determined.api.v1.GetValidationMetricsResponse + (*KillTrialResponse)(nil), // 360: determined.api.v1.KillTrialResponse + (*GetTrialCheckpointsResponse)(nil), // 361: determined.api.v1.GetTrialCheckpointsResponse + (*CleanupLogsResponse)(nil), // 362: determined.api.v1.CleanupLogsResponse + (*AllocationPreemptionSignalResponse)(nil), // 363: determined.api.v1.AllocationPreemptionSignalResponse + (*AllocationPendingPreemptionSignalResponse)(nil), // 364: determined.api.v1.AllocationPendingPreemptionSignalResponse + (*AckAllocationPreemptionSignalResponse)(nil), // 365: determined.api.v1.AckAllocationPreemptionSignalResponse + (*MarkAllocationResourcesDaemonResponse)(nil), // 366: determined.api.v1.MarkAllocationResourcesDaemonResponse + (*AllocationRendezvousInfoResponse)(nil), // 367: determined.api.v1.AllocationRendezvousInfoResponse + (*PostAllocationProxyAddressResponse)(nil), // 368: determined.api.v1.PostAllocationProxyAddressResponse + (*GetTaskAcceleratorDataResponse)(nil), // 369: determined.api.v1.GetTaskAcceleratorDataResponse + (*PostAllocationAcceleratorDataResponse)(nil), // 370: determined.api.v1.PostAllocationAcceleratorDataResponse + (*AllocationAllGatherResponse)(nil), // 371: determined.api.v1.AllocationAllGatherResponse + (*NotifyContainerRunningResponse)(nil), // 372: determined.api.v1.NotifyContainerRunningResponse + (*GetCurrentTrialSearcherOperationResponse)(nil), // 373: determined.api.v1.GetCurrentTrialSearcherOperationResponse + (*CompleteTrialSearcherValidationResponse)(nil), // 374: determined.api.v1.CompleteTrialSearcherValidationResponse + (*ReportTrialSearcherEarlyExitResponse)(nil), // 375: determined.api.v1.ReportTrialSearcherEarlyExitResponse + (*ReportTrialProgressResponse)(nil), // 376: determined.api.v1.ReportTrialProgressResponse + (*PostTrialRunnerMetadataResponse)(nil), // 377: determined.api.v1.PostTrialRunnerMetadataResponse + (*ReportTrialMetricsResponse)(nil), // 378: determined.api.v1.ReportTrialMetricsResponse + (*ReportTrialTrainingMetricsResponse)(nil), // 379: determined.api.v1.ReportTrialTrainingMetricsResponse + (*ReportTrialValidationMetricsResponse)(nil), // 380: determined.api.v1.ReportTrialValidationMetricsResponse + (*ReportCheckpointResponse)(nil), // 381: determined.api.v1.ReportCheckpointResponse + (*GetJobsResponse)(nil), // 382: determined.api.v1.GetJobsResponse + (*GetJobsV2Response)(nil), // 383: determined.api.v1.GetJobsV2Response + (*GetJobQueueStatsResponse)(nil), // 384: determined.api.v1.GetJobQueueStatsResponse + (*UpdateJobQueueResponse)(nil), // 385: determined.api.v1.UpdateJobQueueResponse + (*GetTemplatesResponse)(nil), // 386: determined.api.v1.GetTemplatesResponse + (*GetTemplateResponse)(nil), // 387: determined.api.v1.GetTemplateResponse + (*PutTemplateResponse)(nil), // 388: determined.api.v1.PutTemplateResponse + (*PostTemplateResponse)(nil), // 389: determined.api.v1.PostTemplateResponse + (*PatchTemplateConfigResponse)(nil), // 390: determined.api.v1.PatchTemplateConfigResponse + (*PatchTemplateNameResponse)(nil), // 391: determined.api.v1.PatchTemplateNameResponse + (*DeleteTemplateResponse)(nil), // 392: determined.api.v1.DeleteTemplateResponse + (*GetNotebooksResponse)(nil), // 393: determined.api.v1.GetNotebooksResponse + (*GetNotebookResponse)(nil), // 394: determined.api.v1.GetNotebookResponse + (*IdleNotebookResponse)(nil), // 395: determined.api.v1.IdleNotebookResponse + (*KillNotebookResponse)(nil), // 396: determined.api.v1.KillNotebookResponse + (*SetNotebookPriorityResponse)(nil), // 397: determined.api.v1.SetNotebookPriorityResponse + (*LaunchNotebookResponse)(nil), // 398: determined.api.v1.LaunchNotebookResponse + (*GetShellsResponse)(nil), // 399: determined.api.v1.GetShellsResponse + (*GetShellResponse)(nil), // 400: determined.api.v1.GetShellResponse + (*KillShellResponse)(nil), // 401: determined.api.v1.KillShellResponse + (*SetShellPriorityResponse)(nil), // 402: determined.api.v1.SetShellPriorityResponse + (*LaunchShellResponse)(nil), // 403: determined.api.v1.LaunchShellResponse + (*GetCommandsResponse)(nil), // 404: determined.api.v1.GetCommandsResponse + (*GetCommandResponse)(nil), // 405: determined.api.v1.GetCommandResponse + (*KillCommandResponse)(nil), // 406: determined.api.v1.KillCommandResponse + (*SetCommandPriorityResponse)(nil), // 407: determined.api.v1.SetCommandPriorityResponse + (*LaunchCommandResponse)(nil), // 408: determined.api.v1.LaunchCommandResponse + (*GetTensorboardsResponse)(nil), // 409: determined.api.v1.GetTensorboardsResponse + (*GetTensorboardResponse)(nil), // 410: determined.api.v1.GetTensorboardResponse + (*KillTensorboardResponse)(nil), // 411: determined.api.v1.KillTensorboardResponse + (*SetTensorboardPriorityResponse)(nil), // 412: determined.api.v1.SetTensorboardPriorityResponse + (*LaunchTensorboardResponse)(nil), // 413: determined.api.v1.LaunchTensorboardResponse + (*DeleteTensorboardFilesResponse)(nil), // 414: determined.api.v1.DeleteTensorboardFilesResponse + (*GetActiveTasksCountResponse)(nil), // 415: determined.api.v1.GetActiveTasksCountResponse + (*GetTaskResponse)(nil), // 416: determined.api.v1.GetTaskResponse + (*GetTasksResponse)(nil), // 417: determined.api.v1.GetTasksResponse + (*GetModelResponse)(nil), // 418: determined.api.v1.GetModelResponse + (*PostModelResponse)(nil), // 419: determined.api.v1.PostModelResponse + (*PatchModelResponse)(nil), // 420: determined.api.v1.PatchModelResponse + (*ArchiveModelResponse)(nil), // 421: determined.api.v1.ArchiveModelResponse + (*UnarchiveModelResponse)(nil), // 422: determined.api.v1.UnarchiveModelResponse + (*MoveModelResponse)(nil), // 423: determined.api.v1.MoveModelResponse + (*DeleteModelResponse)(nil), // 424: determined.api.v1.DeleteModelResponse + (*GetModelsResponse)(nil), // 425: determined.api.v1.GetModelsResponse + (*GetModelLabelsResponse)(nil), // 426: determined.api.v1.GetModelLabelsResponse + (*GetModelVersionResponse)(nil), // 427: determined.api.v1.GetModelVersionResponse + (*GetModelVersionsResponse)(nil), // 428: determined.api.v1.GetModelVersionsResponse + (*PostModelVersionResponse)(nil), // 429: determined.api.v1.PostModelVersionResponse + (*PatchModelVersionResponse)(nil), // 430: determined.api.v1.PatchModelVersionResponse + (*DeleteModelVersionResponse)(nil), // 431: determined.api.v1.DeleteModelVersionResponse + (*GetTrialMetricsByModelVersionResponse)(nil), // 432: determined.api.v1.GetTrialMetricsByModelVersionResponse + (*GetCheckpointResponse)(nil), // 433: determined.api.v1.GetCheckpointResponse + (*PostCheckpointMetadataResponse)(nil), // 434: determined.api.v1.PostCheckpointMetadataResponse + (*CheckpointsRemoveFilesResponse)(nil), // 435: determined.api.v1.CheckpointsRemoveFilesResponse + (*PatchCheckpointsResponse)(nil), // 436: determined.api.v1.PatchCheckpointsResponse + (*DeleteCheckpointsResponse)(nil), // 437: determined.api.v1.DeleteCheckpointsResponse + (*GetTrialMetricsByCheckpointResponse)(nil), // 438: determined.api.v1.GetTrialMetricsByCheckpointResponse + (*GetSearcherEventsResponse)(nil), // 439: determined.api.v1.GetSearcherEventsResponse + (*PostSearcherOperationsResponse)(nil), // 440: determined.api.v1.PostSearcherOperationsResponse + (*ExpMetricNamesResponse)(nil), // 441: determined.api.v1.ExpMetricNamesResponse + (*MetricBatchesResponse)(nil), // 442: determined.api.v1.MetricBatchesResponse + (*TrialsSnapshotResponse)(nil), // 443: determined.api.v1.TrialsSnapshotResponse + (*TrialsSampleResponse)(nil), // 444: determined.api.v1.TrialsSampleResponse + (*GetResourcePoolsResponse)(nil), // 445: determined.api.v1.GetResourcePoolsResponse + (*GetKubernetesResourceManagersResponse)(nil), // 446: determined.api.v1.GetKubernetesResourceManagersResponse + (*ResourceAllocationRawResponse)(nil), // 447: determined.api.v1.ResourceAllocationRawResponse + (*ResourceAllocationAggregatedResponse)(nil), // 448: determined.api.v1.ResourceAllocationAggregatedResponse + (*GetWorkspaceResponse)(nil), // 449: determined.api.v1.GetWorkspaceResponse + (*GetWorkspaceProjectsResponse)(nil), // 450: determined.api.v1.GetWorkspaceProjectsResponse + (*GetWorkspacesResponse)(nil), // 451: determined.api.v1.GetWorkspacesResponse + (*PostWorkspaceResponse)(nil), // 452: determined.api.v1.PostWorkspaceResponse + (*PatchWorkspaceResponse)(nil), // 453: determined.api.v1.PatchWorkspaceResponse + (*DeleteWorkspaceResponse)(nil), // 454: determined.api.v1.DeleteWorkspaceResponse + (*ArchiveWorkspaceResponse)(nil), // 455: determined.api.v1.ArchiveWorkspaceResponse + (*UnarchiveWorkspaceResponse)(nil), // 456: determined.api.v1.UnarchiveWorkspaceResponse + (*PinWorkspaceResponse)(nil), // 457: determined.api.v1.PinWorkspaceResponse + (*UnpinWorkspaceResponse)(nil), // 458: determined.api.v1.UnpinWorkspaceResponse + (*SetWorkspaceNamespaceBindingsResponse)(nil), // 459: determined.api.v1.SetWorkspaceNamespaceBindingsResponse + (*SetResourceQuotasResponse)(nil), // 460: determined.api.v1.SetResourceQuotasResponse + (*ListWorkspaceNamespaceBindingsResponse)(nil), // 461: determined.api.v1.ListWorkspaceNamespaceBindingsResponse + (*GetWorkspacesWithDefaultNamespaceBindingsResponse)(nil), // 462: determined.api.v1.GetWorkspacesWithDefaultNamespaceBindingsResponse + (*BulkAutoCreateWorkspaceNamespaceBindingsResponse)(nil), // 463: determined.api.v1.BulkAutoCreateWorkspaceNamespaceBindingsResponse + (*DeleteWorkspaceNamespaceBindingsResponse)(nil), // 464: determined.api.v1.DeleteWorkspaceNamespaceBindingsResponse + (*GetKubernetesResourceQuotasResponse)(nil), // 465: determined.api.v1.GetKubernetesResourceQuotasResponse + (*GetProjectResponse)(nil), // 466: determined.api.v1.GetProjectResponse + (*GetProjectByKeyResponse)(nil), // 467: determined.api.v1.GetProjectByKeyResponse + (*GetProjectColumnsResponse)(nil), // 468: determined.api.v1.GetProjectColumnsResponse + (*GetProjectNumericMetricsRangeResponse)(nil), // 469: determined.api.v1.GetProjectNumericMetricsRangeResponse + (*PostProjectResponse)(nil), // 470: determined.api.v1.PostProjectResponse + (*AddProjectNoteResponse)(nil), // 471: determined.api.v1.AddProjectNoteResponse + (*PutProjectNotesResponse)(nil), // 472: determined.api.v1.PutProjectNotesResponse + (*PatchProjectResponse)(nil), // 473: determined.api.v1.PatchProjectResponse + (*DeleteProjectResponse)(nil), // 474: determined.api.v1.DeleteProjectResponse + (*ArchiveProjectResponse)(nil), // 475: determined.api.v1.ArchiveProjectResponse + (*UnarchiveProjectResponse)(nil), // 476: determined.api.v1.UnarchiveProjectResponse + (*MoveProjectResponse)(nil), // 477: determined.api.v1.MoveProjectResponse + (*MoveExperimentResponse)(nil), // 478: determined.api.v1.MoveExperimentResponse + (*MoveExperimentsResponse)(nil), // 479: determined.api.v1.MoveExperimentsResponse + (*GetWebhooksResponse)(nil), // 480: determined.api.v1.GetWebhooksResponse + (*PatchWebhookResponse)(nil), // 481: determined.api.v1.PatchWebhookResponse + (*PostWebhookResponse)(nil), // 482: determined.api.v1.PostWebhookResponse + (*DeleteWebhookResponse)(nil), // 483: determined.api.v1.DeleteWebhookResponse + (*TestWebhookResponse)(nil), // 484: determined.api.v1.TestWebhookResponse + (*PostWebhookEventDataResponse)(nil), // 485: determined.api.v1.PostWebhookEventDataResponse + (*GetGroupResponse)(nil), // 486: determined.api.v1.GetGroupResponse + (*GetGroupsResponse)(nil), // 487: determined.api.v1.GetGroupsResponse + (*CreateGroupResponse)(nil), // 488: determined.api.v1.CreateGroupResponse + (*UpdateGroupResponse)(nil), // 489: determined.api.v1.UpdateGroupResponse + (*DeleteGroupResponse)(nil), // 490: determined.api.v1.DeleteGroupResponse + (*GetPermissionsSummaryResponse)(nil), // 491: determined.api.v1.GetPermissionsSummaryResponse + (*GetGroupsAndUsersAssignedToWorkspaceResponse)(nil), // 492: determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceResponse + (*GetRolesByIDResponse)(nil), // 493: determined.api.v1.GetRolesByIDResponse + (*GetRolesAssignedToUserResponse)(nil), // 494: determined.api.v1.GetRolesAssignedToUserResponse + (*GetRolesAssignedToGroupResponse)(nil), // 495: determined.api.v1.GetRolesAssignedToGroupResponse + (*SearchRolesAssignableToScopeResponse)(nil), // 496: determined.api.v1.SearchRolesAssignableToScopeResponse + (*ListRolesResponse)(nil), // 497: determined.api.v1.ListRolesResponse + (*AssignRolesResponse)(nil), // 498: determined.api.v1.AssignRolesResponse + (*RemoveAssignmentsResponse)(nil), // 499: determined.api.v1.RemoveAssignmentsResponse + (*PostUserActivityResponse)(nil), // 500: determined.api.v1.PostUserActivityResponse + (*GetProjectsByUserActivityResponse)(nil), // 501: determined.api.v1.GetProjectsByUserActivityResponse + (*SearchExperimentsResponse)(nil), // 502: determined.api.v1.SearchExperimentsResponse + (*BindRPToWorkspaceResponse)(nil), // 503: determined.api.v1.BindRPToWorkspaceResponse + (*UnbindRPFromWorkspaceResponse)(nil), // 504: determined.api.v1.UnbindRPFromWorkspaceResponse + (*OverwriteRPWorkspaceBindingsResponse)(nil), // 505: determined.api.v1.OverwriteRPWorkspaceBindingsResponse + (*ListRPsBoundToWorkspaceResponse)(nil), // 506: determined.api.v1.ListRPsBoundToWorkspaceResponse + (*ListWorkspacesBoundToRPResponse)(nil), // 507: determined.api.v1.ListWorkspacesBoundToRPResponse + (*GetGenericTaskConfigResponse)(nil), // 508: determined.api.v1.GetGenericTaskConfigResponse + (*KillGenericTaskResponse)(nil), // 509: determined.api.v1.KillGenericTaskResponse + (*PauseGenericTaskResponse)(nil), // 510: determined.api.v1.PauseGenericTaskResponse + (*UnpauseGenericTaskResponse)(nil), // 511: determined.api.v1.UnpauseGenericTaskResponse + (*SearchRunsResponse)(nil), // 512: determined.api.v1.SearchRunsResponse + (*MoveRunsResponse)(nil), // 513: determined.api.v1.MoveRunsResponse + (*KillRunsResponse)(nil), // 514: determined.api.v1.KillRunsResponse + (*DeleteRunsResponse)(nil), // 515: determined.api.v1.DeleteRunsResponse + (*ArchiveRunsResponse)(nil), // 516: determined.api.v1.ArchiveRunsResponse + (*UnarchiveRunsResponse)(nil), // 517: determined.api.v1.UnarchiveRunsResponse + (*PauseRunsResponse)(nil), // 518: determined.api.v1.PauseRunsResponse + (*ResumeRunsResponse)(nil), // 519: determined.api.v1.ResumeRunsResponse + (*GetRunMetadataResponse)(nil), // 520: determined.api.v1.GetRunMetadataResponse + (*PostRunMetadataResponse)(nil), // 521: determined.api.v1.PostRunMetadataResponse + (*GetMetadataValuesResponse)(nil), // 522: determined.api.v1.GetMetadataValuesResponse + (*PutWorkspaceConfigPoliciesResponse)(nil), // 523: determined.api.v1.PutWorkspaceConfigPoliciesResponse + (*PutGlobalConfigPoliciesResponse)(nil), // 524: determined.api.v1.PutGlobalConfigPoliciesResponse + (*GetWorkspaceConfigPoliciesResponse)(nil), // 525: determined.api.v1.GetWorkspaceConfigPoliciesResponse + (*GetGlobalConfigPoliciesResponse)(nil), // 526: determined.api.v1.GetGlobalConfigPoliciesResponse + (*DeleteWorkspaceConfigPoliciesResponse)(nil), // 527: determined.api.v1.DeleteWorkspaceConfigPoliciesResponse + (*DeleteGlobalConfigPoliciesResponse)(nil), // 528: determined.api.v1.DeleteGlobalConfigPoliciesResponse + (*MoveSearchesResponse)(nil), // 529: determined.api.v1.MoveSearchesResponse + (*KillSearchesResponse)(nil), // 530: determined.api.v1.KillSearchesResponse + (*DeleteSearchesResponse)(nil), // 531: determined.api.v1.DeleteSearchesResponse + (*ArchiveSearchesResponse)(nil), // 532: determined.api.v1.ArchiveSearchesResponse + (*UnarchiveSearchesResponse)(nil), // 533: determined.api.v1.UnarchiveSearchesResponse + (*PauseSearchesResponse)(nil), // 534: determined.api.v1.PauseSearchesResponse + (*ResumeSearchesResponse)(nil), // 535: determined.api.v1.ResumeSearchesResponse } var file_determined_api_v1_api_proto_depIdxs = []int32{ 0, // 0: determined.api.v1.Determined.Login:input_type -> determined.api.v1.LoginRequest @@ -3733,269 +3815,283 @@ var file_determined_api_v1_api_proto_depIdxs = []int32{ 258, // 258: determined.api.v1.Determined.GetGlobalConfigPolicies:input_type -> determined.api.v1.GetGlobalConfigPoliciesRequest 259, // 259: determined.api.v1.Determined.DeleteWorkspaceConfigPolicies:input_type -> determined.api.v1.DeleteWorkspaceConfigPoliciesRequest 260, // 260: determined.api.v1.Determined.DeleteGlobalConfigPolicies:input_type -> determined.api.v1.DeleteGlobalConfigPoliciesRequest - 261, // 261: determined.api.v1.Determined.Login:output_type -> determined.api.v1.LoginResponse - 262, // 262: determined.api.v1.Determined.CurrentUser:output_type -> determined.api.v1.CurrentUserResponse - 263, // 263: determined.api.v1.Determined.Logout:output_type -> determined.api.v1.LogoutResponse - 264, // 264: determined.api.v1.Determined.GetUsers:output_type -> determined.api.v1.GetUsersResponse - 265, // 265: determined.api.v1.Determined.GetUserSetting:output_type -> determined.api.v1.GetUserSettingResponse - 266, // 266: determined.api.v1.Determined.ResetUserSetting:output_type -> determined.api.v1.ResetUserSettingResponse - 267, // 267: determined.api.v1.Determined.PostUserSetting:output_type -> determined.api.v1.PostUserSettingResponse - 268, // 268: determined.api.v1.Determined.GetUser:output_type -> determined.api.v1.GetUserResponse - 269, // 269: determined.api.v1.Determined.GetUserByUsername:output_type -> determined.api.v1.GetUserByUsernameResponse - 270, // 270: determined.api.v1.Determined.GetMe:output_type -> determined.api.v1.GetMeResponse - 271, // 271: determined.api.v1.Determined.PostUser:output_type -> determined.api.v1.PostUserResponse - 272, // 272: determined.api.v1.Determined.SetUserPassword:output_type -> determined.api.v1.SetUserPasswordResponse - 273, // 273: determined.api.v1.Determined.AssignMultipleGroups:output_type -> determined.api.v1.AssignMultipleGroupsResponse - 274, // 274: determined.api.v1.Determined.PatchUser:output_type -> determined.api.v1.PatchUserResponse - 275, // 275: determined.api.v1.Determined.PatchUsers:output_type -> determined.api.v1.PatchUsersResponse - 276, // 276: determined.api.v1.Determined.GetTelemetry:output_type -> determined.api.v1.GetTelemetryResponse - 277, // 277: determined.api.v1.Determined.GetMaster:output_type -> determined.api.v1.GetMasterResponse - 278, // 278: determined.api.v1.Determined.GetMasterConfig:output_type -> determined.api.v1.GetMasterConfigResponse - 279, // 279: determined.api.v1.Determined.PatchMasterConfig:output_type -> determined.api.v1.PatchMasterConfigResponse - 280, // 280: determined.api.v1.Determined.MasterLogs:output_type -> determined.api.v1.MasterLogsResponse - 281, // 281: determined.api.v1.Determined.GetClusterMessage:output_type -> determined.api.v1.GetClusterMessageResponse - 282, // 282: determined.api.v1.Determined.SetClusterMessage:output_type -> determined.api.v1.SetClusterMessageResponse - 283, // 283: determined.api.v1.Determined.DeleteClusterMessage:output_type -> determined.api.v1.DeleteClusterMessageResponse - 284, // 284: determined.api.v1.Determined.GetAgents:output_type -> determined.api.v1.GetAgentsResponse - 285, // 285: determined.api.v1.Determined.GetAgent:output_type -> determined.api.v1.GetAgentResponse - 286, // 286: determined.api.v1.Determined.GetSlots:output_type -> determined.api.v1.GetSlotsResponse - 287, // 287: determined.api.v1.Determined.GetSlot:output_type -> determined.api.v1.GetSlotResponse - 288, // 288: determined.api.v1.Determined.EnableAgent:output_type -> determined.api.v1.EnableAgentResponse - 289, // 289: determined.api.v1.Determined.DisableAgent:output_type -> determined.api.v1.DisableAgentResponse - 290, // 290: determined.api.v1.Determined.EnableSlot:output_type -> determined.api.v1.EnableSlotResponse - 291, // 291: determined.api.v1.Determined.DisableSlot:output_type -> determined.api.v1.DisableSlotResponse - 292, // 292: determined.api.v1.Determined.CreateGenericTask:output_type -> determined.api.v1.CreateGenericTaskResponse - 293, // 293: determined.api.v1.Determined.CreateExperiment:output_type -> determined.api.v1.CreateExperimentResponse - 294, // 294: determined.api.v1.Determined.PutExperiment:output_type -> determined.api.v1.PutExperimentResponse - 295, // 295: determined.api.v1.Determined.ContinueExperiment:output_type -> determined.api.v1.ContinueExperimentResponse - 296, // 296: determined.api.v1.Determined.GetExperiment:output_type -> determined.api.v1.GetExperimentResponse - 297, // 297: determined.api.v1.Determined.GetExperiments:output_type -> determined.api.v1.GetExperimentsResponse - 298, // 298: determined.api.v1.Determined.PutExperimentRetainLogs:output_type -> determined.api.v1.PutExperimentRetainLogsResponse - 299, // 299: determined.api.v1.Determined.PutExperimentsRetainLogs:output_type -> determined.api.v1.PutExperimentsRetainLogsResponse - 300, // 300: determined.api.v1.Determined.PutTrialRetainLogs:output_type -> determined.api.v1.PutTrialRetainLogsResponse - 301, // 301: determined.api.v1.Determined.GetModelDef:output_type -> determined.api.v1.GetModelDefResponse - 302, // 302: determined.api.v1.Determined.GetTaskContextDirectory:output_type -> determined.api.v1.GetTaskContextDirectoryResponse - 303, // 303: determined.api.v1.Determined.GetModelDefTree:output_type -> determined.api.v1.GetModelDefTreeResponse - 304, // 304: determined.api.v1.Determined.GetModelDefFile:output_type -> determined.api.v1.GetModelDefFileResponse - 305, // 305: determined.api.v1.Determined.GetExperimentLabels:output_type -> determined.api.v1.GetExperimentLabelsResponse - 306, // 306: determined.api.v1.Determined.GetExperimentValidationHistory:output_type -> determined.api.v1.GetExperimentValidationHistoryResponse - 307, // 307: determined.api.v1.Determined.ActivateExperiment:output_type -> determined.api.v1.ActivateExperimentResponse - 308, // 308: determined.api.v1.Determined.ActivateExperiments:output_type -> determined.api.v1.ActivateExperimentsResponse - 309, // 309: determined.api.v1.Determined.PauseExperiment:output_type -> determined.api.v1.PauseExperimentResponse - 310, // 310: determined.api.v1.Determined.PauseExperiments:output_type -> determined.api.v1.PauseExperimentsResponse - 311, // 311: determined.api.v1.Determined.CancelExperiment:output_type -> determined.api.v1.CancelExperimentResponse - 312, // 312: determined.api.v1.Determined.CancelExperiments:output_type -> determined.api.v1.CancelExperimentsResponse - 313, // 313: determined.api.v1.Determined.KillExperiment:output_type -> determined.api.v1.KillExperimentResponse - 314, // 314: determined.api.v1.Determined.KillExperiments:output_type -> determined.api.v1.KillExperimentsResponse - 315, // 315: determined.api.v1.Determined.ArchiveExperiment:output_type -> determined.api.v1.ArchiveExperimentResponse - 316, // 316: determined.api.v1.Determined.ArchiveExperiments:output_type -> determined.api.v1.ArchiveExperimentsResponse - 317, // 317: determined.api.v1.Determined.UnarchiveExperiment:output_type -> determined.api.v1.UnarchiveExperimentResponse - 318, // 318: determined.api.v1.Determined.UnarchiveExperiments:output_type -> determined.api.v1.UnarchiveExperimentsResponse - 319, // 319: determined.api.v1.Determined.PatchExperiment:output_type -> determined.api.v1.PatchExperimentResponse - 320, // 320: determined.api.v1.Determined.DeleteExperiments:output_type -> determined.api.v1.DeleteExperimentsResponse - 321, // 321: determined.api.v1.Determined.DeleteExperiment:output_type -> determined.api.v1.DeleteExperimentResponse - 322, // 322: determined.api.v1.Determined.GetBestSearcherValidationMetric:output_type -> determined.api.v1.GetBestSearcherValidationMetricResponse - 323, // 323: determined.api.v1.Determined.GetExperimentCheckpoints:output_type -> determined.api.v1.GetExperimentCheckpointsResponse - 324, // 324: determined.api.v1.Determined.PutExperimentLabel:output_type -> determined.api.v1.PutExperimentLabelResponse - 325, // 325: determined.api.v1.Determined.DeleteExperimentLabel:output_type -> determined.api.v1.DeleteExperimentLabelResponse - 326, // 326: determined.api.v1.Determined.PreviewHPSearch:output_type -> determined.api.v1.PreviewHPSearchResponse - 327, // 327: determined.api.v1.Determined.GetExperimentTrials:output_type -> determined.api.v1.GetExperimentTrialsResponse - 328, // 328: determined.api.v1.Determined.GetTrialRemainingLogRetentionDays:output_type -> determined.api.v1.GetTrialRemainingLogRetentionDaysResponse - 329, // 329: determined.api.v1.Determined.CompareTrials:output_type -> determined.api.v1.CompareTrialsResponse - 330, // 330: determined.api.v1.Determined.ReportTrialSourceInfo:output_type -> determined.api.v1.ReportTrialSourceInfoResponse - 331, // 331: determined.api.v1.Determined.CreateTrial:output_type -> determined.api.v1.CreateTrialResponse - 332, // 332: determined.api.v1.Determined.PutTrial:output_type -> determined.api.v1.PutTrialResponse - 333, // 333: determined.api.v1.Determined.PatchTrial:output_type -> determined.api.v1.PatchTrialResponse - 334, // 334: determined.api.v1.Determined.StartTrial:output_type -> determined.api.v1.StartTrialResponse - 335, // 335: determined.api.v1.Determined.RunPrepareForReporting:output_type -> determined.api.v1.RunPrepareForReportingResponse - 336, // 336: determined.api.v1.Determined.GetTrial:output_type -> determined.api.v1.GetTrialResponse - 337, // 337: determined.api.v1.Determined.GetTrialByExternalID:output_type -> determined.api.v1.GetTrialByExternalIDResponse - 338, // 338: determined.api.v1.Determined.GetTrialWorkloads:output_type -> determined.api.v1.GetTrialWorkloadsResponse - 339, // 339: determined.api.v1.Determined.TrialLogs:output_type -> determined.api.v1.TrialLogsResponse - 340, // 340: determined.api.v1.Determined.TrialLogsFields:output_type -> determined.api.v1.TrialLogsFieldsResponse - 341, // 341: determined.api.v1.Determined.AllocationReady:output_type -> determined.api.v1.AllocationReadyResponse - 342, // 342: determined.api.v1.Determined.GetAllocation:output_type -> determined.api.v1.GetAllocationResponse - 343, // 343: determined.api.v1.Determined.AllocationWaiting:output_type -> determined.api.v1.AllocationWaitingResponse - 344, // 344: determined.api.v1.Determined.PostTaskLogs:output_type -> determined.api.v1.PostTaskLogsResponse - 345, // 345: determined.api.v1.Determined.TaskLogs:output_type -> determined.api.v1.TaskLogsResponse - 346, // 346: determined.api.v1.Determined.TaskLogsFields:output_type -> determined.api.v1.TaskLogsFieldsResponse - 347, // 347: determined.api.v1.Determined.GetTrialProfilerMetrics:output_type -> determined.api.v1.GetTrialProfilerMetricsResponse - 348, // 348: determined.api.v1.Determined.GetTrialProfilerAvailableSeries:output_type -> determined.api.v1.GetTrialProfilerAvailableSeriesResponse - 349, // 349: determined.api.v1.Determined.PostTrialProfilerMetricsBatch:output_type -> determined.api.v1.PostTrialProfilerMetricsBatchResponse - 350, // 350: determined.api.v1.Determined.GetMetrics:output_type -> determined.api.v1.GetMetricsResponse - 351, // 351: determined.api.v1.Determined.GetTrainingMetrics:output_type -> determined.api.v1.GetTrainingMetricsResponse - 352, // 352: determined.api.v1.Determined.GetValidationMetrics:output_type -> determined.api.v1.GetValidationMetricsResponse - 353, // 353: determined.api.v1.Determined.KillTrial:output_type -> determined.api.v1.KillTrialResponse - 354, // 354: determined.api.v1.Determined.GetTrialCheckpoints:output_type -> determined.api.v1.GetTrialCheckpointsResponse - 355, // 355: determined.api.v1.Determined.CleanupLogs:output_type -> determined.api.v1.CleanupLogsResponse - 356, // 356: determined.api.v1.Determined.AllocationPreemptionSignal:output_type -> determined.api.v1.AllocationPreemptionSignalResponse - 357, // 357: determined.api.v1.Determined.AllocationPendingPreemptionSignal:output_type -> determined.api.v1.AllocationPendingPreemptionSignalResponse - 358, // 358: determined.api.v1.Determined.AckAllocationPreemptionSignal:output_type -> determined.api.v1.AckAllocationPreemptionSignalResponse - 359, // 359: determined.api.v1.Determined.MarkAllocationResourcesDaemon:output_type -> determined.api.v1.MarkAllocationResourcesDaemonResponse - 360, // 360: determined.api.v1.Determined.AllocationRendezvousInfo:output_type -> determined.api.v1.AllocationRendezvousInfoResponse - 361, // 361: determined.api.v1.Determined.PostAllocationProxyAddress:output_type -> determined.api.v1.PostAllocationProxyAddressResponse - 362, // 362: determined.api.v1.Determined.GetTaskAcceleratorData:output_type -> determined.api.v1.GetTaskAcceleratorDataResponse - 363, // 363: determined.api.v1.Determined.PostAllocationAcceleratorData:output_type -> determined.api.v1.PostAllocationAcceleratorDataResponse - 364, // 364: determined.api.v1.Determined.AllocationAllGather:output_type -> determined.api.v1.AllocationAllGatherResponse - 365, // 365: determined.api.v1.Determined.NotifyContainerRunning:output_type -> determined.api.v1.NotifyContainerRunningResponse - 366, // 366: determined.api.v1.Determined.GetCurrentTrialSearcherOperation:output_type -> determined.api.v1.GetCurrentTrialSearcherOperationResponse - 367, // 367: determined.api.v1.Determined.CompleteTrialSearcherValidation:output_type -> determined.api.v1.CompleteTrialSearcherValidationResponse - 368, // 368: determined.api.v1.Determined.ReportTrialSearcherEarlyExit:output_type -> determined.api.v1.ReportTrialSearcherEarlyExitResponse - 369, // 369: determined.api.v1.Determined.ReportTrialProgress:output_type -> determined.api.v1.ReportTrialProgressResponse - 370, // 370: determined.api.v1.Determined.PostTrialRunnerMetadata:output_type -> determined.api.v1.PostTrialRunnerMetadataResponse - 371, // 371: determined.api.v1.Determined.ReportTrialMetrics:output_type -> determined.api.v1.ReportTrialMetricsResponse - 372, // 372: determined.api.v1.Determined.ReportTrialTrainingMetrics:output_type -> determined.api.v1.ReportTrialTrainingMetricsResponse - 373, // 373: determined.api.v1.Determined.ReportTrialValidationMetrics:output_type -> determined.api.v1.ReportTrialValidationMetricsResponse - 374, // 374: determined.api.v1.Determined.ReportCheckpoint:output_type -> determined.api.v1.ReportCheckpointResponse - 375, // 375: determined.api.v1.Determined.GetJobs:output_type -> determined.api.v1.GetJobsResponse - 376, // 376: determined.api.v1.Determined.GetJobsV2:output_type -> determined.api.v1.GetJobsV2Response - 377, // 377: determined.api.v1.Determined.GetJobQueueStats:output_type -> determined.api.v1.GetJobQueueStatsResponse - 378, // 378: determined.api.v1.Determined.UpdateJobQueue:output_type -> determined.api.v1.UpdateJobQueueResponse - 379, // 379: determined.api.v1.Determined.GetTemplates:output_type -> determined.api.v1.GetTemplatesResponse - 380, // 380: determined.api.v1.Determined.GetTemplate:output_type -> determined.api.v1.GetTemplateResponse - 381, // 381: determined.api.v1.Determined.PutTemplate:output_type -> determined.api.v1.PutTemplateResponse - 382, // 382: determined.api.v1.Determined.PostTemplate:output_type -> determined.api.v1.PostTemplateResponse - 383, // 383: determined.api.v1.Determined.PatchTemplateConfig:output_type -> determined.api.v1.PatchTemplateConfigResponse - 384, // 384: determined.api.v1.Determined.PatchTemplateName:output_type -> determined.api.v1.PatchTemplateNameResponse - 385, // 385: determined.api.v1.Determined.DeleteTemplate:output_type -> determined.api.v1.DeleteTemplateResponse - 386, // 386: determined.api.v1.Determined.GetNotebooks:output_type -> determined.api.v1.GetNotebooksResponse - 387, // 387: determined.api.v1.Determined.GetNotebook:output_type -> determined.api.v1.GetNotebookResponse - 388, // 388: determined.api.v1.Determined.IdleNotebook:output_type -> determined.api.v1.IdleNotebookResponse - 389, // 389: determined.api.v1.Determined.KillNotebook:output_type -> determined.api.v1.KillNotebookResponse - 390, // 390: determined.api.v1.Determined.SetNotebookPriority:output_type -> determined.api.v1.SetNotebookPriorityResponse - 391, // 391: determined.api.v1.Determined.LaunchNotebook:output_type -> determined.api.v1.LaunchNotebookResponse - 392, // 392: determined.api.v1.Determined.GetShells:output_type -> determined.api.v1.GetShellsResponse - 393, // 393: determined.api.v1.Determined.GetShell:output_type -> determined.api.v1.GetShellResponse - 394, // 394: determined.api.v1.Determined.KillShell:output_type -> determined.api.v1.KillShellResponse - 395, // 395: determined.api.v1.Determined.SetShellPriority:output_type -> determined.api.v1.SetShellPriorityResponse - 396, // 396: determined.api.v1.Determined.LaunchShell:output_type -> determined.api.v1.LaunchShellResponse - 397, // 397: determined.api.v1.Determined.GetCommands:output_type -> determined.api.v1.GetCommandsResponse - 398, // 398: determined.api.v1.Determined.GetCommand:output_type -> determined.api.v1.GetCommandResponse - 399, // 399: determined.api.v1.Determined.KillCommand:output_type -> determined.api.v1.KillCommandResponse - 400, // 400: determined.api.v1.Determined.SetCommandPriority:output_type -> determined.api.v1.SetCommandPriorityResponse - 401, // 401: determined.api.v1.Determined.LaunchCommand:output_type -> determined.api.v1.LaunchCommandResponse - 402, // 402: determined.api.v1.Determined.GetTensorboards:output_type -> determined.api.v1.GetTensorboardsResponse - 403, // 403: determined.api.v1.Determined.GetTensorboard:output_type -> determined.api.v1.GetTensorboardResponse - 404, // 404: determined.api.v1.Determined.KillTensorboard:output_type -> determined.api.v1.KillTensorboardResponse - 405, // 405: determined.api.v1.Determined.SetTensorboardPriority:output_type -> determined.api.v1.SetTensorboardPriorityResponse - 406, // 406: determined.api.v1.Determined.LaunchTensorboard:output_type -> determined.api.v1.LaunchTensorboardResponse - 407, // 407: determined.api.v1.Determined.DeleteTensorboardFiles:output_type -> determined.api.v1.DeleteTensorboardFilesResponse - 408, // 408: determined.api.v1.Determined.GetActiveTasksCount:output_type -> determined.api.v1.GetActiveTasksCountResponse - 409, // 409: determined.api.v1.Determined.GetTask:output_type -> determined.api.v1.GetTaskResponse - 410, // 410: determined.api.v1.Determined.GetTasks:output_type -> determined.api.v1.GetTasksResponse - 411, // 411: determined.api.v1.Determined.GetModel:output_type -> determined.api.v1.GetModelResponse - 412, // 412: determined.api.v1.Determined.PostModel:output_type -> determined.api.v1.PostModelResponse - 413, // 413: determined.api.v1.Determined.PatchModel:output_type -> determined.api.v1.PatchModelResponse - 414, // 414: determined.api.v1.Determined.ArchiveModel:output_type -> determined.api.v1.ArchiveModelResponse - 415, // 415: determined.api.v1.Determined.UnarchiveModel:output_type -> determined.api.v1.UnarchiveModelResponse - 416, // 416: determined.api.v1.Determined.MoveModel:output_type -> determined.api.v1.MoveModelResponse - 417, // 417: determined.api.v1.Determined.DeleteModel:output_type -> determined.api.v1.DeleteModelResponse - 418, // 418: determined.api.v1.Determined.GetModels:output_type -> determined.api.v1.GetModelsResponse - 419, // 419: determined.api.v1.Determined.GetModelLabels:output_type -> determined.api.v1.GetModelLabelsResponse - 420, // 420: determined.api.v1.Determined.GetModelVersion:output_type -> determined.api.v1.GetModelVersionResponse - 421, // 421: determined.api.v1.Determined.GetModelVersions:output_type -> determined.api.v1.GetModelVersionsResponse - 422, // 422: determined.api.v1.Determined.PostModelVersion:output_type -> determined.api.v1.PostModelVersionResponse - 423, // 423: determined.api.v1.Determined.PatchModelVersion:output_type -> determined.api.v1.PatchModelVersionResponse - 424, // 424: determined.api.v1.Determined.DeleteModelVersion:output_type -> determined.api.v1.DeleteModelVersionResponse - 425, // 425: determined.api.v1.Determined.GetTrialMetricsByModelVersion:output_type -> determined.api.v1.GetTrialMetricsByModelVersionResponse - 426, // 426: determined.api.v1.Determined.GetCheckpoint:output_type -> determined.api.v1.GetCheckpointResponse - 427, // 427: determined.api.v1.Determined.PostCheckpointMetadata:output_type -> determined.api.v1.PostCheckpointMetadataResponse - 428, // 428: determined.api.v1.Determined.CheckpointsRemoveFiles:output_type -> determined.api.v1.CheckpointsRemoveFilesResponse - 429, // 429: determined.api.v1.Determined.PatchCheckpoints:output_type -> determined.api.v1.PatchCheckpointsResponse - 430, // 430: determined.api.v1.Determined.DeleteCheckpoints:output_type -> determined.api.v1.DeleteCheckpointsResponse - 431, // 431: determined.api.v1.Determined.GetTrialMetricsByCheckpoint:output_type -> determined.api.v1.GetTrialMetricsByCheckpointResponse - 432, // 432: determined.api.v1.Determined.GetSearcherEvents:output_type -> determined.api.v1.GetSearcherEventsResponse - 433, // 433: determined.api.v1.Determined.PostSearcherOperations:output_type -> determined.api.v1.PostSearcherOperationsResponse - 434, // 434: determined.api.v1.Determined.ExpMetricNames:output_type -> determined.api.v1.ExpMetricNamesResponse - 435, // 435: determined.api.v1.Determined.MetricBatches:output_type -> determined.api.v1.MetricBatchesResponse - 436, // 436: determined.api.v1.Determined.TrialsSnapshot:output_type -> determined.api.v1.TrialsSnapshotResponse - 437, // 437: determined.api.v1.Determined.TrialsSample:output_type -> determined.api.v1.TrialsSampleResponse - 438, // 438: determined.api.v1.Determined.GetResourcePools:output_type -> determined.api.v1.GetResourcePoolsResponse - 439, // 439: determined.api.v1.Determined.GetKubernetesResourceManagers:output_type -> determined.api.v1.GetKubernetesResourceManagersResponse - 440, // 440: determined.api.v1.Determined.ResourceAllocationRaw:output_type -> determined.api.v1.ResourceAllocationRawResponse - 441, // 441: determined.api.v1.Determined.ResourceAllocationAggregated:output_type -> determined.api.v1.ResourceAllocationAggregatedResponse - 442, // 442: determined.api.v1.Determined.GetWorkspace:output_type -> determined.api.v1.GetWorkspaceResponse - 443, // 443: determined.api.v1.Determined.GetWorkspaceProjects:output_type -> determined.api.v1.GetWorkspaceProjectsResponse - 444, // 444: determined.api.v1.Determined.GetWorkspaces:output_type -> determined.api.v1.GetWorkspacesResponse - 445, // 445: determined.api.v1.Determined.PostWorkspace:output_type -> determined.api.v1.PostWorkspaceResponse - 446, // 446: determined.api.v1.Determined.PatchWorkspace:output_type -> determined.api.v1.PatchWorkspaceResponse - 447, // 447: determined.api.v1.Determined.DeleteWorkspace:output_type -> determined.api.v1.DeleteWorkspaceResponse - 448, // 448: determined.api.v1.Determined.ArchiveWorkspace:output_type -> determined.api.v1.ArchiveWorkspaceResponse - 449, // 449: determined.api.v1.Determined.UnarchiveWorkspace:output_type -> determined.api.v1.UnarchiveWorkspaceResponse - 450, // 450: determined.api.v1.Determined.PinWorkspace:output_type -> determined.api.v1.PinWorkspaceResponse - 451, // 451: determined.api.v1.Determined.UnpinWorkspace:output_type -> determined.api.v1.UnpinWorkspaceResponse - 452, // 452: determined.api.v1.Determined.SetWorkspaceNamespaceBindings:output_type -> determined.api.v1.SetWorkspaceNamespaceBindingsResponse - 453, // 453: determined.api.v1.Determined.SetResourceQuotas:output_type -> determined.api.v1.SetResourceQuotasResponse - 454, // 454: determined.api.v1.Determined.ListWorkspaceNamespaceBindings:output_type -> determined.api.v1.ListWorkspaceNamespaceBindingsResponse - 455, // 455: determined.api.v1.Determined.GetWorkspacesWithDefaultNamespaceBindings:output_type -> determined.api.v1.GetWorkspacesWithDefaultNamespaceBindingsResponse - 456, // 456: determined.api.v1.Determined.BulkAutoCreateWorkspaceNamespaceBindings:output_type -> determined.api.v1.BulkAutoCreateWorkspaceNamespaceBindingsResponse - 457, // 457: determined.api.v1.Determined.DeleteWorkspaceNamespaceBindings:output_type -> determined.api.v1.DeleteWorkspaceNamespaceBindingsResponse - 458, // 458: determined.api.v1.Determined.GetKubernetesResourceQuotas:output_type -> determined.api.v1.GetKubernetesResourceQuotasResponse - 459, // 459: determined.api.v1.Determined.GetProject:output_type -> determined.api.v1.GetProjectResponse - 460, // 460: determined.api.v1.Determined.GetProjectByKey:output_type -> determined.api.v1.GetProjectByKeyResponse - 461, // 461: determined.api.v1.Determined.GetProjectColumns:output_type -> determined.api.v1.GetProjectColumnsResponse - 462, // 462: determined.api.v1.Determined.GetProjectNumericMetricsRange:output_type -> determined.api.v1.GetProjectNumericMetricsRangeResponse - 463, // 463: determined.api.v1.Determined.PostProject:output_type -> determined.api.v1.PostProjectResponse - 464, // 464: determined.api.v1.Determined.AddProjectNote:output_type -> determined.api.v1.AddProjectNoteResponse - 465, // 465: determined.api.v1.Determined.PutProjectNotes:output_type -> determined.api.v1.PutProjectNotesResponse - 466, // 466: determined.api.v1.Determined.PatchProject:output_type -> determined.api.v1.PatchProjectResponse - 467, // 467: determined.api.v1.Determined.DeleteProject:output_type -> determined.api.v1.DeleteProjectResponse - 468, // 468: determined.api.v1.Determined.ArchiveProject:output_type -> determined.api.v1.ArchiveProjectResponse - 469, // 469: determined.api.v1.Determined.UnarchiveProject:output_type -> determined.api.v1.UnarchiveProjectResponse - 470, // 470: determined.api.v1.Determined.MoveProject:output_type -> determined.api.v1.MoveProjectResponse - 471, // 471: determined.api.v1.Determined.MoveExperiment:output_type -> determined.api.v1.MoveExperimentResponse - 472, // 472: determined.api.v1.Determined.MoveExperiments:output_type -> determined.api.v1.MoveExperimentsResponse - 473, // 473: determined.api.v1.Determined.GetWebhooks:output_type -> determined.api.v1.GetWebhooksResponse - 474, // 474: determined.api.v1.Determined.PatchWebhook:output_type -> determined.api.v1.PatchWebhookResponse - 475, // 475: determined.api.v1.Determined.PostWebhook:output_type -> determined.api.v1.PostWebhookResponse - 476, // 476: determined.api.v1.Determined.DeleteWebhook:output_type -> determined.api.v1.DeleteWebhookResponse - 477, // 477: determined.api.v1.Determined.TestWebhook:output_type -> determined.api.v1.TestWebhookResponse - 478, // 478: determined.api.v1.Determined.PostWebhookEventData:output_type -> determined.api.v1.PostWebhookEventDataResponse - 479, // 479: determined.api.v1.Determined.GetGroup:output_type -> determined.api.v1.GetGroupResponse - 480, // 480: determined.api.v1.Determined.GetGroups:output_type -> determined.api.v1.GetGroupsResponse - 481, // 481: determined.api.v1.Determined.CreateGroup:output_type -> determined.api.v1.CreateGroupResponse - 482, // 482: determined.api.v1.Determined.UpdateGroup:output_type -> determined.api.v1.UpdateGroupResponse - 483, // 483: determined.api.v1.Determined.DeleteGroup:output_type -> determined.api.v1.DeleteGroupResponse - 484, // 484: determined.api.v1.Determined.GetPermissionsSummary:output_type -> determined.api.v1.GetPermissionsSummaryResponse - 485, // 485: determined.api.v1.Determined.GetGroupsAndUsersAssignedToWorkspace:output_type -> determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceResponse - 486, // 486: determined.api.v1.Determined.GetRolesByID:output_type -> determined.api.v1.GetRolesByIDResponse - 487, // 487: determined.api.v1.Determined.GetRolesAssignedToUser:output_type -> determined.api.v1.GetRolesAssignedToUserResponse - 488, // 488: determined.api.v1.Determined.GetRolesAssignedToGroup:output_type -> determined.api.v1.GetRolesAssignedToGroupResponse - 489, // 489: determined.api.v1.Determined.SearchRolesAssignableToScope:output_type -> determined.api.v1.SearchRolesAssignableToScopeResponse - 490, // 490: determined.api.v1.Determined.ListRoles:output_type -> determined.api.v1.ListRolesResponse - 491, // 491: determined.api.v1.Determined.AssignRoles:output_type -> determined.api.v1.AssignRolesResponse - 492, // 492: determined.api.v1.Determined.RemoveAssignments:output_type -> determined.api.v1.RemoveAssignmentsResponse - 493, // 493: determined.api.v1.Determined.PostUserActivity:output_type -> determined.api.v1.PostUserActivityResponse - 494, // 494: determined.api.v1.Determined.GetProjectsByUserActivity:output_type -> determined.api.v1.GetProjectsByUserActivityResponse - 495, // 495: determined.api.v1.Determined.SearchExperiments:output_type -> determined.api.v1.SearchExperimentsResponse - 496, // 496: determined.api.v1.Determined.BindRPToWorkspace:output_type -> determined.api.v1.BindRPToWorkspaceResponse - 497, // 497: determined.api.v1.Determined.UnbindRPFromWorkspace:output_type -> determined.api.v1.UnbindRPFromWorkspaceResponse - 498, // 498: determined.api.v1.Determined.OverwriteRPWorkspaceBindings:output_type -> determined.api.v1.OverwriteRPWorkspaceBindingsResponse - 499, // 499: determined.api.v1.Determined.ListRPsBoundToWorkspace:output_type -> determined.api.v1.ListRPsBoundToWorkspaceResponse - 500, // 500: determined.api.v1.Determined.ListWorkspacesBoundToRP:output_type -> determined.api.v1.ListWorkspacesBoundToRPResponse - 501, // 501: determined.api.v1.Determined.GetGenericTaskConfig:output_type -> determined.api.v1.GetGenericTaskConfigResponse - 502, // 502: determined.api.v1.Determined.KillGenericTask:output_type -> determined.api.v1.KillGenericTaskResponse - 503, // 503: determined.api.v1.Determined.PauseGenericTask:output_type -> determined.api.v1.PauseGenericTaskResponse - 504, // 504: determined.api.v1.Determined.UnpauseGenericTask:output_type -> determined.api.v1.UnpauseGenericTaskResponse - 505, // 505: determined.api.v1.Determined.SearchRuns:output_type -> determined.api.v1.SearchRunsResponse - 506, // 506: determined.api.v1.Determined.MoveRuns:output_type -> determined.api.v1.MoveRunsResponse - 507, // 507: determined.api.v1.Determined.KillRuns:output_type -> determined.api.v1.KillRunsResponse - 508, // 508: determined.api.v1.Determined.DeleteRuns:output_type -> determined.api.v1.DeleteRunsResponse - 509, // 509: determined.api.v1.Determined.ArchiveRuns:output_type -> determined.api.v1.ArchiveRunsResponse - 510, // 510: determined.api.v1.Determined.UnarchiveRuns:output_type -> determined.api.v1.UnarchiveRunsResponse - 511, // 511: determined.api.v1.Determined.PauseRuns:output_type -> determined.api.v1.PauseRunsResponse - 512, // 512: determined.api.v1.Determined.ResumeRuns:output_type -> determined.api.v1.ResumeRunsResponse - 513, // 513: determined.api.v1.Determined.GetRunMetadata:output_type -> determined.api.v1.GetRunMetadataResponse - 514, // 514: determined.api.v1.Determined.PostRunMetadata:output_type -> determined.api.v1.PostRunMetadataResponse - 515, // 515: determined.api.v1.Determined.GetMetadataValues:output_type -> determined.api.v1.GetMetadataValuesResponse - 516, // 516: determined.api.v1.Determined.PutWorkspaceConfigPolicies:output_type -> determined.api.v1.PutWorkspaceConfigPoliciesResponse - 517, // 517: determined.api.v1.Determined.PutGlobalConfigPolicies:output_type -> determined.api.v1.PutGlobalConfigPoliciesResponse - 518, // 518: determined.api.v1.Determined.GetWorkspaceConfigPolicies:output_type -> determined.api.v1.GetWorkspaceConfigPoliciesResponse - 519, // 519: determined.api.v1.Determined.GetGlobalConfigPolicies:output_type -> determined.api.v1.GetGlobalConfigPoliciesResponse - 520, // 520: determined.api.v1.Determined.DeleteWorkspaceConfigPolicies:output_type -> determined.api.v1.DeleteWorkspaceConfigPoliciesResponse - 521, // 521: determined.api.v1.Determined.DeleteGlobalConfigPolicies:output_type -> determined.api.v1.DeleteGlobalConfigPoliciesResponse - 261, // [261:522] is the sub-list for method output_type - 0, // [0:261] is the sub-list for method input_type + 261, // 261: determined.api.v1.Determined.MoveSearches:input_type -> determined.api.v1.MoveSearchesRequest + 262, // 262: determined.api.v1.Determined.KillSearches:input_type -> determined.api.v1.KillSearchesRequest + 263, // 263: determined.api.v1.Determined.DeleteSearches:input_type -> determined.api.v1.DeleteSearchesRequest + 264, // 264: determined.api.v1.Determined.ArchiveSearches:input_type -> determined.api.v1.ArchiveSearchesRequest + 265, // 265: determined.api.v1.Determined.UnarchiveSearches:input_type -> determined.api.v1.UnarchiveSearchesRequest + 266, // 266: determined.api.v1.Determined.PauseSearches:input_type -> determined.api.v1.PauseSearchesRequest + 267, // 267: determined.api.v1.Determined.ResumeSearches:input_type -> determined.api.v1.ResumeSearchesRequest + 268, // 268: determined.api.v1.Determined.Login:output_type -> determined.api.v1.LoginResponse + 269, // 269: determined.api.v1.Determined.CurrentUser:output_type -> determined.api.v1.CurrentUserResponse + 270, // 270: determined.api.v1.Determined.Logout:output_type -> determined.api.v1.LogoutResponse + 271, // 271: determined.api.v1.Determined.GetUsers:output_type -> determined.api.v1.GetUsersResponse + 272, // 272: determined.api.v1.Determined.GetUserSetting:output_type -> determined.api.v1.GetUserSettingResponse + 273, // 273: determined.api.v1.Determined.ResetUserSetting:output_type -> determined.api.v1.ResetUserSettingResponse + 274, // 274: determined.api.v1.Determined.PostUserSetting:output_type -> determined.api.v1.PostUserSettingResponse + 275, // 275: determined.api.v1.Determined.GetUser:output_type -> determined.api.v1.GetUserResponse + 276, // 276: determined.api.v1.Determined.GetUserByUsername:output_type -> determined.api.v1.GetUserByUsernameResponse + 277, // 277: determined.api.v1.Determined.GetMe:output_type -> determined.api.v1.GetMeResponse + 278, // 278: determined.api.v1.Determined.PostUser:output_type -> determined.api.v1.PostUserResponse + 279, // 279: determined.api.v1.Determined.SetUserPassword:output_type -> determined.api.v1.SetUserPasswordResponse + 280, // 280: determined.api.v1.Determined.AssignMultipleGroups:output_type -> determined.api.v1.AssignMultipleGroupsResponse + 281, // 281: determined.api.v1.Determined.PatchUser:output_type -> determined.api.v1.PatchUserResponse + 282, // 282: determined.api.v1.Determined.PatchUsers:output_type -> determined.api.v1.PatchUsersResponse + 283, // 283: determined.api.v1.Determined.GetTelemetry:output_type -> determined.api.v1.GetTelemetryResponse + 284, // 284: determined.api.v1.Determined.GetMaster:output_type -> determined.api.v1.GetMasterResponse + 285, // 285: determined.api.v1.Determined.GetMasterConfig:output_type -> determined.api.v1.GetMasterConfigResponse + 286, // 286: determined.api.v1.Determined.PatchMasterConfig:output_type -> determined.api.v1.PatchMasterConfigResponse + 287, // 287: determined.api.v1.Determined.MasterLogs:output_type -> determined.api.v1.MasterLogsResponse + 288, // 288: determined.api.v1.Determined.GetClusterMessage:output_type -> determined.api.v1.GetClusterMessageResponse + 289, // 289: determined.api.v1.Determined.SetClusterMessage:output_type -> determined.api.v1.SetClusterMessageResponse + 290, // 290: determined.api.v1.Determined.DeleteClusterMessage:output_type -> determined.api.v1.DeleteClusterMessageResponse + 291, // 291: determined.api.v1.Determined.GetAgents:output_type -> determined.api.v1.GetAgentsResponse + 292, // 292: determined.api.v1.Determined.GetAgent:output_type -> determined.api.v1.GetAgentResponse + 293, // 293: determined.api.v1.Determined.GetSlots:output_type -> determined.api.v1.GetSlotsResponse + 294, // 294: determined.api.v1.Determined.GetSlot:output_type -> determined.api.v1.GetSlotResponse + 295, // 295: determined.api.v1.Determined.EnableAgent:output_type -> determined.api.v1.EnableAgentResponse + 296, // 296: determined.api.v1.Determined.DisableAgent:output_type -> determined.api.v1.DisableAgentResponse + 297, // 297: determined.api.v1.Determined.EnableSlot:output_type -> determined.api.v1.EnableSlotResponse + 298, // 298: determined.api.v1.Determined.DisableSlot:output_type -> determined.api.v1.DisableSlotResponse + 299, // 299: determined.api.v1.Determined.CreateGenericTask:output_type -> determined.api.v1.CreateGenericTaskResponse + 300, // 300: determined.api.v1.Determined.CreateExperiment:output_type -> determined.api.v1.CreateExperimentResponse + 301, // 301: determined.api.v1.Determined.PutExperiment:output_type -> determined.api.v1.PutExperimentResponse + 302, // 302: determined.api.v1.Determined.ContinueExperiment:output_type -> determined.api.v1.ContinueExperimentResponse + 303, // 303: determined.api.v1.Determined.GetExperiment:output_type -> determined.api.v1.GetExperimentResponse + 304, // 304: determined.api.v1.Determined.GetExperiments:output_type -> determined.api.v1.GetExperimentsResponse + 305, // 305: determined.api.v1.Determined.PutExperimentRetainLogs:output_type -> determined.api.v1.PutExperimentRetainLogsResponse + 306, // 306: determined.api.v1.Determined.PutExperimentsRetainLogs:output_type -> determined.api.v1.PutExperimentsRetainLogsResponse + 307, // 307: determined.api.v1.Determined.PutTrialRetainLogs:output_type -> determined.api.v1.PutTrialRetainLogsResponse + 308, // 308: determined.api.v1.Determined.GetModelDef:output_type -> determined.api.v1.GetModelDefResponse + 309, // 309: determined.api.v1.Determined.GetTaskContextDirectory:output_type -> determined.api.v1.GetTaskContextDirectoryResponse + 310, // 310: determined.api.v1.Determined.GetModelDefTree:output_type -> determined.api.v1.GetModelDefTreeResponse + 311, // 311: determined.api.v1.Determined.GetModelDefFile:output_type -> determined.api.v1.GetModelDefFileResponse + 312, // 312: determined.api.v1.Determined.GetExperimentLabels:output_type -> determined.api.v1.GetExperimentLabelsResponse + 313, // 313: determined.api.v1.Determined.GetExperimentValidationHistory:output_type -> determined.api.v1.GetExperimentValidationHistoryResponse + 314, // 314: determined.api.v1.Determined.ActivateExperiment:output_type -> determined.api.v1.ActivateExperimentResponse + 315, // 315: determined.api.v1.Determined.ActivateExperiments:output_type -> determined.api.v1.ActivateExperimentsResponse + 316, // 316: determined.api.v1.Determined.PauseExperiment:output_type -> determined.api.v1.PauseExperimentResponse + 317, // 317: determined.api.v1.Determined.PauseExperiments:output_type -> determined.api.v1.PauseExperimentsResponse + 318, // 318: determined.api.v1.Determined.CancelExperiment:output_type -> determined.api.v1.CancelExperimentResponse + 319, // 319: determined.api.v1.Determined.CancelExperiments:output_type -> determined.api.v1.CancelExperimentsResponse + 320, // 320: determined.api.v1.Determined.KillExperiment:output_type -> determined.api.v1.KillExperimentResponse + 321, // 321: determined.api.v1.Determined.KillExperiments:output_type -> determined.api.v1.KillExperimentsResponse + 322, // 322: determined.api.v1.Determined.ArchiveExperiment:output_type -> determined.api.v1.ArchiveExperimentResponse + 323, // 323: determined.api.v1.Determined.ArchiveExperiments:output_type -> determined.api.v1.ArchiveExperimentsResponse + 324, // 324: determined.api.v1.Determined.UnarchiveExperiment:output_type -> determined.api.v1.UnarchiveExperimentResponse + 325, // 325: determined.api.v1.Determined.UnarchiveExperiments:output_type -> determined.api.v1.UnarchiveExperimentsResponse + 326, // 326: determined.api.v1.Determined.PatchExperiment:output_type -> determined.api.v1.PatchExperimentResponse + 327, // 327: determined.api.v1.Determined.DeleteExperiments:output_type -> determined.api.v1.DeleteExperimentsResponse + 328, // 328: determined.api.v1.Determined.DeleteExperiment:output_type -> determined.api.v1.DeleteExperimentResponse + 329, // 329: determined.api.v1.Determined.GetBestSearcherValidationMetric:output_type -> determined.api.v1.GetBestSearcherValidationMetricResponse + 330, // 330: determined.api.v1.Determined.GetExperimentCheckpoints:output_type -> determined.api.v1.GetExperimentCheckpointsResponse + 331, // 331: determined.api.v1.Determined.PutExperimentLabel:output_type -> determined.api.v1.PutExperimentLabelResponse + 332, // 332: determined.api.v1.Determined.DeleteExperimentLabel:output_type -> determined.api.v1.DeleteExperimentLabelResponse + 333, // 333: determined.api.v1.Determined.PreviewHPSearch:output_type -> determined.api.v1.PreviewHPSearchResponse + 334, // 334: determined.api.v1.Determined.GetExperimentTrials:output_type -> determined.api.v1.GetExperimentTrialsResponse + 335, // 335: determined.api.v1.Determined.GetTrialRemainingLogRetentionDays:output_type -> determined.api.v1.GetTrialRemainingLogRetentionDaysResponse + 336, // 336: determined.api.v1.Determined.CompareTrials:output_type -> determined.api.v1.CompareTrialsResponse + 337, // 337: determined.api.v1.Determined.ReportTrialSourceInfo:output_type -> determined.api.v1.ReportTrialSourceInfoResponse + 338, // 338: determined.api.v1.Determined.CreateTrial:output_type -> determined.api.v1.CreateTrialResponse + 339, // 339: determined.api.v1.Determined.PutTrial:output_type -> determined.api.v1.PutTrialResponse + 340, // 340: determined.api.v1.Determined.PatchTrial:output_type -> determined.api.v1.PatchTrialResponse + 341, // 341: determined.api.v1.Determined.StartTrial:output_type -> determined.api.v1.StartTrialResponse + 342, // 342: determined.api.v1.Determined.RunPrepareForReporting:output_type -> determined.api.v1.RunPrepareForReportingResponse + 343, // 343: determined.api.v1.Determined.GetTrial:output_type -> determined.api.v1.GetTrialResponse + 344, // 344: determined.api.v1.Determined.GetTrialByExternalID:output_type -> determined.api.v1.GetTrialByExternalIDResponse + 345, // 345: determined.api.v1.Determined.GetTrialWorkloads:output_type -> determined.api.v1.GetTrialWorkloadsResponse + 346, // 346: determined.api.v1.Determined.TrialLogs:output_type -> determined.api.v1.TrialLogsResponse + 347, // 347: determined.api.v1.Determined.TrialLogsFields:output_type -> determined.api.v1.TrialLogsFieldsResponse + 348, // 348: determined.api.v1.Determined.AllocationReady:output_type -> determined.api.v1.AllocationReadyResponse + 349, // 349: determined.api.v1.Determined.GetAllocation:output_type -> determined.api.v1.GetAllocationResponse + 350, // 350: determined.api.v1.Determined.AllocationWaiting:output_type -> determined.api.v1.AllocationWaitingResponse + 351, // 351: determined.api.v1.Determined.PostTaskLogs:output_type -> determined.api.v1.PostTaskLogsResponse + 352, // 352: determined.api.v1.Determined.TaskLogs:output_type -> determined.api.v1.TaskLogsResponse + 353, // 353: determined.api.v1.Determined.TaskLogsFields:output_type -> determined.api.v1.TaskLogsFieldsResponse + 354, // 354: determined.api.v1.Determined.GetTrialProfilerMetrics:output_type -> determined.api.v1.GetTrialProfilerMetricsResponse + 355, // 355: determined.api.v1.Determined.GetTrialProfilerAvailableSeries:output_type -> determined.api.v1.GetTrialProfilerAvailableSeriesResponse + 356, // 356: determined.api.v1.Determined.PostTrialProfilerMetricsBatch:output_type -> determined.api.v1.PostTrialProfilerMetricsBatchResponse + 357, // 357: determined.api.v1.Determined.GetMetrics:output_type -> determined.api.v1.GetMetricsResponse + 358, // 358: determined.api.v1.Determined.GetTrainingMetrics:output_type -> determined.api.v1.GetTrainingMetricsResponse + 359, // 359: determined.api.v1.Determined.GetValidationMetrics:output_type -> determined.api.v1.GetValidationMetricsResponse + 360, // 360: determined.api.v1.Determined.KillTrial:output_type -> determined.api.v1.KillTrialResponse + 361, // 361: determined.api.v1.Determined.GetTrialCheckpoints:output_type -> determined.api.v1.GetTrialCheckpointsResponse + 362, // 362: determined.api.v1.Determined.CleanupLogs:output_type -> determined.api.v1.CleanupLogsResponse + 363, // 363: determined.api.v1.Determined.AllocationPreemptionSignal:output_type -> determined.api.v1.AllocationPreemptionSignalResponse + 364, // 364: determined.api.v1.Determined.AllocationPendingPreemptionSignal:output_type -> determined.api.v1.AllocationPendingPreemptionSignalResponse + 365, // 365: determined.api.v1.Determined.AckAllocationPreemptionSignal:output_type -> determined.api.v1.AckAllocationPreemptionSignalResponse + 366, // 366: determined.api.v1.Determined.MarkAllocationResourcesDaemon:output_type -> determined.api.v1.MarkAllocationResourcesDaemonResponse + 367, // 367: determined.api.v1.Determined.AllocationRendezvousInfo:output_type -> determined.api.v1.AllocationRendezvousInfoResponse + 368, // 368: determined.api.v1.Determined.PostAllocationProxyAddress:output_type -> determined.api.v1.PostAllocationProxyAddressResponse + 369, // 369: determined.api.v1.Determined.GetTaskAcceleratorData:output_type -> determined.api.v1.GetTaskAcceleratorDataResponse + 370, // 370: determined.api.v1.Determined.PostAllocationAcceleratorData:output_type -> determined.api.v1.PostAllocationAcceleratorDataResponse + 371, // 371: determined.api.v1.Determined.AllocationAllGather:output_type -> determined.api.v1.AllocationAllGatherResponse + 372, // 372: determined.api.v1.Determined.NotifyContainerRunning:output_type -> determined.api.v1.NotifyContainerRunningResponse + 373, // 373: determined.api.v1.Determined.GetCurrentTrialSearcherOperation:output_type -> determined.api.v1.GetCurrentTrialSearcherOperationResponse + 374, // 374: determined.api.v1.Determined.CompleteTrialSearcherValidation:output_type -> determined.api.v1.CompleteTrialSearcherValidationResponse + 375, // 375: determined.api.v1.Determined.ReportTrialSearcherEarlyExit:output_type -> determined.api.v1.ReportTrialSearcherEarlyExitResponse + 376, // 376: determined.api.v1.Determined.ReportTrialProgress:output_type -> determined.api.v1.ReportTrialProgressResponse + 377, // 377: determined.api.v1.Determined.PostTrialRunnerMetadata:output_type -> determined.api.v1.PostTrialRunnerMetadataResponse + 378, // 378: determined.api.v1.Determined.ReportTrialMetrics:output_type -> determined.api.v1.ReportTrialMetricsResponse + 379, // 379: determined.api.v1.Determined.ReportTrialTrainingMetrics:output_type -> determined.api.v1.ReportTrialTrainingMetricsResponse + 380, // 380: determined.api.v1.Determined.ReportTrialValidationMetrics:output_type -> determined.api.v1.ReportTrialValidationMetricsResponse + 381, // 381: determined.api.v1.Determined.ReportCheckpoint:output_type -> determined.api.v1.ReportCheckpointResponse + 382, // 382: determined.api.v1.Determined.GetJobs:output_type -> determined.api.v1.GetJobsResponse + 383, // 383: determined.api.v1.Determined.GetJobsV2:output_type -> determined.api.v1.GetJobsV2Response + 384, // 384: determined.api.v1.Determined.GetJobQueueStats:output_type -> determined.api.v1.GetJobQueueStatsResponse + 385, // 385: determined.api.v1.Determined.UpdateJobQueue:output_type -> determined.api.v1.UpdateJobQueueResponse + 386, // 386: determined.api.v1.Determined.GetTemplates:output_type -> determined.api.v1.GetTemplatesResponse + 387, // 387: determined.api.v1.Determined.GetTemplate:output_type -> determined.api.v1.GetTemplateResponse + 388, // 388: determined.api.v1.Determined.PutTemplate:output_type -> determined.api.v1.PutTemplateResponse + 389, // 389: determined.api.v1.Determined.PostTemplate:output_type -> determined.api.v1.PostTemplateResponse + 390, // 390: determined.api.v1.Determined.PatchTemplateConfig:output_type -> determined.api.v1.PatchTemplateConfigResponse + 391, // 391: determined.api.v1.Determined.PatchTemplateName:output_type -> determined.api.v1.PatchTemplateNameResponse + 392, // 392: determined.api.v1.Determined.DeleteTemplate:output_type -> determined.api.v1.DeleteTemplateResponse + 393, // 393: determined.api.v1.Determined.GetNotebooks:output_type -> determined.api.v1.GetNotebooksResponse + 394, // 394: determined.api.v1.Determined.GetNotebook:output_type -> determined.api.v1.GetNotebookResponse + 395, // 395: determined.api.v1.Determined.IdleNotebook:output_type -> determined.api.v1.IdleNotebookResponse + 396, // 396: determined.api.v1.Determined.KillNotebook:output_type -> determined.api.v1.KillNotebookResponse + 397, // 397: determined.api.v1.Determined.SetNotebookPriority:output_type -> determined.api.v1.SetNotebookPriorityResponse + 398, // 398: determined.api.v1.Determined.LaunchNotebook:output_type -> determined.api.v1.LaunchNotebookResponse + 399, // 399: determined.api.v1.Determined.GetShells:output_type -> determined.api.v1.GetShellsResponse + 400, // 400: determined.api.v1.Determined.GetShell:output_type -> determined.api.v1.GetShellResponse + 401, // 401: determined.api.v1.Determined.KillShell:output_type -> determined.api.v1.KillShellResponse + 402, // 402: determined.api.v1.Determined.SetShellPriority:output_type -> determined.api.v1.SetShellPriorityResponse + 403, // 403: determined.api.v1.Determined.LaunchShell:output_type -> determined.api.v1.LaunchShellResponse + 404, // 404: determined.api.v1.Determined.GetCommands:output_type -> determined.api.v1.GetCommandsResponse + 405, // 405: determined.api.v1.Determined.GetCommand:output_type -> determined.api.v1.GetCommandResponse + 406, // 406: determined.api.v1.Determined.KillCommand:output_type -> determined.api.v1.KillCommandResponse + 407, // 407: determined.api.v1.Determined.SetCommandPriority:output_type -> determined.api.v1.SetCommandPriorityResponse + 408, // 408: determined.api.v1.Determined.LaunchCommand:output_type -> determined.api.v1.LaunchCommandResponse + 409, // 409: determined.api.v1.Determined.GetTensorboards:output_type -> determined.api.v1.GetTensorboardsResponse + 410, // 410: determined.api.v1.Determined.GetTensorboard:output_type -> determined.api.v1.GetTensorboardResponse + 411, // 411: determined.api.v1.Determined.KillTensorboard:output_type -> determined.api.v1.KillTensorboardResponse + 412, // 412: determined.api.v1.Determined.SetTensorboardPriority:output_type -> determined.api.v1.SetTensorboardPriorityResponse + 413, // 413: determined.api.v1.Determined.LaunchTensorboard:output_type -> determined.api.v1.LaunchTensorboardResponse + 414, // 414: determined.api.v1.Determined.DeleteTensorboardFiles:output_type -> determined.api.v1.DeleteTensorboardFilesResponse + 415, // 415: determined.api.v1.Determined.GetActiveTasksCount:output_type -> determined.api.v1.GetActiveTasksCountResponse + 416, // 416: determined.api.v1.Determined.GetTask:output_type -> determined.api.v1.GetTaskResponse + 417, // 417: determined.api.v1.Determined.GetTasks:output_type -> determined.api.v1.GetTasksResponse + 418, // 418: determined.api.v1.Determined.GetModel:output_type -> determined.api.v1.GetModelResponse + 419, // 419: determined.api.v1.Determined.PostModel:output_type -> determined.api.v1.PostModelResponse + 420, // 420: determined.api.v1.Determined.PatchModel:output_type -> determined.api.v1.PatchModelResponse + 421, // 421: determined.api.v1.Determined.ArchiveModel:output_type -> determined.api.v1.ArchiveModelResponse + 422, // 422: determined.api.v1.Determined.UnarchiveModel:output_type -> determined.api.v1.UnarchiveModelResponse + 423, // 423: determined.api.v1.Determined.MoveModel:output_type -> determined.api.v1.MoveModelResponse + 424, // 424: determined.api.v1.Determined.DeleteModel:output_type -> determined.api.v1.DeleteModelResponse + 425, // 425: determined.api.v1.Determined.GetModels:output_type -> determined.api.v1.GetModelsResponse + 426, // 426: determined.api.v1.Determined.GetModelLabels:output_type -> determined.api.v1.GetModelLabelsResponse + 427, // 427: determined.api.v1.Determined.GetModelVersion:output_type -> determined.api.v1.GetModelVersionResponse + 428, // 428: determined.api.v1.Determined.GetModelVersions:output_type -> determined.api.v1.GetModelVersionsResponse + 429, // 429: determined.api.v1.Determined.PostModelVersion:output_type -> determined.api.v1.PostModelVersionResponse + 430, // 430: determined.api.v1.Determined.PatchModelVersion:output_type -> determined.api.v1.PatchModelVersionResponse + 431, // 431: determined.api.v1.Determined.DeleteModelVersion:output_type -> determined.api.v1.DeleteModelVersionResponse + 432, // 432: determined.api.v1.Determined.GetTrialMetricsByModelVersion:output_type -> determined.api.v1.GetTrialMetricsByModelVersionResponse + 433, // 433: determined.api.v1.Determined.GetCheckpoint:output_type -> determined.api.v1.GetCheckpointResponse + 434, // 434: determined.api.v1.Determined.PostCheckpointMetadata:output_type -> determined.api.v1.PostCheckpointMetadataResponse + 435, // 435: determined.api.v1.Determined.CheckpointsRemoveFiles:output_type -> determined.api.v1.CheckpointsRemoveFilesResponse + 436, // 436: determined.api.v1.Determined.PatchCheckpoints:output_type -> determined.api.v1.PatchCheckpointsResponse + 437, // 437: determined.api.v1.Determined.DeleteCheckpoints:output_type -> determined.api.v1.DeleteCheckpointsResponse + 438, // 438: determined.api.v1.Determined.GetTrialMetricsByCheckpoint:output_type -> determined.api.v1.GetTrialMetricsByCheckpointResponse + 439, // 439: determined.api.v1.Determined.GetSearcherEvents:output_type -> determined.api.v1.GetSearcherEventsResponse + 440, // 440: determined.api.v1.Determined.PostSearcherOperations:output_type -> determined.api.v1.PostSearcherOperationsResponse + 441, // 441: determined.api.v1.Determined.ExpMetricNames:output_type -> determined.api.v1.ExpMetricNamesResponse + 442, // 442: determined.api.v1.Determined.MetricBatches:output_type -> determined.api.v1.MetricBatchesResponse + 443, // 443: determined.api.v1.Determined.TrialsSnapshot:output_type -> determined.api.v1.TrialsSnapshotResponse + 444, // 444: determined.api.v1.Determined.TrialsSample:output_type -> determined.api.v1.TrialsSampleResponse + 445, // 445: determined.api.v1.Determined.GetResourcePools:output_type -> determined.api.v1.GetResourcePoolsResponse + 446, // 446: determined.api.v1.Determined.GetKubernetesResourceManagers:output_type -> determined.api.v1.GetKubernetesResourceManagersResponse + 447, // 447: determined.api.v1.Determined.ResourceAllocationRaw:output_type -> determined.api.v1.ResourceAllocationRawResponse + 448, // 448: determined.api.v1.Determined.ResourceAllocationAggregated:output_type -> determined.api.v1.ResourceAllocationAggregatedResponse + 449, // 449: determined.api.v1.Determined.GetWorkspace:output_type -> determined.api.v1.GetWorkspaceResponse + 450, // 450: determined.api.v1.Determined.GetWorkspaceProjects:output_type -> determined.api.v1.GetWorkspaceProjectsResponse + 451, // 451: determined.api.v1.Determined.GetWorkspaces:output_type -> determined.api.v1.GetWorkspacesResponse + 452, // 452: determined.api.v1.Determined.PostWorkspace:output_type -> determined.api.v1.PostWorkspaceResponse + 453, // 453: determined.api.v1.Determined.PatchWorkspace:output_type -> determined.api.v1.PatchWorkspaceResponse + 454, // 454: determined.api.v1.Determined.DeleteWorkspace:output_type -> determined.api.v1.DeleteWorkspaceResponse + 455, // 455: determined.api.v1.Determined.ArchiveWorkspace:output_type -> determined.api.v1.ArchiveWorkspaceResponse + 456, // 456: determined.api.v1.Determined.UnarchiveWorkspace:output_type -> determined.api.v1.UnarchiveWorkspaceResponse + 457, // 457: determined.api.v1.Determined.PinWorkspace:output_type -> determined.api.v1.PinWorkspaceResponse + 458, // 458: determined.api.v1.Determined.UnpinWorkspace:output_type -> determined.api.v1.UnpinWorkspaceResponse + 459, // 459: determined.api.v1.Determined.SetWorkspaceNamespaceBindings:output_type -> determined.api.v1.SetWorkspaceNamespaceBindingsResponse + 460, // 460: determined.api.v1.Determined.SetResourceQuotas:output_type -> determined.api.v1.SetResourceQuotasResponse + 461, // 461: determined.api.v1.Determined.ListWorkspaceNamespaceBindings:output_type -> determined.api.v1.ListWorkspaceNamespaceBindingsResponse + 462, // 462: determined.api.v1.Determined.GetWorkspacesWithDefaultNamespaceBindings:output_type -> determined.api.v1.GetWorkspacesWithDefaultNamespaceBindingsResponse + 463, // 463: determined.api.v1.Determined.BulkAutoCreateWorkspaceNamespaceBindings:output_type -> determined.api.v1.BulkAutoCreateWorkspaceNamespaceBindingsResponse + 464, // 464: determined.api.v1.Determined.DeleteWorkspaceNamespaceBindings:output_type -> determined.api.v1.DeleteWorkspaceNamespaceBindingsResponse + 465, // 465: determined.api.v1.Determined.GetKubernetesResourceQuotas:output_type -> determined.api.v1.GetKubernetesResourceQuotasResponse + 466, // 466: determined.api.v1.Determined.GetProject:output_type -> determined.api.v1.GetProjectResponse + 467, // 467: determined.api.v1.Determined.GetProjectByKey:output_type -> determined.api.v1.GetProjectByKeyResponse + 468, // 468: determined.api.v1.Determined.GetProjectColumns:output_type -> determined.api.v1.GetProjectColumnsResponse + 469, // 469: determined.api.v1.Determined.GetProjectNumericMetricsRange:output_type -> determined.api.v1.GetProjectNumericMetricsRangeResponse + 470, // 470: determined.api.v1.Determined.PostProject:output_type -> determined.api.v1.PostProjectResponse + 471, // 471: determined.api.v1.Determined.AddProjectNote:output_type -> determined.api.v1.AddProjectNoteResponse + 472, // 472: determined.api.v1.Determined.PutProjectNotes:output_type -> determined.api.v1.PutProjectNotesResponse + 473, // 473: determined.api.v1.Determined.PatchProject:output_type -> determined.api.v1.PatchProjectResponse + 474, // 474: determined.api.v1.Determined.DeleteProject:output_type -> determined.api.v1.DeleteProjectResponse + 475, // 475: determined.api.v1.Determined.ArchiveProject:output_type -> determined.api.v1.ArchiveProjectResponse + 476, // 476: determined.api.v1.Determined.UnarchiveProject:output_type -> determined.api.v1.UnarchiveProjectResponse + 477, // 477: determined.api.v1.Determined.MoveProject:output_type -> determined.api.v1.MoveProjectResponse + 478, // 478: determined.api.v1.Determined.MoveExperiment:output_type -> determined.api.v1.MoveExperimentResponse + 479, // 479: determined.api.v1.Determined.MoveExperiments:output_type -> determined.api.v1.MoveExperimentsResponse + 480, // 480: determined.api.v1.Determined.GetWebhooks:output_type -> determined.api.v1.GetWebhooksResponse + 481, // 481: determined.api.v1.Determined.PatchWebhook:output_type -> determined.api.v1.PatchWebhookResponse + 482, // 482: determined.api.v1.Determined.PostWebhook:output_type -> determined.api.v1.PostWebhookResponse + 483, // 483: determined.api.v1.Determined.DeleteWebhook:output_type -> determined.api.v1.DeleteWebhookResponse + 484, // 484: determined.api.v1.Determined.TestWebhook:output_type -> determined.api.v1.TestWebhookResponse + 485, // 485: determined.api.v1.Determined.PostWebhookEventData:output_type -> determined.api.v1.PostWebhookEventDataResponse + 486, // 486: determined.api.v1.Determined.GetGroup:output_type -> determined.api.v1.GetGroupResponse + 487, // 487: determined.api.v1.Determined.GetGroups:output_type -> determined.api.v1.GetGroupsResponse + 488, // 488: determined.api.v1.Determined.CreateGroup:output_type -> determined.api.v1.CreateGroupResponse + 489, // 489: determined.api.v1.Determined.UpdateGroup:output_type -> determined.api.v1.UpdateGroupResponse + 490, // 490: determined.api.v1.Determined.DeleteGroup:output_type -> determined.api.v1.DeleteGroupResponse + 491, // 491: determined.api.v1.Determined.GetPermissionsSummary:output_type -> determined.api.v1.GetPermissionsSummaryResponse + 492, // 492: determined.api.v1.Determined.GetGroupsAndUsersAssignedToWorkspace:output_type -> determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceResponse + 493, // 493: determined.api.v1.Determined.GetRolesByID:output_type -> determined.api.v1.GetRolesByIDResponse + 494, // 494: determined.api.v1.Determined.GetRolesAssignedToUser:output_type -> determined.api.v1.GetRolesAssignedToUserResponse + 495, // 495: determined.api.v1.Determined.GetRolesAssignedToGroup:output_type -> determined.api.v1.GetRolesAssignedToGroupResponse + 496, // 496: determined.api.v1.Determined.SearchRolesAssignableToScope:output_type -> determined.api.v1.SearchRolesAssignableToScopeResponse + 497, // 497: determined.api.v1.Determined.ListRoles:output_type -> determined.api.v1.ListRolesResponse + 498, // 498: determined.api.v1.Determined.AssignRoles:output_type -> determined.api.v1.AssignRolesResponse + 499, // 499: determined.api.v1.Determined.RemoveAssignments:output_type -> determined.api.v1.RemoveAssignmentsResponse + 500, // 500: determined.api.v1.Determined.PostUserActivity:output_type -> determined.api.v1.PostUserActivityResponse + 501, // 501: determined.api.v1.Determined.GetProjectsByUserActivity:output_type -> determined.api.v1.GetProjectsByUserActivityResponse + 502, // 502: determined.api.v1.Determined.SearchExperiments:output_type -> determined.api.v1.SearchExperimentsResponse + 503, // 503: determined.api.v1.Determined.BindRPToWorkspace:output_type -> determined.api.v1.BindRPToWorkspaceResponse + 504, // 504: determined.api.v1.Determined.UnbindRPFromWorkspace:output_type -> determined.api.v1.UnbindRPFromWorkspaceResponse + 505, // 505: determined.api.v1.Determined.OverwriteRPWorkspaceBindings:output_type -> determined.api.v1.OverwriteRPWorkspaceBindingsResponse + 506, // 506: determined.api.v1.Determined.ListRPsBoundToWorkspace:output_type -> determined.api.v1.ListRPsBoundToWorkspaceResponse + 507, // 507: determined.api.v1.Determined.ListWorkspacesBoundToRP:output_type -> determined.api.v1.ListWorkspacesBoundToRPResponse + 508, // 508: determined.api.v1.Determined.GetGenericTaskConfig:output_type -> determined.api.v1.GetGenericTaskConfigResponse + 509, // 509: determined.api.v1.Determined.KillGenericTask:output_type -> determined.api.v1.KillGenericTaskResponse + 510, // 510: determined.api.v1.Determined.PauseGenericTask:output_type -> determined.api.v1.PauseGenericTaskResponse + 511, // 511: determined.api.v1.Determined.UnpauseGenericTask:output_type -> determined.api.v1.UnpauseGenericTaskResponse + 512, // 512: determined.api.v1.Determined.SearchRuns:output_type -> determined.api.v1.SearchRunsResponse + 513, // 513: determined.api.v1.Determined.MoveRuns:output_type -> determined.api.v1.MoveRunsResponse + 514, // 514: determined.api.v1.Determined.KillRuns:output_type -> determined.api.v1.KillRunsResponse + 515, // 515: determined.api.v1.Determined.DeleteRuns:output_type -> determined.api.v1.DeleteRunsResponse + 516, // 516: determined.api.v1.Determined.ArchiveRuns:output_type -> determined.api.v1.ArchiveRunsResponse + 517, // 517: determined.api.v1.Determined.UnarchiveRuns:output_type -> determined.api.v1.UnarchiveRunsResponse + 518, // 518: determined.api.v1.Determined.PauseRuns:output_type -> determined.api.v1.PauseRunsResponse + 519, // 519: determined.api.v1.Determined.ResumeRuns:output_type -> determined.api.v1.ResumeRunsResponse + 520, // 520: determined.api.v1.Determined.GetRunMetadata:output_type -> determined.api.v1.GetRunMetadataResponse + 521, // 521: determined.api.v1.Determined.PostRunMetadata:output_type -> determined.api.v1.PostRunMetadataResponse + 522, // 522: determined.api.v1.Determined.GetMetadataValues:output_type -> determined.api.v1.GetMetadataValuesResponse + 523, // 523: determined.api.v1.Determined.PutWorkspaceConfigPolicies:output_type -> determined.api.v1.PutWorkspaceConfigPoliciesResponse + 524, // 524: determined.api.v1.Determined.PutGlobalConfigPolicies:output_type -> determined.api.v1.PutGlobalConfigPoliciesResponse + 525, // 525: determined.api.v1.Determined.GetWorkspaceConfigPolicies:output_type -> determined.api.v1.GetWorkspaceConfigPoliciesResponse + 526, // 526: determined.api.v1.Determined.GetGlobalConfigPolicies:output_type -> determined.api.v1.GetGlobalConfigPoliciesResponse + 527, // 527: determined.api.v1.Determined.DeleteWorkspaceConfigPolicies:output_type -> determined.api.v1.DeleteWorkspaceConfigPoliciesResponse + 528, // 528: determined.api.v1.Determined.DeleteGlobalConfigPolicies:output_type -> determined.api.v1.DeleteGlobalConfigPoliciesResponse + 529, // 529: determined.api.v1.Determined.MoveSearches:output_type -> determined.api.v1.MoveSearchesResponse + 530, // 530: determined.api.v1.Determined.KillSearches:output_type -> determined.api.v1.KillSearchesResponse + 531, // 531: determined.api.v1.Determined.DeleteSearches:output_type -> determined.api.v1.DeleteSearchesResponse + 532, // 532: determined.api.v1.Determined.ArchiveSearches:output_type -> determined.api.v1.ArchiveSearchesResponse + 533, // 533: determined.api.v1.Determined.UnarchiveSearches:output_type -> determined.api.v1.UnarchiveSearchesResponse + 534, // 534: determined.api.v1.Determined.PauseSearches:output_type -> determined.api.v1.PauseSearchesResponse + 535, // 535: determined.api.v1.Determined.ResumeSearches:output_type -> determined.api.v1.ResumeSearchesResponse + 268, // [268:536] is the sub-list for method output_type + 0, // [0:268] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -4020,6 +4116,7 @@ func file_determined_api_v1_api_proto_init() { file_determined_api_v1_project_proto_init() file_determined_api_v1_rbac_proto_init() file_determined_api_v1_run_proto_init() + file_determined_api_v1_search_proto_init() file_determined_api_v1_task_proto_init() file_determined_api_v1_template_proto_init() file_determined_api_v1_tensorboard_proto_init() @@ -4597,9 +4694,9 @@ type DeterminedClient interface { SearchRuns(ctx context.Context, in *SearchRunsRequest, opts ...grpc.CallOption) (*SearchRunsResponse, error) // Move runs. MoveRuns(ctx context.Context, in *MoveRunsRequest, opts ...grpc.CallOption) (*MoveRunsResponse, error) - // Get a list of runs. + // Kill runs. KillRuns(ctx context.Context, in *KillRunsRequest, opts ...grpc.CallOption) (*KillRunsResponse, error) - // Delete a list of runs. + // Delete runs. DeleteRuns(ctx context.Context, in *DeleteRunsRequest, opts ...grpc.CallOption) (*DeleteRunsResponse, error) // Archive runs. ArchiveRuns(ctx context.Context, in *ArchiveRunsRequest, opts ...grpc.CallOption) (*ArchiveRunsResponse, error) @@ -4628,6 +4725,20 @@ type DeterminedClient interface { DeleteWorkspaceConfigPolicies(ctx context.Context, in *DeleteWorkspaceConfigPoliciesRequest, opts ...grpc.CallOption) (*DeleteWorkspaceConfigPoliciesResponse, error) // Delete global task config policies. DeleteGlobalConfigPolicies(ctx context.Context, in *DeleteGlobalConfigPoliciesRequest, opts ...grpc.CallOption) (*DeleteGlobalConfigPoliciesResponse, error) + // Move searches. + MoveSearches(ctx context.Context, in *MoveSearchesRequest, opts ...grpc.CallOption) (*MoveSearchesResponse, error) + // Kill searches. + KillSearches(ctx context.Context, in *KillSearchesRequest, opts ...grpc.CallOption) (*KillSearchesResponse, error) + // Delete searches. + DeleteSearches(ctx context.Context, in *DeleteSearchesRequest, opts ...grpc.CallOption) (*DeleteSearchesResponse, error) + // Archive searches. + ArchiveSearches(ctx context.Context, in *ArchiveSearchesRequest, opts ...grpc.CallOption) (*ArchiveSearchesResponse, error) + // Unarchive searches. + UnarchiveSearches(ctx context.Context, in *UnarchiveSearchesRequest, opts ...grpc.CallOption) (*UnarchiveSearchesResponse, error) + // Pause experiment associated with provided searches. + PauseSearches(ctx context.Context, in *PauseSearchesRequest, opts ...grpc.CallOption) (*PauseSearchesResponse, error) + // Unpause experiment associated with provided searches. + ResumeSearches(ctx context.Context, in *ResumeSearchesRequest, opts ...grpc.CallOption) (*ResumeSearchesResponse, error) } type determinedClient struct { @@ -7316,6 +7427,69 @@ func (c *determinedClient) DeleteGlobalConfigPolicies(ctx context.Context, in *D return out, nil } +func (c *determinedClient) MoveSearches(ctx context.Context, in *MoveSearchesRequest, opts ...grpc.CallOption) (*MoveSearchesResponse, error) { + out := new(MoveSearchesResponse) + err := c.cc.Invoke(ctx, "/determined.api.v1.Determined/MoveSearches", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *determinedClient) KillSearches(ctx context.Context, in *KillSearchesRequest, opts ...grpc.CallOption) (*KillSearchesResponse, error) { + out := new(KillSearchesResponse) + err := c.cc.Invoke(ctx, "/determined.api.v1.Determined/KillSearches", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *determinedClient) DeleteSearches(ctx context.Context, in *DeleteSearchesRequest, opts ...grpc.CallOption) (*DeleteSearchesResponse, error) { + out := new(DeleteSearchesResponse) + err := c.cc.Invoke(ctx, "/determined.api.v1.Determined/DeleteSearches", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *determinedClient) ArchiveSearches(ctx context.Context, in *ArchiveSearchesRequest, opts ...grpc.CallOption) (*ArchiveSearchesResponse, error) { + out := new(ArchiveSearchesResponse) + err := c.cc.Invoke(ctx, "/determined.api.v1.Determined/ArchiveSearches", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *determinedClient) UnarchiveSearches(ctx context.Context, in *UnarchiveSearchesRequest, opts ...grpc.CallOption) (*UnarchiveSearchesResponse, error) { + out := new(UnarchiveSearchesResponse) + err := c.cc.Invoke(ctx, "/determined.api.v1.Determined/UnarchiveSearches", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *determinedClient) PauseSearches(ctx context.Context, in *PauseSearchesRequest, opts ...grpc.CallOption) (*PauseSearchesResponse, error) { + out := new(PauseSearchesResponse) + err := c.cc.Invoke(ctx, "/determined.api.v1.Determined/PauseSearches", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *determinedClient) ResumeSearches(ctx context.Context, in *ResumeSearchesRequest, opts ...grpc.CallOption) (*ResumeSearchesResponse, error) { + out := new(ResumeSearchesResponse) + err := c.cc.Invoke(ctx, "/determined.api.v1.Determined/ResumeSearches", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // DeterminedServer is the server API for Determined service. type DeterminedServer interface { // Login the user. @@ -7855,9 +8029,9 @@ type DeterminedServer interface { SearchRuns(context.Context, *SearchRunsRequest) (*SearchRunsResponse, error) // Move runs. MoveRuns(context.Context, *MoveRunsRequest) (*MoveRunsResponse, error) - // Get a list of runs. + // Kill runs. KillRuns(context.Context, *KillRunsRequest) (*KillRunsResponse, error) - // Delete a list of runs. + // Delete runs. DeleteRuns(context.Context, *DeleteRunsRequest) (*DeleteRunsResponse, error) // Archive runs. ArchiveRuns(context.Context, *ArchiveRunsRequest) (*ArchiveRunsResponse, error) @@ -7886,6 +8060,20 @@ type DeterminedServer interface { DeleteWorkspaceConfigPolicies(context.Context, *DeleteWorkspaceConfigPoliciesRequest) (*DeleteWorkspaceConfigPoliciesResponse, error) // Delete global task config policies. DeleteGlobalConfigPolicies(context.Context, *DeleteGlobalConfigPoliciesRequest) (*DeleteGlobalConfigPoliciesResponse, error) + // Move searches. + MoveSearches(context.Context, *MoveSearchesRequest) (*MoveSearchesResponse, error) + // Kill searches. + KillSearches(context.Context, *KillSearchesRequest) (*KillSearchesResponse, error) + // Delete searches. + DeleteSearches(context.Context, *DeleteSearchesRequest) (*DeleteSearchesResponse, error) + // Archive searches. + ArchiveSearches(context.Context, *ArchiveSearchesRequest) (*ArchiveSearchesResponse, error) + // Unarchive searches. + UnarchiveSearches(context.Context, *UnarchiveSearchesRequest) (*UnarchiveSearchesResponse, error) + // Pause experiment associated with provided searches. + PauseSearches(context.Context, *PauseSearchesRequest) (*PauseSearchesResponse, error) + // Unpause experiment associated with provided searches. + ResumeSearches(context.Context, *ResumeSearchesRequest) (*ResumeSearchesResponse, error) } // UnimplementedDeterminedServer can be embedded to have forward compatible implementations. @@ -8675,6 +8863,27 @@ func (*UnimplementedDeterminedServer) DeleteWorkspaceConfigPolicies(context.Cont func (*UnimplementedDeterminedServer) DeleteGlobalConfigPolicies(context.Context, *DeleteGlobalConfigPoliciesRequest) (*DeleteGlobalConfigPoliciesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteGlobalConfigPolicies not implemented") } +func (*UnimplementedDeterminedServer) MoveSearches(context.Context, *MoveSearchesRequest) (*MoveSearchesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method MoveSearches not implemented") +} +func (*UnimplementedDeterminedServer) KillSearches(context.Context, *KillSearchesRequest) (*KillSearchesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method KillSearches not implemented") +} +func (*UnimplementedDeterminedServer) DeleteSearches(context.Context, *DeleteSearchesRequest) (*DeleteSearchesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteSearches not implemented") +} +func (*UnimplementedDeterminedServer) ArchiveSearches(context.Context, *ArchiveSearchesRequest) (*ArchiveSearchesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ArchiveSearches not implemented") +} +func (*UnimplementedDeterminedServer) UnarchiveSearches(context.Context, *UnarchiveSearchesRequest) (*UnarchiveSearchesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UnarchiveSearches not implemented") +} +func (*UnimplementedDeterminedServer) PauseSearches(context.Context, *PauseSearchesRequest) (*PauseSearchesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PauseSearches not implemented") +} +func (*UnimplementedDeterminedServer) ResumeSearches(context.Context, *ResumeSearchesRequest) (*ResumeSearchesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ResumeSearches not implemented") +} func RegisterDeterminedServer(s *grpc.Server, srv DeterminedServer) { s.RegisterService(&_Determined_serviceDesc, srv) @@ -13420,6 +13629,132 @@ func _Determined_DeleteGlobalConfigPolicies_Handler(srv interface{}, ctx context return interceptor(ctx, in, info, handler) } +func _Determined_MoveSearches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MoveSearchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeterminedServer).MoveSearches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/determined.api.v1.Determined/MoveSearches", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeterminedServer).MoveSearches(ctx, req.(*MoveSearchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Determined_KillSearches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(KillSearchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeterminedServer).KillSearches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/determined.api.v1.Determined/KillSearches", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeterminedServer).KillSearches(ctx, req.(*KillSearchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Determined_DeleteSearches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteSearchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeterminedServer).DeleteSearches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/determined.api.v1.Determined/DeleteSearches", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeterminedServer).DeleteSearches(ctx, req.(*DeleteSearchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Determined_ArchiveSearches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ArchiveSearchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeterminedServer).ArchiveSearches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/determined.api.v1.Determined/ArchiveSearches", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeterminedServer).ArchiveSearches(ctx, req.(*ArchiveSearchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Determined_UnarchiveSearches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UnarchiveSearchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeterminedServer).UnarchiveSearches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/determined.api.v1.Determined/UnarchiveSearches", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeterminedServer).UnarchiveSearches(ctx, req.(*UnarchiveSearchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Determined_PauseSearches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PauseSearchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeterminedServer).PauseSearches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/determined.api.v1.Determined/PauseSearches", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeterminedServer).PauseSearches(ctx, req.(*PauseSearchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Determined_ResumeSearches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ResumeSearchesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeterminedServer).ResumeSearches(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/determined.api.v1.Determined/ResumeSearches", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeterminedServer).ResumeSearches(ctx, req.(*ResumeSearchesRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Determined_serviceDesc = grpc.ServiceDesc{ ServiceName: "determined.api.v1.Determined", HandlerType: (*DeterminedServer)(nil), @@ -14412,6 +14747,34 @@ var _Determined_serviceDesc = grpc.ServiceDesc{ MethodName: "DeleteGlobalConfigPolicies", Handler: _Determined_DeleteGlobalConfigPolicies_Handler, }, + { + MethodName: "MoveSearches", + Handler: _Determined_MoveSearches_Handler, + }, + { + MethodName: "KillSearches", + Handler: _Determined_KillSearches_Handler, + }, + { + MethodName: "DeleteSearches", + Handler: _Determined_DeleteSearches_Handler, + }, + { + MethodName: "ArchiveSearches", + Handler: _Determined_ArchiveSearches_Handler, + }, + { + MethodName: "UnarchiveSearches", + Handler: _Determined_UnarchiveSearches_Handler, + }, + { + MethodName: "PauseSearches", + Handler: _Determined_PauseSearches_Handler, + }, + { + MethodName: "ResumeSearches", + Handler: _Determined_ResumeSearches_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/proto/pkg/apiv1/api.pb.gw.go b/proto/pkg/apiv1/api.pb.gw.go index fb5c39e3f46..6379513be3a 100644 --- a/proto/pkg/apiv1/api.pb.gw.go +++ b/proto/pkg/apiv1/api.pb.gw.go @@ -13663,6 +13663,244 @@ func local_request_Determined_DeleteGlobalConfigPolicies_0(ctx context.Context, } +func request_Determined_MoveSearches_0(ctx context.Context, marshaler runtime.Marshaler, client DeterminedClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MoveSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.MoveSearches(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Determined_MoveSearches_0(ctx context.Context, marshaler runtime.Marshaler, server DeterminedServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MoveSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.MoveSearches(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Determined_KillSearches_0(ctx context.Context, marshaler runtime.Marshaler, client DeterminedClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq KillSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.KillSearches(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Determined_KillSearches_0(ctx context.Context, marshaler runtime.Marshaler, server DeterminedServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq KillSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.KillSearches(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Determined_DeleteSearches_0(ctx context.Context, marshaler runtime.Marshaler, client DeterminedClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.DeleteSearches(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Determined_DeleteSearches_0(ctx context.Context, marshaler runtime.Marshaler, server DeterminedServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeleteSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.DeleteSearches(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Determined_ArchiveSearches_0(ctx context.Context, marshaler runtime.Marshaler, client DeterminedClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ArchiveSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ArchiveSearches(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Determined_ArchiveSearches_0(ctx context.Context, marshaler runtime.Marshaler, server DeterminedServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ArchiveSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ArchiveSearches(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Determined_UnarchiveSearches_0(ctx context.Context, marshaler runtime.Marshaler, client DeterminedClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UnarchiveSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.UnarchiveSearches(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Determined_UnarchiveSearches_0(ctx context.Context, marshaler runtime.Marshaler, server DeterminedServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq UnarchiveSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.UnarchiveSearches(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Determined_PauseSearches_0(ctx context.Context, marshaler runtime.Marshaler, client DeterminedClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PauseSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.PauseSearches(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Determined_PauseSearches_0(ctx context.Context, marshaler runtime.Marshaler, server DeterminedServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PauseSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.PauseSearches(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Determined_ResumeSearches_0(ctx context.Context, marshaler runtime.Marshaler, client DeterminedClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ResumeSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ResumeSearches(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Determined_ResumeSearches_0(ctx context.Context, marshaler runtime.Marshaler, server DeterminedServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ResumeSearchesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ResumeSearches(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterDeterminedHandlerServer registers the http handlers for service Determined to "mux". // UnaryRPC :call DeterminedServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -18706,6 +18944,146 @@ func RegisterDeterminedHandlerServer(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("POST", pattern_Determined_MoveSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Determined_MoveSearches_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_MoveSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_KillSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Determined_KillSearches_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_KillSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_DeleteSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Determined_DeleteSearches_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_DeleteSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_ArchiveSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Determined_ArchiveSearches_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_ArchiveSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_UnarchiveSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Determined_UnarchiveSearches_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_UnarchiveSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_PauseSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Determined_PauseSearches_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_PauseSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_ResumeSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Determined_ResumeSearches_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_ResumeSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -23967,6 +24345,146 @@ func RegisterDeterminedHandlerClient(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("POST", pattern_Determined_MoveSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + 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_Determined_MoveSearches_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_MoveSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_KillSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + 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_Determined_KillSearches_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_KillSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_DeleteSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + 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_Determined_DeleteSearches_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_DeleteSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_ArchiveSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + 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_Determined_ArchiveSearches_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_ArchiveSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_UnarchiveSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + 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_Determined_UnarchiveSearches_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_UnarchiveSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_PauseSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + 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_Determined_PauseSearches_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_PauseSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Determined_ResumeSearches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + 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_Determined_ResumeSearches_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_ResumeSearches_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -24492,6 +25010,20 @@ var ( pattern_Determined_DeleteWorkspaceConfigPolicies_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"api", "v1", "config-policies", "workspaces", "workspace_id", "workload_type"}, "", runtime.AssumeColonVerbOpt(true))) pattern_Determined_DeleteGlobalConfigPolicies_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"api", "v1", "config-policies", "global", "workload_type"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Determined_MoveSearches_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "searches", "move"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Determined_KillSearches_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "searches", "kill"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Determined_DeleteSearches_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "searches", "delete"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Determined_ArchiveSearches_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "searches", "archive"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Determined_UnarchiveSearches_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "searches", "unarchive"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Determined_PauseSearches_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "searches", "pause"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Determined_ResumeSearches_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "searches", "resume"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( @@ -25016,4 +25548,18 @@ var ( forward_Determined_DeleteWorkspaceConfigPolicies_0 = runtime.ForwardResponseMessage forward_Determined_DeleteGlobalConfigPolicies_0 = runtime.ForwardResponseMessage + + forward_Determined_MoveSearches_0 = runtime.ForwardResponseMessage + + forward_Determined_KillSearches_0 = runtime.ForwardResponseMessage + + forward_Determined_DeleteSearches_0 = runtime.ForwardResponseMessage + + forward_Determined_ArchiveSearches_0 = runtime.ForwardResponseMessage + + forward_Determined_UnarchiveSearches_0 = runtime.ForwardResponseMessage + + forward_Determined_PauseSearches_0 = runtime.ForwardResponseMessage + + forward_Determined_ResumeSearches_0 = runtime.ForwardResponseMessage ) diff --git a/proto/pkg/apiv1/search.pb.go b/proto/pkg/apiv1/search.pb.go new file mode 100644 index 00000000000..5968f5824bc --- /dev/null +++ b/proto/pkg/apiv1/search.pb.go @@ -0,0 +1,1302 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// source: determined/api/v1/search.proto + +package apiv1 + +import ( + _ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Message for results of individual searches in a multi-search action. +type SearchActionResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional error message. + Error string `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + // search ID. + Id int32 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *SearchActionResult) Reset() { + *x = SearchActionResult{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchActionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchActionResult) ProtoMessage() {} + +func (x *SearchActionResult) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchActionResult.ProtoReflect.Descriptor instead. +func (*SearchActionResult) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{0} +} + +func (x *SearchActionResult) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +func (x *SearchActionResult) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +// Request to move the search to a different project. +type MoveSearchesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ids of the searches being moved. + SearchIds []int32 `protobuf:"varint,1,rep,packed,name=search_ids,json=searchIds,proto3" json:"search_ids,omitempty"` + // The id of the current parent project. + SourceProjectId int32 `protobuf:"varint,2,opt,name=source_project_id,json=sourceProjectId,proto3" json:"source_project_id,omitempty"` + // The id of the new parent project. + DestinationProjectId int32 `protobuf:"varint,3,opt,name=destination_project_id,json=destinationProjectId,proto3" json:"destination_project_id,omitempty"` + // Filter expression + Filter *string `protobuf:"bytes,4,opt,name=filter,proto3,oneof" json:"filter,omitempty"` +} + +func (x *MoveSearchesRequest) Reset() { + *x = MoveSearchesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MoveSearchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MoveSearchesRequest) ProtoMessage() {} + +func (x *MoveSearchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MoveSearchesRequest.ProtoReflect.Descriptor instead. +func (*MoveSearchesRequest) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{1} +} + +func (x *MoveSearchesRequest) GetSearchIds() []int32 { + if x != nil { + return x.SearchIds + } + return nil +} + +func (x *MoveSearchesRequest) GetSourceProjectId() int32 { + if x != nil { + return x.SourceProjectId + } + return 0 +} + +func (x *MoveSearchesRequest) GetDestinationProjectId() int32 { + if x != nil { + return x.DestinationProjectId + } + return 0 +} + +func (x *MoveSearchesRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +// Response to MoveSearchesRequest. +type MoveSearchesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Details on success or error for each search. + Results []*SearchActionResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *MoveSearchesResponse) Reset() { + *x = MoveSearchesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MoveSearchesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MoveSearchesResponse) ProtoMessage() {} + +func (x *MoveSearchesResponse) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MoveSearchesResponse.ProtoReflect.Descriptor instead. +func (*MoveSearchesResponse) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{2} +} + +func (x *MoveSearchesResponse) GetResults() []*SearchActionResult { + if x != nil { + return x.Results + } + return nil +} + +// Kill searches. +type KillSearchesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ids of the searches being killed. + SearchIds []int32 `protobuf:"varint,1,rep,packed,name=search_ids,json=searchIds,proto3" json:"search_ids,omitempty"` + // Project id of the searches being killed. + ProjectId int32 `protobuf:"varint,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // Filter expression + Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` +} + +func (x *KillSearchesRequest) Reset() { + *x = KillSearchesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KillSearchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KillSearchesRequest) ProtoMessage() {} + +func (x *KillSearchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KillSearchesRequest.ProtoReflect.Descriptor instead. +func (*KillSearchesRequest) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{3} +} + +func (x *KillSearchesRequest) GetSearchIds() []int32 { + if x != nil { + return x.SearchIds + } + return nil +} + +func (x *KillSearchesRequest) GetProjectId() int32 { + if x != nil { + return x.ProjectId + } + return 0 +} + +func (x *KillSearchesRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +// Response to KillSearchesResponse. +type KillSearchesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Details on success or error for each search. + Results []*SearchActionResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *KillSearchesResponse) Reset() { + *x = KillSearchesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KillSearchesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KillSearchesResponse) ProtoMessage() {} + +func (x *KillSearchesResponse) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KillSearchesResponse.ProtoReflect.Descriptor instead. +func (*KillSearchesResponse) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{4} +} + +func (x *KillSearchesResponse) GetResults() []*SearchActionResult { + if x != nil { + return x.Results + } + return nil +} + +// Delete searches. +type DeleteSearchesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ids of the searches being deleted. + SearchIds []int32 `protobuf:"varint,1,rep,packed,name=search_ids,json=searchIds,proto3" json:"search_ids,omitempty"` + // Project id of the searches being deleted. + ProjectId int32 `protobuf:"varint,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // Filter expression + Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` +} + +func (x *DeleteSearchesRequest) Reset() { + *x = DeleteSearchesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteSearchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteSearchesRequest) ProtoMessage() {} + +func (x *DeleteSearchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteSearchesRequest.ProtoReflect.Descriptor instead. +func (*DeleteSearchesRequest) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{5} +} + +func (x *DeleteSearchesRequest) GetSearchIds() []int32 { + if x != nil { + return x.SearchIds + } + return nil +} + +func (x *DeleteSearchesRequest) GetProjectId() int32 { + if x != nil { + return x.ProjectId + } + return 0 +} + +func (x *DeleteSearchesRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +// Response to DeleteSearchesResponse. +type DeleteSearchesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Details on success or error for each search. + Results []*SearchActionResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *DeleteSearchesResponse) Reset() { + *x = DeleteSearchesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteSearchesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteSearchesResponse) ProtoMessage() {} + +func (x *DeleteSearchesResponse) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteSearchesResponse.ProtoReflect.Descriptor instead. +func (*DeleteSearchesResponse) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{6} +} + +func (x *DeleteSearchesResponse) GetResults() []*SearchActionResult { + if x != nil { + return x.Results + } + return nil +} + +// Request to archive the search +type ArchiveSearchesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ids of the searches being archived. + SearchIds []int32 `protobuf:"varint,1,rep,packed,name=search_ids,json=searchIds,proto3" json:"search_ids,omitempty"` + // The id of the current parent project. + ProjectId int32 `protobuf:"varint,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // Filter expression + Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` +} + +func (x *ArchiveSearchesRequest) Reset() { + *x = ArchiveSearchesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArchiveSearchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArchiveSearchesRequest) ProtoMessage() {} + +func (x *ArchiveSearchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArchiveSearchesRequest.ProtoReflect.Descriptor instead. +func (*ArchiveSearchesRequest) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{7} +} + +func (x *ArchiveSearchesRequest) GetSearchIds() []int32 { + if x != nil { + return x.SearchIds + } + return nil +} + +func (x *ArchiveSearchesRequest) GetProjectId() int32 { + if x != nil { + return x.ProjectId + } + return 0 +} + +func (x *ArchiveSearchesRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +// Response to ArchiveSearchesRequest. +type ArchiveSearchesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Details on success or error for each search. + Results []*SearchActionResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *ArchiveSearchesResponse) Reset() { + *x = ArchiveSearchesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArchiveSearchesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArchiveSearchesResponse) ProtoMessage() {} + +func (x *ArchiveSearchesResponse) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ArchiveSearchesResponse.ProtoReflect.Descriptor instead. +func (*ArchiveSearchesResponse) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{8} +} + +func (x *ArchiveSearchesResponse) GetResults() []*SearchActionResult { + if x != nil { + return x.Results + } + return nil +} + +// Request to unarchive the search +type UnarchiveSearchesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ids of the searches being unarchived. + SearchIds []int32 `protobuf:"varint,1,rep,packed,name=search_ids,json=searchIds,proto3" json:"search_ids,omitempty"` + // The id of the current parent project. + ProjectId int32 `protobuf:"varint,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // Filter expression + Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` +} + +func (x *UnarchiveSearchesRequest) Reset() { + *x = UnarchiveSearchesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnarchiveSearchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnarchiveSearchesRequest) ProtoMessage() {} + +func (x *UnarchiveSearchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnarchiveSearchesRequest.ProtoReflect.Descriptor instead. +func (*UnarchiveSearchesRequest) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{9} +} + +func (x *UnarchiveSearchesRequest) GetSearchIds() []int32 { + if x != nil { + return x.SearchIds + } + return nil +} + +func (x *UnarchiveSearchesRequest) GetProjectId() int32 { + if x != nil { + return x.ProjectId + } + return 0 +} + +func (x *UnarchiveSearchesRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +// Response to UnarchiveSearchesRequest. +type UnarchiveSearchesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Details on success or error for each search. + Results []*SearchActionResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *UnarchiveSearchesResponse) Reset() { + *x = UnarchiveSearchesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UnarchiveSearchesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnarchiveSearchesResponse) ProtoMessage() {} + +func (x *UnarchiveSearchesResponse) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UnarchiveSearchesResponse.ProtoReflect.Descriptor instead. +func (*UnarchiveSearchesResponse) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{10} +} + +func (x *UnarchiveSearchesResponse) GetResults() []*SearchActionResult { + if x != nil { + return x.Results + } + return nil +} + +// Request to pause the experiment associated witha search. +type PauseSearchesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ids of the searches being moved. + SearchIds []int32 `protobuf:"varint,1,rep,packed,name=search_ids,json=searchIds,proto3" json:"search_ids,omitempty"` + // The id of the project of the searches being paused. + ProjectId int32 `protobuf:"varint,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // Filter expression + Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` +} + +func (x *PauseSearchesRequest) Reset() { + *x = PauseSearchesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PauseSearchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PauseSearchesRequest) ProtoMessage() {} + +func (x *PauseSearchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PauseSearchesRequest.ProtoReflect.Descriptor instead. +func (*PauseSearchesRequest) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{11} +} + +func (x *PauseSearchesRequest) GetSearchIds() []int32 { + if x != nil { + return x.SearchIds + } + return nil +} + +func (x *PauseSearchesRequest) GetProjectId() int32 { + if x != nil { + return x.ProjectId + } + return 0 +} + +func (x *PauseSearchesRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +// Response to PauseSearchesRequest. +type PauseSearchesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Details on success or error for each search. + Results []*SearchActionResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *PauseSearchesResponse) Reset() { + *x = PauseSearchesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PauseSearchesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PauseSearchesResponse) ProtoMessage() {} + +func (x *PauseSearchesResponse) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PauseSearchesResponse.ProtoReflect.Descriptor instead. +func (*PauseSearchesResponse) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{12} +} + +func (x *PauseSearchesResponse) GetResults() []*SearchActionResult { + if x != nil { + return x.Results + } + return nil +} + +// Request to unpause the experiment associated witha search. +type ResumeSearchesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ids of the searches being moved. + SearchIds []int32 `protobuf:"varint,1,rep,packed,name=search_ids,json=searchIds,proto3" json:"search_ids,omitempty"` + // The id of the project of the searches being unpaused. + ProjectId int32 `protobuf:"varint,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // Filter expression + Filter *string `protobuf:"bytes,3,opt,name=filter,proto3,oneof" json:"filter,omitempty"` +} + +func (x *ResumeSearchesRequest) Reset() { + *x = ResumeSearchesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResumeSearchesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResumeSearchesRequest) ProtoMessage() {} + +func (x *ResumeSearchesRequest) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResumeSearchesRequest.ProtoReflect.Descriptor instead. +func (*ResumeSearchesRequest) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{13} +} + +func (x *ResumeSearchesRequest) GetSearchIds() []int32 { + if x != nil { + return x.SearchIds + } + return nil +} + +func (x *ResumeSearchesRequest) GetProjectId() int32 { + if x != nil { + return x.ProjectId + } + return 0 +} + +func (x *ResumeSearchesRequest) GetFilter() string { + if x != nil && x.Filter != nil { + return *x.Filter + } + return "" +} + +// Response to ResumeSearchesRequest. +type ResumeSearchesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Details on success or error for each search. + Results []*SearchActionResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *ResumeSearchesResponse) Reset() { + *x = ResumeSearchesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_search_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResumeSearchesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResumeSearchesResponse) ProtoMessage() {} + +func (x *ResumeSearchesResponse) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_search_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResumeSearchesResponse.ProtoReflect.Descriptor instead. +func (*ResumeSearchesResponse) Descriptor() ([]byte, []int) { + return file_determined_api_v1_search_proto_rawDescGZIP(), []int{14} +} + +func (x *ResumeSearchesResponse) GetResults() []*SearchActionResult { + if x != nil { + return x.Results + } + return nil +} + +var File_determined_api_v1_search_proto protoreflect.FileDescriptor + +var file_determined_api_v1_search_proto_rawDesc = []byte{ + 0x0a, 0x1e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x11, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x1a, 0x2c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x73, 0x77, 0x61, 0x67, 0x67, 0x65, 0x72, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x4e, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x3a, 0x12, 0x92, + 0x41, 0x0f, 0x0a, 0x0d, 0xd2, 0x01, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0xd2, 0x01, 0x02, 0x69, + 0x64, 0x22, 0xff, 0x01, 0x0a, 0x13, 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x64, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x3a, 0x3f, 0x92, 0x41, 0x3c, 0x0a, 0x3a, 0xd2, 0x01, + 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x69, 0x64, 0xd2, 0x01, 0x16, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0xd2, 0x01, 0x0a, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x22, 0x68, 0x0a, 0x14, 0x4d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x0f, 0x92, 0x41, + 0x0c, 0x0a, 0x0a, 0xd2, 0x01, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa3, 0x01, + 0x0a, 0x13, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, + 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, + 0x3a, 0x26, 0x92, 0x41, 0x23, 0x0a, 0x21, 0xd2, 0x01, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x5f, 0x69, 0x64, 0x73, 0xd2, 0x01, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x22, 0x68, 0x0a, 0x14, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x0f, 0x92, 0x41, + 0x0c, 0x0a, 0x0a, 0xd2, 0x01, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x91, 0x01, + 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, + 0x01, 0x01, 0x3a, 0x12, 0x92, 0x41, 0x0f, 0x0a, 0x0d, 0xd2, 0x01, 0x0a, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5f, 0x69, 0x64, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x22, 0x6a, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x0f, 0x92, 0x41, + 0x0c, 0x0a, 0x0a, 0xd2, 0x01, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x9f, 0x01, + 0x0a, 0x16, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x88, 0x01, 0x01, 0x3a, 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0xd2, 0x01, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0xd2, 0x01, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x5f, 0x69, 0x64, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, + 0x6b, 0x0a, 0x17, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x65, + 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x0f, 0x92, 0x41, 0x0c, + 0x0a, 0x0a, 0xd2, 0x01, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa1, 0x01, 0x0a, + 0x18, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x88, 0x01, 0x01, 0x3a, 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0xd2, 0x01, 0x0a, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0xd2, 0x01, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x5f, 0x69, 0x64, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x22, 0x6d, 0x0a, 0x19, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, + 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x0f, + 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0xd2, 0x01, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, + 0x9d, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x88, 0x01, 0x01, 0x3a, 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0xd2, 0x01, 0x0a, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0xd2, 0x01, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x5f, 0x69, 0x64, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, + 0x69, 0x0a, 0x15, 0x50, 0x61, 0x75, 0x73, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, + 0xd2, 0x01, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x15, 0x52, + 0x65, 0x73, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x3a, + 0x1f, 0x92, 0x41, 0x1c, 0x0a, 0x1a, 0xd2, 0x01, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0xd2, 0x01, 0x0a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x73, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x6a, 0x0a, 0x16, 0x52, + 0x65, 0x73, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x3a, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0xd2, 0x01, 0x07, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x2d, 0x61, 0x69, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_determined_api_v1_search_proto_rawDescOnce sync.Once + file_determined_api_v1_search_proto_rawDescData = file_determined_api_v1_search_proto_rawDesc +) + +func file_determined_api_v1_search_proto_rawDescGZIP() []byte { + file_determined_api_v1_search_proto_rawDescOnce.Do(func() { + file_determined_api_v1_search_proto_rawDescData = protoimpl.X.CompressGZIP(file_determined_api_v1_search_proto_rawDescData) + }) + return file_determined_api_v1_search_proto_rawDescData +} + +var file_determined_api_v1_search_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_determined_api_v1_search_proto_goTypes = []interface{}{ + (*SearchActionResult)(nil), // 0: determined.api.v1.SearchActionResult + (*MoveSearchesRequest)(nil), // 1: determined.api.v1.MoveSearchesRequest + (*MoveSearchesResponse)(nil), // 2: determined.api.v1.MoveSearchesResponse + (*KillSearchesRequest)(nil), // 3: determined.api.v1.KillSearchesRequest + (*KillSearchesResponse)(nil), // 4: determined.api.v1.KillSearchesResponse + (*DeleteSearchesRequest)(nil), // 5: determined.api.v1.DeleteSearchesRequest + (*DeleteSearchesResponse)(nil), // 6: determined.api.v1.DeleteSearchesResponse + (*ArchiveSearchesRequest)(nil), // 7: determined.api.v1.ArchiveSearchesRequest + (*ArchiveSearchesResponse)(nil), // 8: determined.api.v1.ArchiveSearchesResponse + (*UnarchiveSearchesRequest)(nil), // 9: determined.api.v1.UnarchiveSearchesRequest + (*UnarchiveSearchesResponse)(nil), // 10: determined.api.v1.UnarchiveSearchesResponse + (*PauseSearchesRequest)(nil), // 11: determined.api.v1.PauseSearchesRequest + (*PauseSearchesResponse)(nil), // 12: determined.api.v1.PauseSearchesResponse + (*ResumeSearchesRequest)(nil), // 13: determined.api.v1.ResumeSearchesRequest + (*ResumeSearchesResponse)(nil), // 14: determined.api.v1.ResumeSearchesResponse +} +var file_determined_api_v1_search_proto_depIdxs = []int32{ + 0, // 0: determined.api.v1.MoveSearchesResponse.results:type_name -> determined.api.v1.SearchActionResult + 0, // 1: determined.api.v1.KillSearchesResponse.results:type_name -> determined.api.v1.SearchActionResult + 0, // 2: determined.api.v1.DeleteSearchesResponse.results:type_name -> determined.api.v1.SearchActionResult + 0, // 3: determined.api.v1.ArchiveSearchesResponse.results:type_name -> determined.api.v1.SearchActionResult + 0, // 4: determined.api.v1.UnarchiveSearchesResponse.results:type_name -> determined.api.v1.SearchActionResult + 0, // 5: determined.api.v1.PauseSearchesResponse.results:type_name -> determined.api.v1.SearchActionResult + 0, // 6: determined.api.v1.ResumeSearchesResponse.results:type_name -> determined.api.v1.SearchActionResult + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_determined_api_v1_search_proto_init() } +func file_determined_api_v1_search_proto_init() { + if File_determined_api_v1_search_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_determined_api_v1_search_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SearchActionResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MoveSearchesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MoveSearchesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KillSearchesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KillSearchesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteSearchesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteSearchesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArchiveSearchesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ArchiveSearchesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnarchiveSearchesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnarchiveSearchesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PauseSearchesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PauseSearchesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResumeSearchesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_search_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResumeSearchesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_determined_api_v1_search_proto_msgTypes[1].OneofWrappers = []interface{}{} + file_determined_api_v1_search_proto_msgTypes[3].OneofWrappers = []interface{}{} + file_determined_api_v1_search_proto_msgTypes[5].OneofWrappers = []interface{}{} + file_determined_api_v1_search_proto_msgTypes[7].OneofWrappers = []interface{}{} + file_determined_api_v1_search_proto_msgTypes[9].OneofWrappers = []interface{}{} + file_determined_api_v1_search_proto_msgTypes[11].OneofWrappers = []interface{}{} + file_determined_api_v1_search_proto_msgTypes[13].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_determined_api_v1_search_proto_rawDesc, + NumEnums: 0, + NumMessages: 15, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_determined_api_v1_search_proto_goTypes, + DependencyIndexes: file_determined_api_v1_search_proto_depIdxs, + MessageInfos: file_determined_api_v1_search_proto_msgTypes, + }.Build() + File_determined_api_v1_search_proto = out.File + file_determined_api_v1_search_proto_rawDesc = nil + file_determined_api_v1_search_proto_goTypes = nil + file_determined_api_v1_search_proto_depIdxs = nil +} diff --git a/proto/src/determined/api/v1/api.proto b/proto/src/determined/api/v1/api.proto index 97bc488b248..a473cc265de 100644 --- a/proto/src/determined/api/v1/api.proto +++ b/proto/src/determined/api/v1/api.proto @@ -20,6 +20,7 @@ import "determined/api/v1/notebook.proto"; import "determined/api/v1/project.proto"; import "determined/api/v1/rbac.proto"; import "determined/api/v1/run.proto"; +import "determined/api/v1/search.proto"; import "determined/api/v1/task.proto"; import "determined/api/v1/template.proto"; import "determined/api/v1/tensorboard.proto"; @@ -2719,7 +2720,7 @@ service Determined { }; } - // Get a list of runs. + // Kill runs. rpc KillRuns(KillRunsRequest) returns (KillRunsResponse) { option (google.api.http) = { post: "/api/v1/runs/kill" @@ -2730,7 +2731,7 @@ service Determined { }; } - // Delete a list of runs. + // Delete runs. rpc DeleteRuns(DeleteRunsRequest) returns (DeleteRunsResponse) { option (google.api.http) = { post: "/api/v1/runs/delete" @@ -2886,4 +2887,83 @@ service Determined { tags: "Alpha" }; } + + // Move searches. + rpc MoveSearches(MoveSearchesRequest) returns (MoveSearchesResponse) { + option (google.api.http) = { + post: "/api/v1/searches/move" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + tags: "Internal" + }; + } + + // Kill searches. + rpc KillSearches(KillSearchesRequest) returns (KillSearchesResponse) { + option (google.api.http) = { + post: "/api/v1/searches/kill" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + tags: "Internal" + }; + } + + // Delete searches. + rpc DeleteSearches(DeleteSearchesRequest) returns (DeleteSearchesResponse) { + option (google.api.http) = { + post: "/api/v1/searches/delete" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + tags: "Internal" + }; + } + + // Archive searches. + rpc ArchiveSearches(ArchiveSearchesRequest) + returns (ArchiveSearchesResponse) { + option (google.api.http) = { + post: "/api/v1/searches/archive" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + tags: "Internal" + }; + } + + // Unarchive searches. + rpc UnarchiveSearches(UnarchiveSearchesRequest) + returns (UnarchiveSearchesResponse) { + option (google.api.http) = { + post: "/api/v1/searches/unarchive" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + tags: "Internal" + }; + } + + // Pause experiment associated with provided searches. + rpc PauseSearches(PauseSearchesRequest) returns (PauseSearchesResponse) { + option (google.api.http) = { + post: "/api/v1/searches/pause" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + tags: "Internal" + }; + } + + // Unpause experiment associated with provided searches. + rpc ResumeSearches(ResumeSearchesRequest) returns (ResumeSearchesResponse) { + option (google.api.http) = { + post: "/api/v1/searches/resume" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + tags: "Internal" + }; + } } diff --git a/proto/src/determined/api/v1/search.proto b/proto/src/determined/api/v1/search.proto new file mode 100644 index 00000000000..1154ac98934 --- /dev/null +++ b/proto/src/determined/api/v1/search.proto @@ -0,0 +1,183 @@ +syntax = "proto3"; + +package determined.api.v1; +option go_package = "github.com/determined-ai/determined/proto/pkg/apiv1"; + +import "protoc-gen-swagger/options/annotations.proto"; + +// Message for results of individual searches in a multi-search action. +message SearchActionResult { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "error", "id" ] } + }; + // Optional error message. + string error = 1; + // search ID. + int32 id = 2; +} + +// Request to move the search to a different project. +message MoveSearchesRequest { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { + required: [ "source_project_id", "destination_project_id", "search_ids" ] + } + }; + + // The ids of the searches being moved. + repeated int32 search_ids = 1; + // The id of the current parent project. + int32 source_project_id = 2; + // The id of the new parent project. + int32 destination_project_id = 3; + // Filter expression + optional string filter = 4; +} + +// Response to MoveSearchesRequest. +message MoveSearchesResponse { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "results" ] } + }; + + // Details on success or error for each search. + repeated SearchActionResult results = 1; +} + +// Kill searches. +message KillSearchesRequest { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "search_ids", "source_project_id" ] } + }; + // The ids of the searches being killed. + repeated int32 search_ids = 1; + // Project id of the searches being killed. + int32 project_id = 2; + // Filter expression + optional string filter = 3; +} +// Response to KillSearchesResponse. +message KillSearchesResponse { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "results" ] } + }; + // Details on success or error for each search. + repeated SearchActionResult results = 1; +} + +// Delete searches. +message DeleteSearchesRequest { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "search_ids" ] } + }; + // The ids of the searches being deleted. + repeated int32 search_ids = 1; + // Project id of the searches being deleted. + int32 project_id = 2; + // Filter expression + optional string filter = 3; +} +// Response to DeleteSearchesResponse. +message DeleteSearchesResponse { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "results" ] } + }; + // Details on success or error for each search. + repeated SearchActionResult results = 1; +} + +// Request to archive the search +message ArchiveSearchesRequest { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "project_id", "search_ids" ] } + }; + + // The ids of the searches being archived. + repeated int32 search_ids = 1; + // The id of the current parent project. + int32 project_id = 2; + // Filter expression + optional string filter = 3; +} + +// Response to ArchiveSearchesRequest. +message ArchiveSearchesResponse { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "results" ] } + }; + + // Details on success or error for each search. + repeated SearchActionResult results = 1; +} + +// Request to unarchive the search +message UnarchiveSearchesRequest { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "project_id", "search_ids" ] } + }; + + // The ids of the searches being unarchived. + repeated int32 search_ids = 1; + // The id of the current parent project. + int32 project_id = 2; + // Filter expression + optional string filter = 3; +} + +// Response to UnarchiveSearchesRequest. +message UnarchiveSearchesResponse { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "results" ] } + }; + + // Details on success or error for each search. + repeated SearchActionResult results = 1; +} + +// Request to pause the experiment associated witha search. +message PauseSearchesRequest { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "project_id", "search_ids" ] } + }; + + // The ids of the searches being moved. + repeated int32 search_ids = 1; + // The id of the project of the searches being paused. + int32 project_id = 2; + // Filter expression + optional string filter = 3; +} + +// Response to PauseSearchesRequest. +message PauseSearchesResponse { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "results" ] } + }; + + // Details on success or error for each search. + repeated SearchActionResult results = 1; +} + +// Request to unpause the experiment associated witha search. +message ResumeSearchesRequest { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "project_id", "search_ids" ] } + }; + + // The ids of the searches being moved. + repeated int32 search_ids = 1; + // The id of the project of the searches being unpaused. + int32 project_id = 2; + // Filter expression + optional string filter = 3; +} + +// Response to ResumeSearchesRequest. +message ResumeSearchesResponse { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "results" ] } + }; + + // Details on success or error for each search. + repeated SearchActionResult results = 1; +} diff --git a/webui/react/src/services/api-ts-sdk/api.ts b/webui/react/src/services/api-ts-sdk/api.ts index 60e918ac212..2329eb9787d 100644 --- a/webui/react/src/services/api-ts-sdk/api.ts +++ b/webui/react/src/services/api-ts-sdk/api.ts @@ -1580,6 +1580,44 @@ export interface V1ArchiveRunsResponse { */ results: Array; } +/** + * + * @export + * @interface V1ArchiveSearchesRequest + */ +export interface V1ArchiveSearchesRequest { + /** + * The ids of the searches being archived. + * @type {Array} + * @memberof V1ArchiveSearchesRequest + */ + searchIds: Array; + /** + * The id of the current parent project. + * @type {number} + * @memberof V1ArchiveSearchesRequest + */ + projectId: number; + /** + * Filter expression + * @type {string} + * @memberof V1ArchiveSearchesRequest + */ + filter?: string; +} +/** + * Response to ArchiveSearchesRequest. + * @export + * @interface V1ArchiveSearchesResponse + */ +export interface V1ArchiveSearchesResponse { + /** + * Details on success or error for each search. + * @type {Array} + * @memberof V1ArchiveSearchesResponse + */ + results: Array; +} /** * Response to ArchiveWorkspaceRequest. * @export @@ -2760,6 +2798,44 @@ export interface V1DeleteRunsResponse { */ results: Array; } +/** + * Delete searches. + * @export + * @interface V1DeleteSearchesRequest + */ +export interface V1DeleteSearchesRequest { + /** + * The ids of the searches being deleted. + * @type {Array} + * @memberof V1DeleteSearchesRequest + */ + searchIds: Array; + /** + * Project id of the searches being deleted. + * @type {number} + * @memberof V1DeleteSearchesRequest + */ + projectId?: number; + /** + * Filter expression + * @type {string} + * @memberof V1DeleteSearchesRequest + */ + filter?: string; +} +/** + * Response to DeleteSearchesResponse. + * @export + * @interface V1DeleteSearchesResponse + */ +export interface V1DeleteSearchesResponse { + /** + * Details on success or error for each search. + * @type {Array} + * @memberof V1DeleteSearchesResponse + */ + results: Array; +} /** * Response to DeleteTemplateRequest. * @export @@ -5858,6 +5934,44 @@ export interface V1KillRunsResponse { */ results: Array; } +/** + * Kill searches. + * @export + * @interface V1KillSearchesRequest + */ +export interface V1KillSearchesRequest { + /** + * The ids of the searches being killed. + * @type {Array} + * @memberof V1KillSearchesRequest + */ + searchIds: Array; + /** + * Project id of the searches being killed. + * @type {number} + * @memberof V1KillSearchesRequest + */ + projectId?: number; + /** + * Filter expression + * @type {string} + * @memberof V1KillSearchesRequest + */ + filter?: string; +} +/** + * Response to KillSearchesResponse. + * @export + * @interface V1KillSearchesResponse + */ +export interface V1KillSearchesResponse { + /** + * Details on success or error for each search. + * @type {Array} + * @memberof V1KillSearchesResponse + */ + results: Array; +} /** * Response to KillShellRequest. * @export @@ -7011,6 +7125,50 @@ export interface V1MoveRunsResponse { */ results: Array; } +/** + * Request to move the search to a different project. + * @export + * @interface V1MoveSearchesRequest + */ +export interface V1MoveSearchesRequest { + /** + * The ids of the searches being moved. + * @type {Array} + * @memberof V1MoveSearchesRequest + */ + searchIds: Array; + /** + * The id of the current parent project. + * @type {number} + * @memberof V1MoveSearchesRequest + */ + sourceProjectId: number; + /** + * The id of the new parent project. + * @type {number} + * @memberof V1MoveSearchesRequest + */ + destinationProjectId: number; + /** + * Filter expression + * @type {string} + * @memberof V1MoveSearchesRequest + */ + filter?: string; +} +/** + * Response to MoveSearchesRequest. + * @export + * @interface V1MoveSearchesResponse + */ +export interface V1MoveSearchesResponse { + /** + * Details on success or error for each search. + * @type {Array} + * @memberof V1MoveSearchesResponse + */ + results: Array; +} /** * Note is a user comment connected to a project. * @export @@ -7901,6 +8059,44 @@ export interface V1PauseRunsResponse { */ results: Array; } +/** + * Request to pause the experiment associated witha search. + * @export + * @interface V1PauseSearchesRequest + */ +export interface V1PauseSearchesRequest { + /** + * The ids of the searches being moved. + * @type {Array} + * @memberof V1PauseSearchesRequest + */ + searchIds: Array; + /** + * The id of the project of the searches being paused. + * @type {number} + * @memberof V1PauseSearchesRequest + */ + projectId: number; + /** + * Filter expression + * @type {string} + * @memberof V1PauseSearchesRequest + */ + filter?: string; +} +/** + * Response to PauseSearchesRequest. + * @export + * @interface V1PauseSearchesResponse + */ +export interface V1PauseSearchesResponse { + /** + * Details on success or error for each search. + * @type {Array} + * @memberof V1PauseSearchesResponse + */ + results: Array; +} /** * * @export @@ -10130,6 +10326,44 @@ export interface V1ResumeRunsResponse { */ results: Array; } +/** + * Request to unpause the experiment associated witha search. + * @export + * @interface V1ResumeSearchesRequest + */ +export interface V1ResumeSearchesRequest { + /** + * The ids of the searches being moved. + * @type {Array} + * @memberof V1ResumeSearchesRequest + */ + searchIds: Array; + /** + * The id of the project of the searches being unpaused. + * @type {number} + * @memberof V1ResumeSearchesRequest + */ + projectId: number; + /** + * Filter expression + * @type {string} + * @memberof V1ResumeSearchesRequest + */ + filter?: string; +} +/** + * Response to ResumeSearchesRequest. + * @export + * @interface V1ResumeSearchesResponse + */ +export interface V1ResumeSearchesResponse { + /** + * Details on success or error for each search. + * @type {Array} + * @memberof V1ResumeSearchesResponse + */ + results: Array; +} /** * * @export @@ -10376,6 +10610,25 @@ export interface V1ScopeTypeMask { */ workspace?: boolean; } +/** + * Message for results of individual searches in a multi-search action. + * @export + * @interface V1SearchActionResult + */ +export interface V1SearchActionResult { + /** + * Optional error message. + * @type {string} + * @memberof V1SearchActionResult + */ + error: string; + /** + * search ID. + * @type {number} + * @memberof V1SearchActionResult + */ + id: number; +} /** * SearcherEvent is a message from master to a client-driven custom searcher informing it of relevant changes in the state of an experiment. * @export @@ -12244,6 +12497,44 @@ export interface V1UnarchiveRunsResponse { */ results: Array; } +/** + * + * @export + * @interface V1UnarchiveSearchesRequest + */ +export interface V1UnarchiveSearchesRequest { + /** + * The ids of the searches being unarchived. + * @type {Array} + * @memberof V1UnarchiveSearchesRequest + */ + searchIds: Array; + /** + * The id of the current parent project. + * @type {number} + * @memberof V1UnarchiveSearchesRequest + */ + projectId: number; + /** + * Filter expression + * @type {string} + * @memberof V1UnarchiveSearchesRequest + */ + filter?: string; +} +/** + * Response to UnarchiveSearchesRequest. + * @export + * @interface V1UnarchiveSearchesResponse + */ +export interface V1UnarchiveSearchesResponse { + /** + * Details on success or error for each search. + * @type {Array} + * @memberof V1UnarchiveSearchesResponse + */ + results: Array; +} /** * Response to UnarchiveWorkspaceRequest. * @export @@ -20287,6 +20578,44 @@ export const InternalApiFetchParamCreator = function (configuration?: Configurat options: localVarRequestOptions, }; }, + /** + * + * @summary Archive searches. + * @param {V1ArchiveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + archiveSearches(body: V1ArchiveSearchesRequest, options: any = {}): FetchArgs { + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError('body','Required parameter body was null or undefined when calling archiveSearches.'); + } + const localVarPath = `/api/v1/searches/archive`; + const localVarUrlObj = new URL(localVarPath, BASE_PATH); + const localVarRequestOptions = { method: 'POST', ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + if (configuration && configuration.apiKey) { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? configuration.apiKey("Authorization") + : configuration.apiKey; + localVarHeaderParameter["Authorization"] = localVarApiKeyValue; + } + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + objToSearchParams(localVarQueryParameter, localVarUrlObj.searchParams); + objToSearchParams(options.query || {}, localVarUrlObj.searchParams); + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...options.headers }; + localVarRequestOptions.body = JSON.stringify(body) + + return { + url: `${localVarUrlObj.pathname}${localVarUrlObj.search}`, + options: localVarRequestOptions, + }; + }, /** * * @summary Assign multiple users to multiple groups. @@ -20671,7 +21000,7 @@ export const InternalApiFetchParamCreator = function (configuration?: Configurat }, /** * - * @summary Delete a list of runs. + * @summary Delete runs. * @param {V1DeleteRunsRequest} body * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -20707,6 +21036,44 @@ export const InternalApiFetchParamCreator = function (configuration?: Configurat options: localVarRequestOptions, }; }, + /** + * + * @summary Delete searches. + * @param {V1DeleteSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteSearches(body: V1DeleteSearchesRequest, options: any = {}): FetchArgs { + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError('body','Required parameter body was null or undefined when calling deleteSearches.'); + } + const localVarPath = `/api/v1/searches/delete`; + const localVarUrlObj = new URL(localVarPath, BASE_PATH); + const localVarRequestOptions = { method: 'POST', ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + if (configuration && configuration.apiKey) { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? configuration.apiKey("Authorization") + : configuration.apiKey; + localVarHeaderParameter["Authorization"] = localVarApiKeyValue; + } + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + objToSearchParams(localVarQueryParameter, localVarUrlObj.searchParams); + objToSearchParams(options.query || {}, localVarUrlObj.searchParams); + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...options.headers }; + localVarRequestOptions.body = JSON.stringify(body) + + return { + url: `${localVarUrlObj.pathname}${localVarUrlObj.search}`, + options: localVarRequestOptions, + }; + }, /** * * @summary Get the set of metric names recorded for a list of experiments. @@ -21749,7 +22116,7 @@ export const InternalApiFetchParamCreator = function (configuration?: Configurat }, /** * - * @summary Get a list of runs. + * @summary Kill runs. * @param {V1KillRunsRequest} body * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -21787,20 +22154,58 @@ export const InternalApiFetchParamCreator = function (configuration?: Configurat }, /** * - * @summary List all resource pools, bound and unbound, available to a specific workspace - * @param {number} workspaceId Workspace ID. - * @param {number} [offset] The offset to use with pagination. - * @param {number} [limit] The maximum number of results to return. + * @summary Kill searches. + * @param {V1KillSearchesRequest} body * @param {*} [options] Override http request option. * @throws {RequiredError} */ - listRPsBoundToWorkspace(workspaceId: number, offset?: number, limit?: number, options: any = {}): FetchArgs { - // verify required parameter 'workspaceId' is not null or undefined - if (workspaceId === null || workspaceId === undefined) { - throw new RequiredError('workspaceId','Required parameter workspaceId was null or undefined when calling listRPsBoundToWorkspace.'); + killSearches(body: V1KillSearchesRequest, options: any = {}): FetchArgs { + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError('body','Required parameter body was null or undefined when calling killSearches.'); } - const localVarPath = `/api/v1/workspaces/{workspaceId}/available-resource-pools` - .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))); + const localVarPath = `/api/v1/searches/kill`; + const localVarUrlObj = new URL(localVarPath, BASE_PATH); + const localVarRequestOptions = { method: 'POST', ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + if (configuration && configuration.apiKey) { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? configuration.apiKey("Authorization") + : configuration.apiKey; + localVarHeaderParameter["Authorization"] = localVarApiKeyValue; + } + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + objToSearchParams(localVarQueryParameter, localVarUrlObj.searchParams); + objToSearchParams(options.query || {}, localVarUrlObj.searchParams); + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...options.headers }; + localVarRequestOptions.body = JSON.stringify(body) + + return { + url: `${localVarUrlObj.pathname}${localVarUrlObj.search}`, + options: localVarRequestOptions, + }; + }, + /** + * + * @summary List all resource pools, bound and unbound, available to a specific workspace + * @param {number} workspaceId Workspace ID. + * @param {number} [offset] The offset to use with pagination. + * @param {number} [limit] The maximum number of results to return. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listRPsBoundToWorkspace(workspaceId: number, offset?: number, limit?: number, options: any = {}): FetchArgs { + // verify required parameter 'workspaceId' is not null or undefined + if (workspaceId === null || workspaceId === undefined) { + throw new RequiredError('workspaceId','Required parameter workspaceId was null or undefined when calling listRPsBoundToWorkspace.'); + } + const localVarPath = `/api/v1/workspaces/{workspaceId}/available-resource-pools` + .replace(`{${"workspaceId"}}`, encodeURIComponent(String(workspaceId))); const localVarUrlObj = new URL(localVarPath, BASE_PATH); const localVarRequestOptions = { method: 'GET', ...options }; const localVarHeaderParameter = {} as any; @@ -22025,6 +22430,44 @@ export const InternalApiFetchParamCreator = function (configuration?: Configurat options: localVarRequestOptions, }; }, + /** + * + * @summary Move searches. + * @param {V1MoveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + moveSearches(body: V1MoveSearchesRequest, options: any = {}): FetchArgs { + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError('body','Required parameter body was null or undefined when calling moveSearches.'); + } + const localVarPath = `/api/v1/searches/move`; + const localVarUrlObj = new URL(localVarPath, BASE_PATH); + const localVarRequestOptions = { method: 'POST', ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + if (configuration && configuration.apiKey) { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? configuration.apiKey("Authorization") + : configuration.apiKey; + localVarHeaderParameter["Authorization"] = localVarApiKeyValue; + } + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + objToSearchParams(localVarQueryParameter, localVarUrlObj.searchParams); + objToSearchParams(options.query || {}, localVarUrlObj.searchParams); + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...options.headers }; + localVarRequestOptions.body = JSON.stringify(body) + + return { + url: `${localVarUrlObj.pathname}${localVarUrlObj.search}`, + options: localVarRequestOptions, + }; + }, /** * * @summary NotifyContainterRunning is used to notify the master that the container is running. On HPC, the launcher will report a state of "Running" as soon as Slurm starts the job, but the container may be in the process of getting pulled down from the Internet, so the experiment is not really considered to be in a "Running" state until all the containers that are part of the experiment are running and not being pulled. @@ -22307,6 +22750,44 @@ export const InternalApiFetchParamCreator = function (configuration?: Configurat options: localVarRequestOptions, }; }, + /** + * + * @summary Pause experiment associated with provided searches. + * @param {V1PauseSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + pauseSearches(body: V1PauseSearchesRequest, options: any = {}): FetchArgs { + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError('body','Required parameter body was null or undefined when calling pauseSearches.'); + } + const localVarPath = `/api/v1/searches/pause`; + const localVarUrlObj = new URL(localVarPath, BASE_PATH); + const localVarRequestOptions = { method: 'POST', ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + if (configuration && configuration.apiKey) { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? configuration.apiKey("Authorization") + : configuration.apiKey; + localVarHeaderParameter["Authorization"] = localVarApiKeyValue; + } + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + objToSearchParams(localVarQueryParameter, localVarUrlObj.searchParams); + objToSearchParams(options.query || {}, localVarUrlObj.searchParams); + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...options.headers }; + localVarRequestOptions.body = JSON.stringify(body) + + return { + url: `${localVarUrlObj.pathname}${localVarUrlObj.search}`, + options: localVarRequestOptions, + }; + }, /** * * @summary PostAllocationAcceleratorData sets the accelerator for a given allocation. @@ -22975,6 +23456,44 @@ export const InternalApiFetchParamCreator = function (configuration?: Configurat options: localVarRequestOptions, }; }, + /** + * + * @summary Unpause experiment associated with provided searches. + * @param {V1ResumeSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + resumeSearches(body: V1ResumeSearchesRequest, options: any = {}): FetchArgs { + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError('body','Required parameter body was null or undefined when calling resumeSearches.'); + } + const localVarPath = `/api/v1/searches/resume`; + const localVarUrlObj = new URL(localVarPath, BASE_PATH); + const localVarRequestOptions = { method: 'POST', ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + if (configuration && configuration.apiKey) { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? configuration.apiKey("Authorization") + : configuration.apiKey; + localVarHeaderParameter["Authorization"] = localVarApiKeyValue; + } + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + objToSearchParams(localVarQueryParameter, localVarUrlObj.searchParams); + objToSearchParams(options.query || {}, localVarUrlObj.searchParams); + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...options.headers }; + localVarRequestOptions.body = JSON.stringify(body) + + return { + url: `${localVarUrlObj.pathname}${localVarUrlObj.search}`, + options: localVarRequestOptions, + }; + }, /** * * @summary Start syncing and prepare to be able to report to a run. This should be called once per task that will report to the run. @@ -23325,6 +23844,44 @@ export const InternalApiFetchParamCreator = function (configuration?: Configurat options: localVarRequestOptions, }; }, + /** + * + * @summary Unarchive searches. + * @param {V1UnarchiveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + unarchiveSearches(body: V1UnarchiveSearchesRequest, options: any = {}): FetchArgs { + // verify required parameter 'body' is not null or undefined + if (body === null || body === undefined) { + throw new RequiredError('body','Required parameter body was null or undefined when calling unarchiveSearches.'); + } + const localVarPath = `/api/v1/searches/unarchive`; + const localVarUrlObj = new URL(localVarPath, BASE_PATH); + const localVarRequestOptions = { method: 'POST', ...options }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + if (configuration && configuration.apiKey) { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? configuration.apiKey("Authorization") + : configuration.apiKey; + localVarHeaderParameter["Authorization"] = localVarApiKeyValue; + } + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + objToSearchParams(localVarQueryParameter, localVarUrlObj.searchParams); + objToSearchParams(options.query || {}, localVarUrlObj.searchParams); + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...options.headers }; + localVarRequestOptions.body = JSON.stringify(body) + + return { + url: `${localVarUrlObj.pathname}${localVarUrlObj.search}`, + options: localVarRequestOptions, + }; + }, /** * * @summary Unbind resource pool to workspace @@ -23655,6 +24212,25 @@ export const InternalApiFp = function (configuration?: Configuration) { }); }; }, + /** + * + * @summary Archive searches. + * @param {V1ArchiveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + archiveSearches(body: V1ArchiveSearchesRequest, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { + const localVarFetchArgs = InternalApiFetchParamCreator(configuration).archiveSearches(body, options); + return (fetch: FetchAPI = window.fetch, basePath: string = BASE_PATH) => { + return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { + if (response.status >= 200 && response.status < 300) { + return response.json(); + } else { + throw response; + } + }); + }; + }, /** * * @summary Assign multiple users to multiple groups. @@ -23848,7 +24424,7 @@ export const InternalApiFp = function (configuration?: Configuration) { }, /** * - * @summary Delete a list of runs. + * @summary Delete runs. * @param {V1DeleteRunsRequest} body * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -23865,6 +24441,25 @@ export const InternalApiFp = function (configuration?: Configuration) { }); }; }, + /** + * + * @summary Delete searches. + * @param {V1DeleteSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteSearches(body: V1DeleteSearchesRequest, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { + const localVarFetchArgs = InternalApiFetchParamCreator(configuration).deleteSearches(body, options); + return (fetch: FetchAPI = window.fetch, basePath: string = BASE_PATH) => { + return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { + if (response.status >= 200 && response.status < 300) { + return response.json(); + } else { + throw response; + } + }); + }; + }, /** * * @summary Get the set of metric names recorded for a list of experiments. @@ -24370,7 +24965,7 @@ export const InternalApiFp = function (configuration?: Configuration) { }, /** * - * @summary Get a list of runs. + * @summary Kill runs. * @param {V1KillRunsRequest} body * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -24387,6 +24982,25 @@ export const InternalApiFp = function (configuration?: Configuration) { }); }; }, + /** + * + * @summary Kill searches. + * @param {V1KillSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + killSearches(body: V1KillSearchesRequest, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { + const localVarFetchArgs = InternalApiFetchParamCreator(configuration).killSearches(body, options); + return (fetch: FetchAPI = window.fetch, basePath: string = BASE_PATH) => { + return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { + if (response.status >= 200 && response.status < 300) { + return response.json(); + } else { + throw response; + } + }); + }; + }, /** * * @summary List all resource pools, bound and unbound, available to a specific workspace @@ -24492,6 +25106,25 @@ export const InternalApiFp = function (configuration?: Configuration) { }); }; }, + /** + * + * @summary Move searches. + * @param {V1MoveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + moveSearches(body: V1MoveSearchesRequest, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { + const localVarFetchArgs = InternalApiFetchParamCreator(configuration).moveSearches(body, options); + return (fetch: FetchAPI = window.fetch, basePath: string = BASE_PATH) => { + return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { + if (response.status >= 200 && response.status < 300) { + return response.json(); + } else { + throw response; + } + }); + }; + }, /** * * @summary NotifyContainterRunning is used to notify the master that the container is running. On HPC, the launcher will report a state of "Running" as soon as Slurm starts the job, but the container may be in the process of getting pulled down from the Internet, so the experiment is not really considered to be in a "Running" state until all the containers that are part of the experiment are running and not being pulled. @@ -24628,6 +25261,25 @@ export const InternalApiFp = function (configuration?: Configuration) { }); }; }, + /** + * + * @summary Pause experiment associated with provided searches. + * @param {V1PauseSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + pauseSearches(body: V1PauseSearchesRequest, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { + const localVarFetchArgs = InternalApiFetchParamCreator(configuration).pauseSearches(body, options); + return (fetch: FetchAPI = window.fetch, basePath: string = BASE_PATH) => { + return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { + if (response.status >= 200 && response.status < 300) { + return response.json(); + } else { + throw response; + } + }); + }; + }, /** * * @summary PostAllocationAcceleratorData sets the accelerator for a given allocation. @@ -24942,6 +25594,25 @@ export const InternalApiFp = function (configuration?: Configuration) { }); }; }, + /** + * + * @summary Unpause experiment associated with provided searches. + * @param {V1ResumeSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + resumeSearches(body: V1ResumeSearchesRequest, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { + const localVarFetchArgs = InternalApiFetchParamCreator(configuration).resumeSearches(body, options); + return (fetch: FetchAPI = window.fetch, basePath: string = BASE_PATH) => { + return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { + if (response.status >= 200 && response.status < 300) { + return response.json(); + } else { + throw response; + } + }); + }; + }, /** * * @summary Start syncing and prepare to be able to report to a run. This should be called once per task that will report to the run. @@ -25090,6 +25761,25 @@ export const InternalApiFp = function (configuration?: Configuration) { }); }; }, + /** + * + * @summary Unarchive searches. + * @param {V1UnarchiveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + unarchiveSearches(body: V1UnarchiveSearchesRequest, options?: any): (fetch?: FetchAPI, basePath?: string) => Promise { + const localVarFetchArgs = InternalApiFetchParamCreator(configuration).unarchiveSearches(body, options); + return (fetch: FetchAPI = window.fetch, basePath: string = BASE_PATH) => { + return fetch(basePath + localVarFetchArgs.url, localVarFetchArgs.options).then((response) => { + if (response.status >= 200 && response.status < 300) { + return response.json(); + } else { + throw response; + } + }); + }; + }, /** * * @summary Unbind resource pool to workspace @@ -25264,6 +25954,16 @@ export const InternalApiFactory = function (configuration?: Configuration, fetch archiveRuns(body: V1ArchiveRunsRequest, options?: any) { return InternalApiFp(configuration).archiveRuns(body, options)(fetch, basePath); }, + /** + * + * @summary Archive searches. + * @param {V1ArchiveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + archiveSearches(body: V1ArchiveSearchesRequest, options?: any) { + return InternalApiFp(configuration).archiveSearches(body, options)(fetch, basePath); + }, /** * * @summary Assign multiple users to multiple groups. @@ -25367,7 +26067,7 @@ export const InternalApiFactory = function (configuration?: Configuration, fetch }, /** * - * @summary Delete a list of runs. + * @summary Delete runs. * @param {V1DeleteRunsRequest} body * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -25375,6 +26075,16 @@ export const InternalApiFactory = function (configuration?: Configuration, fetch deleteRuns(body: V1DeleteRunsRequest, options?: any) { return InternalApiFp(configuration).deleteRuns(body, options)(fetch, basePath); }, + /** + * + * @summary Delete searches. + * @param {V1DeleteSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + deleteSearches(body: V1DeleteSearchesRequest, options?: any) { + return InternalApiFp(configuration).deleteSearches(body, options)(fetch, basePath); + }, /** * * @summary Get the set of metric names recorded for a list of experiments. @@ -25655,7 +26365,7 @@ export const InternalApiFactory = function (configuration?: Configuration, fetch }, /** * - * @summary Get a list of runs. + * @summary Kill runs. * @param {V1KillRunsRequest} body * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -25663,6 +26373,16 @@ export const InternalApiFactory = function (configuration?: Configuration, fetch killRuns(body: V1KillRunsRequest, options?: any) { return InternalApiFp(configuration).killRuns(body, options)(fetch, basePath); }, + /** + * + * @summary Kill searches. + * @param {V1KillSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + killSearches(body: V1KillSearchesRequest, options?: any) { + return InternalApiFp(configuration).killSearches(body, options)(fetch, basePath); + }, /** * * @summary List all resource pools, bound and unbound, available to a specific workspace @@ -25723,6 +26443,16 @@ export const InternalApiFactory = function (configuration?: Configuration, fetch moveRuns(body: V1MoveRunsRequest, options?: any) { return InternalApiFp(configuration).moveRuns(body, options)(fetch, basePath); }, + /** + * + * @summary Move searches. + * @param {V1MoveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + moveSearches(body: V1MoveSearchesRequest, options?: any) { + return InternalApiFp(configuration).moveSearches(body, options)(fetch, basePath); + }, /** * * @summary NotifyContainterRunning is used to notify the master that the container is running. On HPC, the launcher will report a state of "Running" as soon as Slurm starts the job, but the container may be in the process of getting pulled down from the Internet, so the experiment is not really considered to be in a "Running" state until all the containers that are part of the experiment are running and not being pulled. @@ -25796,6 +26526,16 @@ export const InternalApiFactory = function (configuration?: Configuration, fetch pauseRuns(body: V1PauseRunsRequest, options?: any) { return InternalApiFp(configuration).pauseRuns(body, options)(fetch, basePath); }, + /** + * + * @summary Pause experiment associated with provided searches. + * @param {V1PauseSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + pauseSearches(body: V1PauseSearchesRequest, options?: any) { + return InternalApiFp(configuration).pauseSearches(body, options)(fetch, basePath); + }, /** * * @summary PostAllocationAcceleratorData sets the accelerator for a given allocation. @@ -25966,6 +26706,16 @@ export const InternalApiFactory = function (configuration?: Configuration, fetch resumeRuns(body: V1ResumeRunsRequest, options?: any) { return InternalApiFp(configuration).resumeRuns(body, options)(fetch, basePath); }, + /** + * + * @summary Unpause experiment associated with provided searches. + * @param {V1ResumeSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + resumeSearches(body: V1ResumeSearchesRequest, options?: any) { + return InternalApiFp(configuration).resumeSearches(body, options)(fetch, basePath); + }, /** * * @summary Start syncing and prepare to be able to report to a run. This should be called once per task that will report to the run. @@ -26051,6 +26801,16 @@ export const InternalApiFactory = function (configuration?: Configuration, fetch unarchiveRuns(body: V1UnarchiveRunsRequest, options?: any) { return InternalApiFp(configuration).unarchiveRuns(body, options)(fetch, basePath); }, + /** + * + * @summary Unarchive searches. + * @param {V1UnarchiveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + unarchiveSearches(body: V1UnarchiveSearchesRequest, options?: any) { + return InternalApiFp(configuration).unarchiveSearches(body, options)(fetch, basePath); + }, /** * * @summary Unbind resource pool to workspace @@ -26206,6 +26966,18 @@ export class InternalApi extends BaseAPI { return InternalApiFp(this.configuration).archiveRuns(body, options)(this.fetch, this.basePath) } + /** + * + * @summary Archive searches. + * @param {V1ArchiveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof InternalApi + */ + public archiveSearches(body: V1ArchiveSearchesRequest, options?: any) { + return InternalApiFp(this.configuration).archiveSearches(body, options)(this.fetch, this.basePath) + } + /** * * @summary Assign multiple users to multiple groups. @@ -26329,7 +27101,7 @@ export class InternalApi extends BaseAPI { /** * - * @summary Delete a list of runs. + * @summary Delete runs. * @param {V1DeleteRunsRequest} body * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -26339,6 +27111,18 @@ export class InternalApi extends BaseAPI { return InternalApiFp(this.configuration).deleteRuns(body, options)(this.fetch, this.basePath) } + /** + * + * @summary Delete searches. + * @param {V1DeleteSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof InternalApi + */ + public deleteSearches(body: V1DeleteSearchesRequest, options?: any) { + return InternalApiFp(this.configuration).deleteSearches(body, options)(this.fetch, this.basePath) + } + /** * * @summary Get the set of metric names recorded for a list of experiments. @@ -26669,7 +27453,7 @@ export class InternalApi extends BaseAPI { /** * - * @summary Get a list of runs. + * @summary Kill runs. * @param {V1KillRunsRequest} body * @param {*} [options] Override http request option. * @throws {RequiredError} @@ -26679,6 +27463,18 @@ export class InternalApi extends BaseAPI { return InternalApiFp(this.configuration).killRuns(body, options)(this.fetch, this.basePath) } + /** + * + * @summary Kill searches. + * @param {V1KillSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof InternalApi + */ + public killSearches(body: V1KillSearchesRequest, options?: any) { + return InternalApiFp(this.configuration).killSearches(body, options)(this.fetch, this.basePath) + } + /** * * @summary List all resource pools, bound and unbound, available to a specific workspace @@ -26749,6 +27545,18 @@ export class InternalApi extends BaseAPI { return InternalApiFp(this.configuration).moveRuns(body, options)(this.fetch, this.basePath) } + /** + * + * @summary Move searches. + * @param {V1MoveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof InternalApi + */ + public moveSearches(body: V1MoveSearchesRequest, options?: any) { + return InternalApiFp(this.configuration).moveSearches(body, options)(this.fetch, this.basePath) + } + /** * * @summary NotifyContainterRunning is used to notify the master that the container is running. On HPC, the launcher will report a state of "Running" as soon as Slurm starts the job, but the container may be in the process of getting pulled down from the Internet, so the experiment is not really considered to be in a "Running" state until all the containers that are part of the experiment are running and not being pulled. @@ -26836,6 +27644,18 @@ export class InternalApi extends BaseAPI { return InternalApiFp(this.configuration).pauseRuns(body, options)(this.fetch, this.basePath) } + /** + * + * @summary Pause experiment associated with provided searches. + * @param {V1PauseSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof InternalApi + */ + public pauseSearches(body: V1PauseSearchesRequest, options?: any) { + return InternalApiFp(this.configuration).pauseSearches(body, options)(this.fetch, this.basePath) + } + /** * * @summary PostAllocationAcceleratorData sets the accelerator for a given allocation. @@ -27038,6 +27858,18 @@ export class InternalApi extends BaseAPI { return InternalApiFp(this.configuration).resumeRuns(body, options)(this.fetch, this.basePath) } + /** + * + * @summary Unpause experiment associated with provided searches. + * @param {V1ResumeSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof InternalApi + */ + public resumeSearches(body: V1ResumeSearchesRequest, options?: any) { + return InternalApiFp(this.configuration).resumeSearches(body, options)(this.fetch, this.basePath) + } + /** * * @summary Start syncing and prepare to be able to report to a run. This should be called once per task that will report to the run. @@ -27137,6 +27969,18 @@ export class InternalApi extends BaseAPI { return InternalApiFp(this.configuration).unarchiveRuns(body, options)(this.fetch, this.basePath) } + /** + * + * @summary Unarchive searches. + * @param {V1UnarchiveSearchesRequest} body + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof InternalApi + */ + public unarchiveSearches(body: V1UnarchiveSearchesRequest, options?: any) { + return InternalApiFp(this.configuration).unarchiveSearches(body, options)(this.fetch, this.basePath) + } + /** * * @summary Unbind resource pool to workspace