Grid4 Data Model
This module defines data models for nodes, groups, and slices in a cloud/grid infrastructure. Each root object is marked with @[heap]
and can be indexed for efficient querying.
Root Objects Overview
Object |
Description |
Index Fields |
Node |
Represents a single node in the grid |
id , nodegroupid , country |
NodeGroup |
Represents a group of nodes owned by a farmer |
id , farmerid |
Node
Represents a single node in the grid with slices, devices, and capacity.
Field |
Type |
Description |
Indexed |
id |
int |
Unique node ID |
✅ |
nodegroupid |
int |
ID of the owning node group |
✅ |
uptime |
int |
Uptime percentage (0-100) |
✅ |
computeslices |
[]ComputeSlice |
List of compute slices |
❌ |
storageslices |
[]StorageSlice |
List of storage slices |
❌ |
devices |
DeviceInfo |
Hardware device info (storage, memory, etc.) |
❌ |
country |
string |
2-letter country code |
✅ |
capacity |
NodeCapacity |
Aggregated hardware capacity |
❌ |
provisiontime |
u32 |
Provisioning time (simple/compatible format) |
✅ |
NodeGroup
Represents a group of nodes owned by a farmer, with policies.
Field |
Type |
Description |
Indexed |
id |
u32 |
Unique group ID |
✅ |
farmerid |
u32 |
Farmer/user ID |
✅ |
secret |
string |
Encrypted secret for booting nodes |
❌ |
description |
string |
Group description |
❌ |
slapolicy |
SLAPolicy |
SLA policy details |
❌ |
pricingpolicy |
PricingPolicy |
Pricing policy details |
❌ |
compute_slice_normalized_pricing_cc |
f64 |
Pricing per 2GB compute slice in cloud credits |
❌ |
storage_slice_normalized_pricing_cc |
f64 |
Pricing per 1GB storage slice in cloud credits |
❌ |
reputation |
int |
Reputation (0-100) |
✅ |
uptime |
int |
Uptime (0-100) |
✅ |
ComputeSlice
Represents a compute slice (e.g., 1GB memory unit).
Field |
Type |
Description |
nodeid |
u32 |
Owning node ID |
id |
int |
Slice ID in node |
mem_gb |
f64 |
Memory in GB |
storage_gb |
f64 |
Storage in GB |
passmark |
int |
Passmark score |
vcores |
int |
Virtual cores |
cpu_oversubscription |
int |
CPU oversubscription ratio |
storage_oversubscription |
int |
Storage oversubscription ratio |
price_range |
[]f64 |
Price range [min, max] |
gpus |
u8 |
Number of GPUs |
price_cc |
f64 |
Price per slice in cloud credits |
pricing_policy |
PricingPolicy |
Pricing policy |
sla_policy |
SLAPolicy |
SLA policy |
StorageSlice
Represents a 1GB storage slice.
Field |
Type |
Description |
nodeid |
u32 |
Owning node ID |
id |
int |
Slice ID in node |
price_cc |
f64 |
Price per slice in cloud credits |
pricing_policy |
PricingPolicy |
Pricing policy |
sla_policy |
SLAPolicy |
SLA policy |
DeviceInfo
Hardware device information for a node.
Field |
Type |
Description |
vendor |
string |
Vendor of the node |
storage |
[]StorageDevice |
List of storage devices |
memory |
[]MemoryDevice |
List of memory devices |
cpu |
[]CPUDevice |
List of CPU devices |
gpu |
[]GPUDevice |
List of GPU devices |
network |
[]NetworkDevice |
List of network devices |
StorageDevice
Field |
Type |
Description |
id |
string |
Unique ID for device |
size_gb |
f64 |
Size in GB |
description |
string |
Description of device |
MemoryDevice
Field |
Type |
Description |
id |
string |
Unique ID for device |
size_gb |
f64 |
Size in GB |
description |
string |
Description of device |
CPUDevice
Field |
Type |
Description |
id |
string |
Unique ID for device |
cores |
int |
Number of CPU cores |
passmark |
int |
Passmark benchmark score |
description |
string |
Description of device |
cpu_brand |
string |
Brand of the CPU |
cpu_version |
string |
Version of the CPU |
GPUDevice
Field |
Type |
Description |
id |
string |
Unique ID for device |
cores |
int |
Number of GPU cores |
memory_gb |
f64 |
GPU memory in GB |
description |
string |
Description of device |
gpu_brand |
string |
Brand of the GPU |
gpu_version |
string |
Version of the GPU |
NetworkDevice
Field |
Type |
Description |
id |
string |
Unique ID for device |
speed_mbps |
int |
Network speed in Mbps |
description |
string |
Description of device |
NodeCapacity
Aggregated hardware capacity for a node.
Field |
Type |
Description |
storage_gb |
f64 |
Total storage in GB |
mem_gb |
f64 |
Total memory in GB |
mem_gb_gpu |
f64 |
Total GPU memory in GB |
passmark |
int |
Total passmark score |
vcores |
int |
Total virtual cores |
SLAPolicy
Service Level Agreement policy for slices or node groups.
Field |
Type |
Description |
sla_uptime |
int |
Required uptime % (e.g., 90) |
sla_bandwidth_mbit |
int |
Guaranteed bandwidth in Mbps (0 = none) |
sla_penalty |
int |
Penalty % if SLA is breached (0-100) |
PricingPolicy
Pricing policy for slices or node groups.
Field |
Type |
Description |
marketplace_year_discounts |
[]int |
Discounts for 1Y, 2Y, 3Y prepaid usage (e.g. [30,40,50]) |
volume_discounts |
[]int |
Volume discounts based on purchase size (e.g. [10,20,30]) |