Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions packages/core/services/cluster/src/ops/server/get.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ pub(crate) struct ServerRow {
vlan_ip: Option<IpAddr>,
public_ip: Option<IpAddr>,
create_ts: i64,
install_complete_ts: Option<i64>,
cloud_destroy_ts: Option<i64>,
state: i64,
}
Expand All @@ -42,6 +43,7 @@ impl TryFrom<ServerRow> for Server {
lan_ip: value.vlan_ip,
wan_ip: value.public_ip,
create_ts: value.create_ts,
install_complete_ts: value.install_complete_ts,
cloud_destroy_ts: value.cloud_destroy_ts,
state: unwrap!(ServerState::from_repr(value.state.try_into()?)),
})
Expand All @@ -61,6 +63,7 @@ pub async fn cluster_server_get(ctx: &OperationCtx, input: &Input) -> GlobalResu
vlan_ip,
public_ip,
create_ts,
install_complete_ts,
cloud_destroy_ts,
CASE
WHEN cloud_destroy_ts IS NOT NULL THEN 6 -- Destroyed
Expand Down
1 change: 1 addition & 0 deletions packages/core/services/cluster/src/ops/server/list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ pub async fn cluster_server_list(ctx: &OperationCtx, input: &Input) -> GlobalRes
s.vlan_ip,
s.public_ip,
s.create_ts,
s.install_complete_ts,
s.cloud_destroy_ts,
CASE
WHEN s.cloud_destroy_ts IS NOT NULL THEN 6 -- Destroyed
Expand Down
1 change: 1 addition & 0 deletions packages/core/services/cluster/src/ops/server/lost_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ async fn run_for_linode_account(
s.vlan_ip,
s.public_ip,
s.create_ts,
s.install_complete_ts,
s.cloud_destroy_ts,
CASE
WHEN s.cloud_destroy_ts IS NOT NULL THEN 6 -- Destroyed
Expand Down
1 change: 1 addition & 0 deletions packages/core/services/cluster/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ pub struct Server {
pub lan_ip: Option<IpAddr>,
pub wan_ip: Option<IpAddr>,
pub create_ts: i64,
pub install_complete_ts: Option<i64>,
pub cloud_destroy_ts: Option<i64>,
pub state: ServerState,
}
Expand Down
62 changes: 31 additions & 31 deletions packages/edge/infra/guard/server/src/routing/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,41 +54,41 @@ pub async fn route_api_request(
.await?;
tracing::info!(?servers_res, "servers");

let targets = if !servers_res.servers.is_empty() {
let port = ctx.config().server()?.rivet.api_public.port();
servers_res
.servers
.iter()
.map(|server| {
// For each server, create a target
// In a real implementation, use the actual server IP
// For demo purposes, use the loopback IP for all servers
Ok(RouteTarget {
actor_id: None,
server_id: Some(server.server_id),
host: unwrap!(server.lan_ip).to_string(),
port,
path: path.to_owned(),
})
let port = ctx.config().server()?.rivet.api_public.port();
let targets = servers_res
.servers
.iter()
// Only include servers that are installed
.filter(|server| server.install_complete_ts.is_some())
.map(|server| {
// For each server, create a target
Ok(RouteTarget {
actor_id: None,
server_id: Some(server.server_id),
host: unwrap!(server.lan_ip).to_string(),
port,
path: path.to_owned(),
})
.collect::<GlobalResult<Vec<_>>>()?
} else if let Some((host, port)) = ctx.config().server()?.rivet.edge_api_fallback_addr_lan() {
vec![RouteTarget {
actor_id: None,
server_id: None,
host,
port,
path: path.to_owned(),
}]
})
.collect::<GlobalResult<Vec<_>>>()?;

let targets = if targets.is_empty() {
if let Some((host, port)) = ctx.config().server()?.rivet.edge_api_fallback_addr_lan() {
vec![RouteTarget {
actor_id: None,
server_id: None,
host,
port,
path: path.to_owned(),
}]
} else {
// No API servers to route to
return Ok(None);
}
} else {
// No API servers to route to
Vec::new()
targets
};

if targets.is_empty() {
return Ok(None);
}

return Ok(Some(RoutingOutput::Route(RouteConfig {
targets,
timeout: RoutingTimeout {
Expand Down
Loading