implement public IP handling Add pub_sub_node field to vm_node table in SQL schema Refactor BRAIN_GRPC_ADDR to use LazyLock for dynamic IP assignment Implement current_brain_endpoint function to retrieve public IP
		
			
				
	
	
		
			153 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
| DEFINE TABLE account SCHEMAFULL;
 | |
| DEFINE FIELD balance ON TABLE account TYPE int DEFAULT 0;
 | |
| DEFINE FIELD tmp_locked ON TABLE account TYPE int DEFAULT 0;
 | |
| DEFINE FIELD escrow ON TABLE account TYPE int DEFAULT 0;
 | |
| DEFINE FIELD email ON TABLE account TYPE string DEFAULT "";
 | |
| 
 | |
| DEFINE TABLE vm_node SCHEMAFULL;
 | |
| DEFINE FIELD operator ON TABLE vm_node TYPE record<account>;
 | |
| DEFINE FIELD pub_sub_node ON TABLE vm_node TYPE string default "127.0.0.1:31337";
 | |
| DEFINE FIELD country ON TABLE vm_node TYPE string;
 | |
| DEFINE FIELD region ON TABLE vm_node TYPE string;
 | |
| DEFINE FIELD city ON TABLE vm_node TYPE string;
 | |
| DEFINE FIELD ip ON TABLE vm_node TYPE string;
 | |
| DEFINE FIELD avail_mem_mb ON TABLE vm_node TYPE int;
 | |
| DEFINE FIELD avail_vcpus ON TABLE vm_node TYPE int;
 | |
| DEFINE FIELD avail_storage_gbs ON TABLE vm_node TYPE int;
 | |
| DEFINE FIELD avail_ipv4 ON TABLE vm_node TYPE int;
 | |
| DEFINE FIELD avail_ipv6 ON TABLE vm_node TYPE int;
 | |
| DEFINE FIELD avail_ports ON TABLE vm_node TYPE int;
 | |
| DEFINE FIELD max_ports_per_vm ON TABLE vm_node TYPE int;
 | |
| DEFINE FIELD price ON TABLE vm_node TYPE int;
 | |
| DEFINE FIELD connected_at ON TABLE vm_node TYPE datetime;
 | |
| DEFINE FIELD disconnected_at ON TABLE vm_node TYPE datetime;
 | |
| 
 | |
| DEFINE TABLE new_vm_req TYPE RELATION FROM account TO vm_node SCHEMAFULL;
 | |
| DEFINE FIELD hostname ON TABLE new_vm_req TYPE string;
 | |
| DEFINE FIELD extra_ports ON TABLE new_vm_req TYPE array<int>;
 | |
| DEFINE FIELD public_ipv4 ON TABLE new_vm_req TYPE bool;
 | |
| DEFINE FIELD public_ipv6 ON TABLE new_vm_req TYPE bool;
 | |
| DEFINE FIELD disk_size_gb ON TABLE new_vm_req TYPE int;
 | |
| DEFINE FIELD vcpus ON TABLE new_vm_req TYPE int;
 | |
| DEFINE FIELD memory_mb ON TABLE new_vm_req TYPE int;
 | |
| DEFINE FIELD dtrfs_sha ON TABLE new_vm_req TYPE string;
 | |
| DEFINE FIELD dtrfs_url ON TABLE new_vm_req TYPE string;
 | |
| DEFINE FIELD kernel_sha ON TABLE new_vm_req TYPE string;
 | |
| DEFINE FIELD kernel_url ON TABLE new_vm_req TYPE string;
 | |
| DEFINE FIELD created_at ON TABLE new_vm_req TYPE datetime;
 | |
| DEFINE FIELD price_per_unit ON TABLE new_vm_req TYPE int;
 | |
| DEFINE FIELD locked_nano ON TABLE new_vm_req TYPE int;
 | |
| DEFINE FIELD error ON TABLE new_vm_req TYPE string;
 | |
| 
 | |
| DEFINE TABLE active_vm TYPE RELATION FROM account TO vm_node SCHEMAFULL;
 | |
| DEFINE FIELD hostname ON TABLE active_vm TYPE string;
 | |
| DEFINE FIELD mapped_ports ON TABLE active_vm TYPE array<[int, int]>;
 | |
| DEFINE FIELD public_ipv4 ON TABLE active_vm TYPE string;
 | |
| DEFINE FIELD public_ipv6 ON TABLE active_vm TYPE string;
 | |
| DEFINE FIELD disk_size_gb ON TABLE active_vm TYPE int;
 | |
| DEFINE FIELD vcpus ON TABLE active_vm TYPE int;
 | |
| DEFINE FIELD memory_mb ON TABLE active_vm TYPE int;
 | |
| DEFINE FIELD dtrfs_sha ON TABLE active_vm TYPE string;
 | |
| DEFINE FIELD kernel_sha ON TABLE active_vm TYPE string;
 | |
| DEFINE FIELD created_at ON TABLE active_vm TYPE datetime;
 | |
| DEFINE FIELD price_per_unit ON TABLE active_vm TYPE int;
 | |
| DEFINE FIELD locked_nano ON TABLE active_vm TYPE int;
 | |
| DEFINE FIELD collected_at ON TABLE active_vm TYPE datetime;
 | |
| 
 | |
| DEFINE TABLE update_vm_req TYPE RELATION FROM account TO vm_node SCHEMAFULL;
 | |
| DEFINE FIELD vcpus ON TABLE update_vm_req TYPE int;
 | |
| DEFINE FIELD memory_mb ON TABLE update_vm_req TYPE int;
 | |
| DEFINE FIELD disk_size_gb ON TABLE update_vm_req TYPE int;
 | |
| DEFINE FIELD dtrfs_sha ON TABLE update_vm_req TYPE string;
 | |
| DEFINE FIELD dtrfs_url ON TABLE update_vm_req TYPE string;
 | |
| DEFINE FIELD kernel_sha ON TABLE update_vm_req TYPE string;
 | |
| DEFINE FIELD kernel_url ON TABLE update_vm_req TYPE string;
 | |
| DEFINE FIELD created_at ON TABLE update_vm_req TYPE datetime;
 | |
| DEFINE FIELD error ON TABLE update_vm_req TYPE string;
 | |
| 
 | |
| DEFINE TABLE deleted_vm TYPE RELATION FROM account TO vm_node SCHEMAFULL;
 | |
| DEFINE FIELD hostname ON TABLE deleted_vm TYPE string;
 | |
| DEFINE FIELD mapped_ports ON TABLE deleted_vm TYPE array<[int, int]>;
 | |
| DEFINE FIELD public_ipv4 ON TABLE deleted_vm TYPE string;
 | |
| DEFINE FIELD public_ipv6 ON TABLE deleted_vm TYPE string;
 | |
| DEFINE FIELD disk_size_gb ON TABLE deleted_vm TYPE int;
 | |
| DEFINE FIELD vcpus ON TABLE deleted_vm TYPE int;
 | |
| DEFINE FIELD memory_mb ON TABLE deleted_vm TYPE int;
 | |
| DEFINE FIELD dtrfs_sha ON TABLE deleted_vm TYPE string;
 | |
| DEFINE FIELD kernel_sha ON TABLE deleted_vm TYPE string;
 | |
| DEFINE FIELD created_at ON TABLE deleted_vm TYPE datetime;
 | |
| DEFINE FIELD deleted_at ON TABLE deleted_vm TYPE datetime DEFAULT time::now();
 | |
| DEFINE FIELD price_per_unit ON TABLE deleted_vm TYPE int;
 | |
| 
 | |
| DEFINE TABLE app_node SCHEMAFULL;
 | |
| DEFINE FIELD operator ON TABLE app_node TYPE record<account>;
 | |
| DEFINE FIELD pub_sub_node ON TABLE vm_node TYPE string default "127.0.0.1:31337";
 | |
| DEFINE FIELD country ON TABLE app_node TYPE string;
 | |
| DEFINE FIELD region ON TABLE app_node TYPE string;
 | |
| DEFINE FIELD city ON TABLE app_node TYPE string;
 | |
| DEFINE FIELD ip ON TABLE app_node TYPE string;
 | |
| DEFINE FIELD avail_mem_mb ON TABLE app_node TYPE int;
 | |
| DEFINE FIELD avail_vcpus ON TABLE app_node TYPE int;
 | |
| DEFINE FIELD avail_storage_gbs ON TABLE app_node TYPE int;
 | |
| DEFINE FIELD avail_ports ON TABLE app_node TYPE int;
 | |
| DEFINE FIELD max_ports_per_app ON TABLE app_node TYPE int;
 | |
| DEFINE FIELD price ON TABLE app_node TYPE int;
 | |
| DEFINE FIELD offline_minutes ON TABLE app_node TYPE int;
 | |
| 
 | |
| DEFINE TABLE new_app_req Type RELATION FROM account to app_node SCHEMAFULL;
 | |
| DEFINE FIELD app_name ON TABLE new_app_req TYPE string;
 | |
| DEFINE FIELD package_url ON TABLE new_app_req TYPE string;
 | |
