61 lines
1.0 KiB
V
61 lines
1.0 KiB
V
module models
|
|
|
|
import json
|
|
|
|
pub type ZdbMode = string
|
|
|
|
pub struct ZdbModes {
|
|
pub:
|
|
seq string = 'seq'
|
|
user string = 'user'
|
|
}
|
|
|
|
pub const zdb_modes = ZdbModes{}
|
|
|
|
type DeviceType = string
|
|
|
|
pub struct DeviceTypes {
|
|
pub:
|
|
hdd string = 'hdd'
|
|
ssd string = 'ssd'
|
|
}
|
|
|
|
pub const device_types = DeviceTypes{}
|
|
|
|
pub struct Zdb {
|
|
pub mut:
|
|
size u64 // size in bytes
|
|
mode ZdbMode
|
|
password string
|
|
public bool
|
|
}
|
|
|
|
pub fn (mut z Zdb) challenge() string {
|
|
mut out := ''
|
|
out += '${z.size}'
|
|
out += '${z.mode}'
|
|
out += z.password
|
|
out += '${z.public}'
|
|
|
|
return out
|
|
}
|
|
|
|
pub struct ZdbResult {
|
|
pub mut:
|
|
namespace string @[json: 'Namespace']
|
|
ips []string @[json: 'IPs']
|
|
port u32 @[json: 'Port']
|
|
}
|
|
|
|
pub fn (z Zdb) to_workload(args WorkloadArgs) Workload {
|
|
return Workload{
|
|
version: args.version or { 0 }
|
|
name: args.name
|
|
type_: workload_types.zdb
|
|
data: json.encode(z)
|
|
metadata: args.metadata or { '' }
|
|
description: args.description or { '' }
|
|
result: args.result or { WorkloadResult{} }
|
|
}
|
|
}
|