Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Commit 04323fb

Browse files
committed
chore: update engine API
1 parent afe556d commit 04323fb

File tree

2 files changed

+79
-44
lines changed

2 files changed

+79
-44
lines changed

engine/controllers/engines.cc

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,18 @@ void Engines::ListEngine(
4747
void Engines::UninstallEngine(
4848
const HttpRequestPtr& req,
4949
std::function<void(const HttpResponsePtr&)>&& callback,
50-
const std::string& engine, const std::optional<std::string> version,
51-
const std::optional<std::string> variant) {
50+
const std::string& engine) {
51+
auto variant = (*(req->getJsonObject())).get("variant", "").asString();
52+
if (variant.empty()) {
53+
Json::Value ret;
54+
ret["message"] = "Variant is required";
55+
auto resp = cortex_utils::CreateCortexHttpJsonResponse(ret);
56+
resp->setStatusCode(k400BadRequest);
57+
callback(resp);
58+
return;
59+
}
5260

61+
auto version = (*(req->getJsonObject())).get("version", "latest").asString();
5362
auto result =
5463
engine_service_->UninstallEngineVariant(engine, version, variant);
5564

@@ -134,12 +143,19 @@ void Engines::GetEngineVariants(
134143
void Engines::InstallEngine(
135144
const HttpRequestPtr& req,
136145
std::function<void(const HttpResponsePtr&)>&& callback,
137-
const std::string& engine, const std::optional<std::string> version,
138-
const std::optional<std::string> variant_name) {
139-
auto normalized_version = version.value_or("latest");
146+
const std::string& engine) {
147+
auto variant = (*(req->getJsonObject())).get("variant", "").asString();
148+
if (variant.empty()) {
149+
Json::Value ret;
150+
ret["message"] = "Variant is required";
151+
auto resp = cortex_utils::CreateCortexHttpJsonResponse(ret);
152+
resp->setStatusCode(k400BadRequest);
153+
callback(resp);
154+
return;
155+
}
140156

141-
auto result = engine_service_->InstallEngineAsyncV2(
142-
engine, normalized_version, variant_name);
157+
auto version = (*(req->getJsonObject())).get("version", "latest").asString();
158+
auto result = engine_service_->InstallEngineAsyncV2(engine, version, variant);
143159
if (result.has_error()) {
144160
Json::Value res;
145161
res["message"] = result.error();
@@ -218,8 +234,26 @@ void Engines::GetLatestEngineVersion(
218234
void Engines::SetDefaultEngineVariant(
219235
const HttpRequestPtr& req,
220236
std::function<void(const HttpResponsePtr&)>&& callback,
221-
const std::string& engine, const std::string& version,
222-
const std::string& variant) {
237+
const std::string& engine) {
238+
auto variant = (*(req->getJsonObject())).get("variant", "").asString();
239+
if (variant.empty()) {
240+
Json::Value ret;
241+
ret["message"] = "Variant is required";
242+
auto resp = cortex_utils::CreateCortexHttpJsonResponse(ret);
243+
resp->setStatusCode(k400BadRequest);
244+
callback(resp);
245+
return;
246+
}
247+
auto version = (*(req->getJsonObject())).get("version", "").asString();
248+
if (version.empty()) {
249+
Json::Value ret;
250+
ret["message"] = "Version is required";
251+
auto resp = cortex_utils::CreateCortexHttpJsonResponse(ret);
252+
resp->setStatusCode(k400BadRequest);
253+
callback(resp);
254+
return;
255+
}
256+
223257
auto result =
224258
engine_service_->SetDefaultEngineVariant(engine, version, variant);
225259
if (result.has_error()) {

engine/controllers/engines.h

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,55 +12,63 @@ class Engines : public drogon::HttpController<Engines, false> {
1212
public:
1313
METHOD_LIST_BEGIN
1414

15-
METHOD_ADD(Engines::GetInstalledEngineVariants, "/{1}", Get);
16-
METHOD_ADD(Engines::InstallEngine, "/{1}?version={2}&variant={3}", Options,
17-
Post);
18-
METHOD_ADD(Engines::UninstallEngine, "/{1}?version={2}&variant={3}", Options,
19-
Delete);
20-
METHOD_ADD(Engines::SetDefaultEngineVariant,
21-
"/{1}/default?version={2}&variant={3}", Options, Post);
15+
// install engine
16+
METHOD_ADD(Engines::InstallEngine, "/{1}", Options, Post);
17+
ADD_METHOD_TO(Engines::InstallEngine, "/v1/engines/{1}", Options, Post);
18+
19+
// uninstall engine
20+
METHOD_ADD(Engines::UninstallEngine, "/{1}", Options, Delete);
21+
ADD_METHOD_TO(Engines::UninstallEngine, "/v1/engines/{1}", Options, Delete);
22+
23+
// set default engine
24+
METHOD_ADD(Engines::SetDefaultEngineVariant, "/{1}/default", Options, Post);
25+
ADD_METHOD_TO(Engines::SetDefaultEngineVariant, "/v1/engines/{1}/default",
26+
Options, Post);
27+
28+
// get default engine
2229
METHOD_ADD(Engines::GetDefaultEngineVariant, "/{1}/default", Get);
30+
ADD_METHOD_TO(Engines::GetDefaultEngineVariant, "/v1/engines/{1}/default",
31+
Get);
32+
33+
// update engine
34+
METHOD_ADD(Engines::UpdateEngine, "/{1}/update", Options, Post);
35+
ADD_METHOD_TO(Engines::UpdateEngine, "/v1/engines/{1}/update", Options, Post);
2336

37+
// load engine
2438
METHOD_ADD(Engines::LoadEngine, "/{1}/load", Options, Post);
39+
ADD_METHOD_TO(Engines::LoadEngine, "/v1/engines/{1}/load", Options, Post);
40+
41+
// unload engine
2542
METHOD_ADD(Engines::UnloadEngine, "/{1}/load", Options, Delete);
26-
METHOD_ADD(Engines::UpdateEngine, "/{1}/update", Options, Post);
27-
METHOD_ADD(Engines::ListEngine, "", Get);
43+
ADD_METHOD_TO(Engines::UnloadEngine, "/v1/engines/{1}/load", Options, Delete);
2844

45+
METHOD_ADD(Engines::GetInstalledEngineVariants, "/{1}", Get);
46+
METHOD_ADD(Engines::ListEngine, "", Get);
2947
METHOD_ADD(Engines::GetEngineVersions, "/{1}/versions", Get);
3048
METHOD_ADD(Engines::GetEngineVariants, "/{1}/versions/{2}", Get);
3149
METHOD_ADD(Engines::GetLatestEngineVersion, "/{1}/latest", Get);
3250

3351
ADD_METHOD_TO(Engines::GetInstalledEngineVariants, "/v1/engines/{1}", Get);
34-
ADD_METHOD_TO(Engines::InstallEngine,
35-
"/v1/engines/{1}?version={2}&variant={3}", Options, Post);
36-
ADD_METHOD_TO(Engines::UninstallEngine,
37-
"/v1/engines/{1}?version={2}&variant={3}", Options, Delete);
38-
ADD_METHOD_TO(Engines::SetDefaultEngineVariant,
39-
"/v1/engines/{1}/default?version={2}&variant={3}", Options,
40-
Post);
41-
ADD_METHOD_TO(Engines::GetDefaultEngineVariant, "/v1/engines/{1}/default",
42-
Get);
43-
44-
ADD_METHOD_TO(Engines::LoadEngine, "/v1/engines/{1}/load", Options, Post);
45-
ADD_METHOD_TO(Engines::UnloadEngine, "/v1/engines/{1}/load", Options, Delete);
46-
ADD_METHOD_TO(Engines::UpdateEngine, "/v1/engines/{1}/update", Options, Post);
4752
ADD_METHOD_TO(Engines::GetEngineVersions, "/v1/engines/{1}/versions", Get);
4853
ADD_METHOD_TO(Engines::GetEngineVariants, "/v1/engines/{1}/versions/{2}",
4954
Get);
5055
ADD_METHOD_TO(Engines::ListEngine, "/v1/engines", Get);
56+
5157
METHOD_LIST_END
5258

5359
explicit Engines(std::shared_ptr<EngineService> engine_service)
5460
: engine_service_{engine_service} {}
5561

56-
void ListEngine(const HttpRequestPtr& req,
57-
std::function<void(const HttpResponsePtr&)>&& callback) const;
62+
void InstallEngine(const HttpRequestPtr& req,
63+
std::function<void(const HttpResponsePtr&)>&& callback,
64+
const std::string& engine);
5865

5966
void UninstallEngine(const HttpRequestPtr& req,
6067
std::function<void(const HttpResponsePtr&)>&& callback,
61-
const std::string& engine,
62-
const std::optional<std::string> version,
63-
const std::optional<std::string> variant);
68+
const std::string& engine);
69+
70+
void ListEngine(const HttpRequestPtr& req,
71+
std::function<void(const HttpResponsePtr&)>&& callback) const;
6472

6573
void GetEngineVersions(const HttpRequestPtr& req,
6674
std::function<void(const HttpResponsePtr&)>&& callback,
@@ -71,12 +79,6 @@ class Engines : public drogon::HttpController<Engines, false> {
7179
const std::string& engine,
7280
const std::string& version) const;
7381

74-
void InstallEngine(const HttpRequestPtr& req,
75-
std::function<void(const HttpResponsePtr&)>&& callback,
76-
const std::string& engine,
77-
const std::optional<std::string> version,
78-
const std::optional<std::string> variant_name);
79-
8082
void GetInstalledEngineVariants(
8183
const HttpRequestPtr& req,
8284
std::function<void(const HttpResponsePtr&)>&& callback,
@@ -94,8 +96,7 @@ class Engines : public drogon::HttpController<Engines, false> {
9496
void SetDefaultEngineVariant(
9597
const HttpRequestPtr& req,
9698
std::function<void(const HttpResponsePtr&)>&& callback,
97-
const std::string& engine, const std::string& version,
98-
const std::string& variant);
99+
const std::string& engine);
99100

100101
void GetDefaultEngineVariant(
101102
const HttpRequestPtr& req,

0 commit comments

Comments
 (0)