From 505e7c3fafa8cd90992b27258e63c449c655359a Mon Sep 17 00:00:00 2001 From: Noor Date: Mon, 17 Mar 2025 20:34:47 +0530 Subject: [PATCH] organized snp proto through shared crate --- Cargo.lock | 2 +- build.rs | 19 ---- src/snp/grpc.rs | 3 +- vm.proto | 271 ------------------------------------------------ 4 files changed, 3 insertions(+), 292 deletions(-) delete mode 100644 build.rs delete mode 100644 vm.proto diff --git a/Cargo.lock b/Cargo.lock index d6e0fed..7f46e81 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1109,7 +1109,7 @@ dependencies = [ [[package]] name = "detee-shared" version = "0.1.0" -source = "git+ssh://git@gitea.detee.cloud/testnet/proto.git?branch=main#099f0a0488bce8e59c9c9e9a5e9b1f24998f1633" +source = "git+ssh://git@gitea.detee.cloud/testnet/proto.git?branch=main#be4e41db050c6d59e9fb5abf47e647f5bbdc24b2" dependencies = [ "base64", "prost", diff --git a/build.rs b/build.rs deleted file mode 100644 index 8e52a04..0000000 --- a/build.rs +++ /dev/null @@ -1,19 +0,0 @@ -fn main() { - tonic_build::configure() - .type_attribute(".vm_proto.VmContract", "#[derive(serde::Serialize, serde::Deserialize)]") - .type_attribute( - ".vm_proto.InspectOperatorResp", - "#[derive(serde::Serialize, serde::Deserialize)]", - ) - .type_attribute( - ".vm_proto.ListOperatorsResp", - "#[derive(serde::Serialize, serde::Deserialize)]", - ) - .type_attribute( - ".vm_proto.VmNodeListResp", - "#[derive(serde::Serialize, serde::Deserialize)]", - ) - .build_server(true) - .compile_protos(&["vm.proto"], &["proto"]) - .unwrap_or_else(|e| panic!("Failed to compile protos {:?}", e)); -} diff --git a/src/snp/grpc.rs b/src/snp/grpc.rs index 7da29f2..3efc4be 100644 --- a/src/snp/grpc.rs +++ b/src/snp/grpc.rs @@ -1,5 +1,6 @@ pub mod brain { - tonic::include_proto!("vm_proto"); + // tonic::include_proto!("vm_proto"); + pub use detee_shared::snp::pb::vm::*; } use crate::config::Config; diff --git a/vm.proto b/vm.proto deleted file mode 100644 index f0f4d2e..0000000 --- a/vm.proto +++ /dev/null @@ -1,271 +0,0 @@ -syntax = "proto3"; -package vm_proto; - -message Empty { -} - -message Pubkey { - string pubkey = 1; -} - -message AccountBalance { - uint64 balance = 1; - uint64 tmp_locked = 2; -} - -message VmContract { - string uuid = 1; - string hostname = 2; - string admin_pubkey = 3; - string node_pubkey = 4; - repeated uint32 exposed_ports = 5; - string public_ipv4 = 6; - string public_ipv6 = 7; - uint32 disk_size_gb = 8; - uint32 vcpus = 9; - uint32 memory_mb = 10; - string kernel_sha = 11; - string dtrfs_sha = 12; - string created_at = 13; - string updated_at = 14; - // total nanoLP cost per minute (for all units) - uint64 nano_per_minute = 15; - uint64 locked_nano = 16; - string collected_at = 17; -} - -message MeasurementArgs { - // this will be IP:Port of the dtrfs API - // actually not a measurement arg, but needed for the injector - string dtrfs_api_endpoint = 1; - repeated uint32 exposed_ports = 2; - string ovmf_hash = 5; - // This is needed to allow the CLI to build the kernel params from known data. - // The CLI will use the kernel params to get the measurement. - repeated MeasurementIP ips = 6; -} - -message MeasurementIP { - uint32 nic_index = 1; - string address = 2; - string mask = 3; - string gateway = 4; -} - -// This should also include a block hash or similar, for auth -message RegisterVmNodeReq { - string node_pubkey = 1; - string operator_wallet = 2; - string main_ip = 3; - string country = 4; - string region = 5; - string city = 6; - // nanoLP per unit per minute - uint64 price = 7; -} - -message VmNodeResources { - string node_pubkey = 1; - uint32 avail_ports = 2; - uint32 avail_ipv4 = 3; - uint32 avail_ipv6 = 4; - uint32 avail_vcpus = 5; - uint32 avail_memory_mb = 6; - uint32 avail_storage_gb = 7; - uint32 max_ports_per_vm = 8; -} - -message NewVmReq { - string uuid = 1; - string hostname = 2; - string admin_pubkey = 3; - string node_pubkey = 4; - repeated uint32 extra_ports = 5; - bool public_ipv4 = 6; - bool public_ipv6 = 7; - uint32 disk_size_gb = 8; - uint32 vcpus = 9; - uint32 memory_mb = 10; - string kernel_url = 11; - string kernel_sha = 12; - string dtrfs_url = 13; - string dtrfs_sha = 14; - uint64 price_per_unit = 15; - uint64 locked_nano = 16; -} - -message NewVmResp { - string uuid = 1; - string error = 2; - MeasurementArgs args = 3; -} - -message UpdateVmReq { - string uuid = 1; - string admin_pubkey = 2; - uint32 disk_size_gb = 3; - uint32 vcpus = 4; - uint32 memory_mb = 5; - string kernel_url = 6; - string kernel_sha = 7; - string dtrfs_url = 8; - string dtrfs_sha = 9; -} - -message UpdateVmResp { - string uuid = 1; - string error = 2; - MeasurementArgs args = 3; -} - -message DeleteVmReq { - string uuid = 1; - string admin_pubkey = 2; -} - -message BrainVmMessage { - oneof Msg { - NewVmReq new_vm_req = 1; - UpdateVmReq update_vm_req = 2; - DeleteVmReq delete_vm = 3; - } -} - -message DaemonStreamAuth { - string timestamp = 1; - string pubkey = 2; - repeated string contracts = 3; - string signature = 4; -} - -message VmDaemonMessage { - oneof Msg { - DaemonStreamAuth auth = 1; - NewVmResp new_vm_resp = 2; - UpdateVmResp update_vm_resp = 3; - VmNodeResources vm_node_resources = 4; - } -} - -service BrainVmDaemon { - rpc RegisterVmNode (RegisterVmNodeReq) returns (stream VmContract); - rpc BrainMessages (DaemonStreamAuth) returns (stream BrainVmMessage); - rpc DaemonMessages (stream VmDaemonMessage) returns (Empty); -} - -message ListVmContractsReq { - string wallet = 1; - bool as_operator = 2; - string uuid = 3; -} - -message VmNodeFilters { - uint32 free_ports = 1; - bool offers_ipv4 = 2; - bool offers_ipv6 = 3; - uint32 vcpus = 4; - uint32 memory_mb = 5; - uint32 storage_gb = 6; - string country = 7; - string region = 8; - string city = 9; - string ip = 10; - string node_pubkey = 11; -} - -message VmNodeListResp { - string operator = 1; - string node_pubkey = 2; - string country = 3; - string region = 4; - string city = 5; - string ip = 6; // required for latency test - repeated string reports = 7; // TODO: this will become an enum - uint64 price = 8; // nanoLP per unit per minute -} - -message ExtendVmReq { - string uuid = 1; - string admin_pubkey = 2; - uint64 locked_nano = 3; -} - -message AirdropReq { - string pubkey = 1; - uint64 tokens = 2; -} - -message SlashReq { - string pubkey = 1; - uint64 tokens = 2; -} - -message Account { - string pubkey = 1; - uint64 balance = 2; - uint64 tmp_locked = 3; -} - -message RegOperatorReq { - string pubkey = 1; - uint64 escrow = 2; - string email = 3; -} - -message ListOperatorsResp { - string pubkey = 1; - uint64 escrow = 2; - string email = 3; - uint64 app_nodes = 4; - uint64 vm_nodes = 5; - uint64 reports = 6; -} - -message InspectOperatorResp { - ListOperatorsResp operator = 1; - repeated VmNodeListResp nodes = 2; -} - -message ReportNodeReq { - string admin_pubkey = 1; - string node_pubkey = 2; - string contract = 3; - string reason = 4; -} - -message KickReq { - string operator_wallet = 1; - string contract_uuid = 2; - string reason = 3; -} - -message BanUserReq { - string operator_wallet = 1; - string user_wallet = 2; -} - -message KickResp { - uint64 nano_lp = 1; -} - -service BrainCli { - rpc GetBalance (Pubkey) returns (AccountBalance); - rpc NewVm (NewVmReq) returns (NewVmResp); - rpc ListVmContracts (ListVmContractsReq) returns (stream VmContract); - rpc ListVmNodes (VmNodeFilters) returns (stream VmNodeListResp); - rpc GetOneVmNode (VmNodeFilters) returns (VmNodeListResp); - rpc DeleteVm (DeleteVmReq) returns (Empty); - rpc UpdateVm (UpdateVmReq) returns (UpdateVmResp); - rpc ExtendVm (ExtendVmReq) returns (Empty); - rpc ReportNode (ReportNodeReq) returns (Empty); - rpc ListOperators (Empty) returns (stream ListOperatorsResp); - rpc InspectOperator (Pubkey) returns (InspectOperatorResp); - rpc RegisterOperator (RegOperatorReq) returns (Empty); - rpc KickContract (KickReq) returns (KickResp); - rpc BanUser (BanUserReq) returns (Empty); - // admin commands - rpc Airdrop (AirdropReq) returns (Empty); - rpc Slash (SlashReq) returns (Empty); - rpc ListAllVmContracts (Empty) returns (stream VmContract); - rpc ListAccounts (Empty) returns (stream Account); -}