From 4d0a219f07e848863392973acf3815e4d8db0beb Mon Sep 17 00:00:00 2001 From: ghe0 Date: Sat, 12 Jul 2025 23:27:34 +0300 Subject: [PATCH] change uuid to vm_id and app_id --- Cargo.lock | 2 +- Cargo.toml | 2 +- saved_data.yaml | 338 ------------------- src/db/app.rs | 20 +- src/db/general.rs | 6 +- src/db/vm.rs | 18 +- src/grpc/app.rs | 12 +- src/grpc/general.rs | 24 +- src/grpc/types.rs | 30 +- src/grpc/vm.rs | 34 +- tests/common/app_cli_utils.rs | 2 +- tests/common/app_daemon_utils.rs | 4 +- tests/common/vm_cli_utils.rs | 10 +- tests/common/vm_daemon_utils.rs | 4 +- tests/db_tx_new_app_test.rs | 2 +- tests/grpc_app_cli_test.rs | 16 +- tests/grpc_app_daemon_test.rs | 2 +- tests/grpc_general_test.rs | 6 +- tests/grpc_vm_cli_test.rs | 26 +- tests/grpc_vm_daemon_test.rs | 2 +- tests/mock_data.yaml | 551 ------------------------------- 21 files changed, 117 insertions(+), 994 deletions(-) delete mode 100644 saved_data.yaml delete mode 100644 tests/mock_data.yaml diff --git a/Cargo.lock b/Cargo.lock index 44cbfa2..ab674f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1011,7 +1011,7 @@ dependencies = [ [[package]] name = "detee-shared" version = "0.1.0" -source = "git+ssh://git@gitea.detee.cloud/testnet/proto?branch=main#4753a17fa29393b3f99b6dfcdcec48d935e6ebd9" +source = "git+ssh://git@gitea.detee.cloud/testnet/proto?branch=remove_uuid#6765cafd68664dcfa269dd776039532eb4253e8a" dependencies = [ "bincode 2.0.1", "prost", diff --git a/Cargo.toml b/Cargo.toml index bd57284..0f5a8b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ serde_yaml = "0.9.34" surrealdb = "2.2.2" tokio = { version = "1.44.2", features = ["macros", "rt-multi-thread"] } tonic = { version = "0.12", features = ["tls"] } -detee-shared = { git = "ssh://git@gitea.detee.cloud/testnet/proto", branch = "main" } +detee-shared = { git = "ssh://git@gitea.detee.cloud/testnet/proto", branch = "remove_uuid" } ed25519-dalek = "2.1.1" bs58 = "0.5.1" tokio-stream = "0.1.17" diff --git a/saved_data.yaml b/saved_data.yaml deleted file mode 100644 index fc0b6c6..0000000 --- a/saved_data.yaml +++ /dev/null @@ -1,338 +0,0 @@ -accounts: - fY3NNjvFTeR1FBh5nXV3ujX7zZqrm3eBUWGEiG75TK1: - balance: 1000000000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - FBMWVqME3t1i4R6zWyDQGUuiTeruZ1TxLhTmhaEcFypZ: - balance: 181560160000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - CLYyE6id5876DW69LHDynuH6TjJPvWRBTQC5XDZ6jfT1: - balance: 25000000000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - db5ZB6uDbF1mUUgeggBZ9XKbi3mUfX6WHkBpbwUHJpB: - balance: 25000000000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - 49JBVzmgsQbUURHzAWax2gxo6jmukqbEQzP97YeeNQyu: - balance: 1076960680000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - HQyGWpiteHbxjszngZvmiX7ZFZAmF6nFjEraBa1M6bbM: - balance: 979410300000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - E3bgXsWvgichXeC6AqULJCZDp7FbEdTxBD67UaYVWf9y: - balance: 21121600000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL: - balance: 1156240000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - 45Pyv9hRfub43NyRrYv95MhZs1Wrm8sj3RhBvA3F1Bvr: - balance: 933585660000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - H21Shi4iE7vgfjWEQNvzmpmBMJSaiZ17PYUcdNoAoKNc: - balance: 109066280000 - tmp_locked: 453600000 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK: - balance: 2565079420000 - tmp_locked: 547200000 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB: - balance: 7063640000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS: - balance: 13535509680000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - E27C967A84DEAA3339B4D57C1A7321E4906772244BBECCE25356D0EA6F851086: - balance: 100000000000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - DwfL5iFu32xh2YMCUxg63OeaThLRqehDAumiP9q6zuuX: - balance: 74660380000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - DXXkYSnhP3ijsHYxkedcuMomEyc122WaAbkDX7SaGuUS: - balance: 20293420000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - Bb5Xfkk4fc5i4GiTEgChwMb1ToWDQ5uzGtgD6yKTQYAy: - balance: 99979600000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - 5hx2f3odEx6sXqCY6FEAv6bBm3BXdhJ97G6X7uScsLAj: - balance: 94473640000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - 3BNggj8ZTsoSjfAGdPfmcU2Gobm2qcTEBg9iHXEUPe1t: - balance: 9978460000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - B981xPHmHthfKr15J9uJ64qd9zt2KsdiEuDRR7UUCGWi: - balance: 99980200000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - Cnkvn3WuHYfTzh1YK1TAv2VD25sNvstJNnQtxjcdQSL7: - balance: 11021340000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] -operators: - x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK: - escrow: 5489633280000 - email: gheo@detee.ltd - banned_users: [] - vm_nodes: - - 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f - - 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 - app_nodes: [] - BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS: - escrow: 5091906400000 - email: first_on_detee@proton.me - banned_users: [] - vm_nodes: - - DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb - - 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 - - Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu - app_nodes: [] - 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB: - escrow: 5500000000000 - email: nmohammed@detee.ltd - banned_users: [] - vm_nodes: [] - app_nodes: - - BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg -vm_nodes: -- public_key: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu - operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS - country: FR - region: Île-de-France - city: Paris - ip: 156.146.63.215 - avail_mem_mb: 117000 - avail_vcpus: 40 - avail_storage_gbs: 410 - avail_ipv4: 2 - avail_ipv6: 0 - avail_ports: 20000 - max_ports_per_vm: 5 - price: 20000 - reports: {} - offline_minutes: 0 -- public_key: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 - operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS - country: US - region: California - city: San Jose - ip: 149.36.48.99 - avail_mem_mb: 121000 - avail_vcpus: 42 - avail_storage_gbs: 400 - avail_ipv4: 23 - avail_ipv6: 0 - avail_ports: 20000 - max_ports_per_vm: 5 - price: 20000 - reports: {} - offline_minutes: 0 -- public_key: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb - operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS - country: CA - region: British Columbia - city: Vancouver - ip: 149.22.95.1 - avail_mem_mb: 106400 - avail_vcpus: 42 - avail_storage_gbs: 400 - avail_ipv4: 25 - avail_ipv6: 0 - avail_ports: 19999 - max_ports_per_vm: 5 - price: 20000 - reports: {} - offline_minutes: 0 -- public_key: 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f - operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK - country: CA - region: Quebec - city: Montréal - ip: 184.107.169.199 - avail_mem_mb: 29000 - avail_vcpus: 30 - avail_storage_gbs: 700 - avail_ipv4: 0 - avail_ipv6: 0 - avail_ports: 19999 - max_ports_per_vm: 5 - price: 18000 - reports: {} - offline_minutes: 0 -vm_contracts: -- uuid: dbe09a11-0bcf-472e-9f27-9a4939ea2226 - hostname: detee-fr - admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL - node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu - exposed_ports: [] - public_ipv4: 156.146.63.217 - public_ipv6: '' - disk_size_gb: 10 - vcpus: 4 - memory_mb: 4000 - kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 - dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 - created_at: 2025-05-16T11:07:53.903282009Z - updated_at: 2025-05-16T11:07:53.903282959Z - price_per_unit: 20000 - locked_nano: 24513120000 - collected_at: 2025-06-26T11:32:59.521517733Z -- uuid: 338312387c6e4e5ebec015277d27c21d - hostname: sofenty-staging - admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL - node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb - exposed_ports: [] - public_ipv4: 149.22.95.3 - public_ipv6: '' - disk_size_gb: 10 - vcpus: 2 - memory_mb: 4000 - kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 - dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 - created_at: 2025-06-12T23:20:23.797184848Z - updated_at: 2025-06-12T23:20:23.797185855Z - price_per_unit: 20000 - locked_nano: 17703920000 - collected_at: 2025-06-26T11:32:59.521538185Z -- uuid: 46656273dc964fdeaec2fd1efd49fc12 - hostname: sofenty-scraper-bot - admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL - node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb - exposed_ports: - - 36057 - public_ipv4: '' - public_ipv6: '' - disk_size_gb: 10 - vcpus: 2 - memory_mb: 4000 - kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 - dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 - created_at: 2025-06-17T11:12:18.659422501Z - updated_at: 2025-06-17T11:12:18.659423285Z - price_per_unit: 20000 - locked_nano: 14299320000 - collected_at: 2025-06-26T11:32:59.521547200Z -- uuid: 1b3365a15fe64b8aa283bb7883c62e09 - hostname: detee-us - admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL - node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 - exposed_ports: [] - public_ipv4: 149.36.48.100 - public_ipv6: '' - disk_size_gb: 10 - vcpus: 4 - memory_mb: 4000 - kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 - dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 - created_at: 2025-06-18T10:51:17.699206021Z - updated_at: 2025-06-18T10:51:17.699206835Z - price_per_unit: 20000 - locked_nano: 26552160000 - collected_at: 2025-06-26T11:32:59.521554160Z -- uuid: b11ad0fcfc194f5490d64f5a72574dc8 - hostname: brain-backups - admin_pubkey: 45Pyv9hRfub43NyRrYv95MhZs1Wrm8sj3RhBvA3F1Bvr - node_pubkey: 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f - exposed_ports: - - 38175 - public_ipv4: '' - public_ipv6: '' - disk_size_gb: 30 - vcpus: 1 - memory_mb: 1000 - kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 - dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 - created_at: 2025-06-18T13:59:30.713579315Z - updated_at: 2025-06-18T13:59:30.713580515Z - price_per_unit: 20000 - locked_nano: 11638260000 - collected_at: 2025-06-26T11:32:59.521562057Z -- uuid: 89237736b97047beac3611e25e26408e - hostname: brain-staging - admin_pubkey: 45Pyv9hRfub43NyRrYv95MhZs1Wrm8sj3RhBvA3F1Bvr - node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu - exposed_ports: [] - public_ipv4: 156.146.63.216 - public_ipv6: '' - disk_size_gb: 20 - vcpus: 2 - memory_mb: 4000 - kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 - dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 - created_at: 2025-06-18T14:00:48.016735075Z - updated_at: 2025-06-18T14:00:48.016736647Z - price_per_unit: 20000 - locked_nano: 32466740000 - collected_at: 2025-06-26T11:32:59.521568755Z -app_nodes: -- node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg - operator_wallet: 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB - country: DE - region: Hesse - city: Frankfurt am Main - ip: 212.95.45.139 - avail_mem_mb: 16000 - avail_vcpus: 16 - avail_storage_mb: 200000 - avail_no_of_port: 20000 - max_ports_per_app: 9 - price: 20000 - reports: {} - offline_minutes: 0 -app_contracts: [] diff --git a/src/db/app.rs b/src/db/app.rs index 60f3622..8d07ee2 100644 --- a/src/db/app.rs +++ b/src/db/app.rs @@ -324,10 +324,10 @@ impl From for DeletedApp { } impl ActiveApp { - pub async fn get_by_uuid(db: &Surreal, uuid: &str) -> Result, Error> { + pub async fn get_by_app_id(db: &Surreal, app_id: &str) -> Result, Error> { let contract: Option = db .query("select * from $active_app_id;".to_string()) - .bind(("active_app_id", RecordId::from((ACTIVE_APP, uuid)))) + .bind(("active_app_id", RecordId::from((ACTIVE_APP, app_id)))) .await? .take(0)?; Ok(contract) @@ -337,7 +337,7 @@ impl ActiveApp { db: &Surreal, new_app_res: app_proto::NewAppRes, ) -> Result<(), Error> { - let new_app_req = match NewAppReq::get(db, &new_app_res.uuid).await? { + let new_app_req = match NewAppReq::get(db, &new_app_res.app_id).await? { Some(r) => r, None => return Ok(()), }; @@ -349,7 +349,7 @@ impl ActiveApp { .collect::>(); let active_app = Self { - id: RecordId::from((ACTIVE_APP, &new_app_res.uuid)), + id: RecordId::from((ACTIVE_APP, &new_app_res.app_id)), admin: new_app_req.admin, app_node: new_app_req.app_node, app_name: new_app_req.app_name, @@ -371,7 +371,7 @@ impl ActiveApp { let locked_nano = active_app.locked_nano; let _: Vec = db.insert(()).relation(active_app).await?; - NewAppReq::delete(db, &new_app_res.uuid).await?; + NewAppReq::delete(db, &new_app_res.app_id).await?; db.query(format!("UPDATE {ACCOUNT}:{admin_account} SET tmp_locked -= {locked_nano};")) .await?; @@ -440,7 +440,7 @@ impl WrappedAppResp { if let Some(error_on_newapp_req) = error.take::>(0)? { if !error_on_newapp_req.error.is_empty() { let app_daemon_err = NewAppRes { - uuid: app_id.to_string(), + app_id: app_id.to_string(), error: error_on_newapp_req.error, ..Default::default() }; @@ -462,7 +462,7 @@ impl WrappedAppResp { Ok(err_notif) =>{ if err_notif.action == surrealdb::Action::Update && !err_notif.data.error.is_empty(){ let app_daemon_err = NewAppRes { - uuid: app_id.to_string(), + app_id: app_id.to_string(), error: err_notif.data.error, ..Default::default() }; @@ -537,10 +537,10 @@ impl From for ActiveApp { } impl ActiveAppWithNode { - pub async fn get_by_uuid(db: &Surreal, uuid: &str) -> Result, Error> { + pub async fn get_by_app_id(db: &Surreal, app_id: &str) -> Result, Error> { let contract: Option = db - .query(format!("select * from {ACTIVE_APP} where id = $uuid_input fetch out;")) - .bind(("uuid_input", RecordId::from((ACTIVE_APP, uuid)))) + .query(format!("select * from {ACTIVE_APP} where id = $app_id_input fetch out;")) + .bind(("app_id_input", RecordId::from((ACTIVE_APP, app_id)))) .await? .take(0)?; diff --git a/src/db/general.rs b/src/db/general.rs index a544ade..ddc61e5 100644 --- a/src/db/general.rs +++ b/src/db/general.rs @@ -335,13 +335,13 @@ impl Operator { pub async fn kick_contract( db: &Surreal, operator_wallet: &str, - contract_uuid: &str, + contract_id: &str, reason: &str, ) -> Result { let (contract_id, operator_id, admin_id, app_or_vm) = - if let Some(active_vm) = ActiveVmWithNode::get_by_uuid(db, contract_uuid).await? { + if let Some(active_vm) = ActiveVmWithNode::get_by_id(db, contract_id).await? { (active_vm.id, active_vm.vm_node.operator, active_vm.admin, "vm") - } else if let Some(active_app) = ActiveAppWithNode::get_by_uuid(db, contract_uuid).await? { + } else if let Some(active_app) = ActiveAppWithNode::get_by_app_id(db, contract_id).await? { (active_app.id, active_app.app_node.operator, active_app.admin, "app") } else { return Err(Error::ContractNotFound); diff --git a/src/db/vm.rs b/src/db/vm.rs index 783568d..3bb943a 100644 --- a/src/db/vm.rs +++ b/src/db/vm.rs @@ -446,10 +446,10 @@ impl ActiveVm { self.total_units() * self.price_per_unit } - pub async fn get_by_uuid(db: &Surreal, uuid: &str) -> Result, Error> { + pub async fn get_by_id(db: &Surreal, vm_id: &str) -> Result, Error> { let contract: Option = db .query("select * from $active_vm_id;".to_string()) - .bind(("active_vm_id", RecordId::from((ACTIVE_VM, uuid)))) + .bind(("active_vm_id", RecordId::from((ACTIVE_VM, vm_id)))) .await? .take(0)?; Ok(contract) @@ -523,7 +523,7 @@ impl ActiveVm { None => return Ok(()), }; - let mut active_vm = match Self::get_by_uuid(db, id).await? { + let mut active_vm = match Self::get_by_id(db, id).await? { Some(vm) => vm, None => return Ok(()), }; @@ -751,7 +751,7 @@ impl UpdateVmReq { /// returns Some(true) if hw update is needed and got submitted /// returns error if something happened with the DB pub async fn request_hw_update(mut self, db: &Surreal) -> Result, Error> { - let contract = ActiveVm::get_by_uuid(db, &self.id.key().to_string()).await?; + let contract = ActiveVm::get_by_id(db, &self.id.key().to_string()).await?; if contract.is_none() { return Ok(None); @@ -842,9 +842,9 @@ impl From for DeletedVm { } impl DeletedVm { - pub async fn get_by_uuid(db: &Surreal, uuid: &str) -> Result, Error> { + pub async fn get_by_id(db: &Surreal, vm_id: &str) -> Result, Error> { let contract: Option = - db.query(format!("select * from {DELETED_VM}:{uuid};")).await?.take(0)?; + db.query(format!("select * from {DELETED_VM}:{vm_id};")).await?.take(0)?; Ok(contract) } @@ -949,10 +949,10 @@ impl From for ActiveVm { } impl ActiveVmWithNode { - pub async fn get_by_uuid(db: &Surreal, uuid: &str) -> Result, Error> { + pub async fn get_by_id(db: &Surreal, vm_id: &str) -> Result, Error> { let contract: Option = db - .query(format!("select * from {ACTIVE_VM} where id = $uuid_input fetch out;")) - .bind(("uuid_input", RecordId::from((ACTIVE_VM, uuid)))) + .query(format!("select * from {ACTIVE_VM} where id = $vm_id fetch out;")) + .bind(("vm_id", RecordId::from((ACTIVE_VM, vm_id)))) .await? .take(0)?; Ok(contract) diff --git a/src/grpc/app.rs b/src/grpc/app.rs index fe44eeb..ad32e91 100644 --- a/src/grpc/app.rs +++ b/src/grpc/app.rs @@ -146,7 +146,7 @@ impl BrainAppDaemon for AppDaemonServer { if !new_app_resp.error.is_empty() { db::NewAppReq::submit_error( &self.db, - &new_app_resp.uuid, + &new_app_resp.app_id, new_app_resp.error, ) .await?; @@ -242,7 +242,7 @@ impl BrainAppCli for AppCliServer { async fn delete_app(&self, req: Request) -> Result, Status> { let req = check_sig_from_req(req)?; - let app_node = db::ActiveApp::get_by_uuid(&self.db, &req.uuid) + let app_node = db::ActiveApp::get_by_app_id(&self.db, &req.app_id) .await? .ok_or(Status::permission_denied("Unauthorized"))? .app_node; @@ -252,11 +252,11 @@ impl BrainAppCli for AppCliServer { return Err(redirect); } info!("delete_app process starting for {:?}", req); - match ActiveApp::delete(&self.db, &req.admin_pubkey, &req.uuid).await { + match ActiveApp::delete(&self.db, &req.admin_pubkey, &req.app_id).await { Ok(()) => Ok(Response::new(Empty {})), Err(db::Error::AccessDenied) => Err(Status::permission_denied("Unauthorized")), Err(e) => { - log::error!("Error deleting app contract {}: {e}", &req.uuid); + log::error!("Error deleting app contract {}: {e}", &req.app_id); Err(Status::unknown( "Unknown error. Please try again or contact the DeTEE devs team.", )) @@ -273,9 +273,9 @@ impl BrainAppCli for AppCliServer { let mut app_contracts = Vec::new(); - if !req.uuid.is_empty() { + if !req.app_id.is_empty() { if let Some(app_contract) = - db::ActiveAppWithNode::get_by_uuid(&self.db, &req.uuid).await? + db::ActiveAppWithNode::get_by_app_id(&self.db, &req.app_id).await? { if app_contract.admin.key().to_string() == req.admin_pubkey || app_contract.app_node.operator.key().to_string() == req.admin_pubkey diff --git a/src/grpc/general.rs b/src/grpc/general.rs index c8c51ef..d182d7b 100644 --- a/src/grpc/general.rs +++ b/src/grpc/general.rs @@ -7,7 +7,7 @@ use detee_shared::common_proto::{Empty, Pubkey}; use detee_shared::general_proto::brain_general_cli_server::BrainGeneralCli; use detee_shared::general_proto::{ Account, AccountBalance, AirdropReq, BanUserReq, InspectOperatorResp, KickReq, KickResp, - ListOperatorsResp, RegOperatorReq, ReportNodeReq, SlashReq, + ListOperatorsResp, RecommendedVersions, RegOperatorReq, ReportNodeReq, SlashReq, }; use detee_shared::vm_proto::VmContract; use surrealdb::engine::remote::ws::Client; @@ -47,7 +47,7 @@ impl BrainGeneralCli for GeneralCliServer { async fn report_node(&self, req: Request) -> Result, Status> { let req = check_sig_from_req(req)?; let (account, node, contract_id) = - match db::ActiveVmWithNode::get_by_uuid(&self.db, &req.contract).await? { + match db::ActiveVmWithNode::get_by_id(&self.db, &req.contract).await? { Some(vm_contract) if vm_contract.admin.key().to_string() == req.admin_pubkey && vm_contract.vm_node.id.key().to_string() == req.node_pubkey => @@ -55,7 +55,8 @@ impl BrainGeneralCli for GeneralCliServer { (vm_contract.admin, vm_contract.vm_node.id, vm_contract.id.to_string()) } _ => { - match db::app::ActiveAppWithNode::get_by_uuid(&self.db, &req.contract).await? { + match db::app::ActiveAppWithNode::get_by_app_id(&self.db, &req.contract).await? + { Some(app_contract) if app_contract.admin.key().to_string() == req.admin_pubkey && app_contract.app_node.id.key().to_string() @@ -129,9 +130,8 @@ impl BrainGeneralCli for GeneralCliServer { async fn kick_contract(&self, req: Request) -> Result, Status> { let req = check_sig_from_req(req)?; - log::info!("Kicking contract: {}, by: {}", req.contract_uuid, req.operator_wallet); - match db::kick_contract(&self.db, &req.operator_wallet, &req.contract_uuid, &req.reason) - .await + log::info!("Kicking contract: {}, by: {}", req.contract_id, req.operator_wallet); + match db::kick_contract(&self.db, &req.operator_wallet, &req.contract_id, &req.reason).await { Ok(nano_credits) => Ok(Response::new(KickResp { nano_credits })), Err(e) @@ -228,4 +228,16 @@ impl BrainGeneralCli for GeneralCliServer { let output_stream = ReceiverStream::new(rx); Ok(Response::new(Box::pin(output_stream))) } + + async fn get_recommended_versions( + &self, + _: Request, + ) -> Result, Status> { + Ok(Response::new(RecommendedVersions { + cli: "0.1.1".to_string(), + brain: env!("CARGO_PKG_VERSION").to_string(), + snp_daemon: "0.1.0".to_string(), + sgx_daemon: "0.1.0".to_string(), + })) + } } diff --git a/src/grpc/types.rs b/src/grpc/types.rs index a644bc5..475c56b 100644 --- a/src/grpc/types.rs +++ b/src/grpc/types.rs @@ -54,7 +54,7 @@ impl From for db::NewVmReq { impl From for NewVmReq { fn from(new_vm_req: db::NewVmReq) -> Self { Self { - uuid: new_vm_req.id.key().to_string(), + vm_id: new_vm_req.id.key().to_string(), hostname: new_vm_req.hostname, admin_pubkey: new_vm_req.admin.key().to_string(), node_pubkey: new_vm_req.vm_node.key().to_string(), @@ -77,10 +77,10 @@ impl From for NewVmReq { impl From for NewVmResp { fn from(resp: db::WrappedMeasurement) -> Self { match resp { - db::WrappedMeasurement::Args(uuid, args) => { - Self { uuid, error: String::new(), args: Some(args) } + db::WrappedMeasurement::Args(vm_id, args) => { + Self { vm_id, error: String::new(), args: Some(args) } } - db::WrappedMeasurement::Error(uuid, error) => NewVmResp { uuid, error, args: None }, + db::WrappedMeasurement::Error(vm_id, error) => NewVmResp { vm_id, error, args: None }, } } } @@ -89,10 +89,10 @@ impl From for NewVmResp { impl From for UpdateVmResp { fn from(resp: db::WrappedMeasurement) -> Self { match resp { - db::WrappedMeasurement::Args(uuid, args) => { - Self { uuid, error: String::new(), args: Some(args) } + db::WrappedMeasurement::Args(vm_id, args) => { + Self { vm_id, error: String::new(), args: Some(args) } } - db::WrappedMeasurement::Error(uuid, error) => Self { uuid, error, args: None }, + db::WrappedMeasurement::Error(vm_id, error) => Self { vm_id, error, args: None }, } } } @@ -100,7 +100,7 @@ impl From for UpdateVmResp { impl From for db::UpdateVmReq { fn from(new_vm_req: UpdateVmReq) -> Self { Self { - id: RecordId::from((NEW_VM_REQ, new_vm_req.uuid)), + id: RecordId::from((NEW_VM_REQ, new_vm_req.vm_id)), admin: RecordId::from((ACCOUNT, new_vm_req.admin_pubkey)), // vm_node gets modified later, and only if the db::UpdateVmReq is required vm_node: RecordId::from((VM_NODE, String::new())), @@ -120,7 +120,7 @@ impl From for db::UpdateVmReq { impl From for UpdateVmReq { fn from(update_vm_req: db::UpdateVmReq) -> Self { Self { - uuid: update_vm_req.id.key().to_string(), + vm_id: update_vm_req.id.key().to_string(), // daemon does not care about VM hostname hostname: String::new(), admin_pubkey: update_vm_req.admin.key().to_string(), @@ -138,7 +138,7 @@ impl From for UpdateVmReq { impl From for DeleteVmReq { fn from(delete_vm_req: db::DeletedVm) -> Self { Self { - uuid: delete_vm_req.id.key().to_string(), + vm_id: delete_vm_req.id.key().to_string(), admin_pubkey: delete_vm_req.admin.key().to_string(), } } @@ -167,7 +167,7 @@ impl From for VmContract { exposed_ports.push(port.0); } VmContract { - uuid: db_c.id.key().to_string(), + vm_id: db_c.id.key().to_string(), hostname: db_c.hostname.clone(), admin_pubkey: db_c.admin.key().to_string(), node_pubkey: db_c.vm_node.id.key().to_string(), @@ -292,7 +292,7 @@ impl From for AppContract { Some(hex::decode(value.mr_enclave.clone()).unwrap_or_default()); AppContract { - uuid: value.id.key().to_string(), + app_id: value.id.key().to_string(), package_url: value.package_url, admin_pubkey: value.admin.key().to_string(), node_pubkey: value.app_node.id.key().to_string(), @@ -365,7 +365,7 @@ impl From for NewAppReq { package_url: value.package_url, node_pubkey: value.app_node.key().to_string(), resource: Some(resource), - uuid: value.id.key().to_string(), + app_id: value.id.key().to_string(), admin_pubkey: value.admin.key().to_string(), price_per_unit: value.price_per_unit, locked_nano: value.locked_nano, @@ -378,7 +378,7 @@ impl From for NewAppReq { impl From for DelAppReq { fn from(value: db::DeletedApp) -> Self { - Self { uuid: value.id.key().to_string(), admin_pubkey: value.admin.key().to_string() } + Self { app_id: value.id.key().to_string(), admin_pubkey: value.admin.key().to_string() } } } @@ -415,7 +415,7 @@ impl From for NewAppRes { .map(|(h, g)| MappedPort { host_port: *h, guest_port: *g }) .collect(); Self { - uuid: val.id.key().to_string(), + app_id: val.id.key().to_string(), ip_address: val.host_ipv4, mapped_ports, error: String::new(), diff --git a/src/grpc/vm.rs b/src/grpc/vm.rs index de41c12..986ab3d 100644 --- a/src/grpc/vm.rs +++ b/src/grpc/vm.rs @@ -155,7 +155,7 @@ impl BrainVmDaemon for VmDaemonServer { if !new_vm_resp.error.is_empty() { db::NewVmReq::submit_error( &self.db, - &new_vm_resp.uuid, + &new_vm_resp.vm_id, new_vm_resp.error, ) .await?; @@ -163,12 +163,12 @@ impl BrainVmDaemon for VmDaemonServer { db::upsert_record( &self.db, "measurement_args", - &new_vm_resp.uuid, + &new_vm_resp.vm_id, new_vm_resp.args.clone(), ) .await?; if let Some(args) = new_vm_resp.args { - db::ActiveVm::activate(&self.db, &new_vm_resp.uuid, args).await?; + db::ActiveVm::activate(&self.db, &new_vm_resp.vm_id, args).await?; } } } @@ -176,7 +176,7 @@ impl BrainVmDaemon for VmDaemonServer { if !update_vm_resp.error.is_empty() { db::UpdateVmReq::submit_error( &self.db, - &update_vm_resp.uuid, + &update_vm_resp.vm_id, update_vm_resp.error, ) .await?; @@ -184,11 +184,11 @@ impl BrainVmDaemon for VmDaemonServer { db::upsert_record( &self.db, "measurement_args", - &update_vm_resp.uuid, + &update_vm_resp.vm_id, update_vm_resp.args.clone(), ) .await?; - db::ActiveVm::update(&self.db, &update_vm_resp.uuid).await?; + db::ActiveVm::update(&self.db, &update_vm_resp.vm_id).await?; } } Some(vm_daemon_message::Msg::VmNodeResources(node_resources)) => { @@ -286,13 +286,13 @@ impl BrainVmCli for VmCliServer { let mut hostname_changed = false; if !req.hostname.is_empty() { hostname_changed = - db::ActiveVm::change_hostname(&self.db, &req.uuid, &req.hostname).await?; + db::ActiveVm::change_hostname(&self.db, &req.vm_id, &req.hostname).await?; } let hw_change_submitted = db_req.request_hw_update(&self.db).await?; if hw_change_submitted.is_none() { return Ok(Response::new(UpdateVmResp { - uuid: req.uuid.clone(), + vm_id: req.vm_id.clone(), error: "VM Contract does not exist.".to_string(), args: None, })); @@ -301,7 +301,7 @@ impl BrainVmCli for VmCliServer { if !hostname_changed && !hw_change_needed { return Ok(Response::new(UpdateVmResp { - uuid: req.uuid.clone(), + vm_id: req.vm_id.clone(), error: "No modification required".to_string(), args: None, })); @@ -310,7 +310,7 @@ impl BrainVmCli for VmCliServer { // if only the hostname got changed, return a confirmation if !hw_change_needed { return Ok(Response::new(UpdateVmResp { - uuid: req.uuid.clone(), + vm_id: req.vm_id.clone(), error: String::new(), args: None, })); @@ -339,7 +339,7 @@ impl BrainVmCli for VmCliServer { async fn extend_vm(&self, req: Request) -> Result, Status> { let req = check_sig_from_req(req)?; - match db::ActiveVm::extend_time(&self.db, &req.uuid, &req.admin_pubkey, req.locked_nano) + match db::ActiveVm::extend_time(&self.db, &req.vm_id, &req.admin_pubkey, req.locked_nano) .await { Ok(()) => Ok(Response::new(Empty {})), @@ -354,7 +354,7 @@ impl BrainVmCli for VmCliServer { Err(Status::failed_precondition(e.to_string())) } Err(e) => { - log::error!("Error extending VM contract {}: {e}", &req.uuid); + log::error!("Error extending VM contract {}: {e}", &req.vm_id); Err(Status::unknown(format!("Could not extend contract: {e}"))) } } @@ -362,7 +362,7 @@ impl BrainVmCli for VmCliServer { async fn delete_vm(&self, req: Request) -> Result, Status> { let req = check_sig_from_req(req)?; - let vm_node = db::ActiveVm::get_by_uuid(&self.db, &req.uuid) + let vm_node = db::ActiveVm::get_by_id(&self.db, &req.vm_id) .await? .ok_or(Status::permission_denied("Unauthorized"))? .vm_node; @@ -371,11 +371,11 @@ impl BrainVmCli for VmCliServer { log::info!("redirect: {redirect}"); return Err(redirect); } - match db::ActiveVm::delete(&self.db, &req.admin_pubkey, &req.uuid).await { + match db::ActiveVm::delete(&self.db, &req.admin_pubkey, &req.vm_id).await { Ok(()) => Ok(Response::new(Empty {})), Err(db::Error::AccessDenied) => Err(Status::permission_denied("Unauthorized")), Err(e) => { - log::error!("Error deleting VM contract {}: {e}", &req.uuid); + log::error!("Error deleting VM contract {}: {e}", &req.vm_id); Err(Status::unknown( "Unknown error. Please try again or contact the DeTEE devs team.", )) @@ -393,9 +393,9 @@ impl BrainVmCli for VmCliServer { req.wallet, req.as_operator ); let mut contracts = Vec::new(); - if !req.uuid.is_empty() { + if !req.vm_id.is_empty() { if let Some(specific_contract) = - db::ActiveVmWithNode::get_by_uuid(&self.db, &req.uuid).await? + db::ActiveVmWithNode::get_by_id(&self.db, &req.vm_id).await? { if specific_contract.admin.key().to_string() == req.wallet || specific_contract.vm_node.operator.key().to_string() == req.wallet diff --git a/tests/common/app_cli_utils.rs b/tests/common/app_cli_utils.rs index 7487571..4b727f3 100644 --- a/tests/common/app_cli_utils.rs +++ b/tests/common/app_cli_utils.rs @@ -26,7 +26,7 @@ pub async fn create_new_app( client_app_cli.new_app(key.sign_request(new_app_req.clone())?).await?.into_inner(); assert!(new_app_resp.error.is_empty()); - assert!(new_app_resp.uuid.len() == 40); + assert!(new_app_resp.app_id.len() == 40); Ok(new_app_resp) } diff --git a/tests/common/app_daemon_utils.rs b/tests/common/app_daemon_utils.rs index b3ac071..3f48770 100644 --- a/tests/common/app_daemon_utils.rs +++ b/tests/common/app_daemon_utils.rs @@ -127,7 +127,7 @@ pub async fn daemon_engine( .collect::>(); let res_data = NewAppRes { - uuid: new_app_req.uuid, + app_id: new_app_req.app_id, mapped_ports, ip_address: "127.0.0.1".to_string(), error: new_app_err.clone().unwrap_or_default(), @@ -139,7 +139,7 @@ pub async fn daemon_engine( tx.send(res).await?; } Some(app_proto::brain_message_app::Msg::DeleteAppReq(del_app_req)) => { - println!("MOCK_APP_DAEMON::delete app request for {}", del_app_req.uuid); + println!("MOCK_APP_DAEMON::delete app request for {}", del_app_req.app_id); } None => todo!(), } diff --git a/tests/common/vm_cli_utils.rs b/tests/common/vm_cli_utils.rs index 64ba998..937405f 100644 --- a/tests/common/vm_cli_utils.rs +++ b/tests/common/vm_cli_utils.rs @@ -33,19 +33,19 @@ pub async fn create_new_vm( let new_vm_resp = client_vm_cli.new_vm(key.sign_request(new_vm_req)?).await?.into_inner(); assert!(new_vm_resp.error.is_empty()); - assert!(new_vm_resp.uuid.len() == 40); + assert!(new_vm_resp.vm_id.len() == 40); // wait for update db tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; - let vm_req_db: Option = db.select((NEW_VM_REQ, new_vm_resp.uuid.clone())).await?; + let vm_req_db: Option = db.select((NEW_VM_REQ, new_vm_resp.vm_id.clone())).await?; if let Some(new_vm_req) = vm_req_db { panic!("New VM request found in DB: {:?}", new_vm_req); } let active_vm_op: Option = - db.select((ACTIVE_VM, new_vm_resp.uuid.clone())).await?; + db.select((ACTIVE_VM, new_vm_resp.vm_id.clone())).await?; let active_vm = active_vm_op.ok_or(anyhow!("Not found active vm in db"))?; Ok(active_vm.id.key().to_string()) @@ -159,7 +159,7 @@ pub async fn user_list_vm_contracts( brain_channel: &Channel, key: &Key, as_operator: bool, - uuid: &str, + vm_id: &str, ) -> Result> { let mut cli_client = BrainVmCliClient::new(brain_channel.clone()); let mut stream = cli_client @@ -167,7 +167,7 @@ pub async fn user_list_vm_contracts( key.sign_request(vm_proto::ListVmContractsReq { wallet: key.pubkey.clone(), as_operator, - uuid: uuid.to_string(), + vm_id: vm_id.to_string(), }) .unwrap(), ) diff --git a/tests/common/vm_daemon_utils.rs b/tests/common/vm_daemon_utils.rs index 374e3c9..8b3433b 100644 --- a/tests/common/vm_daemon_utils.rs +++ b/tests/common/vm_daemon_utils.rs @@ -128,7 +128,7 @@ pub async fn daemon_engine( }); let new_vm_resp = vm_proto::NewVmResp { - uuid: new_vm_req.uuid.clone(), + vm_id: new_vm_req.vm_id.clone(), args, error: new_vm_err.clone().unwrap_or_default(), }; @@ -142,7 +142,7 @@ pub async fn daemon_engine( todo!() } Some(vm_proto::brain_vm_message::Msg::DeleteVm(del_vm_req)) => { - println!("MOCK_VM_DAEMON::delete vm request for {}", del_vm_req.uuid); + println!("MOCK_VM_DAEMON::delete vm request for {}", del_vm_req.vm_id); } None => todo!(), } diff --git a/tests/db_tx_new_app_test.rs b/tests/db_tx_new_app_test.rs index 83ef753..b9cf6ea 100644 --- a/tests/db_tx_new_app_test.rs +++ b/tests/db_tx_new_app_test.rs @@ -19,7 +19,7 @@ async fn test_new_app_db_tx() { ports: vec![ 8080 ], }, ), - uuid: "".to_string(), + app_id: "".to_string(), admin_pubkey: "H21Shi4iE7vgfjWEQNvzmpmBMJSaiZ17PYUcdNoAoKNc".to_string(), price_per_unit: 200000, locked_nano: 152400000, diff --git a/tests/grpc_app_cli_test.rs b/tests/grpc_app_cli_test.rs index d72fe1f..db9b8cb 100644 --- a/tests/grpc_app_cli_test.rs +++ b/tests/grpc_app_cli_test.rs @@ -57,7 +57,7 @@ async fn test_app_creation() { .unwrap() .into_inner(); let active_app = - db.select::>((ACTIVE_APP, new_app_resp.uuid)).await.unwrap(); + db.select::>((ACTIVE_APP, new_app_resp.app_id)).await.unwrap(); assert!(active_app.is_some()); let daemon_key_02 = @@ -73,7 +73,7 @@ async fn test_app_creation() { assert!(!new_app_resp.error.is_empty()); let app_req_db = - db.select::>((NEW_APP_REQ, new_app_resp.uuid)).await.unwrap(); + db.select::>((NEW_APP_REQ, new_app_resp.app_id)).await.unwrap(); assert!(!app_req_db.unwrap().error.is_empty()); @@ -90,7 +90,7 @@ async fn test_app_creation() { assert!(new_app_resp.error.is_empty()); let active_app = - db.select::>((ACTIVE_APP, new_app_resp.uuid)).await.unwrap(); + db.select::>((ACTIVE_APP, new_app_resp.app_id)).await.unwrap(); assert!(active_app.is_some()); tokio::time::sleep(std::time::Duration::from_millis(300)).await; @@ -144,7 +144,7 @@ async fn test_app_deletion() { let mut client_app_cli = BrainAppCliClient::new(brain_channel.clone()); - let del_app_req = DelAppReq { admin_pubkey: key.pubkey.clone(), uuid: new_app_res.uuid }; + let del_app_req = DelAppReq { admin_pubkey: key.pubkey.clone(), app_id: new_app_res.app_id }; let _ = client_app_cli.delete_app(key.sign_request(del_app_req).unwrap()).await.unwrap(); let key_02 = Key::new(); @@ -152,7 +152,7 @@ async fn test_app_deletion() { // delete random app let mut del_app_req = DelAppReq { admin_pubkey: key_02.pubkey.clone(), - uuid: "9ae3VH8nJg2i8pqTQ6mJtvYuS2kd9n1XLLco8GUPfT95".to_string(), + app_id: "9ae3VH8nJg2i8pqTQ6mJtvYuS2kd9n1XLLco8GUPfT95".to_string(), }; let del_err = client_app_cli @@ -163,7 +163,7 @@ async fn test_app_deletion() { assert_eq!(del_err.message(), "Unauthorized"); let new_app_res_02 = create_new_app(&key, &daemon_key, &brain_channel).await.unwrap(); - del_app_req.uuid = new_app_res_02.uuid; + del_app_req.app_id = new_app_res_02.app_id; let del_err = client_app_cli .delete_app(key_02.sign_request(del_app_req.clone()).unwrap()) @@ -179,14 +179,14 @@ async fn test_app_deletion() { let new_app_res_03 = create_new_app(&key_03, &daemon_key, &brain_channel).await.unwrap(); let del_app_req = - DelAppReq { admin_pubkey: key_03.pubkey.clone(), uuid: new_app_res_03.uuid.clone() }; + DelAppReq { admin_pubkey: key_03.pubkey.clone(), app_id: new_app_res_03.app_id.clone() }; let _ = client_app_cli.delete_app(key_03.sign_request(del_app_req).unwrap()).await.unwrap(); let acc: db::Account = db.select((ACCOUNT, key_03.pubkey.clone())).await.unwrap().unwrap(); assert_eq!(acc.balance, 10 * TOKEN_DECIMAL); let deleted_app = - db.select::>((DELETED_APP, new_app_res_03.uuid)).await.unwrap(); + db.select::>((DELETED_APP, new_app_res_03.app_id)).await.unwrap(); assert!(deleted_app.is_some()); } diff --git a/tests/grpc_app_daemon_test.rs b/tests/grpc_app_daemon_test.rs index d9593b2..c4c61fe 100644 --- a/tests/grpc_app_daemon_test.rs +++ b/tests/grpc_app_daemon_test.rs @@ -54,7 +54,7 @@ async fn test_brain_message() { cli_client.new_app(cli_key.sign_request(req).unwrap()).await.unwrap().into_inner(); assert!(new_app_resp.error.is_empty()); - assert!(new_app_resp.uuid.len() == 40); + assert!(new_app_resp.app_id.len() == 40); } #[tokio::test] diff --git a/tests/grpc_general_test.rs b/tests/grpc_general_test.rs index 1f183cc..06d91b8 100644 --- a/tests/grpc_general_test.rs +++ b/tests/grpc_general_test.rs @@ -129,7 +129,7 @@ async fn test_report_node() { let key = Key::new(); let report_error = - report_node(&key, &brain_channel, &daemon_key, "uuid", "reason").await.err().unwrap(); + report_node(&key, &brain_channel, &daemon_key, "thisIsNotAnID", "reason").await.err().unwrap(); log::info!("Report error: {:?}", report_error); assert!(report_error.to_string().contains("No contract found by this ID.")); @@ -264,12 +264,12 @@ async fn test_kick_contract() { */ let db_conn = prepare_test_db().await.unwrap(); - let contract_uuid = "5af49a714c64a82ef50e574b023b2a0ef0405ed"; + let contract_id = "5af49a714c64a82ef50e574b023b2a0ef0405ed"; let operator_wallet = "7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB"; let reason = "'; THROW 'Injected error'; --"; // sql injection query let kick_response = - surreal_brain::db::general::kick_contract(&db_conn, operator_wallet, contract_uuid, reason) + surreal_brain::db::general::kick_contract(&db_conn, operator_wallet, contract_id, reason) .await; match kick_response { Ok(refund_amount) => { diff --git a/tests/grpc_vm_cli_test.rs b/tests/grpc_vm_cli_test.rs index e9c18b5..5c8d180 100644 --- a/tests/grpc_vm_cli_test.rs +++ b/tests/grpc_vm_cli_test.rs @@ -70,7 +70,7 @@ async fn test_vm_creation() { assert!(!new_vm_resp.error.is_empty()); let vm_req_db: Option = - db.select((NEW_VM_REQ, new_vm_resp.uuid.clone())).await.unwrap(); + db.select((NEW_VM_REQ, new_vm_resp.vm_id.clone())).await.unwrap(); if let Some(new_vm_req) = vm_req_db { assert!(!new_vm_req.error.is_empty()); @@ -88,7 +88,7 @@ async fn test_vm_creation() { assert!(new_vm_resp.error.is_empty()); tokio::time::sleep(tokio::time::Duration::from_millis(100)).await; - let active_vm: Option = db.select((ACTIVE_VM, new_vm_resp.uuid)).await.unwrap(); + let active_vm: Option = db.select((ACTIVE_VM, new_vm_resp.vm_id)).await.unwrap(); assert!(active_vm.is_some()); let acc_db: db::Account = db.select((ACCOUNT, key.pubkey.clone())).await.unwrap().unwrap(); @@ -139,11 +139,11 @@ async fn test_vm_deletion() { let key = Key::new(); airdrop(&brain_channel, &key.pubkey, 10).await.unwrap(); - let new_vm_uuid = create_new_vm(&db, &key, &daemon_key, &brain_channel).await.unwrap(); + let new_vm_id = create_new_vm(&db, &key, &daemon_key, &brain_channel).await.unwrap(); let mut client_vm_cli = BrainVmCliClient::new(brain_channel.clone()); - let del_app_req = DeleteVmReq { admin_pubkey: key.pubkey.clone(), uuid: new_vm_uuid }; + let del_app_req = DeleteVmReq { admin_pubkey: key.pubkey.clone(), vm_id: new_vm_id }; let _ = client_vm_cli.delete_vm(key.sign_request(del_app_req).unwrap()).await.unwrap(); let key_02 = Key::new(); @@ -151,7 +151,7 @@ async fn test_vm_deletion() { // delete random vm let mut del_vm_req = DeleteVmReq { admin_pubkey: key_02.pubkey.clone(), - uuid: "9ae3VH8nJg2i8pqTQ6mJtvYuS2kd9n1XLLco8GUPfT95".to_string(), + vm_id: "9ae3VH8nJg2i8pqTQ6mJtvYuS2kd9n1XLLco8GUPfT95".to_string(), }; let del_err = client_vm_cli @@ -161,8 +161,8 @@ async fn test_vm_deletion() { .unwrap(); assert_eq!(del_err.message(), "Unauthorized"); - let new_vm_uuid_02 = create_new_vm(&db, &key, &daemon_key, &brain_channel).await.unwrap(); - del_vm_req.uuid = new_vm_uuid_02; + let new_vm_id_02 = create_new_vm(&db, &key, &daemon_key, &brain_channel).await.unwrap(); + del_vm_req.vm_id = new_vm_id_02; let del_err = client_vm_cli .delete_vm(key_02.sign_request(del_vm_req.clone()).unwrap()) @@ -175,17 +175,17 @@ async fn test_vm_deletion() { let key_03 = Key::new(); airdrop(&brain_channel, &key_03.pubkey, 10).await.unwrap(); - let new_vm_uuid_03 = create_new_vm(&db, &key_03, &daemon_key, &brain_channel).await.unwrap(); + let new_vm_id_03 = create_new_vm(&db, &key_03, &daemon_key, &brain_channel).await.unwrap(); let del_vm_req = - DeleteVmReq { admin_pubkey: key_03.pubkey.clone(), uuid: new_vm_uuid_03.clone() }; + DeleteVmReq { admin_pubkey: key_03.pubkey.clone(), vm_id: new_vm_id_03.clone() }; let _ = client_vm_cli.delete_vm(key_03.sign_request(del_vm_req).unwrap()).await.unwrap(); let acc: db::Account = db.select((ACCOUNT, key_03.pubkey.clone())).await.unwrap().unwrap(); assert_eq!(acc.balance, 10 * TOKEN_DECIMAL); let deleted_vm = - db.select::>((DELETED_VM, new_vm_uuid_03)).await.unwrap(); + db.select::>((DELETED_VM, new_vm_id_03)).await.unwrap(); assert!(deleted_vm.is_some()); } @@ -201,7 +201,7 @@ async fn test_list_vm_contracts() { let pubkey = key.pubkey.clone(); let req_data = - ListVmContractsReq { wallet: pubkey, uuid: String::from("uuid"), as_operator: false }; + ListVmContractsReq { wallet: pubkey, vm_id: String::from("vm_id"), as_operator: false }; let mut grpc_stream = client.list_vm_contracts(key.sign_request(req_data).unwrap()).await.unwrap().into_inner(); @@ -253,7 +253,7 @@ async fn test_extend_vm() { let mut req = ExtendVmReq { admin_pubkey: key.pubkey.clone(), - uuid: "foooooooo".to_string(), + vm_id: "foooooooo".to_string(), locked_nano: u64::MAX, }; @@ -266,7 +266,7 @@ async fn test_extend_vm() { cli_client.extend_vm(key.sign_request(req.clone()).unwrap()).await.err().unwrap(); assert!(err_precondition.to_string().contains("Contract not found")); - req.uuid = vm_contract_id.to_string(); + req.vm_id = vm_contract_id.to_string(); let err_precondition = cli_client.extend_vm(key.sign_request(req.clone()).unwrap()).await.err().unwrap(); assert!(err_precondition.to_string().contains("Insufficient funds")); diff --git a/tests/grpc_vm_daemon_test.rs b/tests/grpc_vm_daemon_test.rs index b8941b0..c4ad361 100644 --- a/tests/grpc_vm_daemon_test.rs +++ b/tests/grpc_vm_daemon_test.rs @@ -49,7 +49,7 @@ async fn test_brain_message() { cli_client.new_vm(cli_key.sign_request(req).unwrap()).await.unwrap().into_inner(); assert!(new_vm_resp.error.is_empty()); - assert!(new_vm_resp.uuid.len() == 40); + assert!(new_vm_resp.vm_id.len() == 40); assert!(new_vm_resp.args.is_some()); assert!(new_vm_resp.args.unwrap().exposed_ports.len() == 3); } diff --git a/tests/mock_data.yaml b/tests/mock_data.yaml deleted file mode 100644 index 574ebaa..0000000 --- a/tests/mock_data.yaml +++ /dev/null @@ -1,551 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -accounts: - DXXkYSnhP3ijsHYxkedcuMomEyc122WaAbkDX7SaGuUS: - balance: 20293420000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL: - balance: 25949200000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - Cnkvn3WuHYfTzh1YK1TAv2VD25sNvstJNnQtxjcdQSL7: - balance: 4794480000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS: - balance: 4672207240000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - E3bgXsWvgichXeC6AqULJCZDp7FbEdTxBD67UaYVWf9y: - balance: 21121600000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - HQyGWpiteHbxjszngZvmiX7ZFZAmF6nFjEraBa1M6bbM: - balance: 979410300000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - H21Shi4iE7vgfjWEQNvzmpmBMJSaiZ17PYUcdNoAoKNc: - balance: 976000000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - 45Pyv9hRfub43NyRrYv95MhZs1Wrm8sj3RhBvA3F1Bvr: - balance: 1670441080000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - 49JBVzmgsQbUURHzAWax2gxo6jmukqbEQzP97YeeNQyu: - balance: 1076960680000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB: - balance: 3271040000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK: - balance: 554454460000 - tmp_locked: 547200000 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - 3BNggj8ZTsoSjfAGdPfmcU2Gobm2qcTEBg9iHXEUPe1t: - balance: 9978460000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - B981xPHmHthfKr15J9uJ64qd9zt2KsdiEuDRR7UUCGWi: - balance: 99980200000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - CLYyE6id5876DW69LHDynuH6TjJPvWRBTQC5XDZ6jfT1: - balance: 25000000000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - db5ZB6uDbF1mUUgeggBZ9XKbi3mUfX6WHkBpbwUHJpB: - balance: 25000000000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - fY3NNjvFTeR1FBh5nXV3ujX7zZqrm3eBUWGEiG75TK1: - balance: 1000000000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - FBMWVqME3t1i4R6zWyDQGUuiTeruZ1TxLhTmhaEcFypZ: - balance: 181560160000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX: - balance: 74660380000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - - 4qFJJJdRrSB9hCn8rrvYTXHLJg371ab36PJmZ4uxHjGQ: - balance: 25949200000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - Hv5q3enK249RUnLRLi9YNQMrPCRxvL2XnhznkzrtCmkG: - balance: 25949200000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - GmE4JH3bL4NpmzwKCBJemJzRTumJAnbcXLGqce5mREgS: - balance: 500000000000 - tmp_locked: 0 - kicked_for: [] - last_kick: 1970-01-01T00:00:00Z - banned_by: [] - -operators: - BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS: - escrow: 5096692000000 - email: first_on_detee@proton.me - banned_users: [] - vm_nodes: - - HiyMp21zaBVbRCjDsD5hEjQnHeHv4e1gpUR6pVfHTKqv - - 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 - - Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu - - 4QbUXDM915RUFnHm3NiysLXFLk1WRGZvABwLNzx4tTEW - - DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb - app_nodes: [] - x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK: - escrow: 5499700480000 - email: gheo@detee.ltd - banned_users: [] - vm_nodes: - - 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f - - 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 - app_nodes: [] - 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB: - escrow: 888888888899999 - email: "" - banned_users: [] - vm_nodes: [] - app_nodes: - - BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg - - 4qFJJJdRrSB9hCn8rrvYTXHLJg371ab36PJmZ4uxHjGQ: - escrow: 5499700480000 - email: "test_mock@operator" - banned_users: [] - vm_nodes: - - 7fujZQeTme52RdXTLmQST5jBgAbvzic5iERtH5EWoYjk - app_nodes: [] - - Hv5q3enK249RUnLRLi9YNQMrPCRxvL2XnhznkzrtCmkG: - escrow: 5499700480000 - email: "test_mock_extend@operator" - banned_users: [] - vm_nodes: - - 8ue3VHMnJg2i8pwTQ6mJtvYuS2kd9n1XLLco8GUPfT95 - app_nodes: [] - -vm_nodes: - - public_key: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 - operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK - country: GB - region: England - city: London - ip: 173.234.17.2 - avail_mem_mb: 26000 - avail_vcpus: 28 - avail_storage_gbs: 680 - avail_ipv4: 2 - avail_ipv6: 65516 - avail_ports: 19999 - max_ports_per_vm: 5 - price: 20000 - reports: {} - offline_minutes: 0 - - public_key: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu - operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS - country: FR - region: Île-de-France - city: Paris - ip: 156.146.63.215 - avail_mem_mb: 123000 - avail_vcpus: 46 - avail_storage_gbs: 440 - avail_ipv4: 2 - avail_ipv6: 0 - avail_ports: 20000 - max_ports_per_vm: 5 - price: 20000 - reports: {} - offline_minutes: 0 - - public_key: 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f - operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK - country: CA - region: Quebec - city: Montréal - ip: 184.107.169.199 - avail_mem_mb: 30000 - avail_vcpus: 31 - avail_storage_gbs: 700 - avail_ipv4: 0 - avail_ipv6: 0 - avail_ports: 20000 - max_ports_per_vm: 5 - price: 18000 - reports: {} - offline_minutes: 0 - - public_key: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb - operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS - country: CA - region: British Columbia - city: Vancouver - ip: 149.22.95.1 - avail_mem_mb: 109000 - avail_vcpus: 45 - avail_storage_gbs: 400 - avail_ipv4: 25 - avail_ipv6: 0 - avail_ports: 20000 - max_ports_per_vm: 5 - price: 20000 - reports: {} - offline_minutes: 0 - - public_key: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 - operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS - country: US - region: California - city: San Jose - ip: 149.36.48.99 - avail_mem_mb: 120000 - avail_vcpus: 41 - avail_storage_gbs: 390 - avail_ipv4: 23 - avail_ipv6: 0 - avail_ports: 19999 - max_ports_per_vm: 5 - price: 20000 - reports: {} - offline_minutes: 0 - - public_key: HiyMp21zaBVbRCjDsD5hEjQnHeHv4e1gpUR6pVfHTKqv - operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS - country: CA - region: British Columbia - city: Vancouver - ip: 149.22.95.28 - avail_mem_mb: 125000 - avail_vcpus: 46 - avail_storage_gbs: 400 - avail_ipv4: 26 - avail_ipv6: 0 - avail_ports: 20000 - max_ports_per_vm: 5 - price: 20000 - reports: {} - offline_minutes: 0 - - - public_key: 7fujZQeTme52RdXTLmQST5jBgAbvzic5iERtH5EWoYjk - operator_wallet: 4qFJJJdRrSB9hCn8rrvYTXHLJg371ab36PJmZ4uxHjGQ - country: GB - region: England - city: London - ip: 193.234.17.2 - avail_mem_mb: 28000 - avail_vcpus: 24 - avail_storage_gbs: 1680 - avail_ipv4: 1 - avail_ipv6: 0 - avail_ports: 19999 - max_ports_per_vm: 10 - price: 24000 - reports: {} - offline_minutes: 0 - - public_key: 8ue3VHMnJg2i8pwTQ6mJtvYuS2kd9n1XLLco8GUPfT95 - operator_wallet: Hv5q3enK249RUnLRLi9YNQMrPCRxvL2XnhznkzrtCmkG - country: GB - region: England - city: London - ip: 193.234.17.2 - avail_mem_mb: 28000 - avail_vcpus: 24 - avail_storage_gbs: 1680 - avail_ipv4: 1 - avail_ipv6: 0 - avail_ports: 19999 - max_ports_per_vm: 10 - price: 24000 - reports: {} - offline_minutes: 1 - -vm_contracts: - - uuid: 958165e3-dea8-407d-8c42-dd17002ef79c - hostname: detee-landing-fr - admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL - node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu - exposed_ports: [] - public_ipv4: 156.146.63.216 - public_ipv6: "" - disk_size_gb: 10240 - vcpus: 2 - memory_mb: 3000 - kernel_sha: 3ec4fc5aa5729f515967ec71be4a851622785c0080f7191b1b07717149840151 - dtrfs_sha: 3f6b3e5740f249eedfb2f7248c521a551be8b2676f7fcb040f3f3bc840a5004b - created_at: 2025-02-28T23:19:41.769423466Z - updated_at: 2025-04-12T12:11:58.516768949Z - price_per_unit: 20000 - locked_nano: 14875500000 - collected_at: 2025-04-20T00:34:15.461165181Z - - uuid: e807a2fd-cf90-4a14-bc3a-89ce6dc59033 - hostname: detee-landing-gb - admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL - node_pubkey: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 - exposed_ports: [] - public_ipv4: 173.234.136.154 - public_ipv6: "" - disk_size_gb: 10240 - vcpus: 2 - memory_mb: 3000 - kernel_sha: 3ec4fc5aa5729f515967ec71be4a851622785c0080f7191b1b07717149840151 - dtrfs_sha: 3f6b3e5740f249eedfb2f7248c521a551be8b2676f7fcb040f3f3bc840a5004b - created_at: 2025-03-06T19:51:39.595163157Z - updated_at: 2025-03-06T19:51:39.595163842Z - price_per_unit: 20000 - locked_nano: 14875500000 - collected_at: 2025-04-20T00:34:15.461181545Z - - uuid: 23094406-2307-4332-a642-acee718d0186 - hostname: heroic-door - admin_pubkey: DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX - node_pubkey: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 - exposed_ports: - - 38288 - public_ipv4: "" - public_ipv6: "" - disk_size_gb: 10240 - vcpus: 1 - memory_mb: 1000 - kernel_sha: 14e225e4aaf84cc2e0b5f64206121186ddebc4b378b886da3b2f7515dfd41692 - dtrfs_sha: 03ce24dbbe917fdd4f6347e61036805ddbdded5044c272bab188ef9333093bee - created_at: 2025-03-12T16:28:24.749161605Z - updated_at: 2025-03-12T16:28:24.749162477Z - price_per_unit: 20000 - locked_nano: 14134140000 - collected_at: 2025-04-20T00:34:15.461191231Z - - uuid: 1f49a71c-f68c-4c64-a82e-f50e0ba0b574 - hostname: astromech-wrench - admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL - node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb - exposed_ports: [] - public_ipv4: 149.22.95.2 - public_ipv6: "" - disk_size_gb: 10240 - vcpus: 2 - memory_mb: 3000 - kernel_sha: 3a68709138bed09c16671949cf1f03acee95a08381ba84fc70fb586001fa6767 - dtrfs_sha: 0bb93443f65c9f4379ed469f94794f5c1bf14d8905b0b2c56a125df4a9ebe83e - created_at: 2025-03-20T14:40:25.557753393Z - updated_at: 2025-03-20T14:40:25.557754242Z - price_per_unit: 20000 - locked_nano: 11865620000 - collected_at: 2025-04-20T00:34:15.461201690Z - - uuid: 16577f1c-9867-4a17-80a8-6cf0490f1270 - hostname: sofenty - admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL - node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu - exposed_ports: [] - public_ipv4: 156.146.63.217 - public_ipv6: "" - disk_size_gb: 10240 - vcpus: 2 - memory_mb: 3000 - kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542 - dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45 - created_at: 2025-04-07T22:57:57.646151746Z - updated_at: 2025-04-07T22:57:57.646152630Z - price_per_unit: 20000 - locked_nano: 11867500000 - collected_at: 2025-04-20T00:34:15.461211040Z - - uuid: 4b6e25ca-87ac-478b-8f16-aa8f5c44c704 - hostname: cloaked-mailbox - admin_pubkey: DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX - node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb - exposed_ports: [] - public_ipv4: 149.22.95.2 - public_ipv6: "" - disk_size_gb: 30 - vcpus: 1 - memory_mb: 1000 - kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542 - dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45 - created_at: 2025-04-12T13:44:56.957037550Z - updated_at: 2025-04-12T13:44:56.957038546Z - price_per_unit: 20000 - locked_nano: 11177760000 - collected_at: 2025-04-20T00:34:15.461219779Z - - uuid: eb1a13ed-d782-4b71-8860-73540129cb7d - hostname: twenty - admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL - node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 - exposed_ports: [] - public_ipv4: 149.36.48.100 - public_ipv6: "" - disk_size_gb: 10240 - vcpus: 4 - memory_mb: 4000 - kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542 - dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45 - created_at: 2025-04-15T00:46:35.622165457Z - updated_at: 2025-04-15T00:46:35.622166372Z - price_per_unit: 20000 - locked_nano: 15570720000 - collected_at: 2025-04-20T00:34:15.461230948Z - - uuid: 1bf36309-3774-4825-b023-b2a0ef0405ed - hostname: shadowy-hobo - admin_pubkey: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK - node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 - exposed_ports: - - 46393 - public_ipv4: "" - public_ipv6: "" - disk_size_gb: 10240 - vcpus: 1 - memory_mb: 1000 - kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 - dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 - created_at: 2025-04-16T20:37:57.176592933Z - updated_at: 2025-04-16T20:37:57.176594069Z - price_per_unit: 20000 - locked_nano: 12730960000 - collected_at: 2025-04-20T00:34:15.461240342Z - - - uuid: 1d749a81-6c27-a22e-fa0e574-b023-a6afef040fe5 - hostname: test-extend - admin_pubkey: GmE4JH3bL4NpmzwKCBJemJzRTumJAnbcXLGqce5mREgS - node_pubkey: 8ue3VHMnJg2i8pwTQ6mJtvYuS2kd9n1XLLco8GUPfT95 - exposed_ports: - - 46393 - public_ipv4: "" - public_ipv6: "" - disk_size_gb: 10240 - vcpus: 1 - memory_mb: 1000 - kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 - dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 - created_at: 2025-04-16T20:37:57.176592933Z - updated_at: 2025-04-16T20:37:57.176594069Z - price_per_unit: 20000 - locked_nano: 60000 - collected_at: 2025-04-20T00:34:15.461240342Z - - uuid: 5af49a71-4c64-a82e-f50e574-b023-b2a0ef0405ed - hostname: hallow-hobo - admin_pubkey: 4qFJJJdRrSB9hCn8rrvYTXHLJg371ab36PJmZ4uxHjGQ - node_pubkey: 7fujZQeTme52RdXTLmQST5jBgAbvzic5iERtH5EWoYjk - exposed_ports: - - 46393 - public_ipv4: "" - public_ipv6: "" - disk_size_gb: 10240 - vcpus: 1 - memory_mb: 1000 - kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 - dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 - created_at: 2025-04-16T20:37:57.176592933Z - updated_at: 2025-04-16T20:37:57.176594069Z - price_per_unit: 20000 - locked_nano: 12730960000 - collected_at: 2025-04-20T00:34:15.461240342Z - -app_nodes: - - node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg - operator_wallet: 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB - country: DE - region: Hesse - city: Frankfurt am Main - ip: 212.95.45.139 - avail_mem_mb: 16000 - avail_vcpus: 16 - avail_storage_mb: 200000 - avail_no_of_port: 20000 - max_ports_per_app: 9 - price: 20000 - offline_minutes: 0 -app_contracts: - - uuid: e3d01f25-2b2a-410b-80e3-12f44e474334 - package_url: https://registry.detee.ltd/sgx/packages/base_package_2025-04-17_11-01-08.tar.gz - admin_pubkey: H21Shi4iE7vgfjWEQNvzmpmBMJSaiZ17PYUcdNoAoKNc - node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg - mapped_ports: - - - 27158 - - 34500 - - - 28667 - - 8080 - host_ipv4: 212.95.45.139 - disk_size_mb: 1000 - vcpus: 1 - memory_mb: 1000 - created_at: 2025-04-21T11:27:28.833236909Z - updated_at: 2025-04-21T11:27:28.833237729Z - price_per_unit: 200000 - locked_nano: 121200000 - collected_at: 2025-04-21T11:28:24.905665571Z - hratls_pubkey: 7E0F887AA6BB9104EEC1066F454D4C2D9063D676715F55F919D3FBCEDC63240B - public_package_mr_enclave: - - 52 - - 183 - - 102 - - 210 - - 251 - - 219 - - 218 - - 140 - - 168 - - 118 - - 10 - - 193 - - 98 - - 240 - - 147 - - 124 - - 240 - - 189 - - 46 - - 95 - - 138 - - 172 - - 15 - - 246 - - 227 - - 114 - - 70 - - 159 - - 232 - - 212 - - 9 - - 234 - app_name: diligent-seahorse