Skip to content

Commit b1351a8

Browse files
committed
feat: dynamic server nomad calls
1 parent 88da3f4 commit b1351a8

File tree

65 files changed

+5794
-333
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+5794
-333
lines changed

.vscode/rivet.code-workspace

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,8 @@
66
{
77
"path": "../lib/bolt",
88
},
9+
{
10+
"path": "../svc",
11+
}
912
],
1013
}

fern/definition/dynamic-servers/common.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,10 @@ types:
7575
- udp
7676

7777
DockerHostRouting:
78-
properties: {}
78+
properties:
79+
protocol: optional<HostProtocol>
80+
81+
HostProtocol:
82+
enum:
83+
- tcp
84+
- udp

infra/tf/modules/secrets/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
external = {
44
source = "hashicorp/external"
5-
version = "2.3.1"
5+
version = "2.3.3"
66
}
77
}
88
}

lib/convert/src/impls/ds.rs

Lines changed: 164 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ use serde_json::to_value;
99

1010
impl ApiTryFrom<backend::dynamic_servers::Server> for models::DynamicServersServer {
1111
type Error = GlobalError;
12-
fn api_try_from(value: backend::dynamic_servers::Server) -> GlobalResult<models::DynamicServersServer> {
12+
fn api_try_from(
13+
value: backend::dynamic_servers::Server,
14+
) -> GlobalResult<models::DynamicServersServer> {
1315
Ok(models::DynamicServersServer {
1416
cluster_id: unwrap!(value.cluster_id).as_uuid(),
1517
create_ts: value.create_ts,
@@ -26,7 +28,9 @@ impl ApiTryFrom<backend::dynamic_servers::Server> for models::DynamicServersServ
2628
}
2729

2830
impl ApiFrom<models::DynamicServersResources> for backend::dynamic_servers::ServerResources {
29-
fn api_from(value: models::DynamicServersResources) -> backend::dynamic_servers::ServerResources {
31+
fn api_from(
32+
value: models::DynamicServersResources,
33+
) -> backend::dynamic_servers::ServerResources {
3034
backend::dynamic_servers::ServerResources {
3135
cpu_millicores: value.cpu,
3236
memory_mib: value.memory,
@@ -35,15 +39,19 @@ impl ApiFrom<models::DynamicServersResources> for backend::dynamic_servers::Serv
3539
}
3640

3741
impl ApiFrom<backend::dynamic_servers::ServerResources> for models::DynamicServersResources {
38-
fn api_from(value: backend::dynamic_servers::ServerResources) -> models::DynamicServersResources {
42+
fn api_from(
43+
value: backend::dynamic_servers::ServerResources,
44+
) -> models::DynamicServersResources {
3945
models::DynamicServersResources {
4046
cpu: value.cpu_millicores,
4147
memory: value.memory_mib,
4248
}
4349
}
4450
}
4551

46-
impl ApiTryFrom<models::DynamicServersRuntime> for backend::pkg::dynamic_servers::server_create::request::Runtime {
52+
impl ApiTryFrom<models::DynamicServersRuntime>
53+
for backend::pkg::dynamic_servers::server_create::request::Runtime
54+
{
4755
type Error = GlobalError;
4856

4957
fn api_try_from(
@@ -97,8 +105,9 @@ impl ApiTryFrom<models::DynamicServersDockerNetwork> for backend::dynamic_server
97105
value: models::DynamicServersDockerNetwork,
98106
) -> GlobalResult<backend::dynamic_servers::DockerNetwork> {
99107
Ok(backend::dynamic_servers::DockerNetwork {
100-
mode: backend::dynamic_servers::DockerNetworkMode::api_from(value.mode.unwrap_or_default())
101-
as i32,
108+
mode: backend::dynamic_servers::DockerNetworkMode::api_from(
109+
value.mode.unwrap_or_default(),
110+
) as i32,
102111
ports: unwrap!(value
103112
.ports
104113
.into_iter()
@@ -114,7 +123,10 @@ impl ApiTryInto<models::DynamicServersDockerNetwork> for backend::dynamic_server
114123
fn api_try_into(self) -> GlobalResult<models::DynamicServersDockerNetwork> {
115124
Ok(models::DynamicServersDockerNetwork {
116125
mode: Some(
117-
unwrap!(backend::dynamic_servers::DockerNetworkMode::from_i32(self.mode)).api_into(),
126+
unwrap!(backend::dynamic_servers::DockerNetworkMode::from_i32(
127+
self.mode
128+
))
129+
.api_into(),
118130
),
119131
ports: self
120132
.ports
@@ -125,20 +137,36 @@ impl ApiTryInto<models::DynamicServersDockerNetwork> for backend::dynamic_server
125137
}
126138
}
127139

128-
impl ApiFrom<models::DynamicServersDockerNetworkMode> for backend::dynamic_servers::DockerNetworkMode {
129-
fn api_from(value: models::DynamicServersDockerNetworkMode) -> backend::dynamic_servers::DockerNetworkMode {
140+
impl ApiFrom<models::DynamicServersDockerNetworkMode>
141+
for backend::dynamic_servers::DockerNetworkMode
142+
{
143+
fn api_from(
144+
value: models::DynamicServersDockerNetworkMode,
145+
) -> backend::dynamic_servers::DockerNetworkMode {
130146
match value {
131-
models::DynamicServersDockerNetworkMode::Bridge => backend::dynamic_servers::DockerNetworkMode::Bridge,
132-
models::DynamicServersDockerNetworkMode::Host => backend::dynamic_servers::DockerNetworkMode::Host,
147+
models::DynamicServersDockerNetworkMode::Bridge => {
148+
backend::dynamic_servers::DockerNetworkMode::Bridge
149+
}
150+
models::DynamicServersDockerNetworkMode::Host => {
151+
backend::dynamic_servers::DockerNetworkMode::Host
152+
}
133153
}
134154
}
135155
}
136156

137-
impl ApiFrom<backend::dynamic_servers::DockerNetworkMode> for models::DynamicServersDockerNetworkMode {
138-
fn api_from(value: backend::dynamic_servers::DockerNetworkMode) -> models::DynamicServersDockerNetworkMode {
157+
impl ApiFrom<backend::dynamic_servers::DockerNetworkMode>
158+
for models::DynamicServersDockerNetworkMode
159+
{
160+
fn api_from(
161+
value: backend::dynamic_servers::DockerNetworkMode,
162+
) -> models::DynamicServersDockerNetworkMode {
139163
match value {
140-
backend::dynamic_servers::DockerNetworkMode::Bridge => models::DynamicServersDockerNetworkMode::Bridge,
141-
backend::dynamic_servers::DockerNetworkMode::Host => models::DynamicServersDockerNetworkMode::Host,
164+
backend::dynamic_servers::DockerNetworkMode::Bridge => {
165+
models::DynamicServersDockerNetworkMode::Bridge
166+
}
167+
backend::dynamic_servers::DockerNetworkMode::Host => {
168+
models::DynamicServersDockerNetworkMode::Host
169+
}
142170
}
143171
}
144172
}
@@ -169,26 +197,30 @@ impl ApiTryFrom<backend::dynamic_servers::DockerPort> for models::DynamicServers
169197
}
170198
}
171199

172-
impl ApiTryFrom<models::DynamicServersDockerPortRouting> for backend::dynamic_servers::docker_port::Routing {
200+
impl ApiTryFrom<models::DynamicServersDockerPortRouting>
201+
for backend::dynamic_servers::docker_port::Routing
202+
{
173203
type Error = GlobalError;
174204

175205
fn api_try_from(
176206
value: models::DynamicServersDockerPortRouting,
177207
) -> GlobalResult<backend::dynamic_servers::docker_port::Routing> {
178208
match (value.game_guard, value.host) {
179-
(Some(game_guard), None) => Ok(backend::dynamic_servers::docker_port::Routing::GameGuard(
180-
(*game_guard).api_into(),
181-
)),
182-
(None, Some(_)) => Ok(backend::dynamic_servers::docker_port::Routing::Host(
183-
backend::dynamic_servers::DockerHostRouting {},
209+
(Some(game_guard), None) => Ok(
210+
backend::dynamic_servers::docker_port::Routing::GameGuard((*game_guard).api_into()),
211+
),
212+
(None, Some(host)) => Ok(backend::dynamic_servers::docker_port::Routing::Host(
213+
(*host).api_into(),
184214
)),
185215
(None, None) => bail_with!(SERVERS_NO_PORT_ROUTERS),
186216
_ => bail_with!(SERVERS_MULTIPLE_PORT_ROUTERS),
187217
}
188218
}
189219
}
190220

191-
impl ApiTryFrom<backend::dynamic_servers::docker_port::Routing> for models::DynamicServersDockerPortRouting {
221+
impl ApiTryFrom<backend::dynamic_servers::docker_port::Routing>
222+
for models::DynamicServersDockerPortRouting
223+
{
192224
type Error = GlobalError;
193225

194226
fn api_try_from(
@@ -201,17 +233,19 @@ impl ApiTryFrom<backend::dynamic_servers::docker_port::Routing> for models::Dyna
201233
host: None,
202234
})
203235
}
204-
backend::dynamic_servers::docker_port::Routing::Host(_) => {
236+
backend::dynamic_servers::docker_port::Routing::Host(host) => {
205237
Ok(models::DynamicServersDockerPortRouting {
206238
game_guard: None,
207-
host: Some(to_value({})?),
239+
host: Some(Box::new(host.api_try_into()?)),
208240
})
209241
}
210242
}
211243
}
212244
}
213245

214-
impl ApiFrom<models::DynamicServersDockerGameGuardRouting> for backend::dynamic_servers::DockerGameGuardRouting {
246+
impl ApiFrom<models::DynamicServersDockerGameGuardRouting>
247+
for backend::dynamic_servers::DockerGameGuardRouting
248+
{
215249
fn api_from(
216250
value: models::DynamicServersDockerGameGuardRouting,
217251
) -> backend::dynamic_servers::DockerGameGuardRouting {
@@ -242,26 +276,117 @@ impl ApiTryFrom<backend::dynamic_servers::DockerGameGuardRouting>
242276
}
243277
}
244278

245-
impl ApiFrom<models::DynamicServersGameGuardProtocol> for backend::dynamic_servers::GameGuardProtocol {
246-
fn api_from(value: models::DynamicServersGameGuardProtocol) -> backend::dynamic_servers::GameGuardProtocol {
279+
impl ApiFrom<models::DynamicServersDockerHostRouting>
280+
for backend::dynamic_servers::DockerHostRouting
281+
{
282+
fn api_from(
283+
value: models::DynamicServersDockerHostRouting,
284+
) -> backend::dynamic_servers::DockerHostRouting {
285+
backend::dynamic_servers::DockerHostRouting {
286+
protocol: backend::dynamic_servers::HostProtocol::api_from(
287+
value.protocol.unwrap_or_default().into(),
288+
) as i32,
289+
}
290+
}
291+
}
292+
293+
impl ApiTryFrom<backend::dynamic_servers::DockerHostRouting>
294+
for models::DynamicServersDockerHostRouting
295+
{
296+
type Error = GlobalError;
297+
298+
fn api_try_from(
299+
value: backend::dynamic_servers::DockerHostRouting,
300+
) -> GlobalResult<models::DynamicServersDockerHostRouting> {
301+
Ok(models::DynamicServersDockerHostRouting {
302+
protocol: Some(
303+
unwrap!(backend::dynamic_servers::HostProtocol::from_i32(
304+
value.protocol
305+
))
306+
.api_into(),
307+
),
308+
})
309+
}
310+
}
311+
312+
impl ApiFrom<models::DynamicServersGameGuardProtocol>
313+
for backend::dynamic_servers::GameGuardProtocol
314+
{
315+
fn api_from(
316+
value: models::DynamicServersGameGuardProtocol,
317+
) -> backend::dynamic_servers::GameGuardProtocol {
247318
match value {
248-
models::DynamicServersGameGuardProtocol::Udp => backend::dynamic_servers::GameGuardProtocol::Udp,
249-
models::DynamicServersGameGuardProtocol::Tcp => backend::dynamic_servers::GameGuardProtocol::Tcp,
250-
models::DynamicServersGameGuardProtocol::Http => backend::dynamic_servers::GameGuardProtocol::Http,
251-
models::DynamicServersGameGuardProtocol::Https => backend::dynamic_servers::GameGuardProtocol::Https,
252-
models::DynamicServersGameGuardProtocol::TcpTls => backend::dynamic_servers::GameGuardProtocol::TcpTls,
319+
models::DynamicServersGameGuardProtocol::Udp => {
320+
backend::dynamic_servers::GameGuardProtocol::Udp
321+
}
322+
models::DynamicServersGameGuardProtocol::Tcp => {
323+
backend::dynamic_servers::GameGuardProtocol::Tcp
324+
}
325+
models::DynamicServersGameGuardProtocol::Http => {
326+
backend::dynamic_servers::GameGuardProtocol::Http
327+
}
328+
models::DynamicServersGameGuardProtocol::Https => {
329+
backend::dynamic_servers::GameGuardProtocol::Https
330+
}
331+
models::DynamicServersGameGuardProtocol::TcpTls => {
332+
backend::dynamic_servers::GameGuardProtocol::TcpTls
333+
}
253334
}
254335
}
255336
}
256337

257-
impl ApiFrom<backend::dynamic_servers::GameGuardProtocol> for models::DynamicServersGameGuardProtocol {
258-
fn api_from(value: backend::dynamic_servers::GameGuardProtocol) -> models::DynamicServersGameGuardProtocol {
338+
impl ApiFrom<backend::dynamic_servers::GameGuardProtocol>
339+
for models::DynamicServersGameGuardProtocol
340+
{
341+
fn api_from(
342+
value: backend::dynamic_servers::GameGuardProtocol,
343+
) -> models::DynamicServersGameGuardProtocol {
259344
match value {
260-
backend::dynamic_servers::GameGuardProtocol::Udp => models::DynamicServersGameGuardProtocol::Udp,
261-
backend::dynamic_servers::GameGuardProtocol::Tcp => models::DynamicServersGameGuardProtocol::Tcp,
262-
backend::dynamic_servers::GameGuardProtocol::Http => models::DynamicServersGameGuardProtocol::Http,
263-
backend::dynamic_servers::GameGuardProtocol::Https => models::DynamicServersGameGuardProtocol::Https,
264-
backend::dynamic_servers::GameGuardProtocol::TcpTls => models::DynamicServersGameGuardProtocol::TcpTls,
345+
backend::dynamic_servers::GameGuardProtocol::Udp => {
346+
models::DynamicServersGameGuardProtocol::Udp
347+
}
348+
backend::dynamic_servers::GameGuardProtocol::Tcp => {
349+
models::DynamicServersGameGuardProtocol::Tcp
350+
}
351+
backend::dynamic_servers::GameGuardProtocol::Http => {
352+
models::DynamicServersGameGuardProtocol::Http
353+
}
354+
backend::dynamic_servers::GameGuardProtocol::Https => {
355+
models::DynamicServersGameGuardProtocol::Https
356+
}
357+
backend::dynamic_servers::GameGuardProtocol::TcpTls => {
358+
models::DynamicServersGameGuardProtocol::TcpTls
359+
}
360+
}
361+
}
362+
}
363+
364+
impl ApiFrom<models::DynamicServersHostProtocol> for backend::dynamic_servers::HostProtocol {
365+
fn api_from(
366+
value: models::DynamicServersHostProtocol,
367+
) -> backend::dynamic_servers::HostProtocol {
368+
match value {
369+
models::DynamicServersHostProtocol::Udp => {
370+
backend::dynamic_servers::HostProtocol::HostUdp
371+
}
372+
models::DynamicServersHostProtocol::Tcp => {
373+
backend::dynamic_servers::HostProtocol::HostTcp
374+
}
375+
}
376+
}
377+
}
378+
379+
impl ApiFrom<backend::dynamic_servers::HostProtocol> for models::DynamicServersHostProtocol {
380+
fn api_from(
381+
value: backend::dynamic_servers::HostProtocol,
382+
) -> models::DynamicServersHostProtocol {
383+
match value {
384+
backend::dynamic_servers::HostProtocol::HostUdp => {
385+
models::DynamicServersHostProtocol::Udp
386+
}
387+
backend::dynamic_servers::HostProtocol::HostTcp => {
388+
models::DynamicServersHostProtocol::Tcp
389+
}
265390
}
266391
}
267392
}

0 commit comments

Comments
 (0)