From ca72b84576681f311711556355453b3154e3c5de Mon Sep 17 00:00:00 2001 From: Raphael Date: Sun, 12 Apr 2026 14:52:00 +0200 Subject: [PATCH] feat: added auth headers to runtime status request --- crates/base/src/client/mod.rs | 34 +++++++++++++++++++++++----------- crates/base/src/runner.rs | 1 + 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/crates/base/src/client/mod.rs b/crates/base/src/client/mod.rs index 623f354..0bc8c43 100644 --- a/crates/base/src/client/mod.rs +++ b/crates/base/src/client/mod.rs @@ -1,7 +1,11 @@ use std::time::{SystemTime, UNIX_EPOCH}; +use code0_flow::flow_service::auth::get_authorization_metadata; use tokio::time::sleep; -use tonic::transport::{Channel, Endpoint}; +use tonic::{ + Extensions, Request, + transport::{Channel, Endpoint}, +}; use tucana::{ aquila::{ RuntimeStatusUpdateRequest, runtime_status_service_client::RuntimeStatusServiceClient, @@ -15,6 +19,7 @@ pub struct DracoRuntimeStatusService { identifier: String, features: Vec, configs: Vec, + aquila_token: String, } const MAX_BACKOFF: u64 = 2000 * 60; @@ -67,12 +72,13 @@ pub async fn create_channel_with_retry(channel_name: &str, url: String) -> Chann impl DracoRuntimeStatusService { pub async fn from_url( aquila_url: String, + aquila_token: String, identifier: String, features: Vec, configs: Vec, ) -> Self { let channel = create_channel_with_retry("Aquila", aquila_url).await; - Self::new(channel, identifier, features, configs) + Self::new(channel, identifier, features, configs, aquila_token) } pub fn new( @@ -80,12 +86,14 @@ impl DracoRuntimeStatusService { identifier: String, features: Vec, configs: Vec, + aquila_token: String, ) -> Self { DracoRuntimeStatusService { channel, identifier, features, configs, + aquila_token, } } @@ -105,15 +113,19 @@ impl DracoRuntimeStatusService { } }; - let request = RuntimeStatusUpdateRequest { - status: Some(Status::AdapterRuntimeStatus(AdapterRuntimeStatus { - status: status.into(), - timestamp: timestamp as i64, - identifier: self.identifier.clone(), - features: self.features.clone(), - configurations: self.configs.clone(), - })), - }; + let request = Request::from_parts( + get_authorization_metadata(&self.aquila_token), + Extensions::new(), + RuntimeStatusUpdateRequest { + status: Some(Status::AdapterRuntimeStatus(AdapterRuntimeStatus { + status: status.into(), + timestamp: timestamp as i64, + identifier: self.identifier.clone(), + features: self.features.clone(), + configurations: self.configs.clone(), + })), + }, + ); match client.update(request).await { Ok(response) => { diff --git a/crates/base/src/runner.rs b/crates/base/src/runner.rs index 4a87ae9..0cbceb8 100644 --- a/crates/base/src/runner.rs +++ b/crates/base/src/runner.rs @@ -70,6 +70,7 @@ impl ServerRunner { runtime_status_service = Some( DracoRuntimeStatusService::from_url( config.aquila_url.clone(), + config.aquila_token.clone(), config.draco_variant.clone(), runtime_feature, runtime_config,