switch from LP to credits
As part of open sourcing the software product, we should consider that loyalty points are not the best language. Switching to "credits" makes sense from a lot of points of view. At the same time, this change allows an achitectural change towards slots. Slots allow daemon resources to get booked based on the HW ratio configured in the daemon config.
This commit is contained in:
parent
ee1b12f85f
commit
ddba7a4f95
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1011,7 +1011,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "detee-shared"
|
name = "detee-shared"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+ssh://git@gitea.detee.cloud/testnet/proto?branch=surreal_brain_app#0b195b4589e4ec689af7ddca27dc051716ecee78"
|
source = "git+ssh://git@gitea.detee.cloud/testnet/proto?branch=credits-v2#6d377926408953e8da2c0f4c6625d4fb90ba7652"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 2.0.1",
|
"bincode 2.0.1",
|
||||||
"prost",
|
"prost",
|
||||||
|
@ -15,7 +15,7 @@ serde_yaml = "0.9.34"
|
|||||||
surrealdb = "2.2.2"
|
surrealdb = "2.2.2"
|
||||||
tokio = { version = "1.44.2", features = ["macros", "rt-multi-thread"] }
|
tokio = { version = "1.44.2", features = ["macros", "rt-multi-thread"] }
|
||||||
tonic = { version = "0.12", features = ["tls"] }
|
tonic = { version = "0.12", features = ["tls"] }
|
||||||
detee-shared = { git = "ssh://git@gitea.detee.cloud/testnet/proto", branch = "surreal_brain_app" }
|
detee-shared = { git = "ssh://git@gitea.detee.cloud/testnet/proto", branch = "credits-v2" }
|
||||||
ed25519-dalek = "2.1.1"
|
ed25519-dalek = "2.1.1"
|
||||||
bs58 = "0.5.1"
|
bs58 = "0.5.1"
|
||||||
tokio-stream = "0.1.17"
|
tokio-stream = "0.1.17"
|
||||||
|
556
saved_data.yaml
556
saved_data.yaml
@ -1,80 +1,12 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
|
|
||||||
accounts:
|
accounts:
|
||||||
DXXkYSnhP3ijsHYxkedcuMomEyc122WaAbkDX7SaGuUS:
|
fY3NNjvFTeR1FBh5nXV3ujX7zZqrm3eBUWGEiG75TK1:
|
||||||
balance: 20293420000
|
balance: 1000000000
|
||||||
tmp_locked: 0
|
tmp_locked: 0
|
||||||
kicked_for: []
|
kicked_for: []
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
banned_by: []
|
banned_by: []
|
||||||
FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL:
|
FBMWVqME3t1i4R6zWyDQGUuiTeruZ1TxLhTmhaEcFypZ:
|
||||||
balance: 25949200000
|
balance: 181560160000
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
Cnkvn3WuHYfTzh1YK1TAv2VD25sNvstJNnQtxjcdQSL7:
|
|
||||||
balance: 4794480000
|
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS:
|
|
||||||
balance: 4672207240000
|
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
E3bgXsWvgichXeC6AqULJCZDp7FbEdTxBD67UaYVWf9y:
|
|
||||||
balance: 21121600000
|
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
HQyGWpiteHbxjszngZvmiX7ZFZAmF6nFjEraBa1M6bbM:
|
|
||||||
balance: 979410300000
|
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
H21Shi4iE7vgfjWEQNvzmpmBMJSaiZ17PYUcdNoAoKNc:
|
|
||||||
balance: 976000000
|
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
45Pyv9hRfub43NyRrYv95MhZs1Wrm8sj3RhBvA3F1Bvr:
|
|
||||||
balance: 1670441080000
|
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
49JBVzmgsQbUURHzAWax2gxo6jmukqbEQzP97YeeNQyu:
|
|
||||||
balance: 1076960680000
|
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB:
|
|
||||||
balance: 3271040000
|
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK:
|
|
||||||
balance: 554454460000
|
|
||||||
tmp_locked: 547200000
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
3BNggj8ZTsoSjfAGdPfmcU2Gobm2qcTEBg9iHXEUPe1t:
|
|
||||||
balance: 9978460000
|
|
||||||
tmp_locked: 0
|
|
||||||
kicked_for: []
|
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
|
||||||
banned_by: []
|
|
||||||
B981xPHmHthfKr15J9uJ64qd9zt2KsdiEuDRR7UUCGWi:
|
|
||||||
balance: 99980200000
|
|
||||||
tmp_locked: 0
|
tmp_locked: 0
|
||||||
kicked_for: []
|
kicked_for: []
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
@ -91,77 +23,143 @@ accounts:
|
|||||||
kicked_for: []
|
kicked_for: []
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
banned_by: []
|
banned_by: []
|
||||||
fY3NNjvFTeR1FBh5nXV3ujX7zZqrm3eBUWGEiG75TK1:
|
49JBVzmgsQbUURHzAWax2gxo6jmukqbEQzP97YeeNQyu:
|
||||||
balance: 1000000000
|
balance: 1076960680000
|
||||||
tmp_locked: 0
|
tmp_locked: 0
|
||||||
kicked_for: []
|
kicked_for: []
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
banned_by: []
|
banned_by: []
|
||||||
FBMWVqME3t1i4R6zWyDQGUuiTeruZ1TxLhTmhaEcFypZ:
|
HQyGWpiteHbxjszngZvmiX7ZFZAmF6nFjEraBa1M6bbM:
|
||||||
balance: 181560160000
|
balance: 979410300000
|
||||||
tmp_locked: 0
|
tmp_locked: 0
|
||||||
kicked_for: []
|
kicked_for: []
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
banned_by: []
|
banned_by: []
|
||||||
DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX:
|
E3bgXsWvgichXeC6AqULJCZDp7FbEdTxBD67UaYVWf9y:
|
||||||
|
balance: 21121600000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL:
|
||||||
|
balance: 1156240000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
45Pyv9hRfub43NyRrYv95MhZs1Wrm8sj3RhBvA3F1Bvr:
|
||||||
|
balance: 933585660000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
H21Shi4iE7vgfjWEQNvzmpmBMJSaiZ17PYUcdNoAoKNc:
|
||||||
|
balance: 109066280000
|
||||||
|
tmp_locked: 453600000
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK:
|
||||||
|
balance: 2565079420000
|
||||||
|
tmp_locked: 547200000
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB:
|
||||||
|
balance: 7063640000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS:
|
||||||
|
balance: 13535509680000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
E27C967A84DEAA3339B4D57C1A7321E4906772244BBECCE25356D0EA6F851086:
|
||||||
|
balance: 100000000000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
DwfL5iFu32xh2YMCUxg63OeaThLRqehDAumiP9q6zuuX:
|
||||||
balance: 74660380000
|
balance: 74660380000
|
||||||
tmp_locked: 0
|
tmp_locked: 0
|
||||||
kicked_for: []
|
kicked_for: []
|
||||||
last_kick: 1970-01-01T00:00:00Z
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
banned_by: []
|
banned_by: []
|
||||||
|
DXXkYSnhP3ijsHYxkedcuMomEyc122WaAbkDX7SaGuUS:
|
||||||
|
balance: 20293420000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
Bb5Xfkk4fc5i4GiTEgChwMb1ToWDQ5uzGtgD6yKTQYAy:
|
||||||
|
balance: 99979600000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
5hx2f3odEx6sXqCY6FEAv6bBm3BXdhJ97G6X7uScsLAj:
|
||||||
|
balance: 94473640000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
3BNggj8ZTsoSjfAGdPfmcU2Gobm2qcTEBg9iHXEUPe1t:
|
||||||
|
balance: 9978460000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
B981xPHmHthfKr15J9uJ64qd9zt2KsdiEuDRR7UUCGWi:
|
||||||
|
balance: 99980200000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
|
Cnkvn3WuHYfTzh1YK1TAv2VD25sNvstJNnQtxjcdQSL7:
|
||||||
|
balance: 11021340000
|
||||||
|
tmp_locked: 0
|
||||||
|
kicked_for: []
|
||||||
|
last_kick: 1970-01-01T00:00:00Z
|
||||||
|
banned_by: []
|
||||||
operators:
|
operators:
|
||||||
BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS:
|
|
||||||
escrow: 5096692000000
|
|
||||||
email: first_on_detee@proton.me
|
|
||||||
banned_users: []
|
|
||||||
vm_nodes:
|
|
||||||
- HiyMp21zaBVbRCjDsD5hEjQnHeHv4e1gpUR6pVfHTKqv
|
|
||||||
- 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4
|
|
||||||
- Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
|
||||||
- 4QbUXDM915RUFnHm3NiysLXFLk1WRGZvABwLNzx4tTEW
|
|
||||||
- DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
|
||||||
app_nodes: []
|
|
||||||
x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK:
|
x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK:
|
||||||
escrow: 5499700480000
|
escrow: 5489633280000
|
||||||
email: gheo@detee.ltd
|
email: gheo@detee.ltd
|
||||||
banned_users: []
|
banned_users: []
|
||||||
vm_nodes:
|
vm_nodes:
|
||||||
- 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f
|
- 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f
|
||||||
- 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9
|
- 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9
|
||||||
app_nodes: []
|
app_nodes: []
|
||||||
|
BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS:
|
||||||
|
escrow: 5091906400000
|
||||||
|
email: first_on_detee@proton.me
|
||||||
|
banned_users: []
|
||||||
|
vm_nodes:
|
||||||
|
- DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
||||||
|
- 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4
|
||||||
|
- Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
||||||
|
app_nodes: []
|
||||||
7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB:
|
7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB:
|
||||||
escrow: 888888888899999
|
escrow: 5500000000000
|
||||||
email: ""
|
email: nmohammed@detee.ltd
|
||||||
banned_users: []
|
banned_users: []
|
||||||
vm_nodes: []
|
vm_nodes: []
|
||||||
app_nodes:
|
app_nodes:
|
||||||
- BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg
|
- BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg
|
||||||
vm_nodes:
|
vm_nodes:
|
||||||
- public_key: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9
|
|
||||||
operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK
|
|
||||||
country: GB
|
|
||||||
region: England
|
|
||||||
city: London
|
|
||||||
ip: 173.234.17.2
|
|
||||||
avail_mem_mb: 26000
|
|
||||||
avail_vcpus: 28
|
|
||||||
avail_storage_gbs: 680
|
|
||||||
avail_ipv4: 2
|
|
||||||
avail_ipv6: 65516
|
|
||||||
avail_ports: 19999
|
|
||||||
max_ports_per_vm: 5
|
|
||||||
price: 20000
|
|
||||||
reports: {}
|
|
||||||
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: 117000
|
||||||
avail_vcpus: 46
|
avail_vcpus: 40
|
||||||
avail_storage_gbs: 440
|
avail_storage_gbs: 410
|
||||||
avail_ipv4: 2
|
avail_ipv4: 2
|
||||||
avail_ipv6: 0
|
avail_ipv6: 0
|
||||||
avail_ports: 20000
|
avail_ports: 20000
|
||||||
@ -169,209 +167,159 @@ vm_nodes:
|
|||||||
price: 20000
|
price: 20000
|
||||||
reports: {}
|
reports: {}
|
||||||
offline_minutes: 0
|
offline_minutes: 0
|
||||||
- public_key: 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f
|
|
||||||
operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK
|
|
||||||
country: CA
|
|
||||||
region: Quebec
|
|
||||||
city: Montréal
|
|
||||||
ip: 184.107.169.199
|
|
||||||
avail_mem_mb: 30000
|
|
||||||
avail_vcpus: 31
|
|
||||||
avail_storage_gbs: 700
|
|
||||||
avail_ipv4: 0
|
|
||||||
avail_ipv6: 0
|
|
||||||
avail_ports: 20000
|
|
||||||
max_ports_per_vm: 5
|
|
||||||
price: 18000
|
|
||||||
reports: {}
|
|
||||||
offline_minutes: 0
|
|
||||||
- public_key: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
|
||||||
operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS
|
|
||||||
country: CA
|
|
||||||
region: British Columbia
|
|
||||||
city: Vancouver
|
|
||||||
ip: 149.22.95.1
|
|
||||||
avail_mem_mb: 109000
|
|
||||||
avail_vcpus: 45
|
|
||||||
avail_storage_gbs: 400
|
|
||||||
avail_ipv4: 25
|
|
||||||
avail_ipv6: 0
|
|
||||||
avail_ports: 20000
|
|
||||||
max_ports_per_vm: 5
|
|
||||||
price: 20000
|
|
||||||
reports: {}
|
|
||||||
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: 121000
|
||||||
avail_vcpus: 41
|
avail_vcpus: 42
|
||||||
avail_storage_gbs: 390
|
|
||||||
avail_ipv4: 23
|
|
||||||
avail_ipv6: 0
|
|
||||||
avail_ports: 19999
|
|
||||||
max_ports_per_vm: 5
|
|
||||||
price: 20000
|
|
||||||
reports: {}
|
|
||||||
offline_minutes: 0
|
|
||||||
- public_key: HiyMp21zaBVbRCjDsD5hEjQnHeHv4e1gpUR6pVfHTKqv
|
|
||||||
operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS
|
|
||||||
country: CA
|
|
||||||
region: British Columbia
|
|
||||||
city: Vancouver
|
|
||||||
ip: 149.22.95.28
|
|
||||||
avail_mem_mb: 125000
|
|
||||||
avail_vcpus: 46
|
|
||||||
avail_storage_gbs: 400
|
avail_storage_gbs: 400
|
||||||
avail_ipv4: 26
|
avail_ipv4: 23
|
||||||
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: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
||||||
|
operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS
|
||||||
|
country: CA
|
||||||
|
region: British Columbia
|
||||||
|
city: Vancouver
|
||||||
|
ip: 149.22.95.1
|
||||||
|
avail_mem_mb: 106400
|
||||||
|
avail_vcpus: 42
|
||||||
|
avail_storage_gbs: 400
|
||||||
|
avail_ipv4: 25
|
||||||
|
avail_ipv6: 0
|
||||||
|
avail_ports: 19999
|
||||||
|
max_ports_per_vm: 5
|
||||||
|
price: 20000
|
||||||
|
reports: {}
|
||||||
|
offline_minutes: 0
|
||||||
|
- public_key: 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f
|
||||||
|
operator_wallet: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK
|
||||||
|
country: CA
|
||||||
|
region: Quebec
|
||||||
|
city: Montréal
|
||||||
|
ip: 184.107.169.199
|
||||||
|
avail_mem_mb: 29000
|
||||||
|
avail_vcpus: 30
|
||||||
|
avail_storage_gbs: 700
|
||||||
|
avail_ipv4: 0
|
||||||
|
avail_ipv6: 0
|
||||||
|
avail_ports: 19999
|
||||||
|
max_ports_per_vm: 5
|
||||||
|
price: 18000
|
||||||
|
reports: {}
|
||||||
|
offline_minutes: 0
|
||||||
vm_contracts:
|
vm_contracts:
|
||||||
- uuid: 958165e3-dea8-407d-8c42-dd17002ef79c
|
- uuid: dbe09a11-0bcf-472e-9f27-9a4939ea2226
|
||||||
hostname: detee-landing-fr
|
hostname: detee-fr
|
||||||
admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL
|
|
||||||
node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
|
||||||
exposed_ports: []
|
|
||||||
public_ipv4: 156.146.63.216
|
|
||||||
public_ipv6: ""
|
|
||||||
disk_size_gb: 10
|
|
||||||
vcpus: 2
|
|
||||||
memory_mb: 3000
|
|
||||||
kernel_sha: 3ec4fc5aa5729f515967ec71be4a851622785c0080f7191b1b07717149840151
|
|
||||||
dtrfs_sha: 3f6b3e5740f249eedfb2f7248c521a551be8b2676f7fcb040f3f3bc840a5004b
|
|
||||||
created_at: 2025-02-28T23:19:41.769423466Z
|
|
||||||
updated_at: 2025-04-12T12:11:58.516768949Z
|
|
||||||
price_per_unit: 20000
|
|
||||||
locked_nano: 14875500000
|
|
||||||
collected_at: 2025-04-20T00:34:15.461165181Z
|
|
||||||
- uuid: e807a2fd-cf90-4a14-bc3a-89ce6dc59033
|
|
||||||
hostname: detee-landing-gb
|
|
||||||
admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL
|
|
||||||
node_pubkey: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9
|
|
||||||
exposed_ports: []
|
|
||||||
public_ipv4: 173.234.136.154
|
|
||||||
public_ipv6: ""
|
|
||||||
disk_size_gb: 10
|
|
||||||
vcpus: 2
|
|
||||||
memory_mb: 3000
|
|
||||||
kernel_sha: 3ec4fc5aa5729f515967ec71be4a851622785c0080f7191b1b07717149840151
|
|
||||||
dtrfs_sha: 3f6b3e5740f249eedfb2f7248c521a551be8b2676f7fcb040f3f3bc840a5004b
|
|
||||||
created_at: 2025-03-06T19:51:39.595163157Z
|
|
||||||
updated_at: 2025-03-06T19:51:39.595163842Z
|
|
||||||
price_per_unit: 20000
|
|
||||||
locked_nano: 14875500000
|
|
||||||
collected_at: 2025-04-20T00:34:15.461181545Z
|
|
||||||
- uuid: 23094406-2307-4332-a642-acee718d0186
|
|
||||||
hostname: heroic-door
|
|
||||||
admin_pubkey: DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX
|
|
||||||
node_pubkey: 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9
|
|
||||||
exposed_ports:
|
|
||||||
- 38288
|
|
||||||
public_ipv4: ""
|
|
||||||
public_ipv6: ""
|
|
||||||
disk_size_gb: 10
|
|
||||||
vcpus: 1
|
|
||||||
memory_mb: 1000
|
|
||||||
kernel_sha: 14e225e4aaf84cc2e0b5f64206121186ddebc4b378b886da3b2f7515dfd41692
|
|
||||||
dtrfs_sha: 03ce24dbbe917fdd4f6347e61036805ddbdded5044c272bab188ef9333093bee
|
|
||||||
created_at: 2025-03-12T16:28:24.749161605Z
|
|
||||||
updated_at: 2025-03-12T16:28:24.749162477Z
|
|
||||||
price_per_unit: 20000
|
|
||||||
locked_nano: 14134140000
|
|
||||||
collected_at: 2025-04-20T00:34:15.461191231Z
|
|
||||||
- uuid: 1f49a71c-f68c-4c64-a82e-f50e0ba0b574
|
|
||||||
hostname: astromech-wrench
|
|
||||||
admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL
|
|
||||||
node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
|
||||||
exposed_ports: []
|
|
||||||
public_ipv4: 149.22.95.2
|
|
||||||
public_ipv6: ""
|
|
||||||
disk_size_gb: 10
|
|
||||||
vcpus: 2
|
|
||||||
memory_mb: 3000
|
|
||||||
kernel_sha: 3a68709138bed09c16671949cf1f03acee95a08381ba84fc70fb586001fa6767
|
|
||||||
dtrfs_sha: 0bb93443f65c9f4379ed469f94794f5c1bf14d8905b0b2c56a125df4a9ebe83e
|
|
||||||
created_at: 2025-03-20T14:40:25.557753393Z
|
|
||||||
updated_at: 2025-03-20T14:40:25.557754242Z
|
|
||||||
price_per_unit: 20000
|
|
||||||
locked_nano: 11865620000
|
|
||||||
collected_at: 2025-04-20T00:34:15.461201690Z
|
|
||||||
- uuid: 16577f1c-9867-4a17-80a8-6cf0490f1270
|
|
||||||
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: 4
|
||||||
memory_mb: 3000
|
memory_mb: 4000
|
||||||
kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542
|
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||||
dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45
|
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||||
created_at: 2025-04-07T22:57:57.646151746Z
|
created_at: 2025-05-16T11:07:53.903282009Z
|
||||||
updated_at: 2025-04-07T22:57:57.646152630Z
|
updated_at: 2025-05-16T11:07:53.903282959Z
|
||||||
price_per_unit: 20000
|
price_per_unit: 20000
|
||||||
locked_nano: 11867500000
|
locked_nano: 24513120000
|
||||||
collected_at: 2025-04-20T00:34:15.461211040Z
|
collected_at: 2025-06-26T11:32:59.521517733Z
|
||||||
- uuid: 4b6e25ca-87ac-478b-8f16-aa8f5c44c704
|
- uuid: 338312387c6e4e5ebec015277d27c21d
|
||||||
hostname: cloaked-mailbox
|
hostname: sofenty-staging
|
||||||
admin_pubkey: DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX
|
admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL
|
||||||
node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
||||||
exposed_ports: []
|
exposed_ports: []
|
||||||
public_ipv4: 149.22.95.2
|
public_ipv4: 149.22.95.3
|
||||||
public_ipv6: ""
|
public_ipv6: ''
|
||||||
disk_size_gb: 30
|
disk_size_gb: 10
|
||||||
vcpus: 1
|
vcpus: 2
|
||||||
memory_mb: 1000
|
memory_mb: 4000
|
||||||
kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542
|
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||||
dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45
|
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||||
created_at: 2025-04-12T13:44:56.957037550Z
|
created_at: 2025-06-12T23:20:23.797184848Z
|
||||||
updated_at: 2025-04-12T13:44:56.957038546Z
|
updated_at: 2025-06-12T23:20:23.797185855Z
|
||||||
price_per_unit: 20000
|
price_per_unit: 20000
|
||||||
locked_nano: 11177760000
|
locked_nano: 17703920000
|
||||||
collected_at: 2025-04-20T00:34:15.461219779Z
|
collected_at: 2025-06-26T11:32:59.521538185Z
|
||||||
- uuid: eb1a13ed-d782-4b71-8860-73540129cb7d
|
- uuid: 46656273dc964fdeaec2fd1efd49fc12
|
||||||
hostname: twenty
|
hostname: sofenty-scraper-bot
|
||||||
|
admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL
|
||||||
|
node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
||||||
|
exposed_ports:
|
||||||
|
- 36057
|
||||||
|
public_ipv4: ''
|
||||||
|
public_ipv6: ''
|
||||||
|
disk_size_gb: 10
|
||||||
|
vcpus: 2
|
||||||
|
memory_mb: 4000
|
||||||
|
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||||
|
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||||
|
created_at: 2025-06-17T11:12:18.659422501Z
|
||||||
|
updated_at: 2025-06-17T11:12:18.659423285Z
|
||||||
|
price_per_unit: 20000
|
||||||
|
locked_nano: 14299320000
|
||||||
|
collected_at: 2025-06-26T11:32:59.521547200Z
|
||||||
|
- uuid: 1b3365a15fe64b8aa283bb7883c62e09
|
||||||
|
hostname: detee-us
|
||||||
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: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||||
dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45
|
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||||
created_at: 2025-04-15T00:46:35.622165457Z
|
created_at: 2025-06-18T10:51:17.699206021Z
|
||||||
updated_at: 2025-04-15T00:46:35.622166372Z
|
updated_at: 2025-06-18T10:51:17.699206835Z
|
||||||
price_per_unit: 20000
|
price_per_unit: 20000
|
||||||
locked_nano: 15570720000
|
locked_nano: 26552160000
|
||||||
collected_at: 2025-04-20T00:34:15.461230948Z
|
collected_at: 2025-06-26T11:32:59.521554160Z
|
||||||
- uuid: 1bf36309-3774-4825-b023-b2a0ef0405ed
|
- uuid: b11ad0fcfc194f5490d64f5a72574dc8
|
||||||
hostname: shadowy-hobo
|
hostname: brain-backups
|
||||||
admin_pubkey: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK
|
admin_pubkey: 45Pyv9hRfub43NyRrYv95MhZs1Wrm8sj3RhBvA3F1Bvr
|
||||||
node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4
|
node_pubkey: 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f
|
||||||
exposed_ports:
|
exposed_ports:
|
||||||
- 46393
|
- 38175
|
||||||
public_ipv4: ""
|
public_ipv4: ''
|
||||||
public_ipv6: ""
|
public_ipv6: ''
|
||||||
disk_size_gb: 10
|
disk_size_gb: 30
|
||||||
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-06-18T13:59:30.713579315Z
|
||||||
updated_at: 2025-04-16T20:37:57.176594069Z
|
updated_at: 2025-06-18T13:59:30.713580515Z
|
||||||
price_per_unit: 20000
|
price_per_unit: 20000
|
||||||
locked_nano: 12730960000
|
locked_nano: 11638260000
|
||||||
collected_at: 2025-04-20T00:34:15.461240342Z
|
collected_at: 2025-06-26T11:32:59.521562057Z
|
||||||
|
- uuid: 89237736b97047beac3611e25e26408e
|
||||||
|
hostname: brain-staging
|
||||||
|
admin_pubkey: 45Pyv9hRfub43NyRrYv95MhZs1Wrm8sj3RhBvA3F1Bvr
|
||||||
|
node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
||||||
|
exposed_ports: []
|
||||||
|
public_ipv4: 156.146.63.216
|
||||||
|
public_ipv6: ''
|
||||||
|
disk_size_gb: 20
|
||||||
|
vcpus: 2
|
||||||
|
memory_mb: 4000
|
||||||
|
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||||
|
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||||
|
created_at: 2025-06-18T14:00:48.016735075Z
|
||||||
|
updated_at: 2025-06-18T14:00:48.016736647Z
|
||||||
|
price_per_unit: 20000
|
||||||
|
locked_nano: 32466740000
|
||||||
|
collected_at: 2025-06-26T11:32:59.521568755Z
|
||||||
app_nodes:
|
app_nodes:
|
||||||
- node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg
|
- node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg
|
||||||
operator_wallet: 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB
|
operator_wallet: 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB
|
||||||
@ -385,58 +333,6 @@ app_nodes:
|
|||||||
avail_no_of_port: 20000
|
avail_no_of_port: 20000
|
||||||
max_ports_per_app: 9
|
max_ports_per_app: 9
|
||||||
price: 20000
|
price: 20000
|
||||||
|
reports: {}
|
||||||
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
|
|
||||||
|
@ -12,7 +12,7 @@ server="$1"
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
[[ "$server" == "testnet" ]] && server="root@prod-brain-1"
|
[[ "$server" == "testnet" ]] && server="brain-testnet"
|
||||||
[[ "$server" == "staging" ]] && server="brain-staging"
|
[[ "$server" == "staging" ]] && server="brain-staging"
|
||||||
|
|
||||||
cargo build --release --bin brain
|
cargo build --release --bin brain
|
||||||
|
@ -50,7 +50,6 @@ pub const ID_ALPHABET: [char; 62] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
pub const TOKEN_DECIMAL: u64 = 1_000_000_000;
|
pub const TOKEN_DECIMAL: u64 = 1_000_000_000;
|
||||||
pub const MIN_ESCROW: u64 = 5000 * TOKEN_DECIMAL;
|
|
||||||
|
|
||||||
pub const APP_DAEMON_TIMEOUT: u64 = 20;
|
pub const APP_DAEMON_TIMEOUT: u64 = 20;
|
||||||
pub const VM_DAEMON_TIMEOUT: u64 = 10;
|
pub const VM_DAEMON_TIMEOUT: u64 = 10;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
use super::Error;
|
use super::Error;
|
||||||
use crate::constants::{ACCOUNT, BAN, KICK, MIN_ESCROW, VM_NODE};
|
use crate::constants::{ACCOUNT, BAN, KICK, TOKEN_DECIMAL, VM_NODE};
|
||||||
use crate::db::prelude::*;
|
use crate::db::prelude::*;
|
||||||
use crate::old_brain;
|
use crate::old_brain;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@ -61,9 +61,7 @@ impl Account {
|
|||||||
email: &str,
|
email: &str,
|
||||||
escrow: u64,
|
escrow: u64,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if escrow < MIN_ESCROW {
|
let escrow = escrow * TOKEN_DECIMAL;
|
||||||
return Err(Error::MinimalEscrow);
|
|
||||||
}
|
|
||||||
let mut op_account = Self::get(db, wallet).await?;
|
let mut op_account = Self::get(db, wallet).await?;
|
||||||
let op_total_balance = op_account.balance.saturating_add(op_account.escrow);
|
let op_total_balance = op_account.balance.saturating_add(op_account.escrow);
|
||||||
if op_total_balance < escrow {
|
if op_total_balance < escrow {
|
||||||
|
@ -5,7 +5,7 @@ pub mod general;
|
|||||||
pub mod vm;
|
pub mod vm;
|
||||||
|
|
||||||
use crate::constants::{
|
use crate::constants::{
|
||||||
APP_NODE, DB_SCHEMA_FILES, DEFAULT_ENDPOINT, DELETED_APP, DELETED_VM, MIN_ESCROW, NEW_APP_REQ,
|
APP_NODE, DB_SCHEMA_FILES, DEFAULT_ENDPOINT, DELETED_APP, DELETED_VM, NEW_APP_REQ,
|
||||||
NEW_VM_REQ, UPDATE_VM_REQ,
|
NEW_VM_REQ, UPDATE_VM_REQ,
|
||||||
};
|
};
|
||||||
use crate::old_brain;
|
use crate::old_brain;
|
||||||
@ -33,8 +33,6 @@ pub enum Error {
|
|||||||
UnknownTable(String),
|
UnknownTable(String),
|
||||||
#[error("Daemon channel got closed: {0}")]
|
#[error("Daemon channel got closed: {0}")]
|
||||||
AppDaemonConnection(#[from] tokio::sync::mpsc::error::SendError<AppDaemonMsg>),
|
AppDaemonConnection(#[from] tokio::sync::mpsc::error::SendError<AppDaemonMsg>),
|
||||||
#[error("Minimum escrow amount is {MIN_ESCROW}")]
|
|
||||||
MinimalEscrow,
|
|
||||||
#[error("Insufficient funds, deposit more tokens")]
|
#[error("Insufficient funds, deposit more tokens")]
|
||||||
InsufficientFunds,
|
InsufficientFunds,
|
||||||
#[error("Contract not found")]
|
#[error("Contract not found")]
|
||||||
|
120
src/db/vm.rs
120
src/db/vm.rs
@ -26,9 +26,9 @@ pub struct VmNode {
|
|||||||
pub region: String,
|
pub region: String,
|
||||||
pub city: String,
|
pub city: String,
|
||||||
pub ip: String,
|
pub ip: String,
|
||||||
pub avail_mem_mb: u32,
|
pub avail_mem_mib: u32,
|
||||||
pub avail_vcpus: u32,
|
pub avail_vcpus: u32,
|
||||||
pub avail_storage_gbs: u32,
|
pub avail_storage_mib: u32,
|
||||||
pub avail_ipv4: u32,
|
pub avail_ipv4: u32,
|
||||||
pub avail_ipv6: u32,
|
pub avail_ipv6: u32,
|
||||||
pub avail_ports: u32,
|
pub avail_ports: u32,
|
||||||
@ -59,9 +59,9 @@ impl VmNode {
|
|||||||
|
|
||||||
#[derive(Serialize)]
|
#[derive(Serialize)]
|
||||||
pub struct VmNodeResources {
|
pub struct VmNodeResources {
|
||||||
pub avail_mem_mb: u32,
|
pub avail_mem_mib: u32,
|
||||||
pub avail_vcpus: u32,
|
pub avail_vcpus: u32,
|
||||||
pub avail_storage_gbs: u32,
|
pub avail_storage_mib: u32,
|
||||||
pub avail_ipv4: u32,
|
pub avail_ipv4: u32,
|
||||||
pub avail_ipv6: u32,
|
pub avail_ipv6: u32,
|
||||||
pub avail_ports: u32,
|
pub avail_ports: u32,
|
||||||
@ -83,9 +83,9 @@ pub struct VmNodeWithReports {
|
|||||||
pub region: String,
|
pub region: String,
|
||||||
pub city: String,
|
pub city: String,
|
||||||
pub ip: String,
|
pub ip: String,
|
||||||
pub avail_mem_mb: u32,
|
pub avail_mem_mib: u64,
|
||||||
pub avail_vcpus: u32,
|
pub avail_vcpus: u64,
|
||||||
pub avail_storage_gbs: u32,
|
pub avail_storage_mib: u64,
|
||||||
pub avail_ipv4: u32,
|
pub avail_ipv4: u32,
|
||||||
pub avail_ipv6: u32,
|
pub avail_ipv6: u32,
|
||||||
pub avail_ports: u32,
|
pub avail_ports: u32,
|
||||||
@ -106,15 +106,15 @@ impl VmNodeWithReports {
|
|||||||
avail_ipv4 >= {} &&
|
avail_ipv4 >= {} &&
|
||||||
avail_ipv6 >= {} &&
|
avail_ipv6 >= {} &&
|
||||||
avail_vcpus >= {} &&
|
avail_vcpus >= {} &&
|
||||||
avail_mem_mb >= {} &&
|
avail_mem_mib >= {} &&
|
||||||
avail_storage_gbs >= {}\n",
|
avail_storage_mib >= {}\n",
|
||||||
filters.free_ports,
|
filters.free_ports,
|
||||||
filters.free_ports,
|
filters.free_ports,
|
||||||
filters.offers_ipv4 as u32,
|
filters.offers_ipv4 as u32,
|
||||||
filters.offers_ipv6 as u32,
|
filters.offers_ipv6 as u32,
|
||||||
filters.vcpus,
|
filters.vcpus,
|
||||||
filters.memory_mb,
|
filters.memory_mib,
|
||||||
filters.storage_gb
|
filters.storage_mib
|
||||||
);
|
);
|
||||||
if !filters.city.is_empty() {
|
if !filters.city.is_empty() {
|
||||||
query += &format!("&& city = '{}' ", filters.city);
|
query += &format!("&& city = '{}' ", filters.city);
|
||||||
@ -170,9 +170,9 @@ pub struct NewVmReq {
|
|||||||
pub extra_ports: Vec<u32>,
|
pub extra_ports: Vec<u32>,
|
||||||
pub public_ipv4: bool,
|
pub public_ipv4: bool,
|
||||||
pub public_ipv6: bool,
|
pub public_ipv6: bool,
|
||||||
pub disk_size_gb: u32,
|
pub disk_size_mib: u32,
|
||||||
pub vcpus: u32,
|
pub vcpus: u32,
|
||||||
pub memory_mb: u32,
|
pub memory_mib: u32,
|
||||||
pub dtrfs_url: String,
|
pub dtrfs_url: String,
|
||||||
pub dtrfs_sha: String,
|
pub dtrfs_sha: String,
|
||||||
pub kernel_sha: String,
|
pub kernel_sha: String,
|
||||||
@ -266,7 +266,7 @@ impl NewVmReq {
|
|||||||
->$new_vm_req
|
->$new_vm_req
|
||||||
->$vm_node
|
->$vm_node
|
||||||
CONTENT {{
|
CONTENT {{
|
||||||
created_at: time::now(), hostname: $hostname, vcpus: {}, memory_mb: {}, disk_size_gb: {},
|
created_at: time::now(), hostname: $hostname, vcpus: {}, memory_mib: {}, disk_size_mib: {},
|
||||||
extra_ports: {:?}, public_ipv4: {}, public_ipv6: {},
|
extra_ports: {:?}, public_ipv4: {}, public_ipv6: {},
|
||||||
dtrfs_url: $dtrfs_url, dtrfs_sha: $dtrfs_sha, kernel_url: $kernel_url, kernel_sha: $kernel_sha,
|
dtrfs_url: $dtrfs_url, dtrfs_sha: $dtrfs_sha, kernel_url: $kernel_url, kernel_sha: $kernel_sha,
|
||||||
price_per_unit: {}, locked_nano: {locked_nano}, error: ''
|
price_per_unit: {}, locked_nano: {locked_nano}, error: ''
|
||||||
@ -274,8 +274,8 @@ impl NewVmReq {
|
|||||||
|
|
||||||
COMMIT TRANSACTION;",
|
COMMIT TRANSACTION;",
|
||||||
self.vcpus,
|
self.vcpus,
|
||||||
self.memory_mb,
|
self.memory_mib,
|
||||||
self.disk_size_gb,
|
self.disk_size_mib,
|
||||||
self.extra_ports,
|
self.extra_ports,
|
||||||
self.public_ipv4,
|
self.public_ipv4,
|
||||||
self.public_ipv6,
|
self.public_ipv6,
|
||||||
@ -334,7 +334,7 @@ impl WrappedMeasurement {
|
|||||||
_ => NEW_VM_REQ,
|
_ => NEW_VM_REQ,
|
||||||
};
|
};
|
||||||
let mut resp = db
|
let mut resp = db
|
||||||
.query(format!("live select error from {table} where id = {NEW_VM_REQ}:{vm_id};"))
|
.query(format!("live select error from {table} where id = {table}:{vm_id};"))
|
||||||
.query(format!(
|
.query(format!(
|
||||||
"live select * from measurement_args where id = measurement_args:{vm_id};"
|
"live select * from measurement_args where id = measurement_args:{vm_id};"
|
||||||
))
|
))
|
||||||
@ -404,9 +404,9 @@ pub struct ActiveVm {
|
|||||||
pub mapped_ports: Vec<(u32, u32)>,
|
pub mapped_ports: Vec<(u32, u32)>,
|
||||||
pub public_ipv4: String,
|
pub public_ipv4: String,
|
||||||
pub public_ipv6: String,
|
pub public_ipv6: String,
|
||||||
pub disk_size_gb: u32,
|
pub disk_size_mib: u32,
|
||||||
pub vcpus: u32,
|
pub vcpus: u32,
|
||||||
pub memory_mb: u32,
|
pub memory_mib: u32,
|
||||||
pub dtrfs_sha: String,
|
pub dtrfs_sha: String,
|
||||||
pub kernel_sha: String,
|
pub kernel_sha: String,
|
||||||
pub created_at: Datetime,
|
pub created_at: Datetime,
|
||||||
@ -422,8 +422,8 @@ impl ActiveVm {
|
|||||||
// I tried, but this can be done better.
|
// I tried, but this can be done better.
|
||||||
// Storage cost should also be based on tier
|
// Storage cost should also be based on tier
|
||||||
(self.vcpus as u64 * 10)
|
(self.vcpus as u64 * 10)
|
||||||
+ ((self.memory_mb + 256) as u64 / 200)
|
+ ((self.memory_mib + 256) as u64 / 200)
|
||||||
+ (self.disk_size_gb as u64 / 10)
|
+ (self.disk_size_mib as u64 / 10)
|
||||||
+ (!self.public_ipv4.is_empty() as u64 * 10)
|
+ (!self.public_ipv4.is_empty() as u64 * 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -483,9 +483,9 @@ impl ActiveVm {
|
|||||||
mapped_ports,
|
mapped_ports,
|
||||||
public_ipv4,
|
public_ipv4,
|
||||||
public_ipv6,
|
public_ipv6,
|
||||||
disk_size_gb: new_vm_req.disk_size_gb,
|
disk_size_mib: new_vm_req.disk_size_mib,
|
||||||
vcpus: new_vm_req.vcpus,
|
vcpus: new_vm_req.vcpus,
|
||||||
memory_mb: new_vm_req.memory_mb,
|
memory_mib: new_vm_req.memory_mib,
|
||||||
dtrfs_sha: new_vm_req.dtrfs_sha,
|
dtrfs_sha: new_vm_req.dtrfs_sha,
|
||||||
kernel_sha: new_vm_req.kernel_sha,
|
kernel_sha: new_vm_req.kernel_sha,
|
||||||
created_at: new_vm_req.created_at.clone(),
|
created_at: new_vm_req.created_at.clone(),
|
||||||
@ -517,11 +517,11 @@ impl ActiveVm {
|
|||||||
if update_vm_req.vcpus > 0 {
|
if update_vm_req.vcpus > 0 {
|
||||||
active_vm.vcpus = update_vm_req.vcpus;
|
active_vm.vcpus = update_vm_req.vcpus;
|
||||||
}
|
}
|
||||||
if update_vm_req.memory_mb > 0 {
|
if update_vm_req.memory_mib > 0 {
|
||||||
active_vm.memory_mb = update_vm_req.memory_mb;
|
active_vm.memory_mib = update_vm_req.memory_mib;
|
||||||
}
|
}
|
||||||
if update_vm_req.disk_size_gb > 0 {
|
if update_vm_req.disk_size_mib > 0 {
|
||||||
active_vm.disk_size_gb = update_vm_req.disk_size_gb;
|
active_vm.disk_size_mib = update_vm_req.disk_size_mib;
|
||||||
}
|
}
|
||||||
if !update_vm_req.dtrfs_sha.is_empty() && !update_vm_req.kernel_sha.is_empty() {
|
if !update_vm_req.dtrfs_sha.is_empty() && !update_vm_req.kernel_sha.is_empty() {
|
||||||
active_vm.dtrfs_sha = update_vm_req.dtrfs_sha;
|
active_vm.dtrfs_sha = update_vm_req.dtrfs_sha;
|
||||||
@ -670,9 +670,9 @@ pub struct UpdateVmReq {
|
|||||||
pub admin: RecordId,
|
pub admin: RecordId,
|
||||||
#[serde(rename = "out")]
|
#[serde(rename = "out")]
|
||||||
pub vm_node: RecordId,
|
pub vm_node: RecordId,
|
||||||
pub disk_size_gb: u32,
|
pub disk_size_mib: u32,
|
||||||
pub vcpus: u32,
|
pub vcpus: u32,
|
||||||
pub memory_mb: u32,
|
pub memory_mib: u32,
|
||||||
pub dtrfs_url: String,
|
pub dtrfs_url: String,
|
||||||
pub dtrfs_sha: String,
|
pub dtrfs_sha: String,
|
||||||
pub kernel_sha: String,
|
pub kernel_sha: String,
|
||||||
@ -688,9 +688,9 @@ pub struct UpdateVmEvent {
|
|||||||
pub admin: RecordId,
|
pub admin: RecordId,
|
||||||
#[serde(rename = "out")]
|
#[serde(rename = "out")]
|
||||||
pub vm_node: RecordId,
|
pub vm_node: RecordId,
|
||||||
pub disk_size_gb: u32,
|
pub disk_size_mib: u32,
|
||||||
pub vcpus: u32,
|
pub vcpus: u32,
|
||||||
pub memory_mb: u32,
|
pub memory_mib: u32,
|
||||||
pub dtrfs_url: String,
|
pub dtrfs_url: String,
|
||||||
pub dtrfs_sha: String,
|
pub dtrfs_sha: String,
|
||||||
pub kernel_sha: String,
|
pub kernel_sha: String,
|
||||||
@ -704,9 +704,9 @@ impl From<UpdateVmReq> for UpdateVmEvent {
|
|||||||
vm_id: RecordId::from((VM_UPDATE_EVENT, update_vm_req.id.key().to_string())),
|
vm_id: RecordId::from((VM_UPDATE_EVENT, update_vm_req.id.key().to_string())),
|
||||||
admin: update_vm_req.admin,
|
admin: update_vm_req.admin,
|
||||||
vm_node: update_vm_req.vm_node,
|
vm_node: update_vm_req.vm_node,
|
||||||
disk_size_gb: update_vm_req.disk_size_gb,
|
disk_size_mib: update_vm_req.disk_size_mib,
|
||||||
vcpus: update_vm_req.vcpus,
|
vcpus: update_vm_req.vcpus,
|
||||||
memory_mb: update_vm_req.memory_mb,
|
memory_mib: update_vm_req.memory_mib,
|
||||||
dtrfs_url: update_vm_req.dtrfs_url,
|
dtrfs_url: update_vm_req.dtrfs_url,
|
||||||
dtrfs_sha: update_vm_req.dtrfs_sha,
|
dtrfs_sha: update_vm_req.dtrfs_sha,
|
||||||
kernel_sha: update_vm_req.kernel_sha,
|
kernel_sha: update_vm_req.kernel_sha,
|
||||||
@ -743,17 +743,32 @@ impl UpdateVmReq {
|
|||||||
return Ok(None);
|
return Ok(None);
|
||||||
}
|
}
|
||||||
let contract = contract.unwrap();
|
let contract = contract.unwrap();
|
||||||
// this is needed cause TryFrom does not support await
|
let mem_per_cpu = contract.memory_mib / contract.vcpus;
|
||||||
|
let disk_per_cpu = contract.disk_size_mib / contract.vcpus;
|
||||||
self.vm_node = contract.vm_node;
|
self.vm_node = contract.vm_node;
|
||||||
|
|
||||||
if !((self.vcpus != 0 && contract.vcpus != self.vcpus)
|
if !((self.vcpus != 0 && contract.vcpus != self.vcpus)
|
||||||
|| (self.memory_mb != 0 && contract.memory_mb != self.memory_mb)
|
|| (self.memory_mib != 0 && contract.memory_mib != self.memory_mib)
|
||||||
|| (!self.dtrfs_sha.is_empty() && contract.dtrfs_sha != self.dtrfs_sha)
|
|| (!self.dtrfs_sha.is_empty() && contract.dtrfs_sha != self.dtrfs_sha)
|
||||||
|| (self.disk_size_gb != 0 && contract.disk_size_gb != self.disk_size_gb))
|
|| (self.disk_size_mib != 0 && contract.disk_size_mib != self.disk_size_mib))
|
||||||
{
|
{
|
||||||
return Ok(Some(false));
|
return Ok(Some(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Do not allow user to unbalance node resources
|
||||||
|
if self.vcpus == 0 {
|
||||||
|
self.vcpus = self.memory_mib / mem_per_cpu;
|
||||||
|
}
|
||||||
|
if self.memory_mib == 0 {
|
||||||
|
self.memory_mib = self.vcpus * mem_per_cpu;
|
||||||
|
}
|
||||||
|
if self.vcpus == 0 {
|
||||||
|
self.vcpus = self.disk_size_mib / disk_per_cpu;
|
||||||
|
}
|
||||||
|
if self.disk_size_mib == 0 {
|
||||||
|
self.disk_size_mib = self.vcpus * disk_per_cpu;
|
||||||
|
}
|
||||||
|
|
||||||
let _: Vec<Self> = db.insert(UPDATE_VM_REQ).relation(self).await?;
|
let _: Vec<Self> = db.insert(UPDATE_VM_REQ).relation(self).await?;
|
||||||
Ok(Some(true))
|
Ok(Some(true))
|
||||||
}
|
}
|
||||||
@ -764,6 +779,7 @@ impl UpdateVmReq {
|
|||||||
error: String,
|
error: String,
|
||||||
}
|
}
|
||||||
let _: Option<Self> = db.update((UPDATE_VM_REQ, id)).merge(UpdateVmError { error }).await?;
|
let _: Option<Self> = db.update((UPDATE_VM_REQ, id)).merge(UpdateVmError { error }).await?;
|
||||||
|
let _: Option<Self> = db.delete((UPDATE_VM_REQ, id)).await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -779,9 +795,9 @@ pub struct DeletedVm {
|
|||||||
pub mapped_ports: Vec<(u32, u32)>,
|
pub mapped_ports: Vec<(u32, u32)>,
|
||||||
pub public_ipv4: String,
|
pub public_ipv4: String,
|
||||||
pub public_ipv6: String,
|
pub public_ipv6: String,
|
||||||
pub disk_size_gb: u32,
|
pub disk_size_mib: u32,
|
||||||
pub vcpus: u32,
|
pub vcpus: u32,
|
||||||
pub memory_mb: u32,
|
pub memory_mib: u32,
|
||||||
pub dtrfs_sha: String,
|
pub dtrfs_sha: String,
|
||||||
pub kernel_sha: String,
|
pub kernel_sha: String,
|
||||||
pub created_at: Datetime,
|
pub created_at: Datetime,
|
||||||
@ -799,9 +815,9 @@ impl From<ActiveVm> for DeletedVm {
|
|||||||
mapped_ports: active_vm.mapped_ports,
|
mapped_ports: active_vm.mapped_ports,
|
||||||
public_ipv4: active_vm.public_ipv4,
|
public_ipv4: active_vm.public_ipv4,
|
||||||
public_ipv6: active_vm.public_ipv6,
|
public_ipv6: active_vm.public_ipv6,
|
||||||
disk_size_gb: active_vm.disk_size_gb,
|
disk_size_mib: active_vm.disk_size_mib,
|
||||||
vcpus: active_vm.vcpus,
|
vcpus: active_vm.vcpus,
|
||||||
memory_mb: active_vm.memory_mb,
|
memory_mib: active_vm.memory_mib,
|
||||||
dtrfs_sha: active_vm.dtrfs_sha,
|
dtrfs_sha: active_vm.dtrfs_sha,
|
||||||
kernel_sha: active_vm.kernel_sha,
|
kernel_sha: active_vm.kernel_sha,
|
||||||
created_at: active_vm.created_at,
|
created_at: active_vm.created_at,
|
||||||
@ -862,8 +878,8 @@ impl DeletedVm {
|
|||||||
// I tried, but this can be done better.
|
// I tried, but this can be done better.
|
||||||
// Storage cost should also be based on tier
|
// Storage cost should also be based on tier
|
||||||
(self.vcpus as u64 * 10)
|
(self.vcpus as u64 * 10)
|
||||||
+ ((self.memory_mb + 256) as u64 / 200)
|
+ ((self.memory_mib + 256) as u64 / 200)
|
||||||
+ (self.disk_size_gb as u64 / 10)
|
+ (self.disk_size_mib as u64 / 10)
|
||||||
+ (!self.public_ipv4.is_empty() as u64 * 10)
|
+ (!self.public_ipv4.is_empty() as u64 * 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -884,9 +900,9 @@ pub struct ActiveVmWithNode {
|
|||||||
pub mapped_ports: Vec<(u32, u32)>,
|
pub mapped_ports: Vec<(u32, u32)>,
|
||||||
pub public_ipv4: String,
|
pub public_ipv4: String,
|
||||||
pub public_ipv6: String,
|
pub public_ipv6: String,
|
||||||
pub disk_size_gb: u32,
|
pub disk_size_mib: u32,
|
||||||
pub vcpus: u32,
|
pub vcpus: u32,
|
||||||
pub memory_mb: u32,
|
pub memory_mib: u32,
|
||||||
pub dtrfs_sha: String,
|
pub dtrfs_sha: String,
|
||||||
pub kernel_sha: String,
|
pub kernel_sha: String,
|
||||||
pub created_at: Datetime,
|
pub created_at: Datetime,
|
||||||
@ -905,9 +921,9 @@ impl From<ActiveVmWithNode> for ActiveVm {
|
|||||||
mapped_ports: val.mapped_ports,
|
mapped_ports: val.mapped_ports,
|
||||||
public_ipv4: val.public_ipv4,
|
public_ipv4: val.public_ipv4,
|
||||||
public_ipv6: val.public_ipv6,
|
public_ipv6: val.public_ipv6,
|
||||||
disk_size_gb: val.disk_size_gb,
|
disk_size_mib: val.disk_size_mib,
|
||||||
vcpus: val.vcpus,
|
vcpus: val.vcpus,
|
||||||
memory_mb: val.memory_mb,
|
memory_mib: val.memory_mib,
|
||||||
dtrfs_sha: val.dtrfs_sha,
|
dtrfs_sha: val.dtrfs_sha,
|
||||||
kernel_sha: val.kernel_sha,
|
kernel_sha: val.kernel_sha,
|
||||||
created_at: val.created_at,
|
created_at: val.created_at,
|
||||||
@ -974,8 +990,8 @@ impl ActiveVmWithNode {
|
|||||||
// I tried, but this can be done better.
|
// I tried, but this can be done better.
|
||||||
// Storage cost should also be based on tier
|
// Storage cost should also be based on tier
|
||||||
(self.vcpus as u64 * 10)
|
(self.vcpus as u64 * 10)
|
||||||
+ ((self.memory_mb + 256) as u64 / 200)
|
+ ((self.memory_mib + 256) as u64 / 200)
|
||||||
+ (self.disk_size_gb as u64 / 10)
|
+ (self.disk_size_mib as u64 / 1024 / 10)
|
||||||
+ (!self.public_ipv4.is_empty() as u64 * 10)
|
+ (!self.public_ipv4.is_empty() as u64 * 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1005,9 +1021,9 @@ impl From<&old_brain::BrainData> for Vec<VmNode> {
|
|||||||
region: old_node.region.clone(),
|
region: old_node.region.clone(),
|
||||||
city: old_node.city.clone(),
|
city: old_node.city.clone(),
|
||||||
ip: old_node.ip.clone(),
|
ip: old_node.ip.clone(),
|
||||||
avail_mem_mb: old_node.avail_mem_mb,
|
avail_mem_mib: old_node.avail_mem_mb,
|
||||||
avail_vcpus: old_node.avail_vcpus,
|
avail_vcpus: old_node.avail_vcpus,
|
||||||
avail_storage_gbs: old_node.avail_storage_gbs,
|
avail_storage_mib: old_node.avail_storage_gbs,
|
||||||
avail_ipv4: old_node.avail_ipv4,
|
avail_ipv4: old_node.avail_ipv4,
|
||||||
avail_ipv6: old_node.avail_ipv6,
|
avail_ipv6: old_node.avail_ipv6,
|
||||||
avail_ports: old_node.avail_ports,
|
avail_ports: old_node.avail_ports,
|
||||||
@ -1037,9 +1053,9 @@ impl From<&old_brain::BrainData> for Vec<ActiveVm> {
|
|||||||
mapped_ports,
|
mapped_ports,
|
||||||
public_ipv4: old_c.public_ipv4.clone(),
|
public_ipv4: old_c.public_ipv4.clone(),
|
||||||
public_ipv6: old_c.public_ipv6.clone(),
|
public_ipv6: old_c.public_ipv6.clone(),
|
||||||
disk_size_gb: old_c.disk_size_gb,
|
disk_size_mib: old_c.disk_size_gb,
|
||||||
vcpus: old_c.vcpus,
|
vcpus: old_c.vcpus,
|
||||||
memory_mb: old_c.memory_mb,
|
memory_mib: old_c.memory_mb,
|
||||||
dtrfs_sha: old_c.dtrfs_sha.clone(),
|
dtrfs_sha: old_c.dtrfs_sha.clone(),
|
||||||
kernel_sha: old_c.kernel_sha.clone(),
|
kernel_sha: old_c.kernel_sha.clone(),
|
||||||
price_per_unit: old_c.price_per_unit,
|
price_per_unit: old_c.price_per_unit,
|
||||||
|
@ -115,7 +115,7 @@ impl BrainGeneralCli for GeneralCliServer {
|
|||||||
log::info!("Regitering new operator: {req:?}");
|
log::info!("Regitering new operator: {req:?}");
|
||||||
match db::Account::operator_reg(&self.db, &req.pubkey, &req.email, req.escrow).await {
|
match db::Account::operator_reg(&self.db, &req.pubkey, &req.email, req.escrow).await {
|
||||||
Ok(()) => Ok(Response::new(Empty {})),
|
Ok(()) => Ok(Response::new(Empty {})),
|
||||||
Err(e) if matches!(e, db::Error::InsufficientFunds | db::Error::MinimalEscrow) => {
|
Err(e) if matches!(e, db::Error::InsufficientFunds) => {
|
||||||
Err(Status::failed_precondition(e.to_string()))
|
Err(Status::failed_precondition(e.to_string()))
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
@ -133,7 +133,7 @@ impl BrainGeneralCli for GeneralCliServer {
|
|||||||
match db::kick_contract(&self.db, &req.operator_wallet, &req.contract_uuid, &req.reason)
|
match db::kick_contract(&self.db, &req.operator_wallet, &req.contract_uuid, &req.reason)
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(nano_lp) => Ok(Response::new(KickResp { nano_lp })),
|
Ok(nano_credits) => Ok(Response::new(KickResp { nano_credits })),
|
||||||
Err(e)
|
Err(e)
|
||||||
if matches!(
|
if matches!(
|
||||||
e,
|
e,
|
||||||
|
@ -36,9 +36,9 @@ impl From<NewVmReq> for db::NewVmReq {
|
|||||||
extra_ports: new_vm_req.extra_ports,
|
extra_ports: new_vm_req.extra_ports,
|
||||||
public_ipv4: new_vm_req.public_ipv4,
|
public_ipv4: new_vm_req.public_ipv4,
|
||||||
public_ipv6: new_vm_req.public_ipv6,
|
public_ipv6: new_vm_req.public_ipv6,
|
||||||
disk_size_gb: new_vm_req.disk_size_gb,
|
disk_size_mib: new_vm_req.disk_size_mib,
|
||||||
vcpus: new_vm_req.vcpus,
|
vcpus: new_vm_req.vcpus,
|
||||||
memory_mb: new_vm_req.memory_mb,
|
memory_mib: new_vm_req.memory_mib,
|
||||||
kernel_url: new_vm_req.kernel_url,
|
kernel_url: new_vm_req.kernel_url,
|
||||||
kernel_sha: new_vm_req.kernel_sha,
|
kernel_sha: new_vm_req.kernel_sha,
|
||||||
dtrfs_url: new_vm_req.dtrfs_url,
|
dtrfs_url: new_vm_req.dtrfs_url,
|
||||||
@ -61,9 +61,9 @@ impl From<db::NewVmReq> for NewVmReq {
|
|||||||
extra_ports: new_vm_req.extra_ports,
|
extra_ports: new_vm_req.extra_ports,
|
||||||
public_ipv4: new_vm_req.public_ipv4,
|
public_ipv4: new_vm_req.public_ipv4,
|
||||||
public_ipv6: new_vm_req.public_ipv6,
|
public_ipv6: new_vm_req.public_ipv6,
|
||||||
disk_size_gb: new_vm_req.disk_size_gb,
|
disk_size_mib: new_vm_req.disk_size_mib,
|
||||||
vcpus: new_vm_req.vcpus,
|
vcpus: new_vm_req.vcpus,
|
||||||
memory_mb: new_vm_req.memory_mb,
|
memory_mib: new_vm_req.memory_mib,
|
||||||
kernel_url: new_vm_req.kernel_url,
|
kernel_url: new_vm_req.kernel_url,
|
||||||
kernel_sha: new_vm_req.kernel_sha,
|
kernel_sha: new_vm_req.kernel_sha,
|
||||||
dtrfs_url: new_vm_req.dtrfs_url,
|
dtrfs_url: new_vm_req.dtrfs_url,
|
||||||
@ -104,9 +104,9 @@ impl From<UpdateVmReq> for db::UpdateVmReq {
|
|||||||
admin: RecordId::from((ACCOUNT, new_vm_req.admin_pubkey)),
|
admin: RecordId::from((ACCOUNT, new_vm_req.admin_pubkey)),
|
||||||
// vm_node gets modified later, and only if the db::UpdateVmReq is required
|
// vm_node gets modified later, and only if the db::UpdateVmReq is required
|
||||||
vm_node: RecordId::from((VM_NODE, String::new())),
|
vm_node: RecordId::from((VM_NODE, String::new())),
|
||||||
disk_size_gb: new_vm_req.disk_size_gb,
|
disk_size_mib: new_vm_req.disk_size_mib,
|
||||||
vcpus: new_vm_req.vcpus,
|
vcpus: new_vm_req.vcpus,
|
||||||
memory_mb: new_vm_req.memory_mb,
|
memory_mib: new_vm_req.memory_mib,
|
||||||
kernel_url: new_vm_req.kernel_url,
|
kernel_url: new_vm_req.kernel_url,
|
||||||
kernel_sha: new_vm_req.kernel_sha,
|
kernel_sha: new_vm_req.kernel_sha,
|
||||||
dtrfs_url: new_vm_req.dtrfs_url,
|
dtrfs_url: new_vm_req.dtrfs_url,
|
||||||
@ -124,9 +124,9 @@ impl From<db::UpdateVmReq> for UpdateVmReq {
|
|||||||
// daemon does not care about VM hostname
|
// daemon does not care about VM hostname
|
||||||
hostname: String::new(),
|
hostname: String::new(),
|
||||||
admin_pubkey: update_vm_req.admin.key().to_string(),
|
admin_pubkey: update_vm_req.admin.key().to_string(),
|
||||||
disk_size_gb: update_vm_req.disk_size_gb,
|
disk_size_mib: update_vm_req.disk_size_mib,
|
||||||
vcpus: update_vm_req.vcpus,
|
vcpus: update_vm_req.vcpus,
|
||||||
memory_mb: update_vm_req.memory_mb,
|
memory_mib: update_vm_req.memory_mib,
|
||||||
kernel_url: update_vm_req.kernel_url,
|
kernel_url: update_vm_req.kernel_url,
|
||||||
kernel_sha: update_vm_req.kernel_sha,
|
kernel_sha: update_vm_req.kernel_sha,
|
||||||
dtrfs_url: update_vm_req.dtrfs_url,
|
dtrfs_url: update_vm_req.dtrfs_url,
|
||||||
@ -176,9 +176,9 @@ impl From<db::ActiveVmWithNode> for VmContract {
|
|||||||
"{}, {}, {}",
|
"{}, {}, {}",
|
||||||
db_c.vm_node.city, db_c.vm_node.region, db_c.vm_node.country
|
db_c.vm_node.city, db_c.vm_node.region, db_c.vm_node.country
|
||||||
),
|
),
|
||||||
memory_mb: db_c.memory_mb,
|
memory_mb: db_c.memory_mib,
|
||||||
vcpus: db_c.vcpus,
|
vcpus: db_c.vcpus,
|
||||||
disk_size_gb: db_c.disk_size_gb,
|
disk_size_gb: db_c.disk_size_mib,
|
||||||
mapped_ports: db_c
|
mapped_ports: db_c
|
||||||
.mapped_ports
|
.mapped_ports
|
||||||
.iter()
|
.iter()
|
||||||
@ -230,6 +230,11 @@ impl From<db::VmNodeWithReports> for VmNodeListResp {
|
|||||||
ip: vm_node.ip,
|
ip: vm_node.ip,
|
||||||
reports: vm_node.reports.iter().map(|n| n.reason.clone()).collect(),
|
reports: vm_node.reports.iter().map(|n| n.reason.clone()).collect(),
|
||||||
price: vm_node.price,
|
price: vm_node.price,
|
||||||
|
vcpus: vm_node.avail_vcpus,
|
||||||
|
memory_mib: vm_node.avail_mem_mib,
|
||||||
|
disk_mib: vm_node.avail_storage_mib,
|
||||||
|
public_ipv4: vm_node.avail_ipv4 > 0,
|
||||||
|
public_ipv6: vm_node.avail_ipv6 > 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -252,9 +257,9 @@ impl From<db::AppNodeWithReports> for AppNodeListResp {
|
|||||||
impl From<VmNodeResources> for db::VmNodeResources {
|
impl From<VmNodeResources> for db::VmNodeResources {
|
||||||
fn from(res: VmNodeResources) -> Self {
|
fn from(res: VmNodeResources) -> Self {
|
||||||
Self {
|
Self {
|
||||||
avail_mem_mb: res.avail_memory_mb,
|
avail_mem_mib: res.avail_memory_mib,
|
||||||
avail_vcpus: res.avail_vcpus,
|
avail_vcpus: res.avail_vcpus,
|
||||||
avail_storage_gbs: res.avail_storage_gb,
|
avail_storage_mib: res.avail_storage_mib,
|
||||||
avail_ipv4: res.avail_ipv4,
|
avail_ipv4: res.avail_ipv4,
|
||||||
avail_ipv6: res.avail_ipv6,
|
avail_ipv6: res.avail_ipv6,
|
||||||
avail_ports: res.avail_ports,
|
avail_ports: res.avail_ports,
|
||||||
|
@ -51,9 +51,9 @@ impl BrainVmDaemon for VmDaemonServer {
|
|||||||
city: req.city,
|
city: req.city,
|
||||||
ip: req.main_ip,
|
ip: req.main_ip,
|
||||||
price: req.price,
|
price: req.price,
|
||||||
avail_mem_mb: 0,
|
avail_mem_mib: 0,
|
||||||
avail_vcpus: 0,
|
avail_vcpus: 0,
|
||||||
avail_storage_gbs: 0,
|
avail_storage_mib: 0,
|
||||||
avail_ipv4: 0,
|
avail_ipv4: 0,
|
||||||
avail_ipv6: 0,
|
avail_ipv6: 0,
|
||||||
avail_ports: 0,
|
avail_ports: 0,
|
||||||
@ -273,10 +273,17 @@ impl BrainVmCli for VmCliServer {
|
|||||||
|
|
||||||
let db_req: db::UpdateVmReq = req.clone().into();
|
let db_req: db::UpdateVmReq = req.clone().into();
|
||||||
|
|
||||||
if let Some(redirect) = db::check_pubsub_node(&self.db, db_req.vm_node.clone()).await? {
|
println!("The node is {}", db_req.vm_node);
|
||||||
log::info!("redirect: {redirect}");
|
|
||||||
return Err(redirect);
|
// TODO: vm_node is not known at this point. It is populated by `request_hw_update`.
|
||||||
}
|
// As such, the pubsub node cannot be checked at this stage. This code should be moved,
|
||||||
|
// however we are not working on the redirect mechanic at the moment
|
||||||
|
//
|
||||||
|
// if let Some(redirect) = db::check_pubsub_node(&self.db, db_req.vm_node.clone()).await? {
|
||||||
|
// log::info!("redirect: {redirect}");
|
||||||
|
// return Err(redirect);
|
||||||
|
// }
|
||||||
|
|
||||||
let id = db_req.id.key().to_string();
|
let id = db_req.id.key().to_string();
|
||||||
|
|
||||||
let mut hostname_changed = false;
|
let mut hostname_changed = false;
|
||||||
|
@ -6,7 +6,7 @@ DEFINE FUNCTION OVERWRITE fn::vm_price_per_minute(
|
|||||||
LET $vm = (select * from $vm_id)[0];
|
LET $vm = (select * from $vm_id)[0];
|
||||||
LET $ip_price = IF $vm.public_ipv4.len() > 0 { 10 } ELSE { 0 };
|
LET $ip_price = IF $vm.public_ipv4.len() > 0 { 10 } ELSE { 0 };
|
||||||
RETURN (
|
RETURN (
|
||||||
($vm.vcpus * 10) + (($vm.memory_mb + 256) / 200) + ($vm.disk_size_gb / 10) + $ip_price)
|
($vm.vcpus * 10) + (($vm.memory_mib + 256) / 200) + ($vm.disk_size_mib / 1024 / 10) + $ip_price)
|
||||||
* $vm.price_per_unit;
|
* $vm.price_per_unit;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -13,9 +13,9 @@ DEFINE FIELD country ON TABLE vm_node TYPE string;
|
|||||||
DEFINE FIELD region 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 city ON TABLE vm_node TYPE string;
|
||||||
DEFINE FIELD ip 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_mem_mib ON TABLE vm_node TYPE int;
|
||||||
DEFINE FIELD avail_vcpus 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_storage_mib ON TABLE vm_node TYPE int;
|
||||||
DEFINE FIELD avail_ipv4 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_ipv6 ON TABLE vm_node TYPE int;
|
||||||
DEFINE FIELD avail_ports ON TABLE vm_node TYPE int;
|
DEFINE FIELD avail_ports ON TABLE vm_node TYPE int;
|
||||||
@ -29,9 +29,9 @@ DEFINE FIELD hostname ON TABLE new_vm_req TYPE string;
|
|||||||
DEFINE FIELD extra_ports ON TABLE new_vm_req TYPE array<int>;
|
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_ipv4 ON TABLE new_vm_req TYPE bool;
|
||||||
DEFINE FIELD public_ipv6 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 disk_size_mib ON TABLE new_vm_req TYPE int;
|
||||||
DEFINE FIELD vcpus 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 memory_mib ON TABLE new_vm_req TYPE int;
|
||||||
DEFINE FIELD dtrfs_sha ON TABLE new_vm_req TYPE string;
|
DEFINE FIELD dtrfs_sha ON TABLE new_vm_req TYPE string;
|
||||||
DEFINE FIELD dtrfs_url 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_sha ON TABLE new_vm_req TYPE string;
|
||||||
@ -46,9 +46,9 @@ DEFINE FIELD hostname ON TABLE active_vm TYPE string;
|
|||||||
DEFINE FIELD mapped_ports ON TABLE active_vm TYPE array<[int, int]>;
|
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_ipv4 ON TABLE active_vm TYPE string;
|
||||||
DEFINE FIELD public_ipv6 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 disk_size_mib ON TABLE active_vm TYPE int;
|
||||||
DEFINE FIELD vcpus 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 memory_mib ON TABLE active_vm TYPE int;
|
||||||
DEFINE FIELD dtrfs_sha ON TABLE active_vm TYPE string;
|
DEFINE FIELD dtrfs_sha ON TABLE active_vm TYPE string;
|
||||||
DEFINE FIELD kernel_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 created_at ON TABLE active_vm TYPE datetime;
|
||||||
@ -58,8 +58,8 @@ DEFINE FIELD collected_at ON TABLE active_vm TYPE datetime;
|
|||||||
|
|
||||||
DEFINE TABLE update_vm_req TYPE RELATION FROM account TO vm_node SCHEMAFULL;
|
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 vcpus ON TABLE update_vm_req TYPE int;
|
||||||
DEFINE FIELD memory_mb ON TABLE update_vm_req TYPE int;
|
DEFINE FIELD memory_mib ON TABLE update_vm_req TYPE int;
|
||||||
DEFINE FIELD disk_size_gb ON TABLE update_vm_req TYPE int;
|
DEFINE FIELD disk_size_mib ON TABLE update_vm_req TYPE int;
|
||||||
DEFINE FIELD dtrfs_sha ON TABLE update_vm_req TYPE string;
|
DEFINE FIELD dtrfs_sha ON TABLE update_vm_req TYPE string;
|
||||||
DEFINE FIELD dtrfs_url 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_sha ON TABLE update_vm_req TYPE string;
|
||||||
@ -72,9 +72,9 @@ DEFINE FIELD hostname ON TABLE deleted_vm TYPE string;
|
|||||||
DEFINE FIELD mapped_ports ON TABLE deleted_vm TYPE array<[int, int]>;
|
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_ipv4 ON TABLE deleted_vm TYPE string;
|
||||||
DEFINE FIELD public_ipv6 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 disk_size_mib ON TABLE deleted_vm TYPE int;
|
||||||
DEFINE FIELD vcpus 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 memory_mib ON TABLE deleted_vm TYPE int;
|
||||||
DEFINE FIELD dtrfs_sha ON TABLE deleted_vm TYPE string;
|
DEFINE FIELD dtrfs_sha ON TABLE deleted_vm TYPE string;
|
||||||
DEFINE FIELD kernel_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 created_at ON TABLE deleted_vm TYPE datetime;
|
||||||
|
@ -10,9 +10,8 @@ FOR $contract IN (select * from active_vm fetch out) {
|
|||||||
} ELSE {
|
} ELSE {
|
||||||
$amount_due
|
$amount_due
|
||||||
};
|
};
|
||||||
LET $escrow_multiplier = IF $operator.escrow < 5_000_000_000_000 { 1 } ELSE { 5 };
|
|
||||||
IF $node_is_online {
|
IF $node_is_online {
|
||||||
UPDATE $operator.id SET balance += $amount_paid * $escrow_multiplier;
|
UPDATE $operator.id SET balance += $amount_paid;
|
||||||
UPDATE $contract.id SET
|
UPDATE $contract.id SET
|
||||||
locked_nano -= $amount_paid,
|
locked_nano -= $amount_paid,
|
||||||
collected_at = time::now();
|
collected_at = time::now();
|
||||||
@ -23,7 +22,9 @@ FOR $contract IN (select * from active_vm fetch out) {
|
|||||||
$amount_due
|
$amount_due
|
||||||
};
|
};
|
||||||
UPDATE $operator.id SET escrow -= $compensation;
|
UPDATE $operator.id SET escrow -= $compensation;
|
||||||
UPDATE $contract.in SET balance += $compensation;
|
UPDATE $contract.id SET
|
||||||
|
locked_nano += $compensation,
|
||||||
|
collected_at = time::now();
|
||||||
};
|
};
|
||||||
IF $amount_paid >= $contract.locked_nano {
|
IF $amount_paid >= $contract.locked_nano {
|
||||||
fn::delete_vm($contract.id);
|
fn::delete_vm($contract.id);
|
||||||
|
@ -91,8 +91,8 @@ async fn test_vm_daemon_resource_msg() {
|
|||||||
avail_ipv4: 2,
|
avail_ipv4: 2,
|
||||||
avail_ipv6: 88,
|
avail_ipv6: 88,
|
||||||
avail_vcpus: 4,
|
avail_vcpus: 4,
|
||||||
avail_memory_mb: 8192,
|
avail_memory_mib: 8192,
|
||||||
avail_storage_gb: 100,
|
avail_storage_mib: 102400,
|
||||||
max_ports_per_vm: 5,
|
max_ports_per_vm: 5,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -114,9 +114,9 @@ async fn test_vm_daemon_resource_msg() {
|
|||||||
assert!(vm_node_opt.is_some());
|
assert!(vm_node_opt.is_some());
|
||||||
|
|
||||||
let db::VmNode {
|
let db::VmNode {
|
||||||
avail_mem_mb,
|
avail_mem_mib,
|
||||||
avail_vcpus,
|
avail_vcpus,
|
||||||
avail_storage_gbs,
|
avail_storage_mib,
|
||||||
avail_ports,
|
avail_ports,
|
||||||
avail_ipv4,
|
avail_ipv4,
|
||||||
avail_ipv6,
|
avail_ipv6,
|
||||||
@ -124,9 +124,9 @@ async fn test_vm_daemon_resource_msg() {
|
|||||||
..
|
..
|
||||||
} = vm_node_opt.unwrap();
|
} = vm_node_opt.unwrap();
|
||||||
|
|
||||||
assert_eq!(avail_mem_mb, req_data.avail_memory_mb);
|
assert_eq!(avail_mem_mib, req_data.avail_memory_mib);
|
||||||
assert_eq!(avail_vcpus, req_data.avail_vcpus);
|
assert_eq!(avail_vcpus, req_data.avail_vcpus);
|
||||||
assert_eq!(avail_storage_gbs, req_data.avail_storage_gb);
|
assert_eq!(avail_storage_mib, req_data.avail_storage_mib);
|
||||||
assert_eq!(avail_ports, req_data.avail_ports);
|
assert_eq!(avail_ports, req_data.avail_ports);
|
||||||
assert_eq!(avail_ipv4, req_data.avail_ipv4);
|
assert_eq!(avail_ipv4, req_data.avail_ipv4);
|
||||||
assert_eq!(avail_ipv6, req_data.avail_ipv6);
|
assert_eq!(avail_ipv6, req_data.avail_ipv6);
|
||||||
|
@ -180,9 +180,9 @@ vm_nodes:
|
|||||||
region: England
|
region: England
|
||||||
city: London
|
city: London
|
||||||
ip: 173.234.17.2
|
ip: 173.234.17.2
|
||||||
avail_mem_mb: 26000
|
avail_mem_mib: 26000
|
||||||
avail_vcpus: 28
|
avail_vcpus: 28
|
||||||
avail_storage_gbs: 680
|
avail_storage_mib: 680
|
||||||
avail_ipv4: 2
|
avail_ipv4: 2
|
||||||
avail_ipv6: 65516
|
avail_ipv6: 65516
|
||||||
avail_ports: 19999
|
avail_ports: 19999
|
||||||
@ -196,9 +196,9 @@ vm_nodes:
|
|||||||
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_mib: 123000
|
||||||
avail_vcpus: 46
|
avail_vcpus: 46
|
||||||
avail_storage_gbs: 440
|
avail_storage_mib: 440
|
||||||
avail_ipv4: 2
|
avail_ipv4: 2
|
||||||
avail_ipv6: 0
|
avail_ipv6: 0
|
||||||
avail_ports: 20000
|
avail_ports: 20000
|
||||||
@ -212,9 +212,9 @@ vm_nodes:
|
|||||||
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_mib: 30000
|
||||||
avail_vcpus: 31
|
avail_vcpus: 31
|
||||||
avail_storage_gbs: 700
|
avail_storage_mib: 700
|
||||||
avail_ipv4: 0
|
avail_ipv4: 0
|
||||||
avail_ipv6: 0
|
avail_ipv6: 0
|
||||||
avail_ports: 20000
|
avail_ports: 20000
|
||||||
@ -228,9 +228,9 @@ vm_nodes:
|
|||||||
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_mib: 109000
|
||||||
avail_vcpus: 45
|
avail_vcpus: 45
|
||||||
avail_storage_gbs: 400
|
avail_storage_mib: 400
|
||||||
avail_ipv4: 25
|
avail_ipv4: 25
|
||||||
avail_ipv6: 0
|
avail_ipv6: 0
|
||||||
avail_ports: 20000
|
avail_ports: 20000
|
||||||
@ -244,9 +244,9 @@ vm_nodes:
|
|||||||
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_mib: 120000
|
||||||
avail_vcpus: 41
|
avail_vcpus: 41
|
||||||
avail_storage_gbs: 390
|
avail_storage_mib: 390
|
||||||
avail_ipv4: 23
|
avail_ipv4: 23
|
||||||
avail_ipv6: 0
|
avail_ipv6: 0
|
||||||
avail_ports: 19999
|
avail_ports: 19999
|
||||||
@ -260,9 +260,9 @@ vm_nodes:
|
|||||||
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_mib: 125000
|
||||||
avail_vcpus: 46
|
avail_vcpus: 46
|
||||||
avail_storage_gbs: 400
|
avail_storage_mib: 400
|
||||||
avail_ipv4: 26
|
avail_ipv4: 26
|
||||||
avail_ipv6: 0
|
avail_ipv6: 0
|
||||||
avail_ports: 20000
|
avail_ports: 20000
|
||||||
@ -277,9 +277,9 @@ vm_nodes:
|
|||||||
region: England
|
region: England
|
||||||
city: London
|
city: London
|
||||||
ip: 193.234.17.2
|
ip: 193.234.17.2
|
||||||
avail_mem_mb: 28000
|
avail_mem_mib: 28000
|
||||||
avail_vcpus: 24
|
avail_vcpus: 24
|
||||||
avail_storage_gbs: 1680
|
avail_storage_mib: 1680
|
||||||
avail_ipv4: 1
|
avail_ipv4: 1
|
||||||
avail_ipv6: 0
|
avail_ipv6: 0
|
||||||
avail_ports: 19999
|
avail_ports: 19999
|
||||||
@ -293,9 +293,9 @@ vm_nodes:
|
|||||||
region: England
|
region: England
|
||||||
city: London
|
city: London
|
||||||
ip: 193.234.17.2
|
ip: 193.234.17.2
|
||||||
avail_mem_mb: 28000
|
avail_mem_mib: 28000
|
||||||
avail_vcpus: 24
|
avail_vcpus: 24
|
||||||
avail_storage_gbs: 1680
|
avail_storage_mib: 1680
|
||||||
avail_ipv4: 1
|
avail_ipv4: 1
|
||||||
avail_ipv6: 0
|
avail_ipv6: 0
|
||||||
avail_ports: 19999
|
avail_ports: 19999
|
||||||
@ -312,9 +312,9 @@ vm_contracts:
|
|||||||
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_mib: 10240
|
||||||
vcpus: 2
|
vcpus: 2
|
||||||
memory_mb: 3000
|
memory_mib: 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
|
||||||
@ -329,9 +329,9 @@ vm_contracts:
|
|||||||
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_mib: 10240
|
||||||
vcpus: 2
|
vcpus: 2
|
||||||
memory_mb: 3000
|
memory_mib: 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
|
||||||
@ -347,9 +347,9 @@ vm_contracts:
|
|||||||
- 38288
|
- 38288
|
||||||
public_ipv4: ""
|
public_ipv4: ""
|
||||||
public_ipv6: ""
|
public_ipv6: ""
|
||||||
disk_size_gb: 10
|
disk_size_mib: 10240
|
||||||
vcpus: 1
|
vcpus: 1
|
||||||
memory_mb: 1000
|
memory_mib: 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
|
||||||
@ -364,9 +364,9 @@ vm_contracts:
|
|||||||
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_mib: 10240
|
||||||
vcpus: 2
|
vcpus: 2
|
||||||
memory_mb: 3000
|
memory_mib: 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
|
||||||
@ -381,9 +381,9 @@ vm_contracts:
|
|||||||
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_mib: 10240
|
||||||
vcpus: 2
|
vcpus: 2
|
||||||
memory_mb: 3000
|
memory_mib: 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
|
||||||
@ -398,9 +398,9 @@ vm_contracts:
|
|||||||
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_mib: 30
|
||||||
vcpus: 1
|
vcpus: 1
|
||||||
memory_mb: 1000
|
memory_mib: 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
|
||||||
@ -415,9 +415,9 @@ vm_contracts:
|
|||||||
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_mib: 10240
|
||||||
vcpus: 4
|
vcpus: 4
|
||||||
memory_mb: 4000
|
memory_mib: 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
|
||||||
@ -433,9 +433,9 @@ vm_contracts:
|
|||||||
- 46393
|
- 46393
|
||||||
public_ipv4: ""
|
public_ipv4: ""
|
||||||
public_ipv6: ""
|
public_ipv6: ""
|
||||||
disk_size_gb: 10
|
disk_size_mib: 10240
|
||||||
vcpus: 1
|
vcpus: 1
|
||||||
memory_mb: 1000
|
memory_mib: 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
|
||||||
@ -452,9 +452,9 @@ vm_contracts:
|
|||||||
- 46393
|
- 46393
|
||||||
public_ipv4: ""
|
public_ipv4: ""
|
||||||
public_ipv6: ""
|
public_ipv6: ""
|
||||||
disk_size_gb: 10
|
disk_size_mib: 10240
|
||||||
vcpus: 1
|
vcpus: 1
|
||||||
memory_mb: 1000
|
memory_mib: 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
|
||||||
@ -470,9 +470,9 @@ vm_contracts:
|
|||||||
- 46393
|
- 46393
|
||||||
public_ipv4: ""
|
public_ipv4: ""
|
||||||
public_ipv6: ""
|
public_ipv6: ""
|
||||||
disk_size_gb: 10
|
disk_size_mib: 10240
|
||||||
vcpus: 1
|
vcpus: 1
|
||||||
memory_mb: 1000
|
memory_mib: 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
|
||||||
@ -480,6 +480,7 @@ vm_contracts:
|
|||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user