From 54e95c31f5e4fd3717af37137cc6cd7e61391a47 Mon Sep 17 00:00:00 2001 From: Sean Klein Date: Fri, 7 Oct 2022 12:19:24 -0400 Subject: [PATCH] Expose silo_id from endpoint --- nexus/db-model/src/silo_user.rs | 1 + nexus/tests/integration_tests/console_api.rs | 6 ++++-- nexus/tests/integration_tests/silos.rs | 14 ++++++++++---- nexus/types/src/external_api/views.rs | 3 +++ openapi/nexus.json | 8 +++++++- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/nexus/db-model/src/silo_user.rs b/nexus/db-model/src/silo_user.rs index 16fb6eb32f4..146d8c22bc8 100644 --- a/nexus/db-model/src/silo_user.rs +++ b/nexus/db-model/src/silo_user.rs @@ -33,6 +33,7 @@ impl From for views::User { id: user.id(), // TODO the use of external_id as display_name is temporary display_name: user.external_id, + silo_id: user.silo_id, } } } diff --git a/nexus/tests/integration_tests/console_api.rs b/nexus/tests/integration_tests/console_api.rs index 77e796507ee..ad4908dcca0 100644 --- a/nexus/tests/integration_tests/console_api.rs +++ b/nexus/tests/integration_tests/console_api.rs @@ -342,7 +342,8 @@ async fn test_session_me(cptestctx: &ControlPlaneTestContext) { priv_user, views::User { id: USER_TEST_PRIVILEGED.id(), - display_name: USER_TEST_PRIVILEGED.external_id.clone() + display_name: USER_TEST_PRIVILEGED.external_id.clone(), + silo_id: DEFAULT_SILO.id(), } ); @@ -359,7 +360,8 @@ async fn test_session_me(cptestctx: &ControlPlaneTestContext) { unpriv_user, views::User { id: USER_TEST_UNPRIVILEGED.id(), - display_name: USER_TEST_UNPRIVILEGED.external_id.clone() + display_name: USER_TEST_UNPRIVILEGED.external_id.clone(), + silo_id: DEFAULT_SILO.id(), } ); } diff --git a/nexus/tests/integration_tests/silos.rs b/nexus/tests/integration_tests/silos.rs index b264d263a66..fa010cb4913 100644 --- a/nexus/tests/integration_tests/silos.rs +++ b/nexus/tests/integration_tests/silos.rs @@ -844,11 +844,13 @@ async fn test_silo_users_list(cptestctx: &ControlPlaneTestContext) { vec![ views::User { id: USER_TEST_PRIVILEGED.id(), - display_name: USER_TEST_PRIVILEGED.external_id.clone() + display_name: USER_TEST_PRIVILEGED.external_id.clone(), + silo_id: *SILO_ID, }, views::User { id: USER_TEST_UNPRIVILEGED.id(), - display_name: USER_TEST_UNPRIVILEGED.external_id.clone() + display_name: USER_TEST_UNPRIVILEGED.external_id.clone(), + silo_id: *SILO_ID, }, ] ); @@ -877,15 +879,18 @@ async fn test_silo_users_list(cptestctx: &ControlPlaneTestContext) { vec![ views::User { id: USER_TEST_PRIVILEGED.id(), - display_name: USER_TEST_PRIVILEGED.external_id.clone() + display_name: USER_TEST_PRIVILEGED.external_id.clone(), + silo_id: *SILO_ID, }, views::User { id: USER_TEST_UNPRIVILEGED.id(), - display_name: USER_TEST_UNPRIVILEGED.external_id.clone() + display_name: USER_TEST_UNPRIVILEGED.external_id.clone(), + silo_id: *SILO_ID, }, views::User { id: new_silo_user_id, display_name: new_silo_user_external_id.into(), + silo_id: *SILO_ID, }, ] ); @@ -929,6 +934,7 @@ async fn test_silo_users_list(cptestctx: &ControlPlaneTestContext) { vec![views::User { id: new_silo_user_id, display_name: new_silo_user_name, + silo_id: silo.identity.id, }] ); diff --git a/nexus/types/src/external_api/views.rs b/nexus/types/src/external_api/views.rs index aa68b82ecc5..db26139e66f 100644 --- a/nexus/types/src/external_api/views.rs +++ b/nexus/types/src/external_api/views.rs @@ -317,6 +317,9 @@ pub struct User { pub id: Uuid, /** Human-readable name that can identify the user */ pub display_name: String, + + /** Uuid of the silo to which this user belongs */ + pub silo_id: Uuid, } // BUILT-IN USERS diff --git a/openapi/nexus.json b/openapi/nexus.json index 513901aa244..041584827ba 100644 --- a/openapi/nexus.json +++ b/openapi/nexus.json @@ -11188,11 +11188,17 @@ "id": { "type": "string", "format": "uuid" + }, + "silo_id": { + "description": "Uuid of the silo to which this user belongs", + "type": "string", + "format": "uuid" } }, "required": [ "display_name", - "id" + "id", + "silo_id" ] }, "UserBuiltin": {