Skip to content

Commit 23e3809

Browse files
committed
refactor(cli): share file-backed plugin activation
Signed-off-by: Bryan Bednarski <bbednarski@nvidia.com>
1 parent d8266b2 commit 23e3809

9 files changed

Lines changed: 330 additions & 227 deletions

File tree

crates/cli/src/commands/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,8 @@ async fn run_default(
225225
)?;
226226
server::serve_with_dynamic(
227227
resolved.gateway,
228+
resolved.plugin_had_input,
229+
resolved.plugin_diagnostics,
228230
dynamic_plugins,
229231
managed_bootstrap,
230232
runtime_args.ready_file.as_deref(),

crates/cli/src/configuration/mod.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ fn persistent_bootstrap_fingerprint(
260260
"max_hook_payload_bytes": gateway.max_hook_payload_bytes,
261261
"max_passthrough_body_bytes": gateway.max_passthrough_body_bytes,
262262
"plugin_idle_timeout_secs": idle_timeout_secs,
263+
"plugin_had_input": resolved.plugin_had_input,
263264
"dynamic_plugins": dynamic_plugins,
264265
"dynamic_plugin_policy": format!("{:?}", resolved.dynamic_plugin_policy),
265266
});
@@ -1301,6 +1302,8 @@ struct PluginTomlConfig {
13011302
dynamic_plugin_policy: DynamicPluginHostPolicy,
13021303
contributing_sources: Vec<PathBuf>,
13031304
selected_sources: Vec<PathBuf>,
1305+
had_input: bool,
1306+
diagnostics: Vec<nemo_relay::plugin::ConfigDiagnostic>,
13041307
}
13051308

13061309
#[cfg(test)]
@@ -1410,6 +1413,8 @@ where
14101413
dynamic_plugin_policy: resolved.dynamic_plugin_policy,
14111414
contributing_sources,
14121415
selected_sources: resolved.selected_sources,
1416+
had_input: resolved.had_input,
1417+
diagnostics: resolved.diagnostics,
14131418
}))
14141419
}
14151420

@@ -1423,6 +1428,8 @@ fn apply_plugin_toml_config(resolved: &mut ResolvedConfig, plugin_toml: Option<P
14231428
resolved.dynamic_plugins = plugin_toml.dynamic_plugins;
14241429
resolved.dynamic_plugin_policy = plugin_toml.dynamic_plugin_policy;
14251430
resolved.plugin_selected_sources = plugin_toml.selected_sources;
1431+
resolved.plugin_had_input = plugin_toml.had_input;
1432+
resolved.plugin_diagnostics = plugin_toml.diagnostics;
14261433
}
14271434

14281435
#[cfg(test)]

crates/cli/src/configuration/types.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use std::path::PathBuf;
88

99
use axum::http::HeaderMap;
1010
use nemo_relay::logging::LoggingConfig;
11+
use nemo_relay::plugin::ConfigDiagnostic;
1112
use serde::Serialize;
1213
use serde_json::{Map, Value};
1314
use strum::{Display, IntoStaticStr};
@@ -64,6 +65,8 @@ pub(crate) struct ResolvedConfig {
6465
pub(crate) dynamic_plugins: Vec<ResolvedDynamicPluginConfig>,
6566
pub(crate) dynamic_plugin_policy: DynamicPluginHostPolicy,
6667
pub(crate) plugin_selected_sources: Vec<PathBuf>,
68+
pub(crate) plugin_had_input: bool,
69+
pub(crate) plugin_diagnostics: Vec<ConfigDiagnostic>,
6770
pub(crate) bootstrap_fingerprint: Option<String>,
6871
}
6972

crates/cli/src/process/launcher.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use nemo_relay::observability::OpenTelemetryType;
99
use nemo_relay::observability::plugin_component::{
1010
AtifStorageConfig, AtofSinkSectionConfig, OBSERVABILITY_PLUGIN_KIND, ObservabilityConfig,
1111
};
12-
use nemo_relay::plugin::PluginConfig;
12+
use nemo_relay::plugin::{ConfigDiagnostic, PluginConfig};
1313
use serde_json::Value;
1414
#[cfg(test)]
1515
use serde_json::json;
@@ -137,6 +137,8 @@ impl TransparentRun {
137137
let result = execute_live_run_with_dynamic(
138138
self.listener,
139139
self.resolved.gateway,
140+
self.resolved.plugin_had_input,
141+
self.resolved.plugin_diagnostics,
140142
self.dynamic_plugins,
141143
&self.gateway_url,
142144
self.prepared,
@@ -178,12 +180,23 @@ async fn execute_live_run(
178180
gateway_url: &str,
179181
prepared: PreparedAgentLaunch,
180182
) -> Result<ExitCode, CliError> {
181-
execute_live_run_with_dynamic(listener, gateway_config, Vec::new(), gateway_url, prepared).await
183+
execute_live_run_with_dynamic(
184+
listener,
185+
gateway_config,
186+
false,
187+
Vec::new(),
188+
Vec::new(),
189+
gateway_url,
190+
prepared,
191+
)
192+
.await
182193
}
183194

184195
async fn execute_live_run_with_dynamic(
185196
listener: TcpListener,
186197
gateway_config: GatewayConfig,
198+
plugin_had_input: bool,
199+
plugin_diagnostics: Vec<ConfigDiagnostic>,
187200
dynamic_plugins: Vec<ActiveDynamicPluginComponent>,
188201
gateway_url: &str,
189202
prepared: PreparedAgentLaunch,
@@ -193,6 +206,8 @@ async fn execute_live_run_with_dynamic(
193206
let running_server = RunningGateway::start(
194207
listener,
195208
gateway_config,
209+
plugin_had_input,
210+
plugin_diagnostics,
196211
dynamic_plugins,
197212
bootstrap_fingerprint.clone(),
198213
proxy_credential,
@@ -365,6 +380,8 @@ impl RunningGateway {
365380
fn start(
366381
listener: TcpListener,
367382
config: crate::configuration::GatewayConfig,
383+
plugin_had_input: bool,
384+
plugin_diagnostics: Vec<ConfigDiagnostic>,
368385
dynamic_plugins: Vec<ActiveDynamicPluginComponent>,
369386
bootstrap_fingerprint: String,
370387
proxy_credential: crate::provider_auth::TransparentProxyCredential,
@@ -374,6 +391,8 @@ impl RunningGateway {
374391
server::serve_transparent_listener_with_dynamic(
375392
listener,
376393
config,
394+
plugin_had_input,
395+
plugin_diagnostics,
377396
dynamic_plugins,
378397
bootstrap_fingerprint,
379398
proxy_credential,

0 commit comments

Comments
 (0)