features: app engine #1
| @ -1,5 +1,5 @@ | ||||
| use super::Error; | ||||
| use crate::constants::{ACCOUNT, ACTIVE_APP, APP_NODE, NEW_APP_REQ}; | ||||
| use crate::constants::{ACCOUNT, ACTIVE_APP, APP_NODE, DELETED_APP, NEW_APP_REQ}; | ||||
| use crate::db; | ||||
| use crate::db::general::Report; | ||||
| use crate::old_brain; | ||||
| @ -158,24 +158,47 @@ impl AppNodeWithReports { | ||||
| 
 | ||||
| #[derive(Debug, Serialize, Deserialize)] | ||||
| pub struct ActiveApp { | ||||
|     id: RecordId, | ||||
|     pub id: RecordId, | ||||
|     #[serde(rename = "in")] | ||||
|     admin: RecordId, | ||||
|     pub admin: RecordId, | ||||
|     #[serde(rename = "out")] | ||||
|     app_node: RecordId, | ||||
|     app_name: String, | ||||
|     mapped_ports: Vec<(u64, u64)>, | ||||
|     host_ipv4: String, | ||||
|     vcpus: u64, | ||||
|     memory_mb: u64, | ||||
|     disk_size_gb: u64, | ||||
|     created_at: Datetime, | ||||
|     price_per_unit: u64, | ||||
|     locked_nano: u64, | ||||
|     collected_at: Datetime, | ||||
|     mr_enclave: String, | ||||
|     package_url: String, | ||||
|     hratls_pubkey: String, | ||||
|     pub app_node: RecordId, | ||||
|     pub app_name: String, | ||||
|     pub mapped_ports: Vec<(u64, u64)>, | ||||
|     pub host_ipv4: String, | ||||
|     pub vcpus: u64, | ||||
|     pub memory_mb: u64, | ||||
|     pub disk_size_gb: u64, | ||||
|     pub created_at: Datetime, | ||||
|     pub price_per_unit: u64, | ||||
|     pub locked_nano: u64, | ||||
|     pub collected_at: Datetime, | ||||
|     pub mr_enclave: String, | ||||
|     pub package_url: String, | ||||
|     pub hratls_pubkey: String, | ||||
| } | ||||
| 
 | ||||
| impl From<ActiveApp> for DeletedApp { | ||||
|     fn from(value: ActiveApp) -> Self { | ||||
|         Self { | ||||
|             id: value.id, | ||||
|             admin: value.admin, | ||||
|             app_node: value.app_node, | ||||
|             app_name: value.app_name, | ||||
|             mapped_ports: value.mapped_ports, | ||||
|             host_ipv4: value.host_ipv4, | ||||
|             vcpus: value.vcpus, | ||||
|             memory_mb: value.memory_mb, | ||||
|             disk_size_gb: value.disk_size_gb, | ||||
|             created_at: value.created_at, | ||||
|             price_per_unit: value.price_per_unit, | ||||
|             locked_nano: value.locked_nano, | ||||
|             collected_at: value.collected_at, | ||||
|             mr_enclave: value.mr_enclave, | ||||
|             package_url: value.package_url, | ||||
|             hratls_pubkey: value.hratls_pubkey, | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl ActiveApp { | ||||
| @ -208,6 +231,17 @@ impl ActiveApp { | ||||
| 
 | ||||
|         Ok(()) | ||||
|     } | ||||
| 
 | ||||
|     pub async fn delete(db: &Surreal<Client>, id: &str) -> Result<bool, Error> { | ||||
|         let deleted_app: Option<Self> = db.delete((ACTIVE_APP, id)).await?; | ||||
|         if let Some(deleted_app) = deleted_app { | ||||
|             let deleted_app: DeletedApp = deleted_app.into(); | ||||
|             let _: Vec<DeletedApp> = db.insert(DELETED_APP).relation(deleted_app).await?; | ||||
|             Ok(true) | ||||
|         } else { | ||||
|             Ok(false) | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug, Serialize, Deserialize)] | ||||
|  | ||||
| @ -1,4 +1,5 @@ | ||||
| use crate::constants::{ACCOUNT, APP_NODE}; | ||||
| use crate::db::app::ActiveApp; | ||||
| use crate::db::prelude as db; | ||||
| use crate::grpc::{check_sig_from_parts, check_sig_from_req}; | ||||
| use detee_shared::app_proto::brain_app_cli_server::BrainAppCli; | ||||
| @ -37,8 +38,7 @@ impl BrainAppDaemon for AppDaemonServer { | ||||
|     async fn register_app_node( | ||||
|         &self, | ||||
|         req: tonic::Request<RegisterAppNodeReq>, | ||||
|     ) -> Result<tonic::Response<<Self as BrainAppDaemon>::RegisterAppNodeStream>, tonic::Status> | ||||
|     { | ||||
|     ) -> Result<tonic::Response<<Self as BrainAppDaemon>::RegisterAppNodeStream>, Status> { | ||||
|         let req = check_sig_from_req(req)?; | ||||
|         info!("Starting app_node registration process for {:?}", req); | ||||
| 
 | ||||
| @ -77,7 +77,7 @@ impl BrainAppDaemon for AppDaemonServer { | ||||
|     async fn brain_messages( | ||||
|         &self, | ||||
|         req: tonic::Request<DaemonAuth>, | ||||
|     ) -> Result<tonic::Response<<Self as BrainAppDaemon>::BrainMessagesStream>, tonic::Status> { | ||||
|     ) -> Result<tonic::Response<<Self as BrainAppDaemon>::BrainMessagesStream>, Status> { | ||||
|         let auth = req.into_inner(); | ||||
|         let pubkey = auth.pubkey.clone(); | ||||
|         check_sig_from_parts( | ||||
| @ -114,7 +114,7 @@ impl BrainAppDaemon for AppDaemonServer { | ||||
|     async fn daemon_messages( | ||||
|         &self, | ||||
|         req: tonic::Request<Streaming<DaemonMessageApp>>, | ||||
|     ) -> Result<tonic::Response<Empty>, tonic::Status> { | ||||
|     ) -> Result<tonic::Response<Empty>, Status> { | ||||
|         let mut req_stream = req.into_inner(); | ||||
|         let pubkey: String; | ||||
|         if let Some(Ok(msg)) = req_stream.next().await { | ||||
| @ -186,7 +186,7 @@ impl BrainAppCli for AppCliServer { | ||||
|     async fn deploy_app( | ||||
|         &self, | ||||
|         req: tonic::Request<detee_shared::app_proto::NewAppReq>, | ||||
|     ) -> Result<tonic::Response<detee_shared::app_proto::NewAppRes>, tonic::Status> { | ||||
|     ) -> Result<tonic::Response<detee_shared::app_proto::NewAppRes>, Status> { | ||||
|         let req = check_sig_from_req(req)?; | ||||
|         info!("deploy_app process starting for {:?}", req); | ||||
| 
 | ||||
| @ -196,17 +196,19 @@ impl BrainAppCli for AppCliServer { | ||||
|     async fn delete_app( | ||||
|         &self, | ||||
|         req: tonic::Request<DelAppReq>, | ||||
|     ) -> Result<tonic::Response<detee_shared::common_proto::Empty>, tonic::Status> { | ||||
|     ) -> Result<tonic::Response<Empty>, Status> { | ||||
|         let req = check_sig_from_req(req)?; | ||||
|         info!("delete_app process starting for {:?}", req); | ||||
| 
 | ||||
|         todo!() | ||||
|         match ActiveApp::delete(&self.db, &req.uuid).await? { | ||||
|             true => Ok(Response::new(Empty {})), | ||||
|             false => Err(Status::not_found(format!("Could not find App contract {}", &req.uuid))), | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     async fn list_app_contracts( | ||||
|         &self, | ||||
|         req: tonic::Request<ListAppContractsReq>, | ||||
|     ) -> Result<tonic::Response<<Self as BrainAppCli>::ListAppContractsStream>, tonic::Status> { | ||||
|     ) -> Result<tonic::Response<<Self as BrainAppCli>::ListAppContractsStream>, Status> { | ||||
|         let req = check_sig_from_req(req)?; | ||||
|         info!("list_app_contracts process starting for {:?}", req); | ||||
| 
 | ||||
| @ -245,7 +247,7 @@ impl BrainAppCli for AppCliServer { | ||||
|     async fn list_app_nodes( | ||||
|         &self, | ||||
|         req: tonic::Request<AppNodeFilters>, | ||||
|     ) -> Result<tonic::Response<<Self as BrainAppCli>::ListAppNodesStream>, tonic::Status> { | ||||
|     ) -> Result<tonic::Response<<Self as BrainAppCli>::ListAppNodesStream>, Status> { | ||||
|         let req = check_sig_from_req(req)?; | ||||
|         info!("list_app_nodes process starting for {:?}", req); | ||||
|         let app_nodes = db::AppNodeWithReports::find_by_filters(&self.db, req, false).await?; | ||||
| @ -262,7 +264,7 @@ impl BrainAppCli for AppCliServer { | ||||
|     async fn get_one_app_node( | ||||
|         &self, | ||||
|         req: tonic::Request<AppNodeFilters>, | ||||
|     ) -> Result<tonic::Response<AppNodeListResp>, tonic::Status> { | ||||
|     ) -> Result<tonic::Response<AppNodeListResp>, Status> { | ||||
|         let req = check_sig_from_req(req)?; | ||||
|         info!("get_one_app_node process starting for {:?}", req); | ||||
|         let app_node = db::AppNodeWithReports::find_by_filters(&self.db, req, true) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user