change uuid to vm_id and app_id
This commit is contained in:
parent
dc8d33d487
commit
4d0a219f07
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1011,7 +1011,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "detee-shared"
|
||||
version = "0.1.0"
|
||||
source = "git+ssh://git@gitea.detee.cloud/testnet/proto?branch=main#4753a17fa29393b3f99b6dfcdcec48d935e6ebd9"
|
||||
source = "git+ssh://git@gitea.detee.cloud/testnet/proto?branch=remove_uuid#6765cafd68664dcfa269dd776039532eb4253e8a"
|
||||
dependencies = [
|
||||
"bincode 2.0.1",
|
||||
"prost",
|
||||
|
@ -15,7 +15,7 @@ serde_yaml = "0.9.34"
|
||||
surrealdb = "2.2.2"
|
||||
tokio = { version = "1.44.2", features = ["macros", "rt-multi-thread"] }
|
||||
tonic = { version = "0.12", features = ["tls"] }
|
||||
detee-shared = { git = "ssh://git@gitea.detee.cloud/testnet/proto", branch = "main" }
|
||||
detee-shared = { git = "ssh://git@gitea.detee.cloud/testnet/proto", branch = "remove_uuid" }
|
||||
ed25519-dalek = "2.1.1"
|
||||
bs58 = "0.5.1"
|
||||
tokio-stream = "0.1.17"
|
||||
|
338
saved_data.yaml
338
saved_data.yaml
@ -1,338 +0,0 @@
|
||||
accounts:
|
||||
fY3NNjvFTeR1FBh5nXV3ujX7zZqrm3eBUWGEiG75TK1:
|
||||
balance: 1000000000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
FBMWVqME3t1i4R6zWyDQGUuiTeruZ1TxLhTmhaEcFypZ:
|
||||
balance: 181560160000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
CLYyE6id5876DW69LHDynuH6TjJPvWRBTQC5XDZ6jfT1:
|
||||
balance: 25000000000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
db5ZB6uDbF1mUUgeggBZ9XKbi3mUfX6WHkBpbwUHJpB:
|
||||
balance: 25000000000
|
||||
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: []
|
||||
HQyGWpiteHbxjszngZvmiX7ZFZAmF6nFjEraBa1M6bbM:
|
||||
balance: 979410300000
|
||||
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: []
|
||||
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
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
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:
|
||||
x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK:
|
||||
escrow: 5489633280000
|
||||
email: gheo@detee.ltd
|
||||
banned_users: []
|
||||
vm_nodes:
|
||||
- 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f
|
||||
- 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9
|
||||
app_nodes: []
|
||||
BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS:
|
||||
escrow: 5091906400000
|
||||
email: first_on_detee@proton.me
|
||||
banned_users: []
|
||||
vm_nodes:
|
||||
- DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
||||
- 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4
|
||||
- Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
||||
app_nodes: []
|
||||
7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB:
|
||||
escrow: 5500000000000
|
||||
email: nmohammed@detee.ltd
|
||||
banned_users: []
|
||||
vm_nodes: []
|
||||
app_nodes:
|
||||
- BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg
|
||||
vm_nodes:
|
||||
- public_key: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
||||
operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS
|
||||
country: FR
|
||||
region: Île-de-France
|
||||
city: Paris
|
||||
ip: 156.146.63.215
|
||||
avail_mem_mb: 117000
|
||||
avail_vcpus: 40
|
||||
avail_storage_gbs: 410
|
||||
avail_ipv4: 2
|
||||
avail_ipv6: 0
|
||||
avail_ports: 20000
|
||||
max_ports_per_vm: 5
|
||||
price: 20000
|
||||
reports: {}
|
||||
offline_minutes: 0
|
||||
- public_key: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4
|
||||
operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS
|
||||
country: US
|
||||
region: California
|
||||
city: San Jose
|
||||
ip: 149.36.48.99
|
||||
avail_mem_mb: 121000
|
||||
avail_vcpus: 42
|
||||
avail_storage_gbs: 400
|
||||
avail_ipv4: 23
|
||||
avail_ipv6: 0
|
||||
avail_ports: 20000
|
||||
max_ports_per_vm: 5
|
||||
price: 20000
|
||||
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: 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:
|
||||
- uuid: dbe09a11-0bcf-472e-9f27-9a4939ea2226
|
||||
hostname: detee-fr
|
||||
admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL
|
||||
node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
||||
exposed_ports: []
|
||||
public_ipv4: 156.146.63.217
|
||||
public_ipv6: ''
|
||||
disk_size_gb: 10
|
||||
vcpus: 4
|
||||
memory_mb: 4000
|
||||
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||
created_at: 2025-05-16T11:07:53.903282009Z
|
||||
updated_at: 2025-05-16T11:07:53.903282959Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 24513120000
|
||||
collected_at: 2025-06-26T11:32:59.521517733Z
|
||||
- uuid: 338312387c6e4e5ebec015277d27c21d
|
||||
hostname: sofenty-staging
|
||||
admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL
|
||||
node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
||||
exposed_ports: []
|
||||
public_ipv4: 149.22.95.3
|
||||
public_ipv6: ''
|
||||
disk_size_gb: 10
|
||||
vcpus: 2
|
||||
memory_mb: 4000
|
||||
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||
created_at: 2025-06-12T23:20:23.797184848Z
|
||||
updated_at: 2025-06-12T23:20:23.797185855Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 17703920000
|
||||
collected_at: 2025-06-26T11:32:59.521538185Z
|
||||
- uuid: 46656273dc964fdeaec2fd1efd49fc12
|
||||
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
|
||||
node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4
|
||||
exposed_ports: []
|
||||
public_ipv4: 149.36.48.100
|
||||
public_ipv6: ''
|
||||
disk_size_gb: 10
|
||||
vcpus: 4
|
||||
memory_mb: 4000
|
||||
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||
created_at: 2025-06-18T10:51:17.699206021Z
|
||||
updated_at: 2025-06-18T10:51:17.699206835Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 26552160000
|
||||
collected_at: 2025-06-26T11:32:59.521554160Z
|
||||
- uuid: b11ad0fcfc194f5490d64f5a72574dc8
|
||||
hostname: brain-backups
|
||||
admin_pubkey: 45Pyv9hRfub43NyRrYv95MhZs1Wrm8sj3RhBvA3F1Bvr
|
||||
node_pubkey: 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f
|
||||
exposed_ports:
|
||||
- 38175
|
||||
public_ipv4: ''
|
||||
public_ipv6: ''
|
||||
disk_size_gb: 30
|
||||
vcpus: 1
|
||||
memory_mb: 1000
|
||||
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||
created_at: 2025-06-18T13:59:30.713579315Z
|
||||
updated_at: 2025-06-18T13:59:30.713580515Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 11638260000
|
||||
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:
|
||||
- node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg
|
||||
operator_wallet: 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB
|
||||
country: DE
|
||||
region: Hesse
|
||||
city: Frankfurt am Main
|
||||
ip: 212.95.45.139
|
||||
avail_mem_mb: 16000
|
||||
avail_vcpus: 16
|
||||
avail_storage_mb: 200000
|
||||
avail_no_of_port: 20000
|
||||
max_ports_per_app: 9
|
||||
price: 20000
|
||||
reports: {}
|
||||
offline_minutes: 0
|
||||
app_contracts: []
|
@ -324,10 +324,10 @@ impl From<ActiveApp> for DeletedApp {
|
||||
}
|
||||
|
||||
impl ActiveApp {
|
||||
pub async fn get_by_uuid(db: &Surreal<Client>, uuid: &str) -> Result<Option<Self>, Error> {
|
||||
pub async fn get_by_app_id(db: &Surreal<Client>, app_id: &str) -> Result<Option<Self>, Error> {
|
||||
let contract: Option<Self> = db
|
||||
.query("select * from $active_app_id;".to_string())
|
||||
.bind(("active_app_id", RecordId::from((ACTIVE_APP, uuid))))
|
||||
.bind(("active_app_id", RecordId::from((ACTIVE_APP, app_id))))
|
||||
.await?
|
||||
.take(0)?;
|
||||
Ok(contract)
|
||||
@ -337,7 +337,7 @@ impl ActiveApp {
|
||||
db: &Surreal<Client>,
|
||||
new_app_res: app_proto::NewAppRes,
|
||||
) -> Result<(), Error> {
|
||||
let new_app_req = match NewAppReq::get(db, &new_app_res.uuid).await? {
|
||||
let new_app_req = match NewAppReq::get(db, &new_app_res.app_id).await? {
|
||||
Some(r) => r,
|
||||
None => return Ok(()),
|
||||
};
|
||||
@ -349,7 +349,7 @@ impl ActiveApp {
|
||||
.collect::<Vec<(u32, u32)>>();
|
||||
|
||||
let active_app = Self {
|
||||
id: RecordId::from((ACTIVE_APP, &new_app_res.uuid)),
|
||||
id: RecordId::from((ACTIVE_APP, &new_app_res.app_id)),
|
||||
admin: new_app_req.admin,
|
||||
app_node: new_app_req.app_node,
|
||||
app_name: new_app_req.app_name,
|
||||
@ -371,7 +371,7 @@ impl ActiveApp {
|
||||
let locked_nano = active_app.locked_nano;
|
||||
|
||||
let _: Vec<ActiveApp> = db.insert(()).relation(active_app).await?;
|
||||
NewAppReq::delete(db, &new_app_res.uuid).await?;
|
||||
NewAppReq::delete(db, &new_app_res.app_id).await?;
|
||||
db.query(format!("UPDATE {ACCOUNT}:{admin_account} SET tmp_locked -= {locked_nano};"))
|
||||
.await?;
|
||||
|
||||
@ -440,7 +440,7 @@ impl WrappedAppResp {
|
||||
if let Some(error_on_newapp_req) = error.take::<Option<db::ErrorFromTable>>(0)? {
|
||||
if !error_on_newapp_req.error.is_empty() {
|
||||
let app_daemon_err = NewAppRes {
|
||||
uuid: app_id.to_string(),
|
||||
app_id: app_id.to_string(),
|
||||
error: error_on_newapp_req.error,
|
||||
..Default::default()
|
||||
};
|
||||
@ -462,7 +462,7 @@ impl WrappedAppResp {
|
||||
Ok(err_notif) =>{
|
||||
if err_notif.action == surrealdb::Action::Update && !err_notif.data.error.is_empty(){
|
||||
let app_daemon_err = NewAppRes {
|
||||
uuid: app_id.to_string(),
|
||||
app_id: app_id.to_string(),
|
||||
error: err_notif.data.error,
|
||||
..Default::default()
|
||||
};
|
||||
@ -537,10 +537,10 @@ impl From<ActiveAppWithNode> for ActiveApp {
|
||||
}
|
||||
|
||||
impl ActiveAppWithNode {
|
||||
pub async fn get_by_uuid(db: &Surreal<Client>, uuid: &str) -> Result<Option<Self>, Error> {
|
||||
pub async fn get_by_app_id(db: &Surreal<Client>, app_id: &str) -> Result<Option<Self>, Error> {
|
||||
let contract: Option<Self> = db
|
||||
.query(format!("select * from {ACTIVE_APP} where id = $uuid_input fetch out;"))
|
||||
.bind(("uuid_input", RecordId::from((ACTIVE_APP, uuid))))
|
||||
.query(format!("select * from {ACTIVE_APP} where id = $app_id_input fetch out;"))
|
||||
.bind(("app_id_input", RecordId::from((ACTIVE_APP, app_id))))
|
||||
.await?
|
||||
.take(0)?;
|
||||
|
||||
|
@ -335,13 +335,13 @@ impl Operator {
|
||||
pub async fn kick_contract(
|
||||
db: &Surreal<Client>,
|
||||
operator_wallet: &str,
|
||||
contract_uuid: &str,
|
||||
contract_id: &str,
|
||||
reason: &str,
|
||||
) -> Result<u64, Error> {
|
||||
let (contract_id, operator_id, admin_id, app_or_vm) =
|
||||
if let Some(active_vm) = ActiveVmWithNode::get_by_uuid(db, contract_uuid).await? {
|
||||
if let Some(active_vm) = ActiveVmWithNode::get_by_id(db, contract_id).await? {
|
||||
(active_vm.id, active_vm.vm_node.operator, active_vm.admin, "vm")
|
||||
} else if let Some(active_app) = ActiveAppWithNode::get_by_uuid(db, contract_uuid).await? {
|
||||
} else if let Some(active_app) = ActiveAppWithNode::get_by_app_id(db, contract_id).await? {
|
||||
(active_app.id, active_app.app_node.operator, active_app.admin, "app")
|
||||
} else {
|
||||
return Err(Error::ContractNotFound);
|
||||
|
18
src/db/vm.rs
18
src/db/vm.rs
@ -446,10 +446,10 @@ impl ActiveVm {
|
||||
self.total_units() * self.price_per_unit
|
||||
}
|
||||
|
||||
pub async fn get_by_uuid(db: &Surreal<Client>, uuid: &str) -> Result<Option<Self>, Error> {
|
||||
pub async fn get_by_id(db: &Surreal<Client>, vm_id: &str) -> Result<Option<Self>, Error> {
|
||||
let contract: Option<Self> = db
|
||||
.query("select * from $active_vm_id;".to_string())
|
||||
.bind(("active_vm_id", RecordId::from((ACTIVE_VM, uuid))))
|
||||
.bind(("active_vm_id", RecordId::from((ACTIVE_VM, vm_id))))
|
||||
.await?
|
||||
.take(0)?;
|
||||
Ok(contract)
|
||||
@ -523,7 +523,7 @@ impl ActiveVm {
|
||||
None => return Ok(()),
|
||||
};
|
||||
|
||||
let mut active_vm = match Self::get_by_uuid(db, id).await? {
|
||||
let mut active_vm = match Self::get_by_id(db, id).await? {
|
||||
Some(vm) => vm,
|
||||
None => return Ok(()),
|
||||
};
|
||||
@ -751,7 +751,7 @@ impl UpdateVmReq {
|
||||
/// returns Some(true) if hw update is needed and got submitted
|
||||
/// returns error if something happened with the DB
|
||||
pub async fn request_hw_update(mut self, db: &Surreal<Client>) -> Result<Option<bool>, Error> {
|
||||
let contract = ActiveVm::get_by_uuid(db, &self.id.key().to_string()).await?;
|
||||
let contract = ActiveVm::get_by_id(db, &self.id.key().to_string()).await?;
|
||||
|
||||
if contract.is_none() {
|
||||
return Ok(None);
|
||||
@ -842,9 +842,9 @@ impl From<ActiveVm> for DeletedVm {
|
||||
}
|
||||
|
||||
impl DeletedVm {
|
||||
pub async fn get_by_uuid(db: &Surreal<Client>, uuid: &str) -> Result<Option<Self>, Error> {
|
||||
pub async fn get_by_id(db: &Surreal<Client>, vm_id: &str) -> Result<Option<Self>, Error> {
|
||||
let contract: Option<Self> =
|
||||
db.query(format!("select * from {DELETED_VM}:{uuid};")).await?.take(0)?;
|
||||
db.query(format!("select * from {DELETED_VM}:{vm_id};")).await?.take(0)?;
|
||||
Ok(contract)
|
||||
}
|
||||
|
||||
@ -949,10 +949,10 @@ impl From<ActiveVmWithNode> for ActiveVm {
|
||||
}
|
||||
|
||||
impl ActiveVmWithNode {
|
||||
pub async fn get_by_uuid(db: &Surreal<Client>, uuid: &str) -> Result<Option<Self>, Error> {
|
||||
pub async fn get_by_id(db: &Surreal<Client>, vm_id: &str) -> Result<Option<Self>, Error> {
|
||||
let contract: Option<Self> = db
|
||||
.query(format!("select * from {ACTIVE_VM} where id = $uuid_input fetch out;"))
|
||||
.bind(("uuid_input", RecordId::from((ACTIVE_VM, uuid))))
|
||||
.query(format!("select * from {ACTIVE_VM} where id = $vm_id fetch out;"))
|
||||
.bind(("vm_id", RecordId::from((ACTIVE_VM, vm_id))))
|
||||
.await?
|
||||
.take(0)?;
|
||||
Ok(contract)
|
||||
|
@ -146,7 +146,7 @@ impl BrainAppDaemon for AppDaemonServer {
|
||||
if !new_app_resp.error.is_empty() {
|
||||
db::NewAppReq::submit_error(
|
||||
&self.db,
|
||||
&new_app_resp.uuid,
|
||||
&new_app_resp.app_id,
|
||||
new_app_resp.error,
|
||||
)
|
||||
.await?;
|
||||
@ -242,7 +242,7 @@ impl BrainAppCli for AppCliServer {
|
||||
|
||||
async fn delete_app(&self, req: Request<DelAppReq>) -> Result<Response<Empty>, Status> {
|
||||
let req = check_sig_from_req(req)?;
|
||||
let app_node = db::ActiveApp::get_by_uuid(&self.db, &req.uuid)
|
||||
let app_node = db::ActiveApp::get_by_app_id(&self.db, &req.app_id)
|
||||
.await?
|
||||
.ok_or(Status::permission_denied("Unauthorized"))?
|
||||
.app_node;
|
||||
@ -252,11 +252,11 @@ impl BrainAppCli for AppCliServer {
|
||||
return Err(redirect);
|
||||
}
|
||||
info!("delete_app process starting for {:?}", req);
|
||||
match ActiveApp::delete(&self.db, &req.admin_pubkey, &req.uuid).await {
|
||||
match ActiveApp::delete(&self.db, &req.admin_pubkey, &req.app_id).await {
|
||||
Ok(()) => Ok(Response::new(Empty {})),
|
||||
Err(db::Error::AccessDenied) => Err(Status::permission_denied("Unauthorized")),
|
||||
Err(e) => {
|
||||
log::error!("Error deleting app contract {}: {e}", &req.uuid);
|
||||
log::error!("Error deleting app contract {}: {e}", &req.app_id);
|
||||
Err(Status::unknown(
|
||||
"Unknown error. Please try again or contact the DeTEE devs team.",
|
||||
))
|
||||
@ -273,9 +273,9 @@ impl BrainAppCli for AppCliServer {
|
||||
|
||||
let mut app_contracts = Vec::new();
|
||||
|
||||
if !req.uuid.is_empty() {
|
||||
if !req.app_id.is_empty() {
|
||||
if let Some(app_contract) =
|
||||
db::ActiveAppWithNode::get_by_uuid(&self.db, &req.uuid).await?
|
||||
db::ActiveAppWithNode::get_by_app_id(&self.db, &req.app_id).await?
|
||||
{
|
||||
if app_contract.admin.key().to_string() == req.admin_pubkey
|
||||
|| app_contract.app_node.operator.key().to_string() == req.admin_pubkey
|
||||
|
@ -7,7 +7,7 @@ use detee_shared::common_proto::{Empty, Pubkey};
|
||||
use detee_shared::general_proto::brain_general_cli_server::BrainGeneralCli;
|
||||
use detee_shared::general_proto::{
|
||||
Account, AccountBalance, AirdropReq, BanUserReq, InspectOperatorResp, KickReq, KickResp,
|
||||
ListOperatorsResp, RegOperatorReq, ReportNodeReq, SlashReq,
|
||||
ListOperatorsResp, RecommendedVersions, RegOperatorReq, ReportNodeReq, SlashReq,
|
||||
};
|
||||
use detee_shared::vm_proto::VmContract;
|
||||
use surrealdb::engine::remote::ws::Client;
|
||||
@ -47,7 +47,7 @@ impl BrainGeneralCli for GeneralCliServer {
|
||||
async fn report_node(&self, req: Request<ReportNodeReq>) -> Result<Response<Empty>, Status> {
|
||||
let req = check_sig_from_req(req)?;
|
||||
let (account, node, contract_id) =
|
||||
match db::ActiveVmWithNode::get_by_uuid(&self.db, &req.contract).await? {
|
||||
match db::ActiveVmWithNode::get_by_id(&self.db, &req.contract).await? {
|
||||
Some(vm_contract)
|
||||
if vm_contract.admin.key().to_string() == req.admin_pubkey
|
||||
&& vm_contract.vm_node.id.key().to_string() == req.node_pubkey =>
|
||||
@ -55,7 +55,8 @@ impl BrainGeneralCli for GeneralCliServer {
|
||||
(vm_contract.admin, vm_contract.vm_node.id, vm_contract.id.to_string())
|
||||
}
|
||||
_ => {
|
||||
match db::app::ActiveAppWithNode::get_by_uuid(&self.db, &req.contract).await? {
|
||||
match db::app::ActiveAppWithNode::get_by_app_id(&self.db, &req.contract).await?
|
||||
{
|
||||
Some(app_contract)
|
||||
if app_contract.admin.key().to_string() == req.admin_pubkey
|
||||
&& app_contract.app_node.id.key().to_string()
|
||||
@ -129,9 +130,8 @@ impl BrainGeneralCli for GeneralCliServer {
|
||||
|
||||
async fn kick_contract(&self, req: Request<KickReq>) -> Result<Response<KickResp>, Status> {
|
||||
let req = check_sig_from_req(req)?;
|
||||
log::info!("Kicking contract: {}, by: {}", req.contract_uuid, req.operator_wallet);
|
||||
match db::kick_contract(&self.db, &req.operator_wallet, &req.contract_uuid, &req.reason)
|
||||
.await
|
||||
log::info!("Kicking contract: {}, by: {}", req.contract_id, req.operator_wallet);
|
||||
match db::kick_contract(&self.db, &req.operator_wallet, &req.contract_id, &req.reason).await
|
||||
{
|
||||
Ok(nano_credits) => Ok(Response::new(KickResp { nano_credits })),
|
||||
Err(e)
|
||||
@ -228,4 +228,16 @@ impl BrainGeneralCli for GeneralCliServer {
|
||||
let output_stream = ReceiverStream::new(rx);
|
||||
Ok(Response::new(Box::pin(output_stream)))
|
||||
}
|
||||
|
||||
async fn get_recommended_versions(
|
||||
&self,
|
||||
_: Request<Empty>,
|
||||
) -> Result<Response<RecommendedVersions>, Status> {
|
||||
Ok(Response::new(RecommendedVersions {
|
||||
cli: "0.1.1".to_string(),
|
||||
brain: env!("CARGO_PKG_VERSION").to_string(),
|
||||
snp_daemon: "0.1.0".to_string(),
|
||||
sgx_daemon: "0.1.0".to_string(),
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ impl From<NewVmReq> for db::NewVmReq {
|
||||
impl From<db::NewVmReq> for NewVmReq {
|
||||
fn from(new_vm_req: db::NewVmReq) -> Self {
|
||||
Self {
|
||||
uuid: new_vm_req.id.key().to_string(),
|
||||
vm_id: new_vm_req.id.key().to_string(),
|
||||
hostname: new_vm_req.hostname,
|
||||
admin_pubkey: new_vm_req.admin.key().to_string(),
|
||||
node_pubkey: new_vm_req.vm_node.key().to_string(),
|
||||
@ -77,10 +77,10 @@ impl From<db::NewVmReq> for NewVmReq {
|
||||
impl From<db::WrappedMeasurement> for NewVmResp {
|
||||
fn from(resp: db::WrappedMeasurement) -> Self {
|
||||
match resp {
|
||||
db::WrappedMeasurement::Args(uuid, args) => {
|
||||
Self { uuid, error: String::new(), args: Some(args) }
|
||||
db::WrappedMeasurement::Args(vm_id, args) => {
|
||||
Self { vm_id, error: String::new(), args: Some(args) }
|
||||
}
|
||||
db::WrappedMeasurement::Error(uuid, error) => NewVmResp { uuid, error, args: None },
|
||||
db::WrappedMeasurement::Error(vm_id, error) => NewVmResp { vm_id, error, args: None },
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -89,10 +89,10 @@ impl From<db::WrappedMeasurement> for NewVmResp {
|
||||
impl From<db::WrappedMeasurement> for UpdateVmResp {
|
||||
fn from(resp: db::WrappedMeasurement) -> Self {
|
||||
match resp {
|
||||
db::WrappedMeasurement::Args(uuid, args) => {
|
||||
Self { uuid, error: String::new(), args: Some(args) }
|
||||
db::WrappedMeasurement::Args(vm_id, args) => {
|
||||
Self { vm_id, error: String::new(), args: Some(args) }
|
||||
}
|
||||
db::WrappedMeasurement::Error(uuid, error) => Self { uuid, error, args: None },
|
||||
db::WrappedMeasurement::Error(vm_id, error) => Self { vm_id, error, args: None },
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -100,7 +100,7 @@ impl From<db::WrappedMeasurement> for UpdateVmResp {
|
||||
impl From<UpdateVmReq> for db::UpdateVmReq {
|
||||
fn from(new_vm_req: UpdateVmReq) -> Self {
|
||||
Self {
|
||||
id: RecordId::from((NEW_VM_REQ, new_vm_req.uuid)),
|
||||
id: RecordId::from((NEW_VM_REQ, new_vm_req.vm_id)),
|
||||
admin: RecordId::from((ACCOUNT, new_vm_req.admin_pubkey)),
|
||||
// vm_node gets modified later, and only if the db::UpdateVmReq is required
|
||||
vm_node: RecordId::from((VM_NODE, String::new())),
|
||||
@ -120,7 +120,7 @@ impl From<UpdateVmReq> for db::UpdateVmReq {
|
||||
impl From<db::UpdateVmReq> for UpdateVmReq {
|
||||
fn from(update_vm_req: db::UpdateVmReq) -> Self {
|
||||
Self {
|
||||
uuid: update_vm_req.id.key().to_string(),
|
||||
vm_id: update_vm_req.id.key().to_string(),
|
||||
// daemon does not care about VM hostname
|
||||
hostname: String::new(),
|
||||
admin_pubkey: update_vm_req.admin.key().to_string(),
|
||||
@ -138,7 +138,7 @@ impl From<db::UpdateVmReq> for UpdateVmReq {
|
||||
impl From<db::DeletedVm> for DeleteVmReq {
|
||||
fn from(delete_vm_req: db::DeletedVm) -> Self {
|
||||
Self {
|
||||
uuid: delete_vm_req.id.key().to_string(),
|
||||
vm_id: delete_vm_req.id.key().to_string(),
|
||||
admin_pubkey: delete_vm_req.admin.key().to_string(),
|
||||
}
|
||||
}
|
||||
@ -167,7 +167,7 @@ impl From<db::ActiveVmWithNode> for VmContract {
|
||||
exposed_ports.push(port.0);
|
||||
}
|
||||
VmContract {
|
||||
uuid: db_c.id.key().to_string(),
|
||||
vm_id: db_c.id.key().to_string(),
|
||||
hostname: db_c.hostname.clone(),
|
||||
admin_pubkey: db_c.admin.key().to_string(),
|
||||
node_pubkey: db_c.vm_node.id.key().to_string(),
|
||||
@ -292,7 +292,7 @@ impl From<db::ActiveAppWithNode> for AppContract {
|
||||
Some(hex::decode(value.mr_enclave.clone()).unwrap_or_default());
|
||||
|
||||
AppContract {
|
||||
uuid: value.id.key().to_string(),
|
||||
app_id: value.id.key().to_string(),
|
||||
package_url: value.package_url,
|
||||
admin_pubkey: value.admin.key().to_string(),
|
||||
node_pubkey: value.app_node.id.key().to_string(),
|
||||
@ -365,7 +365,7 @@ impl From<db::NewAppReq> for NewAppReq {
|
||||
package_url: value.package_url,
|
||||
node_pubkey: value.app_node.key().to_string(),
|
||||
resource: Some(resource),
|
||||
uuid: value.id.key().to_string(),
|
||||
app_id: value.id.key().to_string(),
|
||||
admin_pubkey: value.admin.key().to_string(),
|
||||
price_per_unit: value.price_per_unit,
|
||||
locked_nano: value.locked_nano,
|
||||
@ -378,7 +378,7 @@ impl From<db::NewAppReq> for NewAppReq {
|
||||
|
||||
impl From<db::DeletedApp> for DelAppReq {
|
||||
fn from(value: db::DeletedApp) -> Self {
|
||||
Self { uuid: value.id.key().to_string(), admin_pubkey: value.admin.key().to_string() }
|
||||
Self { app_id: value.id.key().to_string(), admin_pubkey: value.admin.key().to_string() }
|
||||
}
|
||||
}
|
||||
|
||||
@ -415,7 +415,7 @@ impl From<db::ActiveApp> for NewAppRes {
|
||||
.map(|(h, g)| MappedPort { host_port: *h, guest_port: *g })
|
||||
.collect();
|
||||
Self {
|
||||
uuid: val.id.key().to_string(),
|
||||
app_id: val.id.key().to_string(),
|
||||
ip_address: val.host_ipv4,
|
||||
mapped_ports,
|
||||
error: String::new(),
|
||||
|
@ -155,7 +155,7 @@ impl BrainVmDaemon for VmDaemonServer {
|
||||
if !new_vm_resp.error.is_empty() {
|
||||
db::NewVmReq::submit_error(
|
||||
&self.db,
|
||||
&new_vm_resp.uuid,
|
||||
&new_vm_resp.vm_id,
|
||||
new_vm_resp.error,
|
||||
)
|
||||
.await?;
|
||||
@ -163,12 +163,12 @@ impl BrainVmDaemon for VmDaemonServer {
|
||||
db::upsert_record(
|
||||
&self.db,
|
||||
"measurement_args",
|
||||
&new_vm_resp.uuid,
|
||||
&new_vm_resp.vm_id,
|
||||
new_vm_resp.args.clone(),
|
||||
)
|
||||
.await?;
|
||||
if let Some(args) = new_vm_resp.args {
|
||||
db::ActiveVm::activate(&self.db, &new_vm_resp.uuid, args).await?;
|
||||
db::ActiveVm::activate(&self.db, &new_vm_resp.vm_id, args).await?;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -176,7 +176,7 @@ impl BrainVmDaemon for VmDaemonServer {
|
||||
if !update_vm_resp.error.is_empty() {
|
||||
db::UpdateVmReq::submit_error(
|
||||
&self.db,
|
||||
&update_vm_resp.uuid,
|
||||
&update_vm_resp.vm_id,
|
||||
update_vm_resp.error,
|
||||
)
|
||||
.await?;
|
||||
@ -184,11 +184,11 @@ impl BrainVmDaemon for VmDaemonServer {
|
||||
db::upsert_record(
|
||||
&self.db,
|
||||
"measurement_args",
|
||||
&update_vm_resp.uuid,
|
||||
&update_vm_resp.vm_id,
|
||||
update_vm_resp.args.clone(),
|
||||
)
|
||||
.await?;
|
||||
db::ActiveVm::update(&self.db, &update_vm_resp.uuid).await?;
|
||||
db::ActiveVm::update(&self.db, &update_vm_resp.vm_id).await?;
|
||||
}
|
||||
}
|
||||
Some(vm_daemon_message::Msg::VmNodeResources(node_resources)) => {
|
||||
@ -286,13 +286,13 @@ impl BrainVmCli for VmCliServer {
|
||||
let mut hostname_changed = false;
|
||||
if !req.hostname.is_empty() {
|
||||
hostname_changed =
|
||||
db::ActiveVm::change_hostname(&self.db, &req.uuid, &req.hostname).await?;
|
||||
db::ActiveVm::change_hostname(&self.db, &req.vm_id, &req.hostname).await?;
|
||||
}
|
||||
|
||||
let hw_change_submitted = db_req.request_hw_update(&self.db).await?;
|
||||
if hw_change_submitted.is_none() {
|
||||
return Ok(Response::new(UpdateVmResp {
|
||||
uuid: req.uuid.clone(),
|
||||
vm_id: req.vm_id.clone(),
|
||||
error: "VM Contract does not exist.".to_string(),
|
||||
args: None,
|
||||
}));
|
||||
@ -301,7 +301,7 @@ impl BrainVmCli for VmCliServer {
|
||||
|
||||
if !hostname_changed && !hw_change_needed {
|
||||
return Ok(Response::new(UpdateVmResp {
|
||||
uuid: req.uuid.clone(),
|
||||
vm_id: req.vm_id.clone(),
|
||||
error: "No modification required".to_string(),
|
||||
args: None,
|
||||
}));
|
||||
@ -310,7 +310,7 @@ impl BrainVmCli for VmCliServer {
|
||||
// if only the hostname got changed, return a confirmation
|
||||
if !hw_change_needed {
|
||||
return Ok(Response::new(UpdateVmResp {
|
||||
uuid: req.uuid.clone(),
|
||||
vm_id: req.vm_id.clone(),
|
||||
error: String::new(),
|
||||
args: None,
|
||||
}));
|
||||
@ -339,7 +339,7 @@ impl BrainVmCli for VmCliServer {
|
||||
|
||||
async fn extend_vm(&self, req: Request<ExtendVmReq>) -> Result<Response<Empty>, Status> {
|
||||
let req = check_sig_from_req(req)?;
|
||||
match db::ActiveVm::extend_time(&self.db, &req.uuid, &req.admin_pubkey, req.locked_nano)
|
||||
match db::ActiveVm::extend_time(&self.db, &req.vm_id, &req.admin_pubkey, req.locked_nano)
|
||||
.await
|
||||
{
|
||||
Ok(()) => Ok(Response::new(Empty {})),
|
||||
@ -354,7 +354,7 @@ impl BrainVmCli for VmCliServer {
|
||||
Err(Status::failed_precondition(e.to_string()))
|
||||
}
|
||||
Err(e) => {
|
||||
log::error!("Error extending VM contract {}: {e}", &req.uuid);
|
||||
log::error!("Error extending VM contract {}: {e}", &req.vm_id);
|
||||
Err(Status::unknown(format!("Could not extend contract: {e}")))
|
||||
}
|
||||
}
|
||||
@ -362,7 +362,7 @@ impl BrainVmCli for VmCliServer {
|
||||
|
||||
async fn delete_vm(&self, req: Request<DeleteVmReq>) -> Result<Response<Empty>, Status> {
|
||||
let req = check_sig_from_req(req)?;
|
||||
let vm_node = db::ActiveVm::get_by_uuid(&self.db, &req.uuid)
|
||||
let vm_node = db::ActiveVm::get_by_id(&self.db, &req.vm_id)
|
||||
.await?
|
||||
.ok_or(Status::permission_denied("Unauthorized"))?
|
||||
.vm_node;
|
||||
@ -371,11 +371,11 @@ impl BrainVmCli for VmCliServer {
|
||||
log::info!("redirect: {redirect}");
|
||||
return Err(redirect);
|
||||
}
|
||||
match db::ActiveVm::delete(&self.db, &req.admin_pubkey, &req.uuid).await {
|
||||
match db::ActiveVm::delete(&self.db, &req.admin_pubkey, &req.vm_id).await {
|
||||
Ok(()) => Ok(Response::new(Empty {})),
|
||||
Err(db::Error::AccessDenied) => Err(Status::permission_denied("Unauthorized")),
|
||||
Err(e) => {
|
||||
log::error!("Error deleting VM contract {}: {e}", &req.uuid);
|
||||
log::error!("Error deleting VM contract {}: {e}", &req.vm_id);
|
||||
Err(Status::unknown(
|
||||
"Unknown error. Please try again or contact the DeTEE devs team.",
|
||||
))
|
||||
@ -393,9 +393,9 @@ impl BrainVmCli for VmCliServer {
|
||||
req.wallet, req.as_operator
|
||||
);
|
||||
let mut contracts = Vec::new();
|
||||
if !req.uuid.is_empty() {
|
||||
if !req.vm_id.is_empty() {
|
||||
if let Some(specific_contract) =
|
||||
db::ActiveVmWithNode::get_by_uuid(&self.db, &req.uuid).await?
|
||||
db::ActiveVmWithNode::get_by_id(&self.db, &req.vm_id).await?
|
||||
{
|
||||
if specific_contract.admin.key().to_string() == req.wallet
|
||||
|| specific_contract.vm_node.operator.key().to_string() == req.wallet
|
||||
|
@ -26,7 +26,7 @@ pub async fn create_new_app(
|
||||
client_app_cli.new_app(key.sign_request(new_app_req.clone())?).await?.into_inner();
|
||||
|
||||
assert!(new_app_resp.error.is_empty());
|
||||
assert!(new_app_resp.uuid.len() == 40);
|
||||
assert!(new_app_resp.app_id.len() == 40);
|
||||
|
||||
Ok(new_app_resp)
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ pub async fn daemon_engine(
|
||||
.collect::<Vec<MappedPort>>();
|
||||
|
||||
let res_data = NewAppRes {
|
||||
uuid: new_app_req.uuid,
|
||||
app_id: new_app_req.app_id,
|
||||
mapped_ports,
|
||||
ip_address: "127.0.0.1".to_string(),
|
||||
error: new_app_err.clone().unwrap_or_default(),
|
||||
@ -139,7 +139,7 @@ pub async fn daemon_engine(
|
||||
tx.send(res).await?;
|
||||
}
|
||||
Some(app_proto::brain_message_app::Msg::DeleteAppReq(del_app_req)) => {
|
||||
println!("MOCK_APP_DAEMON::delete app request for {}", del_app_req.uuid);
|
||||
println!("MOCK_APP_DAEMON::delete app request for {}", del_app_req.app_id);
|
||||
}
|
||||
None => todo!(),
|
||||
}
|
||||
|
@ -33,19 +33,19 @@ pub async fn create_new_vm(
|
||||
let new_vm_resp = client_vm_cli.new_vm(key.sign_request(new_vm_req)?).await?.into_inner();
|
||||
|
||||
assert!(new_vm_resp.error.is_empty());
|
||||
assert!(new_vm_resp.uuid.len() == 40);
|
||||
assert!(new_vm_resp.vm_id.len() == 40);
|
||||
|
||||
// wait for update db
|
||||
tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
|
||||
|
||||
let vm_req_db: Option<db::NewVmReq> = db.select((NEW_VM_REQ, new_vm_resp.uuid.clone())).await?;
|
||||
let vm_req_db: Option<db::NewVmReq> = db.select((NEW_VM_REQ, new_vm_resp.vm_id.clone())).await?;
|
||||
|
||||
if let Some(new_vm_req) = vm_req_db {
|
||||
panic!("New VM request found in DB: {:?}", new_vm_req);
|
||||
}
|
||||
|
||||
let active_vm_op: Option<db::ActiveVm> =
|
||||
db.select((ACTIVE_VM, new_vm_resp.uuid.clone())).await?;
|
||||
db.select((ACTIVE_VM, new_vm_resp.vm_id.clone())).await?;
|
||||
let active_vm = active_vm_op.ok_or(anyhow!("Not found active vm in db"))?;
|
||||
|
||||
Ok(active_vm.id.key().to_string())
|
||||
@ -159,7 +159,7 @@ pub async fn user_list_vm_contracts(
|
||||
brain_channel: &Channel,
|
||||
key: &Key,
|
||||
as_operator: bool,
|
||||
uuid: &str,
|
||||
vm_id: &str,
|
||||
) -> Result<Vec<vm_proto::VmContract>> {
|
||||
let mut cli_client = BrainVmCliClient::new(brain_channel.clone());
|
||||
let mut stream = cli_client
|
||||
@ -167,7 +167,7 @@ pub async fn user_list_vm_contracts(
|
||||
key.sign_request(vm_proto::ListVmContractsReq {
|
||||
wallet: key.pubkey.clone(),
|
||||
as_operator,
|
||||
uuid: uuid.to_string(),
|
||||
vm_id: vm_id.to_string(),
|
||||
})
|
||||
.unwrap(),
|
||||
)
|
||||
|
@ -128,7 +128,7 @@ pub async fn daemon_engine(
|
||||
});
|
||||
|
||||
let new_vm_resp = vm_proto::NewVmResp {
|
||||
uuid: new_vm_req.uuid.clone(),
|
||||
vm_id: new_vm_req.vm_id.clone(),
|
||||
args,
|
||||
error: new_vm_err.clone().unwrap_or_default(),
|
||||
};
|
||||
@ -142,7 +142,7 @@ pub async fn daemon_engine(
|
||||
todo!()
|
||||
}
|
||||
Some(vm_proto::brain_vm_message::Msg::DeleteVm(del_vm_req)) => {
|
||||
println!("MOCK_VM_DAEMON::delete vm request for {}", del_vm_req.uuid);
|
||||
println!("MOCK_VM_DAEMON::delete vm request for {}", del_vm_req.vm_id);
|
||||
}
|
||||
None => todo!(),
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ async fn test_new_app_db_tx() {
|
||||
ports: vec![ 8080 ],
|
||||
},
|
||||
),
|
||||
uuid: "".to_string(),
|
||||
app_id: "".to_string(),
|
||||
admin_pubkey: "H21Shi4iE7vgfjWEQNvzmpmBMJSaiZ17PYUcdNoAoKNc".to_string(),
|
||||
price_per_unit: 200000,
|
||||
locked_nano: 152400000,
|
||||
|
@ -57,7 +57,7 @@ async fn test_app_creation() {
|
||||
.unwrap()
|
||||
.into_inner();
|
||||
let active_app =
|
||||
db.select::<Option<db::ActiveApp>>((ACTIVE_APP, new_app_resp.uuid)).await.unwrap();
|
||||
db.select::<Option<db::ActiveApp>>((ACTIVE_APP, new_app_resp.app_id)).await.unwrap();
|
||||
assert!(active_app.is_some());
|
||||
|
||||
let daemon_key_02 =
|
||||
@ -73,7 +73,7 @@ async fn test_app_creation() {
|
||||
assert!(!new_app_resp.error.is_empty());
|
||||
|
||||
let app_req_db =
|
||||
db.select::<Option<db::NewAppReq>>((NEW_APP_REQ, new_app_resp.uuid)).await.unwrap();
|
||||
db.select::<Option<db::NewAppReq>>((NEW_APP_REQ, new_app_resp.app_id)).await.unwrap();
|
||||
|
||||
assert!(!app_req_db.unwrap().error.is_empty());
|
||||
|
||||
@ -90,7 +90,7 @@ async fn test_app_creation() {
|
||||
assert!(new_app_resp.error.is_empty());
|
||||
|
||||
let active_app =
|
||||
db.select::<Option<db::ActiveApp>>((ACTIVE_APP, new_app_resp.uuid)).await.unwrap();
|
||||
db.select::<Option<db::ActiveApp>>((ACTIVE_APP, new_app_resp.app_id)).await.unwrap();
|
||||
assert!(active_app.is_some());
|
||||
|
||||
tokio::time::sleep(std::time::Duration::from_millis(300)).await;
|
||||
@ -144,7 +144,7 @@ async fn test_app_deletion() {
|
||||
|
||||
let mut client_app_cli = BrainAppCliClient::new(brain_channel.clone());
|
||||
|
||||
let del_app_req = DelAppReq { admin_pubkey: key.pubkey.clone(), uuid: new_app_res.uuid };
|
||||
let del_app_req = DelAppReq { admin_pubkey: key.pubkey.clone(), app_id: new_app_res.app_id };
|
||||
let _ = client_app_cli.delete_app(key.sign_request(del_app_req).unwrap()).await.unwrap();
|
||||
|
||||
let key_02 = Key::new();
|
||||
@ -152,7 +152,7 @@ async fn test_app_deletion() {
|
||||
// delete random app
|
||||
let mut del_app_req = DelAppReq {
|
||||
admin_pubkey: key_02.pubkey.clone(),
|
||||
uuid: "9ae3VH8nJg2i8pqTQ6mJtvYuS2kd9n1XLLco8GUPfT95".to_string(),
|
||||
app_id: "9ae3VH8nJg2i8pqTQ6mJtvYuS2kd9n1XLLco8GUPfT95".to_string(),
|
||||
};
|
||||
|
||||
let del_err = client_app_cli
|
||||
@ -163,7 +163,7 @@ async fn test_app_deletion() {
|
||||
assert_eq!(del_err.message(), "Unauthorized");
|
||||
|
||||
let new_app_res_02 = create_new_app(&key, &daemon_key, &brain_channel).await.unwrap();
|
||||
del_app_req.uuid = new_app_res_02.uuid;
|
||||
del_app_req.app_id = new_app_res_02.app_id;
|
||||
|
||||
let del_err = client_app_cli
|
||||
.delete_app(key_02.sign_request(del_app_req.clone()).unwrap())
|
||||
@ -179,14 +179,14 @@ async fn test_app_deletion() {
|
||||
let new_app_res_03 = create_new_app(&key_03, &daemon_key, &brain_channel).await.unwrap();
|
||||
|
||||
let del_app_req =
|
||||
DelAppReq { admin_pubkey: key_03.pubkey.clone(), uuid: new_app_res_03.uuid.clone() };
|
||||
DelAppReq { admin_pubkey: key_03.pubkey.clone(), app_id: new_app_res_03.app_id.clone() };
|
||||
let _ = client_app_cli.delete_app(key_03.sign_request(del_app_req).unwrap()).await.unwrap();
|
||||
|
||||
let acc: db::Account = db.select((ACCOUNT, key_03.pubkey.clone())).await.unwrap().unwrap();
|
||||
assert_eq!(acc.balance, 10 * TOKEN_DECIMAL);
|
||||
|
||||
let deleted_app =
|
||||
db.select::<Option<db::DeletedApp>>((DELETED_APP, new_app_res_03.uuid)).await.unwrap();
|
||||
db.select::<Option<db::DeletedApp>>((DELETED_APP, new_app_res_03.app_id)).await.unwrap();
|
||||
assert!(deleted_app.is_some());
|
||||
}
|
||||
|
||||
|
@ -54,7 +54,7 @@ async fn test_brain_message() {
|
||||
cli_client.new_app(cli_key.sign_request(req).unwrap()).await.unwrap().into_inner();
|
||||
|
||||
assert!(new_app_resp.error.is_empty());
|
||||
assert!(new_app_resp.uuid.len() == 40);
|
||||
assert!(new_app_resp.app_id.len() == 40);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -129,7 +129,7 @@ async fn test_report_node() {
|
||||
let key = Key::new();
|
||||
|
||||
let report_error =
|
||||
report_node(&key, &brain_channel, &daemon_key, "uuid", "reason").await.err().unwrap();
|
||||
report_node(&key, &brain_channel, &daemon_key, "thisIsNotAnID", "reason").await.err().unwrap();
|
||||
|
||||
log::info!("Report error: {:?}", report_error);
|
||||
assert!(report_error.to_string().contains("No contract found by this ID."));
|
||||
@ -264,12 +264,12 @@ async fn test_kick_contract() {
|
||||
*/
|
||||
|
||||
let db_conn = prepare_test_db().await.unwrap();
|
||||
let contract_uuid = "5af49a714c64a82ef50e574b023b2a0ef0405ed";
|
||||
let contract_id = "5af49a714c64a82ef50e574b023b2a0ef0405ed";
|
||||
let operator_wallet = "7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB";
|
||||
let reason = "'; THROW 'Injected error'; --"; // sql injection query
|
||||
|
||||
let kick_response =
|
||||
surreal_brain::db::general::kick_contract(&db_conn, operator_wallet, contract_uuid, reason)
|
||||
surreal_brain::db::general::kick_contract(&db_conn, operator_wallet, contract_id, reason)
|
||||
.await;
|
||||
match kick_response {
|
||||
Ok(refund_amount) => {
|
||||
|
@ -70,7 +70,7 @@ async fn test_vm_creation() {
|
||||
assert!(!new_vm_resp.error.is_empty());
|
||||
|
||||
let vm_req_db: Option<db::NewVmReq> =
|
||||
db.select((NEW_VM_REQ, new_vm_resp.uuid.clone())).await.unwrap();
|
||||
db.select((NEW_VM_REQ, new_vm_resp.vm_id.clone())).await.unwrap();
|
||||
|
||||
if let Some(new_vm_req) = vm_req_db {
|
||||
assert!(!new_vm_req.error.is_empty());
|
||||
@ -88,7 +88,7 @@ async fn test_vm_creation() {
|
||||
assert!(new_vm_resp.error.is_empty());
|
||||
|
||||
tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
|
||||
let active_vm: Option<db::ActiveVm> = db.select((ACTIVE_VM, new_vm_resp.uuid)).await.unwrap();
|
||||
let active_vm: Option<db::ActiveVm> = db.select((ACTIVE_VM, new_vm_resp.vm_id)).await.unwrap();
|
||||
assert!(active_vm.is_some());
|
||||
|
||||
let acc_db: db::Account = db.select((ACCOUNT, key.pubkey.clone())).await.unwrap().unwrap();
|
||||
@ -139,11 +139,11 @@ async fn test_vm_deletion() {
|
||||
let key = Key::new();
|
||||
airdrop(&brain_channel, &key.pubkey, 10).await.unwrap();
|
||||
|
||||
let new_vm_uuid = create_new_vm(&db, &key, &daemon_key, &brain_channel).await.unwrap();
|
||||
let new_vm_id = create_new_vm(&db, &key, &daemon_key, &brain_channel).await.unwrap();
|
||||
|
||||
let mut client_vm_cli = BrainVmCliClient::new(brain_channel.clone());
|
||||
|
||||
let del_app_req = DeleteVmReq { admin_pubkey: key.pubkey.clone(), uuid: new_vm_uuid };
|
||||
let del_app_req = DeleteVmReq { admin_pubkey: key.pubkey.clone(), vm_id: new_vm_id };
|
||||
let _ = client_vm_cli.delete_vm(key.sign_request(del_app_req).unwrap()).await.unwrap();
|
||||
|
||||
let key_02 = Key::new();
|
||||
@ -151,7 +151,7 @@ async fn test_vm_deletion() {
|
||||
// delete random vm
|
||||
let mut del_vm_req = DeleteVmReq {
|
||||
admin_pubkey: key_02.pubkey.clone(),
|
||||
uuid: "9ae3VH8nJg2i8pqTQ6mJtvYuS2kd9n1XLLco8GUPfT95".to_string(),
|
||||
vm_id: "9ae3VH8nJg2i8pqTQ6mJtvYuS2kd9n1XLLco8GUPfT95".to_string(),
|
||||
};
|
||||
|
||||
let del_err = client_vm_cli
|
||||
@ -161,8 +161,8 @@ async fn test_vm_deletion() {
|
||||
.unwrap();
|
||||
assert_eq!(del_err.message(), "Unauthorized");
|
||||
|
||||
let new_vm_uuid_02 = create_new_vm(&db, &key, &daemon_key, &brain_channel).await.unwrap();
|
||||
del_vm_req.uuid = new_vm_uuid_02;
|
||||
let new_vm_id_02 = create_new_vm(&db, &key, &daemon_key, &brain_channel).await.unwrap();
|
||||
del_vm_req.vm_id = new_vm_id_02;
|
||||
|
||||
let del_err = client_vm_cli
|
||||
.delete_vm(key_02.sign_request(del_vm_req.clone()).unwrap())
|
||||
@ -175,17 +175,17 @@ async fn test_vm_deletion() {
|
||||
let key_03 = Key::new();
|
||||
airdrop(&brain_channel, &key_03.pubkey, 10).await.unwrap();
|
||||
|
||||
let new_vm_uuid_03 = create_new_vm(&db, &key_03, &daemon_key, &brain_channel).await.unwrap();
|
||||
let new_vm_id_03 = create_new_vm(&db, &key_03, &daemon_key, &brain_channel).await.unwrap();
|
||||
|
||||
let del_vm_req =
|
||||
DeleteVmReq { admin_pubkey: key_03.pubkey.clone(), uuid: new_vm_uuid_03.clone() };
|
||||
DeleteVmReq { admin_pubkey: key_03.pubkey.clone(), vm_id: new_vm_id_03.clone() };
|
||||
let _ = client_vm_cli.delete_vm(key_03.sign_request(del_vm_req).unwrap()).await.unwrap();
|
||||
|
||||
let acc: db::Account = db.select((ACCOUNT, key_03.pubkey.clone())).await.unwrap().unwrap();
|
||||
assert_eq!(acc.balance, 10 * TOKEN_DECIMAL);
|
||||
|
||||
let deleted_vm =
|
||||
db.select::<Option<db::DeletedVm>>((DELETED_VM, new_vm_uuid_03)).await.unwrap();
|
||||
db.select::<Option<db::DeletedVm>>((DELETED_VM, new_vm_id_03)).await.unwrap();
|
||||
assert!(deleted_vm.is_some());
|
||||
}
|
||||
|
||||
@ -201,7 +201,7 @@ async fn test_list_vm_contracts() {
|
||||
let pubkey = key.pubkey.clone();
|
||||
|
||||
let req_data =
|
||||
ListVmContractsReq { wallet: pubkey, uuid: String::from("uuid"), as_operator: false };
|
||||
ListVmContractsReq { wallet: pubkey, vm_id: String::from("vm_id"), as_operator: false };
|
||||
|
||||
let mut grpc_stream =
|
||||
client.list_vm_contracts(key.sign_request(req_data).unwrap()).await.unwrap().into_inner();
|
||||
@ -253,7 +253,7 @@ async fn test_extend_vm() {
|
||||
|
||||
let mut req = ExtendVmReq {
|
||||
admin_pubkey: key.pubkey.clone(),
|
||||
uuid: "foooooooo".to_string(),
|
||||
vm_id: "foooooooo".to_string(),
|
||||
locked_nano: u64::MAX,
|
||||
};
|
||||
|
||||
@ -266,7 +266,7 @@ async fn test_extend_vm() {
|
||||
cli_client.extend_vm(key.sign_request(req.clone()).unwrap()).await.err().unwrap();
|
||||
assert!(err_precondition.to_string().contains("Contract not found"));
|
||||
|
||||
req.uuid = vm_contract_id.to_string();
|
||||
req.vm_id = vm_contract_id.to_string();
|
||||
let err_precondition =
|
||||
cli_client.extend_vm(key.sign_request(req.clone()).unwrap()).await.err().unwrap();
|
||||
assert!(err_precondition.to_string().contains("Insufficient funds"));
|
||||
|
@ -49,7 +49,7 @@ async fn test_brain_message() {
|
||||
cli_client.new_vm(cli_key.sign_request(req).unwrap()).await.unwrap().into_inner();
|
||||
|
||||
assert!(new_vm_resp.error.is_empty());
|
||||
assert!(new_vm_resp.uuid.len() == 40);
|
||||
assert!(new_vm_resp.vm_id.len() == 40);
|
||||
assert!(new_vm_resp.args.is_some());
|
||||
assert!(new_vm_resp.args.unwrap().exposed_ports.len() == 3);
|
||||
}
|
||||
|
@ -1,551 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
accounts:
|
||||
DXXkYSnhP3ijsHYxkedcuMomEyc122WaAbkDX7SaGuUS:
|
||||
balance: 20293420000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL:
|
||||
balance: 25949200000
|
||||
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
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
CLYyE6id5876DW69LHDynuH6TjJPvWRBTQC5XDZ6jfT1:
|
||||
balance: 25000000000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
db5ZB6uDbF1mUUgeggBZ9XKbi3mUfX6WHkBpbwUHJpB:
|
||||
balance: 25000000000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
fY3NNjvFTeR1FBh5nXV3ujX7zZqrm3eBUWGEiG75TK1:
|
||||
balance: 1000000000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
FBMWVqME3t1i4R6zWyDQGUuiTeruZ1TxLhTmhaEcFypZ:
|
||||
balance: 181560160000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX:
|
||||
balance: 74660380000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
|
||||
4qFJJJdRrSB9hCn8rrvYTXHLJg371ab36PJmZ4uxHjGQ:
|
||||
balance: 25949200000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
Hv5q3enK249RUnLRLi9YNQMrPCRxvL2XnhznkzrtCmkG:
|
||||
balance: 25949200000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
GmE4JH3bL4NpmzwKCBJemJzRTumJAnbcXLGqce5mREgS:
|
||||
balance: 500000000000
|
||||
tmp_locked: 0
|
||||
kicked_for: []
|
||||
last_kick: 1970-01-01T00:00:00Z
|
||||
banned_by: []
|
||||
|
||||
operators:
|
||||
BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS:
|
||||
escrow: 5096692000000
|
||||
email: first_on_detee@proton.me
|
||||
banned_users: []
|
||||
vm_nodes:
|
||||
- HiyMp21zaBVbRCjDsD5hEjQnHeHv4e1gpUR6pVfHTKqv
|
||||
- 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4
|
||||
- Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
||||
- 4QbUXDM915RUFnHm3NiysLXFLk1WRGZvABwLNzx4tTEW
|
||||
- DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
||||
app_nodes: []
|
||||
x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK:
|
||||
escrow: 5499700480000
|
||||
email: gheo@detee.ltd
|
||||
banned_users: []
|
||||
vm_nodes:
|
||||
- 2Uf5pxhxKTUm6gRMnpbJHYDuyA6BWUfFsdmPyWfbMV1f
|
||||
- 7Xw3RxbP5pvfjZ8U6yA3HHVSS9YXjKH5Vkas3JRbQYd9
|
||||
app_nodes: []
|
||||
7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB:
|
||||
escrow: 888888888899999
|
||||
email: ""
|
||||
banned_users: []
|
||||
vm_nodes: []
|
||||
app_nodes:
|
||||
- BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg
|
||||
|
||||
4qFJJJdRrSB9hCn8rrvYTXHLJg371ab36PJmZ4uxHjGQ:
|
||||
escrow: 5499700480000
|
||||
email: "test_mock@operator"
|
||||
banned_users: []
|
||||
vm_nodes:
|
||||
- 7fujZQeTme52RdXTLmQST5jBgAbvzic5iERtH5EWoYjk
|
||||
app_nodes: []
|
||||
|
||||
Hv5q3enK249RUnLRLi9YNQMrPCRxvL2XnhznkzrtCmkG:
|
||||
escrow: 5499700480000
|
||||
email: "test_mock_extend@operator"
|
||||
banned_users: []
|
||||
vm_nodes:
|
||||
- 8ue3VHMnJg2i8pwTQ6mJtvYuS2kd9n1XLLco8GUPfT95
|
||||
app_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
|
||||
operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS
|
||||
country: FR
|
||||
region: Île-de-France
|
||||
city: Paris
|
||||
ip: 156.146.63.215
|
||||
avail_mem_mb: 123000
|
||||
avail_vcpus: 46
|
||||
avail_storage_gbs: 440
|
||||
avail_ipv4: 2
|
||||
avail_ipv6: 0
|
||||
avail_ports: 20000
|
||||
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: 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
|
||||
operator_wallet: BFopWmwcZAMF1h2PFECZNdEucdZfnZZ32p6R9ZaBiVsS
|
||||
country: US
|
||||
region: California
|
||||
city: San Jose
|
||||
ip: 149.36.48.99
|
||||
avail_mem_mb: 120000
|
||||
avail_vcpus: 41
|
||||
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_ipv4: 26
|
||||
avail_ipv6: 0
|
||||
avail_ports: 20000
|
||||
max_ports_per_vm: 5
|
||||
price: 20000
|
||||
reports: {}
|
||||
offline_minutes: 0
|
||||
|
||||
- public_key: 7fujZQeTme52RdXTLmQST5jBgAbvzic5iERtH5EWoYjk
|
||||
operator_wallet: 4qFJJJdRrSB9hCn8rrvYTXHLJg371ab36PJmZ4uxHjGQ
|
||||
country: GB
|
||||
region: England
|
||||
city: London
|
||||
ip: 193.234.17.2
|
||||
avail_mem_mb: 28000
|
||||
avail_vcpus: 24
|
||||
avail_storage_gbs: 1680
|
||||
avail_ipv4: 1
|
||||
avail_ipv6: 0
|
||||
avail_ports: 19999
|
||||
max_ports_per_vm: 10
|
||||
price: 24000
|
||||
reports: {}
|
||||
offline_minutes: 0
|
||||
- public_key: 8ue3VHMnJg2i8pwTQ6mJtvYuS2kd9n1XLLco8GUPfT95
|
||||
operator_wallet: Hv5q3enK249RUnLRLi9YNQMrPCRxvL2XnhznkzrtCmkG
|
||||
country: GB
|
||||
region: England
|
||||
city: London
|
||||
ip: 193.234.17.2
|
||||
avail_mem_mb: 28000
|
||||
avail_vcpus: 24
|
||||
avail_storage_gbs: 1680
|
||||
avail_ipv4: 1
|
||||
avail_ipv6: 0
|
||||
avail_ports: 19999
|
||||
max_ports_per_vm: 10
|
||||
price: 24000
|
||||
reports: {}
|
||||
offline_minutes: 1
|
||||
|
||||
vm_contracts:
|
||||
- uuid: 958165e3-dea8-407d-8c42-dd17002ef79c
|
||||
hostname: detee-landing-fr
|
||||
admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL
|
||||
node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
||||
exposed_ports: []
|
||||
public_ipv4: 156.146.63.216
|
||||
public_ipv6: ""
|
||||
disk_size_gb: 10240
|
||||
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: 10240
|
||||
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: 10240
|
||||
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: 10240
|
||||
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
|
||||
node_pubkey: Du3UfPSUUZmA5thQmc9Vrxdy7UimpygcpDsQNnwRQPtu
|
||||
exposed_ports: []
|
||||
public_ipv4: 156.146.63.217
|
||||
public_ipv6: ""
|
||||
disk_size_gb: 10240
|
||||
vcpus: 2
|
||||
memory_mb: 3000
|
||||
kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542
|
||||
dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45
|
||||
created_at: 2025-04-07T22:57:57.646151746Z
|
||||
updated_at: 2025-04-07T22:57:57.646152630Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 11867500000
|
||||
collected_at: 2025-04-20T00:34:15.461211040Z
|
||||
- uuid: 4b6e25ca-87ac-478b-8f16-aa8f5c44c704
|
||||
hostname: cloaked-mailbox
|
||||
admin_pubkey: DwfL5iFu32xh2YMCUxg63oEAThLRqehDAumiP9q6zuuX
|
||||
node_pubkey: DgkbsrwttkZXvzxY5kDwQQoDd79GLmZ5tc7fYJUFkQQb
|
||||
exposed_ports: []
|
||||
public_ipv4: 149.22.95.2
|
||||
public_ipv6: ""
|
||||
disk_size_gb: 30
|
||||
vcpus: 1
|
||||
memory_mb: 1000
|
||||
kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542
|
||||
dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45
|
||||
created_at: 2025-04-12T13:44:56.957037550Z
|
||||
updated_at: 2025-04-12T13:44:56.957038546Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 11177760000
|
||||
collected_at: 2025-04-20T00:34:15.461219779Z
|
||||
- uuid: eb1a13ed-d782-4b71-8860-73540129cb7d
|
||||
hostname: twenty
|
||||
admin_pubkey: FHuecMbeC1PfjkW2JKyoicJAuiU7khgQT16QUB3Q1XdL
|
||||
node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4
|
||||
exposed_ports: []
|
||||
public_ipv4: 149.36.48.100
|
||||
public_ipv6: ""
|
||||
disk_size_gb: 10240
|
||||
vcpus: 4
|
||||
memory_mb: 4000
|
||||
kernel_sha: e49c8587287b21df7600c04326fd7393524453918c14d67f73757dc769a13542
|
||||
dtrfs_sha: b5f408d00e2b93dc594fed3a7f2466a9878802ff1c7ae502247471cd06728a45
|
||||
created_at: 2025-04-15T00:46:35.622165457Z
|
||||
updated_at: 2025-04-15T00:46:35.622166372Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 15570720000
|
||||
collected_at: 2025-04-20T00:34:15.461230948Z
|
||||
- uuid: 1bf36309-3774-4825-b023-b2a0ef0405ed
|
||||
hostname: shadowy-hobo
|
||||
admin_pubkey: x52w7jARC5erhWWK65VZmjdGXzBK6ZDgfv1A283d8XK
|
||||
node_pubkey: 3zRxiGRnf46vd3zAEmpaYBJocTV9oJB6yXf5GZFR1Sq4
|
||||
exposed_ports:
|
||||
- 46393
|
||||
public_ipv4: ""
|
||||
public_ipv6: ""
|
||||
disk_size_gb: 10240
|
||||
vcpus: 1
|
||||
memory_mb: 1000
|
||||
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||
created_at: 2025-04-16T20:37:57.176592933Z
|
||||
updated_at: 2025-04-16T20:37:57.176594069Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 12730960000
|
||||
collected_at: 2025-04-20T00:34:15.461240342Z
|
||||
|
||||
- uuid: 1d749a81-6c27-a22e-fa0e574-b023-a6afef040fe5
|
||||
hostname: test-extend
|
||||
admin_pubkey: GmE4JH3bL4NpmzwKCBJemJzRTumJAnbcXLGqce5mREgS
|
||||
node_pubkey: 8ue3VHMnJg2i8pwTQ6mJtvYuS2kd9n1XLLco8GUPfT95
|
||||
exposed_ports:
|
||||
- 46393
|
||||
public_ipv4: ""
|
||||
public_ipv6: ""
|
||||
disk_size_gb: 10240
|
||||
vcpus: 1
|
||||
memory_mb: 1000
|
||||
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||
created_at: 2025-04-16T20:37:57.176592933Z
|
||||
updated_at: 2025-04-16T20:37:57.176594069Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 60000
|
||||
collected_at: 2025-04-20T00:34:15.461240342Z
|
||||
- uuid: 5af49a71-4c64-a82e-f50e574-b023-b2a0ef0405ed
|
||||
hostname: hallow-hobo
|
||||
admin_pubkey: 4qFJJJdRrSB9hCn8rrvYTXHLJg371ab36PJmZ4uxHjGQ
|
||||
node_pubkey: 7fujZQeTme52RdXTLmQST5jBgAbvzic5iERtH5EWoYjk
|
||||
exposed_ports:
|
||||
- 46393
|
||||
public_ipv4: ""
|
||||
public_ipv6: ""
|
||||
disk_size_gb: 10240
|
||||
vcpus: 1
|
||||
memory_mb: 1000
|
||||
kernel_sha: e765e56166ef321b53399b9638584d1279821dbe3d46191c1f66bbaa075e7919
|
||||
dtrfs_sha: d207644ee60d54009b6ecdfb720e2ec251cde31774dd249fcc7435aca0377990
|
||||
created_at: 2025-04-16T20:37:57.176592933Z
|
||||
updated_at: 2025-04-16T20:37:57.176594069Z
|
||||
price_per_unit: 20000
|
||||
locked_nano: 12730960000
|
||||
collected_at: 2025-04-20T00:34:15.461240342Z
|
||||
|
||||
app_nodes:
|
||||
- node_pubkey: BiqoPUEoAxYxMRXUmyofoS9H1TBQgQqvLJ6MbWh88AQg
|
||||
operator_wallet: 7V3rEuh6j8VuwMVB5PyGqWKLmjJ4fYSv6WtrTL51NZTB
|
||||
country: DE
|
||||
region: Hesse
|
||||
city: Frankfurt am Main
|
||||
ip: 212.95.45.139
|
||||
avail_mem_mb: 16000
|
||||
avail_vcpus: 16
|
||||
avail_storage_mb: 200000
|
||||
avail_no_of_port: 20000
|
||||
max_ports_per_app: 9
|
||||
price: 20000
|
||||
offline_minutes: 0
|
||||
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
|
Loading…
Reference in New Issue
Block a user