mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-03 01:40:21 +08:00
Implement transport profile routing
This commit is contained in:
@@ -210,7 +210,7 @@ async fn admin_gemini_files_upload_single_key(
|
||||
proxy: state
|
||||
.resolve_transport_proxy_snapshot_with_tunnel_affinity(&transport)
|
||||
.await,
|
||||
tls_profile: state.resolve_transport_tls_profile(&transport),
|
||||
transport_profile: state.resolve_transport_profile(&transport),
|
||||
timeouts: state.resolve_transport_execution_timeouts(&transport),
|
||||
};
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ async fn execute_antigravity_quota_plan(
|
||||
provider_api_format: "antigravity:fetch_available_models".to_string(),
|
||||
model_name: Some("fetchAvailableModels".to_string()),
|
||||
proxy,
|
||||
tls_profile: state.resolve_transport_tls_profile(transport),
|
||||
transport_profile: state.resolve_transport_profile(transport),
|
||||
timeouts,
|
||||
};
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ pub(super) async fn execute_codex_quota_plan(
|
||||
provider_api_format: "openai:responses".to_string(),
|
||||
model_name: Some("codex-wham-usage".to_string()),
|
||||
proxy,
|
||||
tls_profile: state.resolve_transport_tls_profile(transport),
|
||||
transport_profile: state.resolve_transport_profile(transport),
|
||||
timeouts,
|
||||
};
|
||||
execute_provider_quota_plan(state, transport, plan, "codex").await
|
||||
|
||||
@@ -103,7 +103,7 @@ pub(super) async fn execute_kiro_quota_plan(
|
||||
provider_api_format: "kiro:usage".to_string(),
|
||||
model_name: Some("kiro-usage-limits".to_string()),
|
||||
proxy,
|
||||
tls_profile: state.resolve_transport_tls_profile(transport),
|
||||
transport_profile: state.resolve_transport_profile(transport),
|
||||
timeouts,
|
||||
};
|
||||
|
||||
|
||||
@@ -194,7 +194,6 @@ pub(super) async fn execute_provider_quota_plan(
|
||||
key_id = %transport.key.id,
|
||||
endpoint_id = %transport.endpoint.id,
|
||||
url = %plan.url,
|
||||
tls_profile = ?plan.tls_profile.as_deref(),
|
||||
proxy_source = ?proxy_source,
|
||||
proxy_node_id = ?proxy_node_id,
|
||||
proxy_url_present,
|
||||
|
||||
@@ -179,7 +179,7 @@ async fn admin_provider_ops_execute_request(
|
||||
provider_api_format: "provider_ops:verify".to_string(),
|
||||
model_name: Some("verify-auth".to_string()),
|
||||
proxy: proxy_snapshot.cloned(),
|
||||
tls_profile: None,
|
||||
transport_profile: None,
|
||||
timeouts: Some(ExecutionTimeouts {
|
||||
connect_ms: Some(ADMIN_PROVIDER_OPS_VERIFY_TIMEOUT_MS),
|
||||
read_ms: Some(ADMIN_PROVIDER_OPS_VERIFY_TIMEOUT_MS),
|
||||
|
||||
@@ -849,7 +849,7 @@ async fn provider_query_execute_kiro_test_candidate(
|
||||
proxy: state
|
||||
.resolve_transport_proxy_snapshot_with_tunnel_affinity(&transport)
|
||||
.await,
|
||||
tls_profile: state.resolve_transport_tls_profile(&transport),
|
||||
transport_profile: state.resolve_transport_profile(&transport),
|
||||
timeouts: state.resolve_transport_execution_timeouts(&transport),
|
||||
};
|
||||
|
||||
@@ -1214,7 +1214,7 @@ async fn provider_query_execute_standard_test_candidate(
|
||||
proxy: state
|
||||
.resolve_transport_proxy_snapshot_with_tunnel_affinity(&transport)
|
||||
.await,
|
||||
tls_profile: state.resolve_transport_tls_profile(&transport),
|
||||
transport_profile: state.resolve_transport_profile(&transport),
|
||||
timeouts: state.resolve_transport_execution_timeouts(&transport),
|
||||
};
|
||||
|
||||
|
||||
@@ -44,6 +44,8 @@ pub(crate) struct AdminProviderKeyCreateRequest {
|
||||
pub(crate) model_include_patterns: Option<Vec<String>>,
|
||||
#[serde(default)]
|
||||
pub(crate) model_exclude_patterns: Option<Vec<String>>,
|
||||
#[serde(default)]
|
||||
pub(crate) fingerprint: Option<serde_json::Value>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
|
||||
@@ -170,7 +170,7 @@ pub(crate) async fn build_admin_create_provider_key_record(
|
||||
normalize_string_list(payload.allowed_models).map(|value| json!(value)),
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
normalize_json_object(payload.fingerprint, "fingerprint")?,
|
||||
)
|
||||
.map_err(|err| err.to_string())?;
|
||||
key.note = payload
|
||||
|
||||
@@ -221,6 +221,13 @@ impl<'a> AdminAppState<'a> {
|
||||
crate::provider_transport::resolve_transport_tls_profile(transport)
|
||||
}
|
||||
|
||||
pub(crate) fn resolve_transport_profile(
|
||||
&self,
|
||||
transport: &AdminGatewayProviderTransportSnapshot,
|
||||
) -> Option<aether_contracts::ResolvedTransportProfile> {
|
||||
crate::provider_transport::resolve_transport_profile(transport)
|
||||
}
|
||||
|
||||
pub(crate) fn resolve_transport_execution_timeouts(
|
||||
&self,
|
||||
transport: &AdminGatewayProviderTransportSnapshot,
|
||||
|
||||
@@ -1261,12 +1261,16 @@ fn build_tunnel_probe_relay_envelope(
|
||||
timeout_secs: u64,
|
||||
) -> Result<Vec<u8>, String> {
|
||||
let meta = crate::tunnel::tunnel_protocol::RequestMeta {
|
||||
provider_id: None,
|
||||
endpoint_id: None,
|
||||
key_id: None,
|
||||
method: "GET".to_string(),
|
||||
url: probe_url.trim().to_string(),
|
||||
headers: std::collections::HashMap::new(),
|
||||
timeout: timeout_secs,
|
||||
follow_redirects: Some(false),
|
||||
http1_only: false,
|
||||
transport_profile: None,
|
||||
};
|
||||
let meta_bytes = serde_json::to_vec(&meta)
|
||||
.map_err(|error| format!("encode tunnel probe metadata failed: {error}"))?;
|
||||
|
||||
@@ -163,7 +163,7 @@ pub(super) async fn maybe_build_local_test_connection_route_response(
|
||||
if transport.provider.proxy.is_some()
|
||||
|| transport.endpoint.proxy.is_some()
|
||||
|| transport.key.proxy.is_some()
|
||||
|| crate::provider_transport::resolve_transport_tls_profile(&transport).is_some()
|
||||
|| crate::provider_transport::resolve_transport_profile(&transport).is_some()
|
||||
{
|
||||
return None;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user