rename operator_pubkey to operator_wallet and add max_memory_mb_per_app field; submit node pricing on registering node
This commit is contained in:
		
							parent
							
								
									d790e2cb98
								
							
						
					
					
						commit
						d7ae481085
					
				| @ -5,8 +5,9 @@ use serde::{Deserialize, Serialize}; | |||||||
| pub struct HostConfig { | pub struct HostConfig { | ||||||
|     pub brain_url: String, |     pub brain_url: String, | ||||||
|     pub host_ip_address: String, |     pub host_ip_address: String, | ||||||
|     pub operator_pubkey: String, |     pub operator_wallet: String, | ||||||
|     pub max_cores_per_app: u32, |     pub max_cores_per_app: u32, | ||||||
|  |     pub max_memory_mb_per_app: u32, | ||||||
|     pub max_vcpu_reservation: u32, |     pub max_vcpu_reservation: u32, | ||||||
|     pub max_mem_reservation_mb: u32, |     pub max_mem_reservation_mb: u32, | ||||||
|     pub max_disk_reservation_mb: u32, |     pub max_disk_reservation_mb: u32, | ||||||
| @ -24,37 +25,6 @@ fn default_reserved_no_of_port() -> u32 { | |||||||
|     16 |     16 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* |  | ||||||
| impl Default for HostConfig { |  | ||||||
|     fn default() -> Self { |  | ||||||
|         // TODO: load from config file
 |  | ||||||
|         let brain_url = |  | ||||||
|             std::env::var("BRAIN_URL").unwrap_or_else(|_| "http://127.0.0.1:31337".to_string()); |  | ||||||
|         let owner_wallet = "0x".to_string(); |  | ||||||
|         let host_ip_address = "127.0.0.1".to_string(); |  | ||||||
| 
 |  | ||||||
|         let max_cores_per_app = 4; |  | ||||||
|         let max_vcpu_reservation = 8; |  | ||||||
|         let max_mem_reservation_mb = 8192; |  | ||||||
|         let max_ports_per_app = 9; |  | ||||||
|         let price = 0; |  | ||||||
| 
 |  | ||||||
|         Self { |  | ||||||
|             brain_url, |  | ||||||
|             host_ip_address, |  | ||||||
|             owner_wallet, |  | ||||||
|             max_cores_per_app, |  | ||||||
|             max_ports_per_app, |  | ||||||
|             max_vcpu_reservation, |  | ||||||
|             max_mem_reservation_mb, |  | ||||||
|             price, |  | ||||||
| 
 |  | ||||||
|             delete_archive: true, |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| impl HostConfig { | impl HostConfig { | ||||||
|     pub fn load_from_disk(path: &str) -> Result<Self> { |     pub fn load_from_disk(path: &str) -> Result<Self> { | ||||||
|         let content = std::fs::read_to_string(path)?; |         let content = std::fs::read_to_string(path)?; | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								src/data.rs
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										17
									
								
								src/data.rs
									
									
									
									
									
								
							| @ -92,11 +92,28 @@ impl App { | |||||||
|         host_config: &HostConfig, |         host_config: &HostConfig, | ||||||
|         host_resource: &mut HostResources, |         host_resource: &mut HostResources, | ||||||
|     ) -> Result<Self> { |     ) -> Result<Self> { | ||||||
|  |         if new_app_req.price_per_unit < host_config.price { | ||||||
|  |             return Err(anyhow!("price is too low")); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if host_resource.existing_apps.contains(&new_app_req.uuid) { | ||||||
|  |             let content = | ||||||
|  |                 std::fs::read_to_string(format!("{}{}.yaml", *APP_CONFIG_DIR, &new_app_req.uuid))?; | ||||||
|  |             let app: App = serde_yml::from_str(&content)?; | ||||||
|  |             return Err(anyhow!("app already exists\n{:?}", app)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         let app_uuid = new_app_req.uuid.clone(); |         let app_uuid = new_app_req.uuid.clone(); | ||||||
| 
 | 
 | ||||||
|         if host_config.max_cores_per_app < new_app_req.resource.vcpu { |         if host_config.max_cores_per_app < new_app_req.resource.vcpu { | ||||||
|             return Err(anyhow!("too many vcpus for app")); |             return Err(anyhow!("too many vcpus for app")); | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         if host_config.max_memory_mb_per_app < new_app_req.resource.memory_mb { | ||||||
|  |             return Err(anyhow!("too much memory for app")); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         // TODO: revert state if any error
 | ||||||
|         if host_config.max_vcpu_reservation |         if host_config.max_vcpu_reservation | ||||||
|             < host_resource |             < host_resource | ||||||
|                 .reserved_vcpus |                 .reserved_vcpus | ||||||
|  | |||||||
| @ -30,11 +30,12 @@ pub async fn register_node(config: &crate::HostConfig) -> Result<Vec<AppContract | |||||||
| 
 | 
 | ||||||
|     let req = RegisterAppNodeReq { |     let req = RegisterAppNodeReq { | ||||||
|         node_pubkey: PUBLIC_KEY.to_string(), |         node_pubkey: PUBLIC_KEY.to_string(), | ||||||
|         operator_pubkey: config.operator_pubkey.clone(), |         operator_wallet: config.operator_wallet.clone(), | ||||||
|         main_ip: IP_INFO.ip.clone(), |         main_ip: IP_INFO.ip.clone(), | ||||||
|         city: IP_INFO.city.clone(), |         city: IP_INFO.city.clone(), | ||||||
|         region: IP_INFO.region.clone(), |         region: IP_INFO.region.clone(), | ||||||
|         country: IP_INFO.country.clone(), |         country: IP_INFO.country.clone(), | ||||||
|  |         price: config.price, | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     let pubkey = PUBLIC_KEY.clone(); |     let pubkey = PUBLIC_KEY.clone(); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user