From 25eeab6098487b8c22bce1059fdc28e50eed24b9 Mon Sep 17 00:00:00 2001 From: Noor Date: Mon, 16 Jun 2025 15:47:53 +0530 Subject: [PATCH] Refactor app resource disk size to GB updated proto and changed accordingly --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/bin/detee-cli.rs | 6 +++--- src/sgx/cli_handler.rs | 6 +++--- src/sgx/grpc_brain.rs | 13 +++++++------ src/sgx/mod.rs | 23 +++++++++++------------ src/sgx/utils.rs | 6 +++--- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5fdbe40..a005cd3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1182,7 +1182,7 @@ dependencies = [ [[package]] name = "detee-shared" version = "0.1.0" -source = "git+ssh://git@gitea.detee.cloud/testnet/proto.git?branch=surreal_brain#fb38352e1b47837b14f32d8df5ae7f6b17202aae" +source = "git+ssh://git@gitea.detee.cloud/testnet/proto.git?branch=surreal_brain_app#0b195b4589e4ec689af7ddca27dc051716ecee78" dependencies = [ "bincode", "prost", diff --git a/Cargo.toml b/Cargo.toml index 33dde0d..c1e2546 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ tokio-retry = "0.3.0" detee-sgx = { git = "ssh://git@gitea.detee.cloud/testnet/detee-sgx.git", branch = "hratls", features=["hratls", "qvl"] } shadow-rs = { version = "1.1.1", features = ["metadata"] } -detee-shared = { git = "ssh://git@gitea.detee.cloud/testnet/proto.git", branch = "surreal_brain" } +detee-shared = { git = "ssh://git@gitea.detee.cloud/testnet/proto.git", branch = "surreal_brain_app" } # detee-shared = { path = "../detee-shared" } [build-dependencies] diff --git a/src/bin/detee-cli.rs b/src/bin/detee-cli.rs index a5e53b3..d331a23 100644 --- a/src/bin/detee-cli.rs +++ b/src/bin/detee-cli.rs @@ -127,9 +127,9 @@ fn clap_cmd() -> Command { .arg( Arg::new("disk") .long("disk") - .default_value("1000") - .value_parser(clap::value_parser!(u32).range(300..8000)) - .help("disk size in MB") + .default_value("2") + .value_parser(clap::value_parser!(u32).range(1..100)) + .help("disk size in GB") ) .arg( Arg::new("port") diff --git a/src/sgx/cli_handler.rs b/src/sgx/cli_handler.rs index 1c21a61..05e0308 100644 --- a/src/sgx/cli_handler.rs +++ b/src/sgx/cli_handler.rs @@ -80,9 +80,9 @@ fn handle_deploy( // TODO: maybe add launch config on deploy command with --launch-config flag (AppDeployConfig::from_path(file_path).unwrap(), None) } else { - let vcpu = *deploy_match.get_one::("vcpus").unwrap(); + let vcpus = *deploy_match.get_one::("vcpus").unwrap(); let memory_mb = *deploy_match.get_one::("memory").unwrap(); - let disk_mb = *deploy_match.get_one::("disk").unwrap(); + let disk_size_gb = *deploy_match.get_one::("disk").unwrap(); let port = deploy_match.get_many::("port").unwrap_or_default().cloned().collect::>(); let package_name = deploy_match.get_one::("package").unwrap().clone(); @@ -98,7 +98,7 @@ fn handle_deploy( let private_package = false; - let resource = Resource { vcpu, memory_mb, disk_mb, port }; + let resource = Resource { vcpus, memory_mb, disk_size_gb, port }; let node_pubkey = match block_on(get_app_node(resource.clone(), location.into())) { Ok(node) => node.node_pubkey, Err(e) => { diff --git a/src/sgx/grpc_brain.rs b/src/sgx/grpc_brain.rs index f5e07f8..9881ab2 100644 --- a/src/sgx/grpc_brain.rs +++ b/src/sgx/grpc_brain.rs @@ -48,7 +48,7 @@ impl crate::HumanOutput for AppContract { .mapped_ports .clone() .iter() - .map(|p| format!("({},{})", p.host_port, p.app_port)) + .map(|p| format!("({},{})", p.host_port, p.guest_port)) .collect::>() .join(", "); println!( @@ -57,8 +57,8 @@ impl crate::HumanOutput for AppContract { ); println!("The app has mapped ports by the node are: {mapped_ports}"); println!( - "The App has {} vCPUS, {}MB of memory and a disk of {} MB.", - app_resource.vcpu, app_resource.memory_mb, app_resource.disk_mb + "The App has {} vCPUS, {}MB of memory and a disk of {} GB.", + app_resource.vcpus, app_resource.memory_mb, app_resource.disk_size_gb ); println!("You have locked {} nanoLP in the contract, that get collected at a rate of {} nanoLP per minute.", self.locked_nano, self.nano_per_minute); @@ -75,9 +75,9 @@ pub async fn new_app(app_deploy_config: AppDeployConfig) -> Result { let mut req: NewAppReq = app_deploy_config.clone().into(); let locked_nano = calculate_nanolp_for_app( - resource.vcpu, + resource.vcpus, resource.memory_mb, - resource.disk_mb, + resource.disk_size_gb, app_deploy_config.hours, req.price_per_unit, ); @@ -87,7 +87,8 @@ pub async fn new_app(app_deploy_config: AppDeployConfig) -> Result { req.admin_pubkey = Config::get_detee_wallet()?; req.hratls_pubkey = Config::get_hratls_pubkey_hex()?; - let res = client().await?.deploy_app(sign_request(req)?).await?; + let res = client().await?.new_app(sign_request(req)?).await?; + Ok(res.into_inner()) } diff --git a/src/sgx/mod.rs b/src/sgx/mod.rs index 149211f..a313a8c 100644 --- a/src/sgx/mod.rs +++ b/src/sgx/mod.rs @@ -41,11 +41,11 @@ pub struct AppContract { pub uuid: String, pub name: String, #[tabled(rename = "Cores")] - pub vcpu: u32, + pub vcpus: u32, #[tabled(rename = "Mem (MB)")] pub memory_mb: u32, - #[tabled(rename = "Disk (MB)")] - pub disk_mb: u32, + #[tabled(rename = "Disk (GB)")] + pub disk_size_gb: u32, #[tabled(rename = "LP/h")] pub cost_h: String, #[tabled(rename = "time left", display_with = "display_mins")] @@ -137,22 +137,22 @@ impl From for AppContract { } }; - let AppResource { vcpu, memory_mb, disk_mb, .. } = + let AppResource { vcpus, memory_mb, disk_size_gb, .. } = brain_app_contract.resource.unwrap_or_default(); let exposed_host_ports = brain_app_contract .mapped_ports .iter() - .map(|port| (port.host_port, port.app_port)) + .map(|port| (port.host_port, port.guest_port)) .collect::>(); Self { location, uuid: brain_app_contract.uuid, name: brain_app_contract.app_name, - vcpu, + vcpus, memory_mb, - disk_mb, + disk_size_gb, cost_h: format!( "{:.4}", (brain_app_contract.nano_per_minute * 60) as f64 / 1_000_000_000.0 @@ -181,7 +181,6 @@ pub async fn get_one_contract(uuid: &str) -> Result { #[derive(Debug, Serialize, Deserialize)] pub struct AppDeployResponse { - pub status: String, pub uuid: String, pub name: String, pub node_ip: String, @@ -198,14 +197,13 @@ impl crate::HumanOutput for AppDeployResponse { impl From<(NewAppRes, String)> for AppDeployResponse { fn from((value, name): (NewAppRes, String)) -> Self { Self { - status: value.status, uuid: value.uuid, name, node_ip: value.ip_address, hratls_port: value .mapped_ports .iter() - .find(|port| port.app_port == HRATLS_APP_PORT) + .find(|port| port.guest_port == HRATLS_APP_PORT) .map(|port| port.host_port) .unwrap_or(HRATLS_APP_PORT), error: value.error, @@ -230,14 +228,15 @@ pub async fn get_app_node( location: snp::deploy::Location, ) -> Result { let app_node_filter = AppNodeFilters { - vcpus: resource.vcpu, + vcpus: resource.vcpus, memory_mb: resource.memory_mb, - storage_mb: resource.disk_mb, + storage_gb: resource.disk_size_gb, country: location.country.clone().unwrap_or_default(), region: location.region.clone().unwrap_or_default(), city: location.city.clone().unwrap_or_default(), ip: location.node_ip.clone().unwrap_or_default(), node_pubkey: String::new(), + free_ports: (resource.port.len() + 1) as u32, }; get_one_app_node(app_node_filter).await } diff --git a/src/sgx/utils.rs b/src/sgx/utils.rs index 7d87e9d..9bddc11 100644 --- a/src/sgx/utils.rs +++ b/src/sgx/utils.rs @@ -48,7 +48,7 @@ pub async fn hratls_url_and_mr_enclave_from_app_id( let dtpm_port = app_contract .mapped_ports .iter() - .find(|port| port.app_port == HRATLS_APP_PORT) + .find(|port| port.guest_port == HRATLS_APP_PORT) .ok_or(crate::sgx::grpc_dtpm::Error::Dtpm("Could not find DTMP port".to_string()))? .host_port; @@ -71,13 +71,13 @@ pub async fn fetch_config(package_name: &str) -> Result { pub fn calculate_nanolp_for_app( vcpus: u32, memory_mb: u32, - disk_size_mb: u32, + disk_size_gb: u32, hours: u64, node_price: u64, ) -> u64 { // this calculation needs to match the calculation of the network let total_units = - (vcpus as f64 * 5f64) + (memory_mb as f64 / 200f64) + (disk_size_mb as f64 / 10000f64); + (vcpus as f64 * 5f64) + (memory_mb as f64 / 200f64) + (disk_size_gb as f64 / 10f64); let locked_nano = (hours as f64 * 60f64 * total_units * node_price as f64) as u64; eprintln!( "Node price: {}/unit/minute. Total Units for hardware requested: {:.4}. Locking {} LP (offering the App for {} hours).",