| DEFINE FIELD mr_enclave ON TABLE new_app_req TYPE string;
 | |
| DEFINE FIELD hratls_pubkey ON TABLE new_app_req TYPE string;
 | |
| DEFINE FIELD ports ON TABLE new_app_req TYPE array<int>;
 | |
| DEFINE FIELD memory_mb ON TABLE new_app_req TYPE int;
 | |
| DEFINE FIELD vcpus ON TABLE new_app_req TYPE int;
 | |
| DEFINE FIELD disk_size_gb ON TABLE new_app_req TYPE int;
 | |
| DEFINE FIELD locked_nano ON TABLE new_app_req TYPE int;
 | |
| DEFINE FIELD price_per_unit ON TABLE new_app_req TYPE int;
 | |
| DEFINE FIELD error ON TABLE new_app_req TYPE string;
 | |
| DEFINE FIELD created_at ON TABLE new_app_req TYPE datetime;
 | |
| 
 | |
| DEFINE TABLE active_app TYPE RELATION FROM account TO app_node SCHEMAFULL;
 | |
| DEFINE FIELD app_name ON TABLE active_app TYPE string;
 | |
| DEFINE FIELD mapped_ports ON TABLE active_app TYPE array<[int, int]>;
 | |
| DEFINE FIELD host_ipv4 ON TABLE active_app TYPE string;
 | |
| DEFINE FIELD vcpus ON TABLE active_app TYPE int;
 | |
| DEFINE FIELD memory_mb ON TABLE active_app TYPE int;
 | |
| DEFINE FIELD disk_size_gb ON TABLE active_app TYPE int;
 | |
| DEFINE FIELD created_at ON TABLE active_app TYPE datetime;
 | |
| DEFINE FIELD price_per_unit ON TABLE active_app TYPE int;
 | |
| DEFINE FIELD locked_nano ON TABLE active_app TYPE int;
 | |
| DEFINE FIELD collected_at ON TABLE active_app TYPE datetime;
 | |
| DEFINE FIELD mr_enclave ON TABLE active_app TYPE string;
 | |
| DEFINE FIELD package_url ON TABLE active_app TYPE string;
 | |
| DEFINE FIELD hratls_pubkey ON TABLE active_app TYPE string;
 | |
| 
 | |
| DEFINE TABLE deleted_app TYPE RELATION FROM account TO app_node SCHEMAFULL;
 | |
| DEFINE FIELD app_name ON TABLE deleted_app TYPE string;
 | |
| DEFINE FIELD mapped_ports ON TABLE deleted_app TYPE array<[int, int]>;
 | |
| DEFINE FIELD host_ipv4 ON TABLE deleted_app TYPE string;
 | |
| DEFINE FIELD vcpus ON TABLE deleted_app TYPE int;
 | |
| DEFINE FIELD memory_mb ON TABLE deleted_app TYPE int;
 | |
| DEFINE FIELD disk_size_gb ON TABLE deleted_app TYPE int;
 | |
| DEFINE FIELD created_at ON TABLE deleted_app TYPE datetime;
 | |
| DEFINE FIELD deleted_at ON TABLE deleted_app TYPE datetime DEFAULT time::now();
 | |
| DEFINE FIELD price_per_unit ON TABLE deleted_app TYPE int;
 | |
| DEFINE FIELD mr_enclave ON TABLE deleted_app TYPE string;
 | |
| DEFINE FIELD package_url ON TABLE deleted_app TYPE string;
 | |
| DEFINE FIELD hratls_pubkey ON TABLE deleted_app TYPE string;
 | |
| 
 | |
| DEFINE TABLE ban TYPE RELATION FROM account TO account;
 | |
| DEFINE FIELD created_at ON TABLE ban TYPE datetime DEFAULT time::now();; 
 | |
| 
 | |
| DEFINE TABLE kick TYPE RELATION FROM account TO account;
 | |
| DEFINE FIELD created_at ON TABLE kick TYPE datetime;
 | |
| DEFINE FIELD reason ON TABLE kick TYPE string;
 | |
| DEFINE FIELD contract ON TABLE kick TYPE record<deleted_vm|deleted_app>;
 | |
| DEFINE FIELD node ON TABLE kick TYPE record<vm_node|app_node>;
 | |
| 
 | |
| DEFINE TABLE report TYPE RELATION FROM account TO vm_node|app_node;
 | |
| DEFINE FIELD created_at ON TABLE report TYPE datetime;
 | |
| DEFINE FIELD reason ON TABLE report TYPE string;
 | |
| DEFINE FIELD contract_id ON TABLE report TYPE string;
 |