Fix db migration
migrating all db schemas integrate app data in migration fix vm node registration to new architecture
This commit is contained in:
		
							parent
							
								
									57d3807a17
								
							
						
					
					
						commit
						a014622dbd
					
				
							
								
								
									
										567
									
								
								saved_data.yaml
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										567
									
								
								saved_data.yaml
									
									
									
									
									
								
							| @ -113,275 +113,328 @@ operators: | |||||||
|     email: first_on_detee@proton.me |     email: first_on_detee@proton.me | ||||||
|     banned_users: [] |     banned_users: [] | ||||||
|     vm_nodes: |     vm_nodes: | ||||||
|     - HiyMp21zaBVbRCjDsD5hEjQnHeHv4e1gpUR6pVfHTKqv |       - HiyMp21zaBVbRCjDsD5hEjQnHeHv4e1gpUR6pVfHTKqv | ||||||
|     - 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 |       - 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 | ||||||
|     - Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu |       - Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu | ||||||
|     - 4QbUXDM915RUFnHm3NiysLXFLk1WRGZvABwLNzx4tTEW |       - 4QbUXDM915RUFnHm3NiysLXFLk1WRGZvABwLNzx4tTEW | ||||||
|     - DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb |       - DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb | ||||||
|     app_nodes: [] |     app_nodes: [] | ||||||
|   x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK: |   x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK: | ||||||
|     escrow: 5499700480000 |     escrow: 5499700480000 | ||||||
|     email: gheo@detee.ltd |     email: gheo@detee.ltd | ||||||
|     banned_users: [] |     banned_users: [] | ||||||
|     vm_nodes: |     vm_nodes: | ||||||
|     - 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f |       - 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f | ||||||
|     - 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 |       - 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 | ||||||
|     app_nodes: [] |     app_nodes: [] | ||||||
|   7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB: |   7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB: | ||||||
|     escrow: 0 |     escrow: 0 | ||||||
|     email: '' |     email: "" | ||||||
|     banned_users: [] |     banned_users: [] | ||||||
|     vm_nodes: [] |     vm_nodes: [] | ||||||
|     app_nodes: |     app_nodes: | ||||||
|     - BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg |       - BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg | ||||||
| vm_nodes: | vm_nodes: | ||||||
| - public_key: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 |   - public_key: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 | ||||||
|   operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK |     operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK | ||||||
|   country: GB |     country: GB | ||||||
|   region: England |     region: England | ||||||
|   city: London |     city: London | ||||||
|   ip: 173.234.17.2 |     ip: 173.234.17.2 | ||||||
|   avail_mem_mb: 26000 |     avail_mem_mb: 26000 | ||||||
|   avail_vcpus: 28 |     avail_vcpus: 28 | ||||||
|   avail_storage_gbs: 680 |     avail_storage_gbs: 680 | ||||||
|   avail_ipv4: 2 |     avail_ipv4: 2 | ||||||
|   avail_ipv6: 65516 |     avail_ipv6: 65516 | ||||||
|   avail_ports: 19999 |     avail_ports: 19999 | ||||||
|   max_ports_per_vm: 5 |     max_ports_per_vm: 5 | ||||||
|   price: 20000 |     price: 20000 | ||||||
|   reports: {} |     reports: {} | ||||||
|   offline_minutes: 0 |     offline_minutes: 0 | ||||||
| - public_key: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu |   - public_key: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu | ||||||
|   operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS |     operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS | ||||||
|   country: FR |     country: FR | ||||||
|   region: Île-de-France |     region: Île-de-France | ||||||
|   city: Paris |     city: Paris | ||||||
|   ip: 156.146.63.215 |     ip: 156.146.63.215 | ||||||
|   avail_mem_mb: 123000 |     avail_mem_mb: 123000 | ||||||
|   avail_vcpus: 46 |     avail_vcpus: 46 | ||||||
|   avail_storage_gbs: 440 |     avail_storage_gbs: 440 | ||||||
|   avail_ipv4: 2 |     avail_ipv4: 2 | ||||||
|   avail_ipv6: 0 |     avail_ipv6: 0 | ||||||
|   avail_ports: 20000 |     avail_ports: 20000 | ||||||
|   max_ports_per_vm: 5 |     max_ports_per_vm: 5 | ||||||
|   price: 20000 |     price: 20000 | ||||||
|   reports: {} |     reports: {} | ||||||
|   offline_minutes: 0 |     offline_minutes: 0 | ||||||
| - public_key: 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f |   - public_key: 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f | ||||||
|   operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK |     operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK | ||||||
|   country: CA |     country: CA | ||||||
|   region: Quebec |     region: Quebec | ||||||
|   city: Montréal |     city: Montréal | ||||||
|   ip: 184.107.169.199 |     ip: 184.107.169.199 | ||||||
|   avail_mem_mb: 30000 |     avail_mem_mb: 30000 | ||||||
|   avail_vcpus: 31 |     avail_vcpus: 31 | ||||||
|   avail_storage_gbs: 700 |     avail_storage_gbs: 700 | ||||||
|   avail_ipv4: 0 |     avail_ipv4: 0 | ||||||
|   avail_ipv6: 0 |     avail_ipv6: 0 | ||||||
|   avail_ports: 20000 |     avail_ports: 20000 | ||||||
|   max_ports_per_vm: 5 |     max_ports_per_vm: 5 | ||||||
|   price: 18000 |     price: 18000 | ||||||
|   reports: {} |     reports: {} | ||||||
|   offline_minutes: 0 |     offline_minutes: 0 | ||||||
| - public_key: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb |   - public_key: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb | ||||||
|   operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS |     operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS | ||||||
|   country: CA |     country: CA | ||||||
|   region: British Columbia |     region: British Columbia | ||||||
|   city: Vancouver |     city: Vancouver | ||||||
|   ip: 149.22.95.1 |     ip: 149.22.95.1 | ||||||
|   avail_mem_mb: 109000 |     avail_mem_mb: 109000 | ||||||
|   avail_vcpus: 45 |     avail_vcpus: 45 | ||||||
|   avail_storage_gbs: 400 |     avail_storage_gbs: 400 | ||||||
|   avail_ipv4: 25 |     avail_ipv4: 25 | ||||||
|   avail_ipv6: 0 |     avail_ipv6: 0 | ||||||
|   avail_ports: 20000 |     avail_ports: 20000 | ||||||
|   max_ports_per_vm: 5 |     max_ports_per_vm: 5 | ||||||
|   price: 20000 |     price: 20000 | ||||||
|   reports: {} |     reports: {} | ||||||
|   offline_minutes: 0 |     offline_minutes: 0 | ||||||
| - public_key: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 |   - public_key: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 | ||||||
|   operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS |     operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS | ||||||
|   country: US |     country: US | ||||||
|   region: California |     region: California | ||||||
|   city: San Jose |     city: San Jose | ||||||
|   ip: 149.36.48.99 |     ip: 149.36.48.99 | ||||||
|   avail_mem_mb: 120000 |     avail_mem_mb: 120000 | ||||||
|   avail_vcpus: 41 |     avail_vcpus: 41 | ||||||
|   avail_storage_gbs: 390 |     avail_storage_gbs: 390 | ||||||
|   avail_ipv4: 23 |     avail_ipv4: 23 | ||||||
|   avail_ipv6: 0 |     avail_ipv6: 0 | ||||||
|   avail_ports: 19999 |     avail_ports: 19999 | ||||||
|   max_ports_per_vm: 5 |     max_ports_per_vm: 5 | ||||||
|   price: 20000 |     price: 20000 | ||||||
|   reports: {} |     reports: {} | ||||||
|   offline_minutes: 0 |     offline_minutes: 0 | ||||||
| - public_key: HiyMp21zaBVbRCjDsD5hEjQnHeHv4e1gpUR6pVfHTKqv |   - public_key: HiyMp21zaBVbRCjDsD5hEjQnHeHv4e1gpUR6pVfHTKqv | ||||||
|   operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS |     operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS | ||||||
|   country: CA |     country: CA | ||||||
|   region: British Columbia |     region: British Columbia | ||||||
|   city: Vancouver |     city: Vancouver | ||||||
|   ip: 149.22.95.28 |     ip: 149.22.95.28 | ||||||
|   avail_mem_mb: 125000 |     avail_mem_mb: 125000 | ||||||
|   avail_vcpus: 46 |     avail_vcpus: 46 | ||||||
|   avail_storage_gbs: 400 |     avail_storage_gbs: 400 | ||||||
|   avail_ipv4: 26 |     avail_ipv4: 26 | ||||||
|   avail_ipv6: 0 |     avail_ipv6: 0 | ||||||
|   avail_ports: 20000 |     avail_ports: 20000 | ||||||
|   max_ports_per_vm: 5 |     max_ports_per_vm: 5 | ||||||
|   price: 20000 |     price: 20000 | ||||||
|   reports: {} |     reports: {} | ||||||
|   offline_minutes: 0 |     offline_minutes: 0 | ||||||
| vm_contracts: | vm_contracts: | ||||||
| - uuid: 958165e3-dea8-407d-8c42-dd17002ef79c |   - uuid: 958165e3-dea8-407d-8c42-dd17002ef79c | ||||||
|   hostname: detee-landing-fr |     hostname: detee-landing-fr | ||||||
|   admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL |     admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL | ||||||
|   node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu |     node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu | ||||||
|   exposed_ports: [] |     exposed_ports: [] | ||||||
|   public_ipv4: 156.146.63.216 |     public_ipv4: 156.146.63.216 | ||||||
|   public_ipv6: '' |     public_ipv6: "" | ||||||
|   disk_size_gb: 10 |     disk_size_gb: 10 | ||||||
|   vcpus: 2 |     vcpus: 2 | ||||||
|   memory_mb: 3000 |     memory_mb: 3000 | ||||||
|   kernel_sha: 3ec4fc5aa5729f515967ec71be4a851622785c0080f7191b1b07717149840151 |     kernel_sha: 3ec4fc5aa5729f515967ec71be4a851622785c0080f7191b1b07717149840151 | ||||||
|   dtrfs_sha: 3f6b3e5740f249eedfb2f7248c521a551be8b2676f7fcb040f3f3bc840a5004b |     dtrfs_sha: 3f6b3e5740f249eedfb2f7248c521a551be8b2676f7fcb040f3f3bc840a5004b | ||||||
|   created_at: 2025-02-28T23:19:41.769423466Z |     created_at: 2025-02-28T23:19:41.769423466Z | ||||||
|   updated_at: 2025-04-12T12:11:58.516768949Z |     updated_at: 2025-04-12T12:11:58.516768949Z | ||||||
|   price_per_unit: 20000 |     price_per_unit: 20000 | ||||||
|   locked_nano: 14875500000 |     locked_nano: 14875500000 | ||||||
|   collected_at: 2025-04-20T00:34:15.461165181Z |     collected_at: 2025-04-20T00:34:15.461165181Z | ||||||
| - uuid: e807a2fd-cf90-4a14-bc3a-89ce6dc59033 |   - uuid: e807a2fd-cf90-4a14-bc3a-89ce6dc59033 | ||||||
|   hostname: detee-landing-gb |     hostname: detee-landing-gb | ||||||
|   admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL |     admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL | ||||||
|   node_pubkey: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 |     node_pubkey: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 | ||||||
|   exposed_ports: [] |     exposed_ports: [] | ||||||
|   public_ipv4: 173.234.136.154 |     public_ipv4: 173.234.136.154 | ||||||
|   public_ipv6: '' |     public_ipv6: "" | ||||||
|   disk_size_gb: 10 |     disk_size_gb: 10 | ||||||
|   vcpus: 2 |     vcpus: 2 | ||||||
|   memory_mb: 3000 |     memory_mb: 3000 | ||||||
|   kernel_sha: 3ec4fc5aa5729f515967ec71be4a851622785c0080f7191b1b07717149840151 |     kernel_sha: 3ec4fc5aa5729f515967ec71be4a851622785c0080f7191b1b07717149840151 | ||||||
|   dtrfs_sha: 3f6b3e5740f249eedfb2f7248c521a551be8b2676f7fcb040f3f3bc840a5004b |     dtrfs_sha: 3f6b3e5740f249eedfb2f7248c521a551be8b2676f7fcb040f3f3bc840a5004b | ||||||
|   created_at: 2025-03-06T19:51:39.595163157Z |     created_at: 2025-03-06T19:51:39.595163157Z | ||||||
|   updated_at: 2025-03-06T19:51:39.595163842Z |     updated_at: 2025-03-06T19:51:39.595163842Z | ||||||
|   price_per_unit: 20000 |     price_per_unit: 20000 | ||||||
|   locked_nano: 14875500000 |     locked_nano: 14875500000 | ||||||
|   collected_at: 2025-04-20T00:34:15.461181545Z |     collected_at: 2025-04-20T00:34:15.461181545Z | ||||||
| - uuid: 23094406-2307-4332-a642-acee718d0186 |   - uuid: 23094406-2307-4332-a642-acee718d0186 | ||||||
|   hostname: heroic-door |     hostname: heroic-door | ||||||
|   admin_pubkey: DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX |     admin_pubkey: DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX | ||||||
|   node_pubkey: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 |     node_pubkey: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9 | ||||||
|   exposed_ports: |     exposed_ports: | ||||||
|   - 38288 |       - 38288 | ||||||
|   public_ipv4: '' |     public_ipv4: "" | ||||||
|   public_ipv6: '' |     public_ipv6: "" | ||||||
|   disk_size_gb: 10 |     disk_size_gb: 10 | ||||||
|   vcpus: 1 |     vcpus: 1 | ||||||
|   memory_mb: 1000 |     memory_mb: 1000 | ||||||
|   kernel_sha: 14e225e4aaf84cc2e0b5f64206121186ddebc4b378b886da3b2f7515dfd41692 |     kernel_sha: 14e225e4aaf84cc2e0b5f64206121186ddebc4b378b886da3b2f7515dfd41692 | ||||||
|   dtrfs_sha: 03ce24dbbe917fdd4f6347e61036805ddbdded5044c272bab188ef9333093bee |     dtrfs_sha: 03ce24dbbe917fdd4f6347e61036805ddbdded5044c272bab188ef9333093bee | ||||||
|   created_at: 2025-03-12T16:28:24.749161605Z |     created_at: 2025-03-12T16:28:24.749161605Z | ||||||
|   updated_at: 2025-03-12T16:28:24.749162477Z |     updated_at: 2025-03-12T16:28:24.749162477Z | ||||||
|   price_per_unit: 20000 |     price_per_unit: 20000 | ||||||
|   locked_nano: 14134140000 |     locked_nano: 14134140000 | ||||||
|   collected_at: 2025-04-20T00:34:15.461191231Z |     collected_at: 2025-04-20T00:34:15.461191231Z | ||||||
| - uuid: 1f49a71c-f68c-4c64-a82e-f50e0ba0b574 |   - uuid: 1f49a71c-f68c-4c64-a82e-f50e0ba0b574 | ||||||
|   hostname: astromech-wrench |     hostname: astromech-wrench | ||||||
|   admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL |     admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL | ||||||
|   node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb |     node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb | ||||||
|   exposed_ports: [] |     exposed_ports: [] | ||||||
|   public_ipv4: 149.22.95.2 |     public_ipv4: 149.22.95.2 | ||||||
|   public_ipv6: '' |     public_ipv6: "" | ||||||
|   disk_size_gb: 10 |     disk_size_gb: 10 | ||||||
|   vcpus: 2 |     vcpus: 2 | ||||||
|   memory_mb: 3000 |     memory_mb: 3000 | ||||||
|   kernel_sha: 3a68709138bed09c16671949cf1f03acee95a08381ba84fc70fb586001fa6767 |     kernel_sha: 3a68709138bed09c16671949cf1f03acee95a08381ba84fc70fb586001fa6767 | ||||||
|   dtrfs_sha: 0bb93443f65c9f4379ed469f94794f5c1bf14d8905b0b2c56a125df4a9ebe83e |     dtrfs_sha: 0bb93443f65c9f4379ed469f94794f5c1bf14d8905b0b2c56a125df4a9ebe83e | ||||||
|   created_at: 2025-03-20T14:40:25.557753393Z |     created_at: 2025-03-20T14:40:25.557753393Z | ||||||
|   updated_at: 2025-03-20T14:40:25.557754242Z |     updated_at: 2025-03-20T14:40:25.557754242Z | ||||||
|   price_per_unit: 20000 |     price_per_unit: 20000 | ||||||
|   locked_nano: 11865620000 |     locked_nano: 11865620000 | ||||||
|   collected_at: 2025-04-20T00:34:15.461201690Z |     collected_at: 2025-04-20T00:34:15.461201690Z | ||||||
| - uuid: 16577f1c-9867-4a17-80a8-6cf0490f1270 |   - uuid: 16577f1c-9867-4a17-80a8-6cf0490f1270 | ||||||
|   hostname: sofenty |     hostname: sofenty | ||||||
|   admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL |     admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL | ||||||
|   node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu |     node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu | ||||||
|   exposed_ports: [] |     exposed_ports: [] | ||||||
|   public_ipv4: 156.146.63.217 |     public_ipv4: 156.146.63.217 | ||||||
|   public_ipv6: '' |     public_ipv6: "" | ||||||
|   disk_size_gb: 10 |     disk_size_gb: 10 | ||||||
|   vcpus: 2 |     vcpus: 2 | ||||||
|   memory_mb: 3000 |     memory_mb: 3000 | ||||||
|   kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542 |     kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542 | ||||||
|   dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45 |     dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45 | ||||||
|   created_at: 2025-04-07T22:57:57.646151746Z |     created_at: 2025-04-07T22:57:57.646151746Z | ||||||
|   updated_at: 2025-04-07T22:57:57.646152630Z |     updated_at: 2025-04-07T22:57:57.646152630Z | ||||||
|   price_per_unit: 20000 |     price_per_unit: 20000 | ||||||
|   locked_nano: 11867500000 |     locked_nano: 11867500000 | ||||||
|   collected_at: 2025-04-20T00:34:15.461211040Z |     collected_at: 2025-04-20T00:34:15.461211040Z | ||||||
| - uuid: 4b6e25ca-87ac-478b-8f16-aa8f5c44c704 |   - uuid: 4b6e25ca-87ac-478b-8f16-aa8f5c44c704 | ||||||
|   hostname: cloaked-mailbox |     hostname: cloaked-mailbox | ||||||
|   admin_pubkey: DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX |     admin_pubkey: DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX | ||||||
|   node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb |     node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb | ||||||
|   exposed_ports: [] |     exposed_ports: [] | ||||||
|   public_ipv4: 149.22.95.2 |     public_ipv4: 149.22.95.2 | ||||||
|   public_ipv6: '' |     public_ipv6: "" | ||||||
|   disk_size_gb: 30 |     disk_size_gb: 30 | ||||||
|   vcpus: 1 |     vcpus: 1 | ||||||
|   memory_mb: 1000 |     memory_mb: 1000 | ||||||
|   kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542 |     kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542 | ||||||
|   dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45 |     dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45 | ||||||
|   created_at: 2025-04-12T13:44:56.957037550Z |     created_at: 2025-04-12T13:44:56.957037550Z | ||||||
|   updated_at: 2025-04-12T13:44:56.957038546Z |     updated_at: 2025-04-12T13:44:56.957038546Z | ||||||
|   price_per_unit: 20000 |     price_per_unit: 20000 | ||||||
|   locked_nano: 11177760000 |     locked_nano: 11177760000 | ||||||
|   collected_at: 2025-04-20T00:34:15.461219779Z |     collected_at: 2025-04-20T00:34:15.461219779Z | ||||||
| - uuid: eb1a13ed-d782-4b71-8860-73540129cb7d |   - uuid: eb1a13ed-d782-4b71-8860-73540129cb7d | ||||||
|   hostname: twenty |     hostname: twenty | ||||||
|   admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL |     admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL | ||||||
|   node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 |     node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 | ||||||
|   exposed_ports: [] |     exposed_ports: [] | ||||||
|   public_ipv4: 149.36.48.100 |     public_ipv4: 149.36.48.100 | ||||||
|   public_ipv6: '' |     public_ipv6: "" | ||||||
|   disk_size_gb: 10 |     disk_size_gb: 10 | ||||||
|   vcpus: 4 |     vcpus: 4 | ||||||
|   memory_mb: 4000 |     memory_mb: 4000 | ||||||
|   kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542 |     kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542 | ||||||
|   dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45 |     dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45 | ||||||
|   created_at: 2025-04-15T00:46:35.622165457Z |     created_at: 2025-04-15T00:46:35.622165457Z | ||||||
|   updated_at: 2025-04-15T00:46:35.622166372Z |     updated_at: 2025-04-15T00:46:35.622166372Z | ||||||
|   price_per_unit: 20000 |     price_per_unit: 20000 | ||||||
|   locked_nano: 15570720000 |     locked_nano: 15570720000 | ||||||
|   collected_at: 2025-04-20T00:34:15.461230948Z |     collected_at: 2025-04-20T00:34:15.461230948Z | ||||||
| - uuid: 1bf36309-3774-4825-b023-b2a0ef0405ed |   - uuid: 1bf36309-3774-4825-b023-b2a0ef0405ed | ||||||
|   hostname: shadowy-hobo |     hostname: shadowy-hobo | ||||||
|   admin_pubkey: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK |     admin_pubkey: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK | ||||||
|   node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 |     node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4 | ||||||
|   exposed_ports: |     exposed_ports: | ||||||
|   - 46393 |       - 46393 | ||||||
|   public_ipv4: '' |     public_ipv4: "" | ||||||
|   public_ipv6: '' |     public_ipv6: "" | ||||||
|   disk_size_gb: 10 |     disk_size_gb: 10 | ||||||
|   vcpus: 1 |     vcpus: 1 | ||||||
|   memory_mb: 1000 |     memory_mb: 1000 | ||||||
|   kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 |     kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919 | ||||||
|   dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 |     dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990 | ||||||
|   created_at: 2025-04-16T20:37:57.176592933Z |     created_at: 2025-04-16T20:37:57.176592933Z | ||||||
|   updated_at: 2025-04-16T20:37:57.176594069Z |     updated_at: 2025-04-16T20:37:57.176594069Z | ||||||
|   price_per_unit: 20000 |     price_per_unit: 20000 | ||||||
|   locked_nano: 12730960000 |     locked_nano: 12730960000 | ||||||
|   collected_at: 2025-04-20T00:34:15.461240342Z |     collected_at: 2025-04-20T00:34:15.461240342Z | ||||||
| app_nodes: | app_nodes: | ||||||
| - node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg |   - node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg | ||||||
|   operator_wallet: 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB |     operator_wallet: 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB | ||||||
|   country: DE |     country: DE | ||||||
|   region: Hesse |     region: Hesse | ||||||
|   city: Frankfurt am Main |     city: Frankfurt am Main | ||||||
|   ip: 212.95.45.139 |     ip: 212.95.45.139 | ||||||
|   avail_mem_mb: 16000 |     avail_mem_mb: 16000 | ||||||
|   avail_vcpus: 16 |     avail_vcpus: 16 | ||||||
|   avail_storage_mb: 200000 |     avail_storage_mb: 200000 | ||||||
|   avail_no_of_port: 20000 |     avail_no_of_port: 20000 | ||||||
|   max_ports_per_app: 9 |     max_ports_per_app: 9 | ||||||
|   price: 20000 |     price: 20000 | ||||||
|   offline_minutes: 0 |     offline_minutes: 0 | ||||||
| app_contracts: [] | app_contracts: | ||||||
|  |   - uuid: e3d01f25-2b2a-410b-80e3-12f44e474334 | ||||||
|  |     package_url: https://registry.detee.ltd/sgx/packages/base_package_2025-04-17_11-01-08.tar.gz | ||||||
|  |     admin_pubkey: H21Shi4iE7vgfjWEQNvzmpmBMJSaiZ17PYUcdNoAoKNc | ||||||
|  |     node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg | ||||||
|  |     mapped_ports: | ||||||
|  |       - - 27158 | ||||||
|  |         - 34500 | ||||||
|  |       - - 28667 | ||||||
|  |         - 8080 | ||||||
|  |     host_ipv4: 212.95.45.139 | ||||||
|  |     disk_size_mb: 1000 | ||||||
|  |     vcpus: 1 | ||||||
|  |     memory_mb: 1000 | ||||||
|  |     created_at: 2025-04-21T11:27:28.833236909Z | ||||||
|  |     updated_at: 2025-04-21T11:27:28.833237729Z | ||||||
|  |     price_per_unit: 200000 | ||||||
|  |     locked_nano: 121200000 | ||||||
|  |     collected_at: 2025-04-21T11:28:24.905665571Z | ||||||
|  |     hratls_pubkey: 7E0F887AA6BB9104EEC1066F454D4C2D9063D676715F55F919D3FBCEDC63240B | ||||||
|  |     public_package_mr_enclave: | ||||||
|  |       - 52 | ||||||
|  |       - 183 | ||||||
|  |       - 102 | ||||||
|  |       - 210 | ||||||
|  |       - 251 | ||||||
|  |       - 219 | ||||||
|  |       - 218 | ||||||
|  |       - 140 | ||||||
|  |       - 168 | ||||||
|  |       - 118 | ||||||
|  |       - 10 | ||||||
|  |       - 193 | ||||||
|  |       - 98 | ||||||
|  |       - 240 | ||||||
|  |       - 147 | ||||||
|  |       - 124 | ||||||
|  |       - 240 | ||||||
|  |       - 189 | ||||||
|  |       - 46 | ||||||
|  |       - 95 | ||||||
|  |       - 138 | ||||||
|  |       - 172 | ||||||
|  |       - 15 | ||||||
|  |       - 246 | ||||||
|  |       - 227 | ||||||
|  |       - 114 | ||||||
|  |       - 70 | ||||||
|  |       - 159 | ||||||
|  |       - 232 | ||||||
|  |       - 212 | ||||||
|  |       - 9 | ||||||
|  |       - 234 | ||||||
|  |     app_name: diligent-seahorse | ||||||
|  | |||||||
| @ -5,7 +5,8 @@ pub const CERT_PATH: &str = "/etc/detee/brain/brain-crt.pem"; | |||||||
| pub const CERT_KEY_PATH: &str = "/etc/detee/brain/brain-key.pem"; | pub const CERT_KEY_PATH: &str = "/etc/detee/brain/brain-key.pem"; | ||||||
| pub const CONFIG_PATH: &str = "/etc/detee/brain/config.ini"; | pub const CONFIG_PATH: &str = "/etc/detee/brain/config.ini"; | ||||||
| 
 | 
 | ||||||
