118 lines
2.4 KiB
Go
118 lines
2.4 KiB
Go
package db
|
|
|
|
import "time"
|
|
|
|
// Validator and IP lifecycle states. Kept as typed string constants rather
|
|
// than a Go enum type so they round-trip through SQLite TEXT columns and
|
|
// JSON without conversion.
|
|
const (
|
|
ValidatorUnregistered = "unregistered"
|
|
ValidatorIdle = "idle"
|
|
ValidatorAssigned = "assigned"
|
|
ValidatorChecking = "checking"
|
|
ValidatorUnreachable = "unreachable"
|
|
|
|
IPQueued = "queued"
|
|
IPAssigningFIP = "assigning_fip"
|
|
IPAwaitingSelfCheck = "awaiting_self_check"
|
|
IPChecking = "checking"
|
|
IPAggregating = "aggregating"
|
|
IPDone = "done"
|
|
IPFailed = "failed"
|
|
|
|
ResultPass = "pass"
|
|
ResultPartial = "partial"
|
|
ResultFail = "fail"
|
|
|
|
SourceEgress = "egress"
|
|
)
|
|
|
|
// InboundSource returns the checks.source value for the given prober site
|
|
// index (1-based), e.g. InboundSource(1) == "inbound-site-1".
|
|
func InboundSource(siteIndex int) string {
|
|
return "inbound-site-" + itoa(siteIndex)
|
|
}
|
|
|
|
func itoa(n int) string {
|
|
if n == 0 {
|
|
return "0"
|
|
}
|
|
neg := n < 0
|
|
if neg {
|
|
n = -n
|
|
}
|
|
var buf [20]byte
|
|
i := len(buf)
|
|
for n > 0 {
|
|
i--
|
|
buf[i] = byte('0' + n%10)
|
|
n /= 10
|
|
}
|
|
if neg {
|
|
i--
|
|
buf[i] = '-'
|
|
}
|
|
return string(buf[i:])
|
|
}
|
|
|
|
type Validator struct {
|
|
ValidatorID string
|
|
Hostname string
|
|
OSPortID string
|
|
State string
|
|
CurrentIPID *int64
|
|
AgentVersion string
|
|
LastHeartbeatAt *time.Time
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type IPQueueItem struct {
|
|
ID int64
|
|
IPAddress string
|
|
Sequence int
|
|
State string
|
|
OwnerValidatorID *string
|
|
FIPID string
|
|
AttemptNumber int
|
|
RetryCount int
|
|
LeaseExpiresAt *time.Time
|
|
EgressComplete bool
|
|
Site1Complete bool
|
|
Site2Complete bool
|
|
Site3Complete bool
|
|
OverallResult string
|
|
AssignedAt *time.Time
|
|
AggregatedAt *time.Time
|
|
FIPReleasedAt *time.Time
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
|
|
type Check struct {
|
|
ID int64
|
|
IPID int64
|
|
IPAddress string
|
|
AttemptNumber int
|
|
ValidatorID string
|
|
Source string
|
|
CheckType string
|
|
Target string
|
|
Success bool
|
|
LatencyMS int64
|
|
Detail string
|
|
CheckedAt time.Time
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
type Event struct {
|
|
ID int64
|
|
SourceType string
|
|
SourceID string
|
|
IPID *int64
|
|
EventType string
|
|
Payload string
|
|
OccurredAt time.Time
|
|
CreatedAt time.Time
|
|
}
|