organized snp proto through shared crate
This commit is contained in:
		
							parent
							
								
									e8c271d863
								
							
						
					
					
						commit
						505e7c3faf
					
				
							
								
								
									
										2
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -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", | ||||
|  | ||||
							
								
								
									
										19
									
								
								build.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										19
									
								
								build.rs
									
									
									
									
									
								
							| @ -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)); | ||||
| } | ||||
| @ -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; | ||||
|  | ||||
							
								
								
									
										271
									
								
								vm.proto
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										271
									
								
								vm.proto
									
									
									
									
									
								
							| @ -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); | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user