diff --git a/control_plane/src/bin/attachment_service.rs b/control_plane/src/bin/attachment_service.rs index c40f59c43b..a98b3be99b 100644 --- a/control_plane/src/bin/attachment_service.rs +++ b/control_plane/src/bin/attachment_service.rs @@ -8,6 +8,7 @@ use anyhow::anyhow; use clap::Parser; use hyper::StatusCode; use hyper::{Body, Request, Response}; +use pageserver_api::control_api::*; use serde::{Deserialize, Serialize}; use std::path::{Path, PathBuf}; use std::{collections::HashMap, sync::Arc}; @@ -108,22 +109,6 @@ fn get_state(request: &Request) -> &State { .as_ref() } -#[derive(Serialize, Deserialize)] -struct ReAttachRequest { - node_id: NodeId, -} - -#[derive(Serialize, Deserialize)] -struct ReAttachResponseTenant { - id: TenantId, - generation: u32, -} - -#[derive(Serialize, Deserialize)] -struct ReAttachResponse { - tenants: Vec, -} - /// Pageserver calls into this on startup, to learn which tenants it should attach async fn handle_re_attach(mut req: Request) -> Result, ApiError> { let reattach_req = json_request::(&mut req).await?; @@ -152,28 +137,6 @@ async fn handle_re_attach(mut req: Request) -> Result, ApiE json_response(StatusCode::OK, response) } -#[derive(Serialize, Deserialize)] -struct ValidateRequestTenant { - id: TenantId, - gen: u32, -} - -#[derive(Serialize, Deserialize)] -struct ValidateRequest { - tenants: Vec, -} - -#[derive(Serialize, Deserialize)] -struct ValidateResponse { - tenants: Vec, -} - -#[derive(Serialize, Deserialize)] -struct ValidateResponseTenant { - id: TenantId, - valid: bool, -} - /// Pageserver calls into this before doing deletions, to confirm that it still /// holds the latest generation for the tenants with deletions enqueued async fn handle_validate(mut req: Request) -> Result, ApiError> { diff --git a/libs/pageserver_api/src/control_api.rs b/libs/pageserver_api/src/control_api.rs new file mode 100644 index 0000000000..976ca0ee4a --- /dev/null +++ b/libs/pageserver_api/src/control_api.rs @@ -0,0 +1,41 @@ +/// Types in this file are for pageserver's upward-facing API calls to the control plane +use serde::{Deserialize, Serialize}; +use utils::id::{NodeId, TenantId}; + +#[derive(Serialize, Deserialize)] +struct ReAttachRequest { + node_id: NodeId, +} + +#[derive(Serialize, Deserialize)] +struct ReAttachResponseTenant { + id: TenantId, + generation: u32, +} + +#[derive(Serialize, Deserialize)] +struct ReAttachResponse { + tenants: Vec, +} + +#[derive(Serialize, Deserialize)] +struct ValidateRequestTenant { + id: TenantId, + gen: u32, +} + +#[derive(Serialize, Deserialize)] +struct ValidateRequest { + tenants: Vec, +} + +#[derive(Serialize, Deserialize)] +struct ValidateResponse { + tenants: Vec, +} + +#[derive(Serialize, Deserialize)] +struct ValidateResponseTenant { + id: TenantId, + valid: bool, +} diff --git a/libs/pageserver_api/src/lib.rs b/libs/pageserver_api/src/lib.rs index 4890d54f36..d844021785 100644 --- a/libs/pageserver_api/src/lib.rs +++ b/libs/pageserver_api/src/lib.rs @@ -1,6 +1,7 @@ use const_format::formatcp; /// Public API types +pub mod control_api; pub mod models; pub mod reltag;