rename structs so that they say "VM"
This commit is contained in:
		
							parent
							
								
									0ed21fdf98
								
							
						
					
					
						commit
						76c88810a6
					
				
							
								
								
									
										2
									
								
								build.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										2
									
								
								build.rs
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
| fn main() { | fn main() { | ||||||
|     tonic_build::configure() |     tonic_build::configure() | ||||||
|         .build_server(true) |         .build_server(true) | ||||||
|         .compile_protos(&["snp.proto"], &["proto"]) |         .compile_protos(&["vm.proto"], &["proto"]) | ||||||
|         .unwrap_or_else(|e| panic!("Failed to compile protos {:?}", e)); |         .unwrap_or_else(|e| panic!("Failed to compile protos {:?}", e)); | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										50
									
								
								src/grpc.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										50
									
								
								src/grpc.rs
									
									
									
									
									
								
							| @ -1,8 +1,8 @@ | |||||||
| use crate::global::*; | use crate::global::*; | ||||||
| use crate::snp_proto::DaemonMessage; | use crate::snp_proto::VmDaemonMessage; | ||||||
| use anyhow::Result; | use anyhow::Result; | ||||||
| use log::{debug, info, warn}; | use log::{debug, info, warn}; | ||||||
| use snp_proto::{brain_daemon_client::BrainDaemonClient, BrainMessage, Contract, RegisterNodeReq}; | use snp_proto::{brain_vm_daemon_client::BrainVmDaemonClient, BrainVmMessage, VmContract, RegisterVmNodeReq}; | ||||||
| use tokio::{ | use tokio::{ | ||||||
|     sync::mpsc::{Receiver, Sender}, |     sync::mpsc::{Receiver, Sender}, | ||||||
|     task::JoinSet, |     task::JoinSet, | ||||||
| @ -11,34 +11,34 @@ use tokio_stream::{wrappers::ReceiverStream, StreamExt}; | |||||||
| use tonic::transport::Channel; | use tonic::transport::Channel; | ||||||
| 
 | 
 | ||||||
| pub mod snp_proto { | pub mod snp_proto { | ||||||
|     tonic::include_proto!("snp_proto"); |     tonic::include_proto!("vm_proto"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl From<snp_proto::NewVmResp> for snp_proto::DaemonMessage { | impl From<snp_proto::NewVmResp> for snp_proto::VmDaemonMessage { | ||||||
|     fn from(value: snp_proto::NewVmResp) -> Self { |     fn from(value: snp_proto::NewVmResp) -> Self { | ||||||
|         snp_proto::DaemonMessage { msg: Some(snp_proto::daemon_message::Msg::NewVmResp(value)) } |         snp_proto::VmDaemonMessage { msg: Some(snp_proto::vm_daemon_message::Msg::NewVmResp(value)) } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl From<snp_proto::UpdateVmResp> for snp_proto::DaemonMessage { | impl From<snp_proto::UpdateVmResp> for snp_proto::VmDaemonMessage { | ||||||
|     fn from(value: snp_proto::UpdateVmResp) -> Self { |     fn from(value: snp_proto::UpdateVmResp) -> Self { | ||||||
|         snp_proto::DaemonMessage { msg: Some(snp_proto::daemon_message::Msg::UpdateVmResp(value)) } |         snp_proto::VmDaemonMessage { msg: Some(snp_proto::vm_daemon_message::Msg::UpdateVmResp(value)) } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl From<snp_proto::NodeResources> for snp_proto::DaemonMessage { | impl From<snp_proto::VmNodeResources> for snp_proto::VmDaemonMessage { | ||||||
|     fn from(value: snp_proto::NodeResources) -> Self { |     fn from(value: snp_proto::VmNodeResources) -> Self { | ||||||
|         snp_proto::DaemonMessage { msg: Some(snp_proto::daemon_message::Msg::NodeResources(value)) } |         snp_proto::VmDaemonMessage { msg: Some(snp_proto::vm_daemon_message::Msg::VmNodeResources(value)) } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub async fn register_node(config: &crate::config::Config) -> Result<Vec<Contract>> { | pub async fn register_node(config: &crate::config::Config) -> Result<Vec<VmContract>> { | ||||||
|     use tonic::metadata::AsciiMetadataValue; |     use tonic::metadata::AsciiMetadataValue; | ||||||
|     use tonic::Request; |     use tonic::Request; | ||||||
|     let mut client = BrainDaemonClient::connect(config.brain_url.clone()).await?; |     let mut client = BrainVmDaemonClient::connect(config.brain_url.clone()).await?; | ||||||
|     debug!("Starting node registration..."); |     debug!("Starting node registration..."); | ||||||
|     let ip_info = IP_INFO.clone(); |     let ip_info = IP_INFO.clone(); | ||||||
|     let req = RegisterNodeReq { |     let req = RegisterVmNodeReq { | ||||||
|         node_pubkey: PUBLIC_KEY.clone(), |         node_pubkey: PUBLIC_KEY.clone(), | ||||||
|         owner_pubkey: config.owner_wallet.clone(), |         owner_pubkey: config.owner_wallet.clone(), | ||||||
|         main_ip: ip_info.ip, |         main_ip: ip_info.ip, | ||||||
| @ -60,7 +60,7 @@ pub async fn register_node(config: &crate::config::Config) -> Result<Vec<Contrac | |||||||
|     req.metadata_mut().insert("request-signature", signature); |     req.metadata_mut().insert("request-signature", signature); | ||||||
| 
 | 
 | ||||||
|     let mut contracts = Vec::new(); |     let mut contracts = Vec::new(); | ||||||
|     let mut grpc_stream = client.register_node(req).await?.into_inner(); |     let mut grpc_stream = client.register_vm_node(req).await?.into_inner(); | ||||||
|     while let Some(stream_update) = grpc_stream.next().await { |     while let Some(stream_update) = grpc_stream.next().await { | ||||||
|         match stream_update { |         match stream_update { | ||||||
|             Ok(node) => { |             Ok(node) => { | ||||||
| @ -85,9 +85,9 @@ fn sign_stream_auth(contracts: Vec<String>) -> Result<snp_proto::DaemonStreamAut | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async fn receive_messages( | async fn receive_messages( | ||||||
|     mut client: BrainDaemonClient<Channel>, |     mut client: BrainVmDaemonClient<Channel>, | ||||||
|     contracts: Vec<String>, |     contracts: Vec<String>, | ||||||
|     tx: Sender<BrainMessage>, |     tx: Sender<BrainVmMessage>, | ||||||
| ) -> Result<()> { | ) -> Result<()> { | ||||||
|     debug!("starting to listen for messages from brain"); |     debug!("starting to listen for messages from brain"); | ||||||
|     let mut grpc_stream = client.brain_messages(sign_stream_auth(contracts)?).await?.into_inner(); |     let mut grpc_stream = client.brain_messages(sign_stream_auth(contracts)?).await?.into_inner(); | ||||||
| @ -107,15 +107,15 @@ async fn receive_messages( | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async fn send_messages( | async fn send_messages( | ||||||
|     mut client: BrainDaemonClient<Channel>, |     mut client: BrainVmDaemonClient<Channel>, | ||||||
|     contracts: Vec<String>, |     contracts: Vec<String>, | ||||||
|     rx: Receiver<DaemonMessage>, |     rx: Receiver<VmDaemonMessage>, | ||||||
|     tx: Sender<DaemonMessage>, |     tx: Sender<VmDaemonMessage>, | ||||||
| ) -> Result<()> { | ) -> Result<()> { | ||||||
|     debug!("starting daemon message stream to brain"); |     debug!("starting daemon message stream to brain"); | ||||||
|     let rx_stream = ReceiverStream::new(rx); |     let rx_stream = ReceiverStream::new(rx); | ||||||
|     tx.send(DaemonMessage { |     tx.send(VmDaemonMessage { | ||||||
|         msg: Some(snp_proto::daemon_message::Msg::Auth(sign_stream_auth(contracts)?)), |         msg: Some(snp_proto::vm_daemon_message::Msg::Auth(sign_stream_auth(contracts)?)), | ||||||
|     }) |     }) | ||||||
|     .await?; |     .await?; | ||||||
|     client.daemon_messages(rx_stream).await?; |     client.daemon_messages(rx_stream).await?; | ||||||
| @ -126,13 +126,13 @@ async fn send_messages( | |||||||
| pub struct ConnectionData { | pub struct ConnectionData { | ||||||
|     pub contracts: Vec<String>, |     pub contracts: Vec<String>, | ||||||
|     pub brain_url: String, |     pub brain_url: String, | ||||||
|     pub brain_msg_tx: Sender<BrainMessage>, |     pub brain_msg_tx: Sender<BrainVmMessage>, | ||||||
|     pub daemon_msg_rx: Receiver<DaemonMessage>, |     pub daemon_msg_rx: Receiver<VmDaemonMessage>, | ||||||
|     pub daemon_msg_tx: Sender<DaemonMessage>, |     pub daemon_msg_tx: Sender<VmDaemonMessage>, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub async fn connect_and_run(cd: ConnectionData) -> Result<()> { | pub async fn connect_and_run(cd: ConnectionData) -> Result<()> { | ||||||
|     let client = BrainDaemonClient::connect(cd.brain_url).await?; |     let client = BrainVmDaemonClient::connect(cd.brain_url).await?; | ||||||
|     let mut streaming_tasks = JoinSet::new(); |     let mut streaming_tasks = JoinSet::new(); | ||||||
| 
 | 
 | ||||||
|     streaming_tasks.spawn(receive_messages(client.clone(), cd.contracts.clone(), cd.brain_msg_tx)); |     streaming_tasks.spawn(receive_messages(client.clone(), cd.contracts.clone(), cd.brain_msg_tx)); | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								src/main.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										18
									
								
								src/main.rs
									
									
									
									
									
								
							| @ -14,8 +14,8 @@ use tokio::{ | |||||||
| 
 | 
 | ||||||
| #[allow(dead_code)] | #[allow(dead_code)] | ||||||
| struct VMHandler { | struct VMHandler { | ||||||
|     receiver: Receiver<snp_proto::BrainMessage>, |     receiver: Receiver<snp_proto::BrainVmMessage>, | ||||||
|     sender: Sender<snp_proto::DaemonMessage>, |     sender: Sender<snp_proto::VmDaemonMessage>, | ||||||
|     config: Config, |     config: Config, | ||||||
|     res: state::Resources, |     res: state::Resources, | ||||||
| } | } | ||||||
| @ -23,8 +23,8 @@ struct VMHandler { | |||||||
| #[allow(dead_code)] | #[allow(dead_code)] | ||||||
| impl VMHandler { | impl VMHandler { | ||||||
|     fn new( |     fn new( | ||||||
|         receiver: Receiver<snp_proto::BrainMessage>, |         receiver: Receiver<snp_proto::BrainVmMessage>, | ||||||
|         sender: Sender<snp_proto::DaemonMessage>, |         sender: Sender<snp_proto::VmDaemonMessage>, | ||||||
|     ) -> Self { |     ) -> Self { | ||||||
|         let config = match Config::load_from_disk(DAEMON_CONFIG_PATH) { |         let config = match Config::load_from_disk(DAEMON_CONFIG_PATH) { | ||||||
|             Ok(config) => config, |             Ok(config) => config, | ||||||
| @ -68,7 +68,7 @@ impl VMHandler { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         let avail_storage_gb = avail_storage_gb as u32; |         let avail_storage_gb = avail_storage_gb as u32; | ||||||
|         let res = snp_proto::NodeResources { |         let res = snp_proto::VmNodeResources { | ||||||
|             node_pubkey: PUBLIC_KEY.clone(), |             node_pubkey: PUBLIC_KEY.clone(), | ||||||
|             avail_ports: (self.config.public_port_range.len() - self.res.reserved_ports.len()) |             avail_ports: (self.config.public_port_range.len() - self.res.reserved_ports.len()) | ||||||
|                 as u32, |                 as u32, | ||||||
| @ -180,15 +180,15 @@ impl VMHandler { | |||||||
|         self.send_node_resources().await; |         self.send_node_resources().await; | ||||||
|         while let Some(brain_msg) = self.receiver.recv().await { |         while let Some(brain_msg) = self.receiver.recv().await { | ||||||
|             match brain_msg.msg { |             match brain_msg.msg { | ||||||
|                 Some(snp_proto::brain_message::Msg::NewVmReq(new_vm_req)) => { |                 Some(snp_proto::brain_vm_message::Msg::NewVmReq(new_vm_req)) => { | ||||||
|                     self.handle_new_vm_req(new_vm_req).await; |                     self.handle_new_vm_req(new_vm_req).await; | ||||||
|                 } |                 } | ||||||
|                 Some(snp_proto::brain_message::Msg::UpdateVmReq(update_vm_req)) => { |                 Some(snp_proto::brain_vm_message::Msg::UpdateVmReq(update_vm_req)) => { | ||||||
|                     if let Err(e) = self.handle_update_vm_req(update_vm_req).await { |                     if let Err(e) = self.handle_update_vm_req(update_vm_req).await { | ||||||
|                         log::error!("Could not update vm: {e:?}"); |                         log::error!("Could not update vm: {e:?}"); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|                 Some(snp_proto::brain_message::Msg::DeleteVm(delete_vm_req)) => { |                 Some(snp_proto::brain_vm_message::Msg::DeleteVm(delete_vm_req)) => { | ||||||
|                     let uuid = delete_vm_req.uuid.clone(); |                     let uuid = delete_vm_req.uuid.clone(); | ||||||
|                     if let Err(e) = self.handle_delete_vm(delete_vm_req) { |                     if let Err(e) = self.handle_delete_vm(delete_vm_req) { | ||||||
|                         log::error!("Could not delete vm {uuid}: {e:?}"); |                         log::error!("Could not delete vm {uuid}: {e:?}"); | ||||||
| @ -201,7 +201,7 @@ impl VMHandler { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn clear_deleted_contracts(&mut self, contracts: Vec<snp_proto::Contract>) { |     fn clear_deleted_contracts(&mut self, contracts: Vec<snp_proto::VmContract>) { | ||||||
|         for uuid in self.res.existing_vms.clone() { |         for uuid in self.res.existing_vms.clone() { | ||||||
|             if contracts.iter().find(|c| c.uuid == uuid).is_none() { |             if contracts.iter().find(|c| c.uuid == uuid).is_none() { | ||||||
|                 info!("VM {uuid} exists locally but not found in brain. Deleting..."); |                 info!("VM {uuid} exists locally but not found in brain. Deleting..."); | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| syntax = "proto3"; | syntax = "proto3"; | ||||||
| package snp_proto; | package vm_proto; | ||||||
| 
 | 
 | ||||||
| message Empty { | message Empty { | ||||||
| } | } | ||||||
| @ -13,7 +13,7 @@ message AccountBalance { | |||||||
|   uint64 tmp_locked = 2; |   uint64 tmp_locked = 2; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message Contract { | message VmContract { | ||||||
|   string uuid = 1; |   string uuid = 1; | ||||||
|   string hostname = 2; |   string hostname = 2; | ||||||
|   string admin_pubkey = 3; |   string admin_pubkey = 3; | ||||||
| @ -53,7 +53,7 @@ message MeasurementIP { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // This should also include a block hash or similar, for auth | // This should also include a block hash or similar, for auth | ||||||
| message RegisterNodeReq { | message RegisterVmNodeReq { | ||||||
|   string node_pubkey = 1; |   string node_pubkey = 1; | ||||||
|   string owner_pubkey = 2; |   string owner_pubkey = 2; | ||||||
|   string main_ip = 3; |   string main_ip = 3; | ||||||
| @ -64,7 +64,7 @@ message RegisterNodeReq { | |||||||
|   uint64 price = 7; |   uint64 price = 7; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message NodeResources { | message VmNodeResources { | ||||||
|   string node_pubkey = 1; |   string node_pubkey = 1; | ||||||
|   uint32 avail_ports = 2; |   uint32 avail_ports = 2; | ||||||
|   uint32 avail_ipv4 = 3; |   uint32 avail_ipv4 = 3; | ||||||
| @ -123,7 +123,7 @@ message DeleteVmReq { | |||||||
|   string admin_pubkey = 2; |   string admin_pubkey = 2; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message BrainMessage { | message BrainVmMessage { | ||||||
|   oneof Msg { |   oneof Msg { | ||||||
|     NewVmReq new_vm_req = 1; |     NewVmReq new_vm_req = 1; | ||||||
|     UpdateVmReq update_vm_req = 2; |     UpdateVmReq update_vm_req = 2; | ||||||
| @ -138,28 +138,28 @@ message DaemonStreamAuth { | |||||||
|   string signature = 4; |   string signature = 4; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message DaemonMessage { | message VmDaemonMessage { | ||||||
|   oneof Msg { |   oneof Msg { | ||||||
|     DaemonStreamAuth auth = 1; |     DaemonStreamAuth auth = 1; | ||||||
|     NewVmResp new_vm_resp = 2; |     NewVmResp new_vm_resp = 2; | ||||||
|     UpdateVmResp update_vm_resp = 3; |     UpdateVmResp update_vm_resp = 3; | ||||||
|     NodeResources node_resources = 4; |     VmNodeResources vm_node_resources = 4; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| service BrainDaemon { | service BrainVmDaemon { | ||||||
|   rpc RegisterNode (RegisterNodeReq) returns (stream Contract); |   rpc RegisterVmNode (RegisterVmNodeReq) returns (stream VmContract); | ||||||
|   rpc BrainMessages (DaemonStreamAuth) returns (stream BrainMessage); |   rpc BrainMessages (DaemonStreamAuth) returns (stream BrainVmMessage); | ||||||
|   rpc DaemonMessages (stream DaemonMessage) returns (Empty); |   rpc DaemonMessages (stream VmDaemonMessage) returns (Empty); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message ListContractsReq { | message ListVmContractsReq { | ||||||
|   string admin_pubkey = 1; |   string admin_pubkey = 1; | ||||||
|   string node_pubkey = 2; |   string node_pubkey = 2; | ||||||
|   string uuid = 3; |   string uuid = 3; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message NodeFilters { | message VmNodeFilters { | ||||||
|   uint32 free_ports = 1; |   uint32 free_ports = 1; | ||||||
|   bool offers_ipv4 = 2; |   bool offers_ipv4 = 2; | ||||||
|   bool offers_ipv6 = 3; |   bool offers_ipv6 = 3; | ||||||
| @ -173,7 +173,7 @@ message NodeFilters { | |||||||
|   string node_pubkey = 11; |   string node_pubkey = 11; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message NodeListResp { | message VmNodeListResp { | ||||||
|   string node_pubkey = 1; |   string node_pubkey = 1; | ||||||
|   string country = 2; |   string country = 2; | ||||||
|   string region = 3; |   string region = 3; | ||||||
| @ -191,14 +191,28 @@ message ExtendVmReq { | |||||||
|   uint64 locked_nano = 3; |   uint64 locked_nano = 3; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | message AirdropReq { | ||||||
|  |   string pubkey = 1; | ||||||
|  |   uint64 tokens = 2; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | message Account { | ||||||
|  |   string pubkey = 1; | ||||||
|  |   uint64 balance = 2; | ||||||
|  |   uint64 tmp_locked = 3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| service BrainCli { | service BrainCli { | ||||||
|   rpc GetAirdrop (Pubkey) returns (Empty); |  | ||||||
|   rpc GetBalance (Pubkey) returns (AccountBalance); |   rpc GetBalance (Pubkey) returns (AccountBalance); | ||||||
|   rpc NewVm (NewVmReq) returns (NewVmResp); |   rpc NewVm (NewVmReq) returns (NewVmResp); | ||||||
|   rpc ListContracts (ListContractsReq) returns (stream Contract); |   rpc ListVmContracts (ListVmContractsReq) returns (stream VmContract); | ||||||
|   rpc ListNodes (NodeFilters) returns (stream NodeListResp); |   rpc ListVmNodes (VmNodeFilters) returns (stream VmNodeListResp); | ||||||
|   rpc GetOneNode (NodeFilters) returns (NodeListResp); |   rpc GetOneVmNode (VmNodeFilters) returns (VmNodeListResp); | ||||||
|   rpc DeleteVm (DeleteVmReq) returns (Empty); |   rpc DeleteVm (DeleteVmReq) returns (Empty); | ||||||
|   rpc UpdateVm (UpdateVmReq) returns (UpdateVmResp); |   rpc UpdateVm (UpdateVmReq) returns (UpdateVmResp); | ||||||
|   rpc ExtendVm (ExtendVmReq) returns (Empty); |   rpc ExtendVm (ExtendVmReq) returns (Empty); | ||||||
|  |   // admin commands | ||||||
|  |   rpc Airdrop (AirdropReq) returns (Empty); | ||||||
|  |   rpc ListAllVmContracts (Empty) returns (stream VmContract); | ||||||
|  |   rpc ListAccounts (Empty) returns (stream Account); | ||||||
| } | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user