Public release release-e570b80c3a0f
Source commit: e570b80c3a0f4b152a9aa0e7bb8635b3eebcec27 Public tree identity: sha256:cff3388143eb2e9476804cfa1c1246e3a46d485d8aef90f2cdd4df45f2b69abf
This commit is contained in:
commit
0cf66aaa65
210 changed files with 78651 additions and 0 deletions
38
crates/clusterflux-dap/src/runtime_client/transport.rs
Normal file
38
crates/clusterflux-dap/src/runtime_client/transport.rs
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
use anyhow::{anyhow, Result};
|
||||
use clusterflux_control::ControlSession;
|
||||
use clusterflux_core::coordinator_wire_request;
|
||||
use serde_json::{json, Value};
|
||||
|
||||
use crate::virtual_model::AdapterState;
|
||||
|
||||
pub(crate) fn client_user_request(state: &AdapterState, mut request: Value) -> Value {
|
||||
let Some(session_secret) = state.client_session_secret.as_deref() else {
|
||||
return request;
|
||||
};
|
||||
if let Value::Object(fields) = &mut request {
|
||||
fields.remove("tenant");
|
||||
fields.remove("project");
|
||||
fields.remove("actor_user");
|
||||
}
|
||||
json!({
|
||||
"type": "authenticated",
|
||||
"session_secret": session_secret,
|
||||
"request": request,
|
||||
})
|
||||
}
|
||||
|
||||
pub(super) fn coordinator_request(addr: &str, request: Value) -> Result<Value> {
|
||||
let mut session = ControlSession::connect(addr)?;
|
||||
let wire_request = coordinator_wire_request("dap-1", request);
|
||||
let response = session.request(&wire_request)?;
|
||||
if response.get("type").and_then(Value::as_str) == Some("error") {
|
||||
return Err(anyhow!(
|
||||
"{}",
|
||||
response
|
||||
.get("message")
|
||||
.and_then(Value::as_str)
|
||||
.unwrap_or("coordinator returned an error")
|
||||
));
|
||||
}
|
||||
Ok(response)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue