From cecc8e7b2cbe98b2b76d1507c89f016f7c65eeb6 Mon Sep 17 00:00:00 2001 From: snow flurry Date: Sat, 24 Sep 2022 20:03:20 -0700 Subject: [PATCH] Limit data sent on /_yui/instances Don't send ssh key and user-data when listing all hosts, to save on data --- src/entity/instance_info.rs | 2 ++ src/yui/routes.rs | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/entity/instance_info.rs b/src/entity/instance_info.rs index 6f52585..c01d706 100644 --- a/src/entity/instance_info.rs +++ b/src/entity/instance_info.rs @@ -10,7 +10,9 @@ pub struct Model { pub id: u32, pub hostname: String, pub mac_address: String, + #[serde(skip_serializing_if = "Option::is_none")] pub ssh_keys: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub user_data: Option>, } diff --git a/src/yui/routes.rs b/src/yui/routes.rs index d891186..1f8a1a4 100644 --- a/src/yui/routes.rs +++ b/src/yui/routes.rs @@ -10,6 +10,7 @@ use crate::Instances; use rocket::serde::json::Json; use rocket_db_pools::Connection; use sea_orm::ActiveValue::{NotSet, Set}; +use sea_orm::QuerySelect; use sea_orm::{ ActiveModelTrait, ColumnTrait, EntityTrait, ModelTrait, PaginatorTrait, QueryFilter, }; @@ -97,7 +98,13 @@ pub async fn get_instances( db: Connection, _api: APIUser, ) -> Result, APIError> { - match instance_info::Entity::find().all(&*db).await { + match instance_info::Entity::find() + .column(instance_info::Column::Id) + .column(instance_info::Column::MacAddress) + .column(instance_info::Column::Hostname) + .all(&*db) + .await + { Ok(v) => Ok(Json(InstanceResponse::new(v))), Err(err) => Err(api_err!( InternalServerError,