| pub const DB_SCHEMA_FILE: &str = "interim_tables.surql"; | pub const DB_SCHEMA_FILES: [&str; 3] = | ||||||
|  |     ["surql/tables.sql", "surql/timer.sql", "surql/functions.sql"]; | ||||||
| 
 | 
 | ||||||
| pub static ADMIN_ACCOUNTS: LazyLock<Vec<String>> = LazyLock::new(|| { | pub static ADMIN_ACCOUNTS: LazyLock<Vec<String>> = LazyLock::new(|| { | ||||||
|     let default_admin_keys = vec![ |     let default_admin_keys = vec![ | ||||||
|  | |||||||
| @ -174,11 +174,11 @@ pub struct ActiveApp { | |||||||
|     #[serde(rename = "out")] |     #[serde(rename = "out")] | ||||||
|     pub app_node: RecordId, |     pub app_node: RecordId, | ||||||
|     pub app_name: String, |     pub app_name: String, | ||||||
|     pub mapped_ports: Vec<(u64, u64)>, |     pub mapped_ports: Vec<(u32, u32)>, | ||||||
|     pub host_ipv4: String, |     pub host_ipv4: String, | ||||||
|     pub vcpus: u64, |     pub vcpus: u32, | ||||||
|     pub memory_mb: u64, |     pub memory_mb: u32, | ||||||
|     pub disk_size_gb: u64, |     pub disk_size_gb: u32, | ||||||
|     pub created_at: Datetime, |     pub created_at: Datetime, | ||||||
|     pub price_per_unit: u64, |     pub price_per_unit: u64, | ||||||
|     pub locked_nano: u64, |     pub locked_nano: u64, | ||||||
| @ -234,9 +234,9 @@ impl ActiveApp { | |||||||
|             app_name: new_app_req.app_name, |             app_name: new_app_req.app_name, | ||||||
|             mapped_ports: vec![], |             mapped_ports: vec![], | ||||||
|             host_ipv4: String::new(), |             host_ipv4: String::new(), | ||||||
|             vcpus: new_app_req.vcpu as u64, |             vcpus: new_app_req.vcpu, | ||||||
|             memory_mb: new_app_req.memory_mb as u64, |             memory_mb: new_app_req.memory_mb, | ||||||
|             disk_size_gb: new_app_req.disk_mb as u64, |             disk_size_gb: new_app_req.disk_mb, | ||||||
|             created_at: new_app_req.created_at.clone(), |             created_at: new_app_req.created_at.clone(), | ||||||
|             price_per_unit: new_app_req.price_per_unit, |             price_per_unit: new_app_req.price_per_unit, | ||||||
|             locked_nano: new_app_req.locked_nano, |             locked_nano: new_app_req.locked_nano, | ||||||
| @ -312,11 +312,11 @@ pub struct ActiveAppWithNode { | |||||||
|     #[serde(rename = "out")] |     #[serde(rename = "out")] | ||||||
|     pub app_node: AppNode, |     pub app_node: AppNode, | ||||||
|     pub app_name: String, |     pub app_name: String, | ||||||
|     pub mapped_ports: Vec<(u64, u64)>, |     pub mapped_ports: Vec<(u32, u32)>, | ||||||
|     pub host_ipv4: String, |     pub host_ipv4: String, | ||||||
|     pub vcpus: u64, |     pub vcpus: u32, | ||||||
|     pub memory_mb: u64, |     pub memory_mb: u32, | ||||||
|     pub disk_size_gb: u64, |     pub disk_size_gb: u32, | ||||||
|     pub created_at: Datetime, |     pub created_at: Datetime, | ||||||
|     pub price_per_unit: u64, |     pub price_per_unit: u64, | ||||||
|     pub locked_nano: u64, |     pub locked_nano: u64, | ||||||
| @ -427,7 +427,7 @@ impl From<&old_brain::BrainData> for Vec<AppNode> { | |||||||
|         let mut nodes = Vec::new(); |         let mut nodes = Vec::new(); | ||||||
|         for old_node in old_data.app_nodes.iter() { |         for old_node in old_data.app_nodes.iter() { | ||||||
|             nodes.push(AppNode { |             nodes.push(AppNode { | ||||||
|                 id: RecordId::from(("app_node", old_node.node_pubkey.clone())), |                 id: RecordId::from((APP_NODE, old_node.node_pubkey.clone())), | ||||||
|                 operator: RecordId::from((ACCOUNT, old_node.operator_wallet.clone())), |                 operator: RecordId::from((ACCOUNT, old_node.operator_wallet.clone())), | ||||||
|                 country: old_node.country.clone(), |                 country: old_node.country.clone(), | ||||||
|                 region: old_node.region.clone(), |                 region: old_node.region.clone(), | ||||||
| @ -446,6 +446,46 @@ impl From<&old_brain::BrainData> for Vec<AppNode> { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | impl From<&old_brain::BrainData> for Vec<ActiveApp> { | ||||||
|  |     fn from(old_data: &old_brain::BrainData) -> Self { | ||||||
|  |         let mut contracts = Vec::new(); | ||||||
|  |         for old_c in old_data.app_contracts.iter() { | ||||||
|  |             let mut mapped_ports = Vec::new(); | ||||||
|  |             for port in old_c.mapped_ports.clone().into_iter().map(|(b, c)| (b as u32, c as u32)) { | ||||||
|  |                 mapped_ports.push(port); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             let mr_enclave_hex = old_c | ||||||
|  |                 .public_package_mr_enclave | ||||||
|  |                 .clone() | ||||||
|  |                 .unwrap_or_default() | ||||||
|  |                 .iter() | ||||||
|  |                 .map(|byte| format!("{:02X}", byte)) | ||||||
|  |                 .collect(); | ||||||
|  | 
 | ||||||
|  |             contracts.push(ActiveApp { | ||||||
|  |                 id: RecordId::from((ACTIVE_APP, old_c.uuid.replace("-", ""))), | ||||||
|  |                 admin: RecordId::from((ACCOUNT, old_c.admin_pubkey.clone())), | ||||||
|  |                 app_node: RecordId::from((APP_NODE, old_c.node_pubkey.clone())), | ||||||
|  |                 mapped_ports, | ||||||
|  |                 host_ipv4: old_c.host_ipv4.clone(), | ||||||
|  |                 disk_size_gb: old_c.disk_size_mb * 1024, | ||||||
|  |                 vcpus: old_c.vcpus, | ||||||
|  |                 memory_mb: old_c.memory_mb, | ||||||
|  |                 price_per_unit: old_c.price_per_unit, | ||||||
|  |                 locked_nano: old_c.locked_nano, | ||||||
|  |                 created_at: old_c.created_at.into(), | ||||||
|  |                 collected_at: old_c.collected_at.into(), | ||||||
|  |                 app_name: old_c.app_name.clone(), | ||||||
|  |                 mr_enclave: mr_enclave_hex, | ||||||
|  |                 package_url: old_c.package_url.clone(), | ||||||
|  |                 hratls_pubkey: old_c.hratls_pubkey.clone(), | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |         contracts | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| #[derive(Debug, Serialize, Deserialize)] | #[derive(Debug, Serialize, Deserialize)] | ||||||
| pub struct DeletedApp { | pub struct DeletedApp { | ||||||
|     pub id: RecordId, |     pub id: RecordId, | ||||||
| @ -454,11 +494,11 @@ pub struct DeletedApp { | |||||||
|     #[serde(rename = "out")] |     #[serde(rename = "out")] | ||||||
|     pub app_node: RecordId, |     pub app_node: RecordId, | ||||||
|     pub app_name: String, |     pub app_name: String, | ||||||
|     pub mapped_ports: Vec<(u64, u64)>, |     pub mapped_ports: Vec<(u32, u32)>, | ||||||
|     pub host_ipv4: String, |     pub host_ipv4: String, | ||||||
|     pub vcpus: u64, |     pub vcpus: u32, | ||||||
|     pub memory_mb: u64, |     pub memory_mb: u32, | ||||||
|     pub disk_size_gb: u64, |     pub disk_size_gb: u32, | ||||||
|     pub created_at: Datetime, |     pub created_at: Datetime, | ||||||
|     pub price_per_unit: u64, |     pub price_per_unit: u64, | ||||||
|     pub locked_nano: u64, |     pub locked_nano: u64, | ||||||
|  | |||||||
| @ -110,7 +110,7 @@ impl From<&old_brain::BrainData> for Vec<Account> { | |||||||
|         let mut accounts = Vec::new(); |         let mut accounts = Vec::new(); | ||||||
|         for old_account in old_data.accounts.iter() { |         for old_account in old_data.accounts.iter() { | ||||||
|             let mut a = Account { |             let mut a = Account { | ||||||
|                 id: RecordId::from(("account", old_account.key())), |                 id: RecordId::from((ACCOUNT, old_account.key())), | ||||||
|                 balance: old_account.value().balance, |                 balance: old_account.value().balance, | ||||||
|                 tmp_locked: old_account.value().tmp_locked, |                 tmp_locked: old_account.value().tmp_locked, | ||||||
|                 escrow: 0, |                 escrow: 0, | ||||||
|  | |||||||
| @ -3,7 +3,8 @@ pub mod general; | |||||||
| pub mod vm; | pub mod vm; | ||||||
| 
 | 
 | ||||||
| use crate::constants::{ | use crate::constants::{ | ||||||
|     APP_NODE, DELETED_APP, DELETED_VM, MIN_ESCROW, NEW_APP_REQ, NEW_VM_REQ, UPDATE_VM_REQ, |     APP_NODE, DB_SCHEMA_FILES, DELETED_APP, DELETED_VM, MIN_ESCROW, NEW_APP_REQ, NEW_VM_REQ, | ||||||
|  |     UPDATE_VM_REQ, | ||||||
| }; | }; | ||||||
| use crate::old_brain; | use crate::old_brain; | ||||||
| use prelude::*; | use prelude::*; | ||||||
| @ -73,10 +74,12 @@ pub async fn migration0( | |||||||
|     let accounts: Vec<Account> = old_data.into(); |     let accounts: Vec<Account> = old_data.into(); | ||||||
|     let vm_nodes: Vec<VmNode> = old_data.into(); |     let vm_nodes: Vec<VmNode> = old_data.into(); | ||||||
|     let app_nodes: Vec<AppNode> = old_data.into(); |     let app_nodes: Vec<AppNode> = old_data.into(); | ||||||
|     let vm_contracts: Vec<ActiveVm> = old_data.into(); |     let active_vm: Vec<ActiveVm> = old_data.into(); | ||||||
|  |     let active_app: Vec<ActiveApp> = old_data.into(); | ||||||
| 
 | 
 | ||||||
|     let schema = std::fs::read_to_string(crate::constants::DB_SCHEMA_FILE)?; |     for schema in DB_SCHEMA_FILES.map(std::fs::read_to_string) { | ||||||
|     db.query(schema).await?; |         db.query(schema?).await?; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     println!("Inserting accounts..."); |     println!("Inserting accounts..."); | ||||||
|     let _: Vec<Account> = db.insert(()).content(accounts).await?; |     let _: Vec<Account> = db.insert(()).content(accounts).await?; | ||||||
| @ -84,8 +87,10 @@ pub async fn migration0( | |||||||
|     let _: Vec<VmNode> = db.insert(()).content(vm_nodes).await?; |     let _: Vec<VmNode> = db.insert(()).content(vm_nodes).await?; | ||||||
|     println!("Inserting app nodes..."); |     println!("Inserting app nodes..."); | ||||||
|     let _: Vec<AppNode> = db.insert(()).content(app_nodes).await?; |     let _: Vec<AppNode> = db.insert(()).content(app_nodes).await?; | ||||||
|     println!("Inserting vm contracts..."); |     println!("Inserting active vm contracts..."); | ||||||
|     let _: Vec<ActiveVm> = db.insert("vm_contract").relation(vm_contracts).await?; |     let _: Vec<ActiveVm> = db.insert(()).relation(active_vm).await?; | ||||||
|  |     println!("Inserting app contracts..."); | ||||||
|  |     let _: Vec<ActiveApp> = db.insert(()).relation(active_app).await?; | ||||||
| 
 | 
 | ||||||
|     Ok(()) |     Ok(()) | ||||||
| } | } | ||||||
|  | |||||||
| @ -6,6 +6,7 @@ use dotenv::dotenv; | |||||||
| use hyper_util::rt::TokioIo; | use hyper_util::rt::TokioIo; | ||||||
| use std::net::SocketAddr; | use std::net::SocketAddr; | ||||||
| use std::sync::Arc; | use std::sync::Arc; | ||||||
|  | use surreal_brain::constants::DB_SCHEMA_FILES; | ||||||
| use surreal_brain::grpc::general::GeneralCliServer; | use surreal_brain::grpc::general::GeneralCliServer; | ||||||
| use surreal_brain::grpc::vm::{VmCliServer, VmDaemonServer}; | use surreal_brain::grpc::vm::{VmCliServer, VmDaemonServer}; | ||||||
| use surrealdb::engine::remote::ws::Client; | use surrealdb::engine::remote::ws::Client; | ||||||
| @ -34,7 +35,9 @@ pub async fn prepare_test_db() -> Result<Surreal<Client>> { | |||||||
|                 .map_err(|e| anyhow!(e.to_string()))?; |                 .map_err(|e| anyhow!(e.to_string()))?; | ||||||
| 
 | 
 | ||||||
|             db.query(format!("REMOVE DATABASE {db_name}")).await?; |             db.query(format!("REMOVE DATABASE {db_name}")).await?; | ||||||
|             db.query(std::fs::read_to_string("interim_tables.surql")?).await?; |             for schema in DB_SCHEMA_FILES.map(std::fs::read_to_string) { | ||||||
|  |                 db.query(schema?).await?; | ||||||
|  |             } | ||||||
|             surreal_brain::db::migration0(&db, &old_brain_data).await?; |             surreal_brain::db::migration0(&db, &old_brain_data).await?; | ||||||
|             Ok::<(), anyhow::Error>(()) |             Ok::<(), anyhow::Error>(()) | ||||||
|         }) |         }) | ||||||
|  | |||||||
| @ -37,7 +37,7 @@ pub async fn register_vm_node( | |||||||
|     client: &mut BrainVmDaemonClient<Channel>, |     client: &mut BrainVmDaemonClient<Channel>, | ||||||
|     key: &Key, |     key: &Key, | ||||||
|     operator_wallet: &str, |     operator_wallet: &str, | ||||||
| ) -> Result<Vec<vm_proto::VmContract>> { | ) -> Result<Vec<vm_proto::DeleteVmReq>> { | ||||||
|     log::info!("Registering vm_node: {}", key.pubkey); |     log::info!("Registering vm_node: {}", key.pubkey); | ||||||
|     let node_pubkey = key.pubkey.clone(); |     let node_pubkey = key.pubkey.clone(); | ||||||
| 
 | 
 | ||||||
| @ -53,18 +53,18 @@ pub async fn register_vm_node( | |||||||
| 
 | 
 | ||||||
|     let mut grpc_stream = client.register_vm_node(key.sign_request(req)?).await?.into_inner(); |     let mut grpc_stream = client.register_vm_node(key.sign_request(req)?).await?.into_inner(); | ||||||
| 
 | 
 | ||||||
|     let mut vm_contracts = Vec::new(); |     let mut deleted_vm_reqs = Vec::new(); | ||||||
|     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(vm_c) => { |             Ok(del_vm_rq) => { | ||||||
|                 vm_contracts.push(vm_c); |                 deleted_vm_reqs.push(del_vm_rq); | ||||||
|             } |             } | ||||||
|             Err(e) => { |             Err(e) => { | ||||||
|                 panic!("Received error instead of vm_contracts: {e:?}"); |                 panic!("Received error instead of deleted_vm_reqs: {e:?}"); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     Ok(vm_contracts) |     Ok(deleted_vm_reqs) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub async fn daemon_listener( | pub async fn daemon_listener( | ||||||
|  | |||||||
| @ -237,11 +237,17 @@ async fn test_kick_contract() { | |||||||
| 
 | 
 | ||||||
|     let kick_response = surreal_brain::db::general::WrapperContract::kick_contract( |     let kick_response = surreal_brain::db::general::WrapperContract::kick_contract( | ||||||
|         &db_conn, |         &db_conn, | ||||||
|         &operator_wallet, |         operator_wallet, | ||||||
|         &contract_uuid, |         contract_uuid, | ||||||
|         &reason, |         reason, | ||||||
|     ) |     ) | ||||||
|     .await; |     .await; | ||||||
| 
 |     match kick_response { | ||||||
|     dbg!(kick_response.unwrap()); |         Ok(refund_amount) => { | ||||||
|  |             println!("Refund amount: {}", refund_amount); | ||||||
|  |         } | ||||||
|  |         Err(e) => { | ||||||
|  |             println!("Error: {}", e); | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user