diff --git a/out/openapi.json b/out/openapi.json index 27d4727d5d..d83866ac8b 100644 --- a/out/openapi.json +++ b/out/openapi.json @@ -1271,16 +1271,16 @@ "type": "object", "required": [ "url", - "headers", "request_lifespan", "slots_per_runner", - "min_runners", - "max_runners", - "runners_margin" + "max_runners" ], "properties": { "headers": { - "type": "object", + "type": [ + "object", + "null" + ], "additionalProperties": { "type": "string" }, @@ -1294,7 +1294,10 @@ "minimum": 0 }, "min_runners": { - "type": "integer", + "type": [ + "integer", + "null" + ], "format": "int32", "minimum": 0 }, @@ -1305,7 +1308,10 @@ "minimum": 0 }, "runners_margin": { - "type": "integer", + "type": [ + "integer", + "null" + ], "format": "int32", "minimum": 0 }, diff --git a/packages/common/api-types/src/namespaces/mod.rs b/packages/common/api-types/src/namespaces/mod.rs index d17e233fbf..221f2ca570 100644 --- a/packages/common/api-types/src/namespaces/mod.rs +++ b/packages/common/api-types/src/namespaces/mod.rs @@ -1 +1,2 @@ pub mod list; +pub mod runner_configs; diff --git a/packages/common/api-types/src/namespaces/runner_configs.rs b/packages/common/api-types/src/namespaces/runner_configs.rs new file mode 100644 index 0000000000..040587cea8 --- /dev/null +++ b/packages/common/api-types/src/namespaces/runner_configs.rs @@ -0,0 +1,43 @@ +use std::collections::HashMap; + +use gas::prelude::*; +use utoipa::ToSchema; + +#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)] +#[serde(rename_all = "snake_case")] +pub enum RunnerConfig { + Serverless { + url: String, + headers: Option>, + /// Seconds. + request_lifespan: u32, + slots_per_runner: u32, + min_runners: Option, + max_runners: u32, + runners_margin: Option, + }, +} + +impl Into for RunnerConfig { + fn into(self) -> rivet_types::runner_configs::RunnerConfig { + match self { + RunnerConfig::Serverless { + url, + headers, + request_lifespan, + slots_per_runner, + min_runners, + max_runners, + runners_margin, + } => rivet_types::runner_configs::RunnerConfig::Serverless { + url, + headers: headers.unwrap_or_default(), + request_lifespan, + slots_per_runner, + min_runners: min_runners.unwrap_or_default(), + max_runners, + runners_margin: runners_margin.unwrap_or_default(), + }, + } + } +} diff --git a/packages/core/api-peer/src/runner_configs.rs b/packages/core/api-peer/src/runner_configs.rs index 2623cc9d3a..15dcd54a1e 100644 --- a/packages/core/api-peer/src/runner_configs.rs +++ b/packages/core/api-peer/src/runner_configs.rs @@ -87,7 +87,7 @@ pub struct UpsertPath { #[derive(Deserialize, Serialize)] #[serde(deny_unknown_fields)] -pub struct UpsertRequest(pub rivet_types::runner_configs::RunnerConfig); +pub struct UpsertRequest(pub rivet_api_types::namespaces::runner_configs::RunnerConfig); #[derive(Deserialize, Serialize, ToSchema)] #[schema(as = RunnerConfigsUpsertResponse)] @@ -109,7 +109,7 @@ pub async fn upsert( ctx.op(namespace::ops::runner_config::upsert::Input { namespace_id: namespace.namespace_id, name: path.runner_name, - config: body.0, + config: body.0.into(), }) .await?; diff --git a/packages/core/api-public/src/runner_configs.rs b/packages/core/api-public/src/runner_configs.rs index cb5818e7c4..385211568b 100644 --- a/packages/core/api-public/src/runner_configs.rs +++ b/packages/core/api-public/src/runner_configs.rs @@ -100,7 +100,7 @@ async fn list_inner( #[serde(deny_unknown_fields)] #[schema(as = RunnerConfigsUpsertRequest)] pub struct UpsertRequest( - #[schema(inline)] HashMap, + #[schema(inline)] HashMap, ); #[utoipa::path( @@ -151,7 +151,7 @@ async fn upsert_inner( ctx.op(namespace::ops::runner_config::upsert_default::Input { namespace_id: namespace.namespace_id, name: path.runner_name.clone(), - config: default_config, + config: default_config.into(), }) .await?; }