Add fleet topology epidemiology: strain plague map and mining interrupt fixes.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Strain nodes replace host nodes in FleetTopologyMap; server queues epidemiology_fix on auth and reports interrupts to AI and Seer.
This commit is contained in:
46
server/internal/db/graft.go
Normal file
46
server/internal/db/graft.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"time"
|
||||
)
|
||||
|
||||
// UpdateAgentGraft records an approved genealogy graft on the target agent.
|
||||
func (d *Database) UpdateAgentGraft(id, sourceStrain, graftTier string, approvedAt time.Time) error {
|
||||
if approvedAt.IsZero() {
|
||||
approvedAt = time.Now().UTC()
|
||||
}
|
||||
_, err := d.Exec(
|
||||
`UPDATE agents SET graft_source_strain = ?, graft_tier = ?, graft_approved_at = ? WHERE id = ?`,
|
||||
sourceStrain, graftTier, approvedAt.UTC().Format(time.RFC3339), id,
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
// ClearAgentGraft removes pending graft metadata after the agent consumes it on spread.
|
||||
func (d *Database) ClearAgentGraft(id string) error {
|
||||
_, err := d.Exec(
|
||||
`UPDATE agents SET graft_source_strain = '', graft_tier = '', graft_approved_at = NULL WHERE id = ?`,
|
||||
id,
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
func scanGraftFields(sourceStrain, graftTier, approvedRaw sql.NullString) (string, string, *time.Time) {
|
||||
strain := ""
|
||||
if sourceStrain.Valid {
|
||||
strain = sourceStrain.String
|
||||
}
|
||||
tier := ""
|
||||
if graftTier.Valid {
|
||||
tier = graftTier.String
|
||||
}
|
||||
var approved *time.Time
|
||||
if approvedRaw.Valid && approvedRaw.String != "" {
|
||||
if t, err := time.Parse(time.RFC3339, approvedRaw.String); err == nil {
|
||||
utc := t.UTC()
|
||||
approved = &utc
|
||||
}
|
||||
}
|
||||
return strain, tier, approved
|
||||
}
|
||||
Reference in New Issue
Block a user