diff --git a/Cargo.lock b/Cargo.lock index 1c5313d..f0a69ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -259,9 +259,9 @@ dependencies = [ [[package]] name = "code0-flow" -version = "0.0.25" +version = "0.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e10d39ec0c673c18749c0ff66c033806b68d1a99ec49cf1f4657fcd7c9d4b5" +checksum = "c27759004bf304f21b1d65677fbafd0a3e97a1be471fbe7a3aac5556eed3bc44" dependencies = [ "async-nats", "async-trait", @@ -2054,9 +2054,9 @@ dependencies = [ [[package]] name = "tucana" -version = "0.0.52" +version = "0.0.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e1cec14d8140417b330fffd1fb07f52cbd69063a4bd5688e63511b5bf8c8aa" +checksum = "31e81f5598a25b6a8f1618fcb25d1a8b2ddbfa38c8a9dcba16a798efe425a36e" dependencies = [ "pbjson", "pbjson-build", diff --git a/Cargo.toml b/Cargo.toml index 4bae34f..48dd4e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,8 +10,8 @@ log = "0.4.26" env_logger = "0.11.8" prost = "0.14.1" tonic = "0.14.1" -tucana = { version = "0.0.52", features = ["all"] } -code0-flow = { version = "0.0.25", features = ["flow_health", "flow_validator"] } +tucana = { version = "0.0.54", features = ["all"] } +code0-flow = { version = "0.0.26", features = ["flow_health"] } serde_json = "1.0.140" async-nats = "0.46.0" tonic-health = "0.14.1" diff --git a/src/sagittarius/action_service_client_impl.rs b/src/sagittarius/action_service_client_impl.rs deleted file mode 100644 index 6b0183e..0000000 --- a/src/sagittarius/action_service_client_impl.rs +++ /dev/null @@ -1,90 +0,0 @@ -use tonic::{Extensions, Request, Response, transport::Channel}; -use tucana::{ - sagittarius::{ - ActionLogoffRequest, ActionLogoffResponse, ActionLogonRequest, ActionLogonResponse, - action_service_client::ActionServiceClient, - }, - shared::RuntimeFunctionDefinition, -}; - -use crate::authorization::authorization::get_authorization_metadata; - -/// Struct representing a service for sending flows received from an `Action` to `Sagittarius`. -/// Part that informs `Sagittarius` -pub struct SagittariusActionClient { - client: ActionServiceClient, - token: String, -} - -/// Implementation of the service for sending flows received from an `Action` to `Sagittarius`. -/// Part that informs `Sagittarius` -impl SagittariusActionClient { - /// Creates a connection to `Sagittarius` - /// - /// Behavior: - /// Will panic when a connection can`t be established - pub async fn new(sagittarius_url: String, token: String) -> SagittariusActionClient { - let client = match ActionServiceClient::connect(sagittarius_url).await { - Ok(res) => { - log::info!("Successfully connected to Sagittarius Action Endpoint!"); - res - } - Err(err) => panic!( - "Failed to connect to Sagittarius (Action Endpoint): {:?}", - err - ), - }; - - SagittariusActionClient { client, token } - } - - /// Sends `Sagittarius` the information that a `Action` went online. - pub async fn send_action_logon_request( - &mut self, - identifier: String, - function_definition: Vec, - ) -> Result, tonic::Status> { - let request = Request::from_parts( - get_authorization_metadata(&self.token), - Extensions::new(), - ActionLogonRequest { - identifier, - function_definition, - }, - ); - - match self.client.logon(request).await { - Err(status) => { - log::error!("Received a {:?}, can't logon the Action!", status); - Err(status) - } - Ok(response) => { - print!("Successfully reported an Action logon to Sagittarius"); - Ok(response) - } - } - } - - /// Sends `Sagittarius` the information that a `Action` went offline. - pub async fn send_action_logoff_request( - &mut self, - identifier: String, - ) -> Result, tonic::Status> { - let request = Request::from_parts( - get_authorization_metadata(&self.token), - Extensions::new(), - ActionLogoffRequest { identifier }, - ); - - match self.client.logoff(request).await { - Err(status) => { - log::error!("Received a {status}, can't logoff the Action!"); - Err(status) - } - Ok(response) => { - log::info!("Successfully reported Action logoff to Sagittarius"); - Ok(response) - } - } - } -} diff --git a/src/sagittarius/flow_service_client_impl.rs b/src/sagittarius/flow_service_client_impl.rs index f329d6b..de99365 100644 --- a/src/sagittarius/flow_service_client_impl.rs +++ b/src/sagittarius/flow_service_client_impl.rs @@ -147,6 +147,9 @@ impl SagittariusFlowClient { }; } } + Data::ActionConfigurations(_action_configurations) => unimplemented!( + "This will be implemented in the alpha edition. Do not use while service is in MVP!" + ), } } diff --git a/src/sagittarius/mod.rs b/src/sagittarius/mod.rs index 33405d3..af74489 100644 --- a/src/sagittarius/mod.rs +++ b/src/sagittarius/mod.rs @@ -1,4 +1,3 @@ -pub mod action_service_client_impl; pub mod data_type_service_client_impl; pub mod flow_service_client_impl; pub mod flow_type_service_client_impl; diff --git a/src/sagittarius/test_execution_client_impl.rs b/src/sagittarius/test_execution_client_impl.rs index 6ee9e2f..1bd2d29 100644 --- a/src/sagittarius/test_execution_client_impl.rs +++ b/src/sagittarius/test_execution_client_impl.rs @@ -4,7 +4,6 @@ In some conditions Sagittarius can't connect to Aquila Thus Aquila sends a `Logon` request to connect to Sagittarius establishing the connection */ -use code0_flow::flow_validator::verify_flow; use futures::StreamExt; use prost::Message; use std::sync::Arc; @@ -100,39 +99,8 @@ impl SagittariusTestExecutionServiceClient { let uuid = uuid::Uuid::new_v4().to_string(); - if let Some(body) = &request.body - && let Err(rule_violations) = verify_flow(validation_flow.clone(), body.clone()) - { - let now = SystemTime::now() - .duration_since(SystemTime::UNIX_EPOCH) - .unwrap() - .as_millis() - .to_string(); - let log = Log { - kind: Some(tucana::sagittarius::log::Kind::ApplicationLog( - ApplicationLog { - message: rule_violations.to_string(), - level: String::from("error"), - timestamp: now, - }, - )), - }; - - let execution_result = ExecutionLogonRequest { - data: Some(Data::Response(TestExecutionResponse { - flow_id: request.flow_id, - execution_uuid: uuid, - result: None, - logs: vec![log], - })), - }; - - if let Err(err) = tx.send(execution_result).await { - log::error!("Failed to send ExecutionLogonResponse: {:?}", err); - } - continue; - } - + // TODO: When triangulum is ready, validate the body with this service + // Task: Add back body validation using triangulum let execution_flow = ExecutionFlow { flow_id: request.flow_id, input_value: request.body,