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]] | [[package]] | ||||||
| name = "detee-shared" | name = "detee-shared" | ||||||
| version = "0.1.0" | 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 = [ | dependencies = [ | ||||||
|  "base64", |  "base64", | ||||||
|  "prost", |  "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 { | pub mod brain { | ||||||
|     tonic::include_proto!("vm_proto"); |     // tonic::include_proto!("vm_proto");
 | ||||||
|  |     pub use detee_shared::snp::pb::vm::*; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| use crate::config::Config; | 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