package model import "time" type NodeState string const ( NodeStatePending NodeState = "pending" NodeStateReady NodeState = "ready" NodeStateLeft NodeState = "left" NodeStateDraining NodeState = "draining" NodeStateDrained NodeState = "drained" ) // NodeKind classifies a node by how it joined the cluster. type NodeKind string const ( // NodeKindLocalhost is the auto-registered local node from `orca init`. NodeKindLocalhost NodeKind = "localhost" // NodeKindLinux is a generic Linux node (ubuntu/debian/alpine) joined // without a specific type. Reserved for future SSH-join flows. NodeKindLinux NodeKind = "linux" // NodeKindProxmox is a Proxmox VE 8/9 host joined via SSH bootstrap. NodeKindProxmox NodeKind = "proxmox" ) type Node struct { ID string `json:"id"` Name string `json:"name"` Address string `json:"address"` State NodeState `json:"state"` JoinedAt time.Time `json:"joined_at"` LastSeen time.Time `json:"last_seen"` Metadata map[string]string `json:"metadata,omitempty"` // Kind classifies the node: localhost | linux | proxmox (REQ-049). // Empty string for rows created before migration 0006. Kind string `json:"kind,omitempty"` // OS is the auto-detected OS identifier from /etc/os-release ID= // (ubuntu|debian|alpine|pve|linux). Empty for pre-0006 rows. OS string `json:"os,omitempty"` }