updater #1
| @ -8,7 +8,7 @@ message NodePubkey { | |||||||
|   string node_pubkey = 1; |   string node_pubkey = 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message RegisterNodeRequest {  | message RegisterNodeReq {  | ||||||
|   string node_pubkey = 1; |   string node_pubkey = 1; | ||||||
|   string owner_pubkey = 2; |   string owner_pubkey = 2; | ||||||
|   string ip = 3; |   string ip = 3; | ||||||
| @ -23,7 +23,7 @@ message RegisterNodeRequest { | |||||||
|   uint32 max_ports_per_vm = 12; |   uint32 max_ports_per_vm = 12; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message NewVMRequest { | message NewVMReq { | ||||||
|   string uuid = 1; // UUID is empty when CLI sends request; brain sets UUID |   string uuid = 1; // UUID is empty when CLI sends request; brain sets UUID | ||||||
|   string hostname = 2; |   string hostname = 2; | ||||||
|   string admin_pubkey = 3; |   string admin_pubkey = 3; | ||||||
| @ -40,7 +40,7 @@ message NewVMRequest { | |||||||
|   string dtrfs_sha = 14; |   string dtrfs_sha = 14; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message UpdateVMRequest { | message UpdateVMReq { | ||||||
|   string uuid = 1; |   string uuid = 1; | ||||||
|   string node_pubkey = 2; |   string node_pubkey = 2; | ||||||
|   uint32 disk_size_gb = 3; |   uint32 disk_size_gb = 3; | ||||||
| @ -79,7 +79,7 @@ message ListVMContractsReq { | |||||||
|   string node_pubkey = 2; |   string node_pubkey = 2; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message NewVMConfirmation { | message NewVMResp { | ||||||
|   string uuid = 1; |   string uuid = 1; | ||||||
|   repeated uint32 exposed_ports = 2; |   repeated uint32 exposed_ports = 2; | ||||||
|   string public_ipv4 = 3; |   string public_ipv4 = 3; | ||||||
| @ -87,20 +87,21 @@ message NewVMConfirmation { | |||||||
|   string error = 5; |   string error = 5; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message DeletedVMUpdate { | message DeleteVMReq { | ||||||
|   string uuid = 1; |   string uuid = 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| service BrainDaemonService { | service BrainDaemonService { | ||||||
|   rpc RegisterNode (RegisterNodeRequest) returns (Empty); |   rpc RegisterNode (RegisterNodeReq) returns (Empty); | ||||||
|   rpc GetNewVMReqs (NodePubkey) returns (stream NewVMRequest); |   rpc GetNewVMReqs (NodePubkey) returns (stream NewVMReq); | ||||||
|   rpc SendVMConfirmations (stream NewVMConfirmation) returns (Empty); |   rpc SendNewVMResp (stream NewVMResp) returns (Empty); | ||||||
|   rpc DeletedVMUpdates (NodePubkey) returns (stream DeletedVMUpdate); |   rpc GetDeleteVMReq (NodePubkey) returns (stream DeleteVMReq); | ||||||
|   rpc ListVMContracts (ListVMContractsReq) returns (stream VMContract); |   rpc ListVMContracts (ListVMContractsReq) returns (stream VMContract); | ||||||
|   rpc GetUpdateVM (NodePubkey) returns (stream UpdateVMRequest); |   rpc GetUpdateVMReq (NodePubkey) returns (stream UpdateVMReq); | ||||||
|   rpc SendUpdateVM (stream UpdateVMResp) returns (Empty); |   rpc SendUpdateVMResp (stream UpdateVMResp) returns (Empty); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| message NodeFilters { | message NodeFilters { | ||||||
|   uint32 free_ports = 1; |   uint32 free_ports = 1; | ||||||
|   bool offers_ipv4 = 2; |   bool offers_ipv4 = 2; | ||||||
| @ -121,9 +122,9 @@ message NodeListResp { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| service BrainCliService { | service BrainCliService { | ||||||
|   rpc CreateVMContract (NewVMRequest) returns (NewVMConfirmation); |   rpc CreateVMContract (NewVMReq) returns (NewVMResp); | ||||||
|   rpc ListVMContracts (ListVMContractsReq) returns (stream VMContract); |   rpc ListVMContracts (ListVMContractsReq) returns (stream VMContract); | ||||||
|   rpc ListNodes (NodeFilters) returns (stream NodeListResp); |   rpc ListNodes (NodeFilters) returns (stream NodeListResp); | ||||||
|   rpc DeleteVM (DeletedVMUpdate) returns (Empty); |   rpc DeleteVM (DeleteVMReq) returns (Empty); | ||||||
|   rpc UpdateVM (UpdateVMRequest) returns (UpdateVMResp); |   rpc UpdateVM (UpdateVMReq) returns (UpdateVMResp); | ||||||
| } | } | ||||||
| @ -5,8 +5,8 @@ pub mod brain { | |||||||
| 
 | 
 | ||||||
| use anyhow::Result; | use anyhow::Result; | ||||||
| use brain::{ | use brain::{ | ||||||
|     brain_cli_service_client::BrainCliServiceClient, DeletedVmUpdate, ListVmContractsReq, |     brain_cli_service_client::BrainCliServiceClient, DeleteVmReq, ListVmContractsReq, | ||||||
|     NewVmRequest, NodeFilters, NodeListResp, VmContract, UpdateVmRequest, |     NewVmReq, NodeFilters, NodeListResp, VmContract, UpdateVmReq, | ||||||
| }; | }; | ||||||
| use lazy_static::lazy_static; | use lazy_static::lazy_static; | ||||||
| use log::{debug, info, warn}; | use log::{debug, info, warn}; | ||||||
| @ -65,7 +65,7 @@ async fn submit_vm_request( | |||||||
|     mut client: BrainCliServiceClient<Channel>, |     mut client: BrainCliServiceClient<Channel>, | ||||||
|     node_pubkey: &str, |     node_pubkey: &str, | ||||||
| ) -> Result<()> { | ) -> Result<()> { | ||||||
|     let req = NewVmRequest { |     let req = NewVmReq { | ||||||
|         uuid: String::new(), |         uuid: String::new(), | ||||||
|         admin_pubkey: SECURE_PUBLIC_KEY.clone(), |         admin_pubkey: SECURE_PUBLIC_KEY.clone(), | ||||||
|         node_pubkey: node_pubkey.to_string(), |         node_pubkey: node_pubkey.to_string(), | ||||||
| @ -123,7 +123,7 @@ async fn list_contracts(mut client: BrainCliServiceClient<Channel>) -> Result<Ve | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async fn delete_vm(mut client: BrainCliServiceClient<Channel>, uuid: &str) -> Result<()> { | async fn delete_vm(mut client: BrainCliServiceClient<Channel>, uuid: &str) -> Result<()> { | ||||||
|     let req = DeletedVmUpdate { |     let req = DeleteVmReq { | ||||||
|         uuid: uuid.to_string(), |         uuid: uuid.to_string(), | ||||||
|     }; |     }; | ||||||
|     info!("Creating VM {req:?}"); |     info!("Creating VM {req:?}"); | ||||||
| @ -140,7 +140,7 @@ async fn update_vm_request( | |||||||
|     node_pubkey: &str, |     node_pubkey: &str, | ||||||
|     uuid: &str, 
 |     uuid: &str, 
 | ||||||
| ) -> Result<()> { | ) -> Result<()> { | ||||||
|     let req = UpdateVmRequest { |     let req = UpdateVmReq { | ||||||
|         uuid: uuid.to_string(), |         uuid: uuid.to_string(), | ||||||
|         node_pubkey: node_pubkey.to_string(), |         node_pubkey: node_pubkey.to_string(), | ||||||
|         vcpus: 4, |         vcpus: 4, | ||||||
|  | |||||||
| @ -8,7 +8,7 @@ message NodePubkey { | |||||||
|   string node_pubkey = 1; |   string node_pubkey = 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message RegisterNodeRequest {  | message RegisterNodeReq {  | ||||||
|   string node_pubkey = 1; |   string node_pubkey = 1; | ||||||
|   string owner_pubkey = 2; |   string owner_pubkey = 2; | ||||||
|   string ip = 3; |   string ip = 3; | ||||||
| @ -23,7 +23,7 @@ message RegisterNodeRequest { | |||||||
|   uint32 max_ports_per_vm = 12; |   uint32 max_ports_per_vm = 12; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message NewVMRequest { | message NewVMReq { | ||||||
|   string uuid = 1; // UUID is empty when CLI sends request; brain sets UUID |   string uuid = 1; // UUID is empty when CLI sends request; brain sets UUID | ||||||
|   string hostname = 2; |   string hostname = 2; | ||||||
|   string admin_pubkey = 3; |   string admin_pubkey = 3; | ||||||
| @ -40,7 +40,7 @@ message NewVMRequest { | |||||||
|   string dtrfs_sha = 14; |   string dtrfs_sha = 14; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message UpdateVMRequest { | message UpdateVMReq { | ||||||
|   string uuid = 1; |   string uuid = 1; | ||||||
|   string node_pubkey = 2; |   string node_pubkey = 2; | ||||||
|   uint32 disk_size_gb = 3; |   uint32 disk_size_gb = 3; | ||||||
| @ -79,7 +79,7 @@ message ListVMContractsReq { | |||||||
|   string node_pubkey = 2; |   string node_pubkey = 2; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message NewVMConfirmation { | message NewVMResp { | ||||||
|   string uuid = 1; |   string uuid = 1; | ||||||
|   repeated uint32 exposed_ports = 2; |   repeated uint32 exposed_ports = 2; | ||||||
|   string public_ipv4 = 3; |   string public_ipv4 = 3; | ||||||
| @ -87,20 +87,21 @@ message NewVMConfirmation { | |||||||
|   string error = 5; |   string error = 5; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| message DeletedVMUpdate { | message DeleteVMReq { | ||||||
|   string uuid = 1; |   string uuid = 1; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| service BrainDaemonService { | service BrainDaemonService { | ||||||
|   rpc RegisterNode (RegisterNodeRequest) returns (Empty); |   rpc RegisterNode (RegisterNodeReq) returns (Empty); | ||||||
|   rpc GetNewVMReqs (NodePubkey) returns (stream NewVMRequest); |   rpc GetNewVMReqs (NodePubkey) returns (stream NewVMReq); | ||||||
|   rpc SendVMConfirmations (stream NewVMConfirmation) returns (Empty); |   rpc SendNewVMResp (stream NewVMResp) returns (Empty); | ||||||
|   rpc DeletedVMUpdates (NodePubkey) returns (stream DeletedVMUpdate); |   rpc GetDeleteVMReq (NodePubkey) returns (stream DeleteVMReq); | ||||||
|   rpc ListVMContracts (ListVMContractsReq) returns (stream VMContract); |   rpc ListVMContracts (ListVMContractsReq) returns (stream VMContract); | ||||||
|   rpc GetUpdateVM (NodePubkey) returns (stream UpdateVMRequest); |   rpc GetUpdateVMReq (NodePubkey) returns (stream UpdateVMReq); | ||||||
|   rpc SendUpdateVM (stream UpdateVMResp) returns (Empty); |   rpc SendUpdateVMResp (stream UpdateVMResp) returns (Empty); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| message NodeFilters { | message NodeFilters { | ||||||
|   uint32 free_ports = 1; |   uint32 free_ports = 1; | ||||||
|   bool offers_ipv4 = 2; |   bool offers_ipv4 = 2; | ||||||
| @ -121,9 +122,9 @@ message NodeListResp { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| service BrainCliService { | service BrainCliService { | ||||||
|   rpc CreateVMContract (NewVMRequest) returns (NewVMConfirmation); |   rpc CreateVMContract (NewVMReq) returns (NewVMResp); | ||||||
|   rpc ListVMContracts (ListVMContractsReq) returns (stream VMContract); |   rpc ListVMContracts (ListVMContractsReq) returns (stream VMContract); | ||||||
|   rpc ListNodes (NodeFilters) returns (stream NodeListResp); |   rpc ListNodes (NodeFilters) returns (stream NodeListResp); | ||||||
|   rpc DeleteVM (DeletedVMUpdate) returns (Empty); |   rpc DeleteVM (DeleteVMReq) returns (Empty); | ||||||
|   rpc UpdateVM (UpdateVMRequest) returns (UpdateVMResp); |   rpc UpdateVM (UpdateVMReq) returns (UpdateVMResp); | ||||||
| } | } | ||||||
| @ -5,8 +5,8 @@ pub mod brain { | |||||||
| 
 | 
 | ||||||
| use anyhow::Result; | use anyhow::Result; | ||||||
| use brain::{ | use brain::{ | ||||||
|     brain_daemon_service_client::BrainDaemonServiceClient, DeletedVmUpdate, NewVmConfirmation, |     brain_daemon_service_client::BrainDaemonServiceClient, DeleteVmReq, NewVmResp, | ||||||
|     NewVmRequest, NodePubkey, RegisterNodeRequest, UpdateVmRequest, UpdateVmResp |     NewVmReq, NodePubkey, RegisterNodeReq, UpdateVmReq, UpdateVmResp, | ||||||
| }; | }; | ||||||
| use lazy_static::lazy_static; | use lazy_static::lazy_static; | ||||||
| use log::{debug, error, info, warn}; | use log::{debug, error, info, warn}; | ||||||
| @ -31,7 +31,7 @@ fn generate_random_string() -> String { | |||||||
| 
 | 
 | ||||||
| async fn listen_for_new_vm_reqs( | async fn listen_for_new_vm_reqs( | ||||||
|     mut client: BrainDaemonServiceClient<Channel>, |     mut client: BrainDaemonServiceClient<Channel>, | ||||||
|     tx: Sender<NewVmRequest>, |     tx: Sender<NewVmReq>, | ||||||
| ) -> Result<()> { | ) -> Result<()> { | ||||||
|     debug!("starting listen_for_new_vm_reqs"); |     debug!("starting listen_for_new_vm_reqs"); | ||||||
|     let node_pubkey = SECURE_PUBLIC_KEY.clone(); |     let node_pubkey = SECURE_PUBLIC_KEY.clone(); | ||||||
| @ -56,18 +56,18 @@ async fn listen_for_new_vm_reqs( | |||||||
| 
 | 
 | ||||||
| async fn send_newvm_resp( | async fn send_newvm_resp( | ||||||
|     mut client: BrainDaemonServiceClient<Channel>, |     mut client: BrainDaemonServiceClient<Channel>, | ||||||
|     rx: Receiver<NewVmConfirmation>, |     rx: Receiver<NewVmResp>, | ||||||
| ) -> Result<()> { | ) -> Result<()> { | ||||||
|     debug!("starting send_newvm_resp stream"); |     debug!("starting send_newvm_resp stream"); | ||||||
|     let rx_stream = ReceiverStream::new(rx); |     let rx_stream = ReceiverStream::new(rx); | ||||||
|     client.send_vm_confirmations(rx_stream).await?; |     client.send_new_vm_resp(rx_stream).await?; | ||||||
|     debug!("send_newvm_resp is about to exit"); |     debug!("send_newvm_resp is about to exit"); | ||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async fn register_node(mut client: BrainDaemonServiceClient<Channel>) { | async fn register_node(mut client: BrainDaemonServiceClient<Channel>) { | ||||||
|     debug!("Starting node registration..."); |     debug!("Starting node registration..."); | ||||||
|     let req = RegisterNodeRequest { |     let req = RegisterNodeReq { | ||||||
|         node_pubkey: SECURE_PUBLIC_KEY.clone(), |         node_pubkey: SECURE_PUBLIC_KEY.clone(), | ||||||
|         owner_pubkey: "IamTheOwnerOf".to_string() + &SECURE_PUBLIC_KEY, |         owner_pubkey: "IamTheOwnerOf".to_string() + &SECURE_PUBLIC_KEY, | ||||||
|         ip: "10.0.10.1".to_string(), |         ip: "10.0.10.1".to_string(), | ||||||
| @ -92,12 +92,12 @@ async fn register_node(mut client: BrainDaemonServiceClient<Channel>) { | |||||||
| 
 | 
 | ||||||
| async fn listen_for_deleted_vms( | async fn listen_for_deleted_vms( | ||||||
|     mut client: BrainDaemonServiceClient<Channel>, |     mut client: BrainDaemonServiceClient<Channel>, | ||||||
|     tx: Sender<DeletedVmUpdate>, |     tx: Sender<DeleteVmReq>, | ||||||
| ) -> Result<()> { | ) -> Result<()> { | ||||||
|     debug!("starting listen_for_new_vm_reqs"); |     debug!("starting listen_for_new_vm_reqs"); | ||||||
|     let node_pubkey = SECURE_PUBLIC_KEY.clone(); |     let node_pubkey = SECURE_PUBLIC_KEY.clone(); | ||||||
|     let mut grpc_stream = client |     let mut grpc_stream = client | ||||||
|         .deleted_vm_updates(NodePubkey { node_pubkey }) |         .get_delete_vm_req(NodePubkey { node_pubkey }) | ||||||
|         .await? |         .await? | ||||||
|         .into_inner(); |         .into_inner(); | ||||||
|     while let Some(stream_update) = grpc_stream.next().await { |     while let Some(stream_update) = grpc_stream.next().await { | ||||||
| @ -117,12 +117,12 @@ async fn listen_for_deleted_vms( | |||||||
| 
 | 
 | ||||||
| async fn listen_for_update_vm_reqs( | async fn listen_for_update_vm_reqs( | ||||||
|     mut client: BrainDaemonServiceClient<Channel>, |     mut client: BrainDaemonServiceClient<Channel>, | ||||||
|     tx: Sender<UpdateVmRequest>, |     tx: Sender<UpdateVmReq>, | ||||||
| ) -> Result<()> { | ) -> Result<()> { | ||||||
|     debug!("starting listen_for_update_vm_reqs"); |     debug!("starting listen_for_update_vm_reqs"); | ||||||
|     let node_pubkey = SECURE_PUBLIC_KEY.clone(); |     let node_pubkey = SECURE_PUBLIC_KEY.clone(); | ||||||
|     let mut grpc_stream = client |     let mut grpc_stream = client | ||||||
|         .get_update_vm(NodePubkey { node_pubkey }) |         .get_update_vm_req(NodePubkey { node_pubkey }) | ||||||
|         .await? |         .await? | ||||||
|         .into_inner(); |         .into_inner(); | ||||||
|     while let Some(stream_update) = grpc_stream.next().await { |     while let Some(stream_update) = grpc_stream.next().await { | ||||||
| @ -141,7 +141,7 @@ async fn listen_for_update_vm_reqs( | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async fn handle_update_vm_requests( | async fn handle_update_vm_requests( | ||||||
|     mut req: Receiver<UpdateVmRequest>, |     mut req: Receiver<UpdateVmReq>, | ||||||
|     resp: Sender<UpdateVmResp> |     resp: Sender<UpdateVmResp> | ||||||
|     ) { |     ) { | ||||||
|     info!("Started to handle update vm requests."); |     info!("Started to handle update vm requests."); | ||||||
| @ -163,12 +163,12 @@ async fn send_updatevm_resp( | |||||||
| ) -> Result<()> { | ) -> Result<()> { | ||||||
|     debug!("starting send_updatevm_resp stream"); |     debug!("starting send_updatevm_resp stream"); | ||||||
|     let rx_stream = ReceiverStream::new(rx); |     let rx_stream = ReceiverStream::new(rx); | ||||||
|     client.send_update_vm(rx_stream).await?; |     client.send_update_vm_resp(rx_stream).await?; | ||||||
|     debug!("send_updatevm_resp is about to exit"); |     debug!("send_updatevm_resp is about to exit"); | ||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async fn handle_vm_requests(mut req: Receiver<NewVmRequest>, resp: Sender<NewVmConfirmation>) { | async fn handle_vm_requests(mut req: Receiver<NewVmReq>, resp: Sender<NewVmResp>) { | ||||||
|     info!("Started to handle vm requests. 1 out of 5 requests will return error."); |     info!("Started to handle vm requests. 1 out of 5 requests will return error."); | ||||||
|     let mut i = 0; |     let mut i = 0; | ||||||
|     while let Some(new_vm) = req.recv().await { |     while let Some(new_vm) = req.recv().await { | ||||||
| @ -185,7 +185,7 @@ async fn handle_vm_requests(mut req: Receiver<NewVmRequest>, resp: Sender<NewVmC | |||||||
|             false => String::new(), |             false => String::new(), | ||||||
|         }; |         }; | ||||||
|         if i != 3 { |         if i != 3 { | ||||||
|             let confirmation = NewVmConfirmation { |             let confirmation = NewVmResp{ | ||||||
|                 uuid: new_vm.uuid, |                 uuid: new_vm.uuid, | ||||||
|                 exposed_ports, |                 exposed_ports, | ||||||
|                 public_ipv4, |                 public_ipv4, | ||||||
| @ -195,7 +195,7 @@ async fn handle_vm_requests(mut req: Receiver<NewVmRequest>, resp: Sender<NewVmC | |||||||
|             info!("Sending NewVmConfirmation: {confirmation:?}"); |             info!("Sending NewVmConfirmation: {confirmation:?}"); | ||||||
|             let _ = resp.send(confirmation).await; |             let _ = resp.send(confirmation).await; | ||||||
|         } else { |         } else { | ||||||
|             let confirmation = NewVmConfirmation { |             let confirmation = NewVmResp { | ||||||
|                 uuid: new_vm.uuid, |                 uuid: new_vm.uuid, | ||||||
|                 exposed_ports: Vec::new(), |                 exposed_ports: Vec::new(), | ||||||
|                 public_ipv4: String::new(), |                 public_ipv4: String::new(), | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user