diff --git a/fern/definition/servers/common.yml b/fern/definition/servers/common.yml index 9410abbbf3..f02cd63400 100644 --- a/fern/definition/servers/common.yml +++ b/fern/definition/servers/common.yml @@ -9,7 +9,6 @@ types: id: uuid environment: uuid datacenter: uuid - cluster: uuid tags: unknown runtime: Runtime network: Network diff --git a/lib/chirp-workflow/core/src/worker.rs b/lib/chirp-workflow/core/src/worker.rs index 5123aaff8e..55d7f22d1a 100644 --- a/lib/chirp-workflow/core/src/worker.rs +++ b/lib/chirp-workflow/core/src/worker.rs @@ -9,7 +9,7 @@ use crate::{ util, }; -const TICK_INTERVAL: Duration = Duration::from_secs(30); +const TICK_INTERVAL: Duration = Duration::from_secs(5); /// Used to spawn a new thread that indefinitely polls the database for new workflows. Only pulls workflows /// that are registered in its registry. After pulling, the workflows are ran and their state is written to diff --git a/sdks/full/go/servers/types.go b/sdks/full/go/servers/types.go index 2ef73615a0..67aa8f4294 100644 --- a/sdks/full/go/servers/types.go +++ b/sdks/full/go/servers/types.go @@ -434,7 +434,6 @@ type Server struct { Id uuid.UUID `json:"id"` Environment uuid.UUID `json:"environment"` Datacenter uuid.UUID `json:"datacenter"` - Cluster uuid.UUID `json:"cluster"` Tags interface{} `json:"tags,omitempty"` Runtime *Runtime `json:"runtime,omitempty"` Network *Network `json:"network,omitempty"` diff --git a/sdks/full/openapi/openapi.yml b/sdks/full/openapi/openapi.yml index e1c96cca97..f95c95aa0c 100644 --- a/sdks/full/openapi/openapi.yml +++ b/sdks/full/openapi/openapi.yml @@ -14408,9 +14408,6 @@ components: datacenter: type: string format: uuid - cluster: - type: string - format: uuid tags: {} runtime: $ref: '#/components/schemas/ServersRuntime' @@ -14436,7 +14433,6 @@ components: - id - environment - datacenter - - cluster - tags - runtime - network diff --git a/sdks/full/openapi_compat/openapi.yml b/sdks/full/openapi_compat/openapi.yml index b2266ab8bc..4980765b25 100644 --- a/sdks/full/openapi_compat/openapi.yml +++ b/sdks/full/openapi_compat/openapi.yml @@ -4538,6 +4538,20 @@ components: required: - build type: object + ServersDatacenter: + properties: + id: + format: uuid + type: string + name: + type: string + slug: + type: string + required: + - id + - slug + - name + type: object ServersDestroyServerResponse: properties: {} type: object @@ -4719,9 +4733,6 @@ components: type: object ServersServer: properties: - cluster: - format: uuid - type: string connectable_at: format: int64 type: integer @@ -4756,7 +4767,6 @@ components: - id - environment - datacenter - - cluster - tags - runtime - network diff --git a/sdks/full/rust-cli/docs/ServersServer.md b/sdks/full/rust-cli/docs/ServersServer.md index b78be0ce99..d4b62794e8 100644 --- a/sdks/full/rust-cli/docs/ServersServer.md +++ b/sdks/full/rust-cli/docs/ServersServer.md @@ -4,7 +4,6 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**cluster** | [**uuid::Uuid**](uuid::Uuid.md) | | **connectable_at** | Option<**i64**> | | [optional] **created_at** | **i64** | | **datacenter** | [**uuid::Uuid**](uuid::Uuid.md) | | diff --git a/sdks/full/rust-cli/src/models/servers_server.rs b/sdks/full/rust-cli/src/models/servers_server.rs index 249a878178..a1f2726af8 100644 --- a/sdks/full/rust-cli/src/models/servers_server.rs +++ b/sdks/full/rust-cli/src/models/servers_server.rs @@ -13,8 +13,6 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersServer { - #[serde(rename = "cluster")] - pub cluster: uuid::Uuid, #[serde(rename = "connectable_at", skip_serializing_if = "Option::is_none")] pub connectable_at: Option, #[serde(rename = "created_at")] @@ -42,9 +40,8 @@ pub struct ServersServer { } impl ServersServer { - pub fn new(cluster: uuid::Uuid, created_at: i64, datacenter: uuid::Uuid, environment: uuid::Uuid, id: uuid::Uuid, lifecycle: crate::models::ServersLifecycle, network: crate::models::ServersNetwork, resources: crate::models::ServersResources, runtime: crate::models::ServersRuntime, tags: Option) -> ServersServer { + pub fn new(created_at: i64, datacenter: uuid::Uuid, environment: uuid::Uuid, id: uuid::Uuid, lifecycle: crate::models::ServersLifecycle, network: crate::models::ServersNetwork, resources: crate::models::ServersResources, runtime: crate::models::ServersRuntime, tags: Option) -> ServersServer { ServersServer { - cluster, connectable_at: None, created_at, datacenter, diff --git a/sdks/full/rust/docs/ServersServer.md b/sdks/full/rust/docs/ServersServer.md index b78be0ce99..d4b62794e8 100644 --- a/sdks/full/rust/docs/ServersServer.md +++ b/sdks/full/rust/docs/ServersServer.md @@ -4,7 +4,6 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**cluster** | [**uuid::Uuid**](uuid::Uuid.md) | | **connectable_at** | Option<**i64**> | | [optional] **created_at** | **i64** | | **datacenter** | [**uuid::Uuid**](uuid::Uuid.md) | | diff --git a/sdks/full/rust/src/models/servers_server.rs b/sdks/full/rust/src/models/servers_server.rs index 249a878178..a1f2726af8 100644 --- a/sdks/full/rust/src/models/servers_server.rs +++ b/sdks/full/rust/src/models/servers_server.rs @@ -13,8 +13,6 @@ #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] pub struct ServersServer { - #[serde(rename = "cluster")] - pub cluster: uuid::Uuid, #[serde(rename = "connectable_at", skip_serializing_if = "Option::is_none")] pub connectable_at: Option, #[serde(rename = "created_at")] @@ -42,9 +40,8 @@ pub struct ServersServer { } impl ServersServer { - pub fn new(cluster: uuid::Uuid, created_at: i64, datacenter: uuid::Uuid, environment: uuid::Uuid, id: uuid::Uuid, lifecycle: crate::models::ServersLifecycle, network: crate::models::ServersNetwork, resources: crate::models::ServersResources, runtime: crate::models::ServersRuntime, tags: Option) -> ServersServer { + pub fn new(created_at: i64, datacenter: uuid::Uuid, environment: uuid::Uuid, id: uuid::Uuid, lifecycle: crate::models::ServersLifecycle, network: crate::models::ServersNetwork, resources: crate::models::ServersResources, runtime: crate::models::ServersRuntime, tags: Option) -> ServersServer { ServersServer { - cluster, connectable_at: None, created_at, datacenter, diff --git a/sdks/full/typescript/archive.tgz b/sdks/full/typescript/archive.tgz index 77e5b7e156..253bc8e7ae 100644 --- a/sdks/full/typescript/archive.tgz +++ b/sdks/full/typescript/archive.tgz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:82df2a905701c5bcb5fb8e50c58ea44b77cfe8092a4f380a557de09ecfdd2e81 -size 541152 +oid sha256:2b9339798920acb8c20828d8ed5b9511bd69704f5e6af617b37a18933321e349 +size 550175 diff --git a/sdks/runtime/typescript/archive.tgz b/sdks/runtime/typescript/archive.tgz index 58389ef567..c714f49d1b 100644 --- a/sdks/runtime/typescript/archive.tgz +++ b/sdks/runtime/typescript/archive.tgz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:51ae717b57567145b72c5466391cb5f491828b9e3067b9760efb5d3f88c42b7b -size 282637 +oid sha256:4cd76fca54146ddbe59bd51809c56abef3ba2e9eb6fc27e1ba6d2264e821303d +size 282629 diff --git a/svc/api/servers/src/route/mod.rs b/svc/api/servers/src/route/mod.rs index a1a6377c53..86fd6ca744 100644 --- a/svc/api/servers/src/route/mod.rs +++ b/svc/api/servers/src/route/mod.rs @@ -28,16 +28,38 @@ define_router! { "games" / Uuid / "environments" / Uuid / "servers": { GET: servers::list_servers( query: servers::ListQuery, + rate_limit: { + buckets: [ + { count: 200, bucket: duration::minutes(1) }, + ], + }, ), POST: servers::create( body: models::ServersCreateServerRequest, + rate_limit: { + buckets: [ + { count: 100, bucket: duration::minutes(1) }, + ], + }, ), }, "games" / Uuid / "environments" / Uuid / "servers" / Uuid: { - GET: servers::get(), + GET: servers::get( + rate_limit: { + buckets: [ + { count: 120, bucket: duration::minutes(1) }, + ], + }, + + ), DELETE: servers::destroy( query: servers::DeleteQuery, + rate_limit: { + buckets: [ + { count: 200, bucket: duration::minutes(1) }, + ], + }, ), }, @@ -52,11 +74,22 @@ define_router! { "games" / Uuid / "environments" / Uuid / "builds": { GET: builds::list( query: builds::GetQuery, + rate_limit: { + buckets: [ + { count: 200, bucket: duration::minutes(1) }, + ], + }, ), }, "games" / Uuid / "environments" / Uuid / "builds" / Uuid: { - GET: builds::get(), + GET: builds::get( + rate_limit: { + buckets: [ + { count: 100, bucket: duration::minutes(1) }, + ], + }, + ), }, "games" / Uuid / "environments" / Uuid / "builds" / Uuid / "tags": { @@ -73,7 +106,13 @@ define_router! { // MARK: Datacenters "games" / Uuid / "environments" / Uuid / "datacenters": { - GET: dc::list(), + GET: dc::list( + rate_limit: { + buckets: [ + { count: 100, bucket: duration::minutes(1) }, + ], + }, + ), }, }, } diff --git a/svc/pkg/ds/src/ops/server/get.rs b/svc/pkg/ds/src/ops/server/get.rs index 3ea576446f..f3cb13aa41 100644 --- a/svc/pkg/ds/src/ops/server/get.rs +++ b/svc/pkg/ds/src/ops/server/get.rs @@ -160,8 +160,10 @@ pub async fn get(ctx: &OperationCtx, input: &Input) -> GlobalResult { ), )?; - let servers = server_rows - .into_iter() + let servers = input + .server_ids + .iter() + .filter_map(|server_id| server_rows.iter().find(|x| x.server_id == *server_id)) .map(|server| { let server_nomad = unwrap!(server_nomad_rows .iter() @@ -205,14 +207,14 @@ pub async fn get(ctx: &OperationCtx, input: &Input) -> GlobalResult { env_id: server.env_id, datacenter_id: server.datacenter_id, cluster_id: server.cluster_id, - tags: server.tags.0, + tags: server.tags.0.clone(), resources: ServerResources { cpu_millicores: server.resources_cpu_millicores.try_into()?, memory_mib: server.resources_memory_mib.try_into()?, }, kill_timeout_ms: server.kill_timeout_ms, - args: server.args, - environment: server.environment.0, + args: server.args.clone(), + environment: server.environment.0.clone(), image_id: server.image_id, network_mode: unwrap!(NetworkMode::from_repr(server.network_mode.try_into()?)), network_ports: ports, diff --git a/svc/pkg/ds/src/types.rs b/svc/pkg/ds/src/types.rs index b2ab043c84..f33ca19fa6 100644 --- a/svc/pkg/ds/src/types.rs +++ b/svc/pkg/ds/src/types.rs @@ -95,7 +95,6 @@ impl ApiTryFrom for models::ServersServer { id: value.server_id, environment: value.env_id, datacenter: value.datacenter_id, - cluster: value.cluster_id, created_at: value.create_ts, started_at: value.start_ts, connectable_at: value.connectable_ts,