Skip to content

Commit 7d4d91b

Browse files
committed
Add list live model names endpoint
1 parent e085cb3 commit 7d4d91b

File tree

5 files changed

+45
-0
lines changed

5 files changed

+45
-0
lines changed

tensorflow_serving/apis/get_model_status.proto

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ message GetModelStatusRequest {
1616
ModelSpec model_spec = 1;
1717
}
1818

19+
//request to get all live model names
20+
message ListModelNamesRequest{
21+
}
22+
23+
//response contains all live model names
24+
message ListModelNamesResponse{
25+
repeated string model_names = 1;
26+
}
27+
28+
1929
// Version number, state, and status for a single version of a model.
2030
message ModelVersionStatus {
2131
// Model version.

tensorflow_serving/apis/model_service.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,7 @@ service ModelService {
2121
// longer served.
2222
rpc HandleReloadConfigRequest(ReloadConfigRequest)
2323
returns (ReloadConfigResponse);
24+
25+
// Lists the live model names
26+
rpc ListModelNames(ListModelNamesRequest) returns (ListModelNamesResponse);
2427
}

tensorflow_serving/model_servers/get_model_status_impl.cc

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ void AddModelVersionStatusToResponse(GetModelStatusResponse* response,
6262

6363
} // namespace
6464

65+
// Add model name to ListModelNamesResponse
66+
void AddModelNameToResponse(ListModelNamesResponse* response,
67+
const string& name){
68+
response->add_model_names(name);
69+
}
70+
6571
Status GetModelStatusImpl::GetModelStatus(ServerCore* core,
6672
const GetModelStatusRequest& request,
6773
GetModelStatusResponse* response) {
@@ -106,5 +112,16 @@ Status GetModelStatusImpl::GetModelStatusWithModelSpec(
106112
return tensorflow::Status::OK();
107113
}
108114

115+
Status GetModelStatusImpl::ListModelNames(ServerCore* core,
116+
const ListModelNamesRequest& request,
117+
ListModelNamesResponse* response) {
118+
119+
const ServableStateMonitor& monitor = *core->servable_state_monitor();
120+
for(const auto& servable: monitor.GetAllServableStates()) {
121+
AddModelNameToResponse(response, servable.first);
122+
}
123+
return tensorflow::Status::OK();
124+
}
125+
109126
} // namespace serving
110127
} // namespace tensorflow

tensorflow_serving/model_servers/get_model_status_impl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ class GetModelStatusImpl {
4040
const GetModelStatusRequest& request, GetModelStatusResponse* response);
4141
};
4242

43+
// List all live model names
44+
static Status ListModelNames(ServerCore* core,
45+
const ListModelNamesRequest& request,
46+
ListModelNamesResponse* response);
4347
} // namespace serving
4448
} // namespace tensorflow
4549

tensorflow_serving/model_servers/get_model_status_impl_test.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,17 @@ TEST_F(GetModelStatusImplTest, SingleVersionSuccess) {
172172
EXPECT_EQ("", response.model_version_status(0).status().error_message());
173173
}
174174

175+
TEST_F(GetModelStatusImplTest, Success) {
176+
ListModelsRequest request;
177+
ListModelsResponse response;
178+
// If two versions of model are managed by ServerCore, succesfully get model
179+
// status for both versions of the model.
180+
TF_EXPECT_OK(
181+
GetModelStatusImpl::ListModels(GetServerCore(), request, &response)
182+
);
183+
EXPECT_EQ(1, response.model_names_size());
184+
}
185+
175186
// Verifies that GetModelStatusWithModelSpec() uses the model spec override
176187
// rather than the one in the request.
177188
TEST_F(GetModelStatusImplTest, ModelSpecOverride) {

0 commit comments

Comments
 (0)