63 lines
1.3 KiB
Markdown
63 lines
1.3 KiB
Markdown
|
|
||
|
## registration
|
||
|
|
||
|
|
||
|
|
||
|
Zinit needs tools to get this info and report it to the registrar.
|
||
|
|
||
|
```go
|
||
|
struct Registration {
|
||
|
pub_key string //public key of the node mycelium
|
||
|
mycelium_address string //the ipv6 addr
|
||
|
capacity Capacity
|
||
|
pub_key_signature string //signed pubkey with TPM on motherboard
|
||
|
}
|
||
|
|
||
|
struct Capacity {
|
||
|
memory_gb f64 // Memory size in GB
|
||
|
disks []Disk // List of disks (both SSDs and HDDs)
|
||
|
cpu CPU // Enum for CPU type
|
||
|
}
|
||
|
|
||
|
struct CPU {
|
||
|
cpu_type CPUType // Size of the disk in GB
|
||
|
description string
|
||
|
cpu_vcores int // Number of CPU virtual cores
|
||
|
}
|
||
|
|
||
|
|
||
|
struct Disk {
|
||
|
size_gb f64 // Size of the disk in GB
|
||
|
disk_type DiskType // Enum for disk type (SSD or HDD)
|
||
|
}
|
||
|
|
||
|
// Enum for disk types
|
||
|
enum DiskType {
|
||
|
ssd
|
||
|
hdd
|
||
|
}
|
||
|
// Enum for CPU types
|
||
|
enum CPUType {
|
||
|
intel_xeon
|
||
|
amd_epyc
|
||
|
intel_core9
|
||
|
}
|
||
|
|
||
|
|
||
|
```
|
||
|
|
||
|
the registration is done to all known registrars using openrpc
|
||
|
|
||
|
- register
|
||
|
- json payload
|
||
|
- ... see the openrpc spec rest server
|
||
|
|
||
|
failsafe
|
||
|
|
||
|
- zinit does this every hour on each know registrar, will be used for watchdog
|
||
|
- zinit at start keeps on trying for at least 1h on all servers each 5 sec, once a registrar found go to maintenance mode (which is once an hour)
|
||
|
|
||
|
## implementation
|
||
|
|
||
|
Have a driver which uses zinit, keep zinit small, do in V.
|