package hostbox import ( "context" "encoding/json" ) // HostLaunches is root's local journal view, including older installations // whose claim-named cgroups still need an emptiness check. func (j *LaunchJournal) HostLaunches(ctx context.Context, host string) ([]LaunchInventory, error) { if j == nil || j.db == nil || j.remote != nil || !component(host) { return nil, ErrUnsupported } rows, err := journalExecutorFor(ctx, j.db).QueryContext(ctx, "SELECT identity, body FROM launches ORDER BY identity") if err != nil { return nil, err } defer rows.Close() var out []LaunchInventory for rows.Next() { var key string var body []byte if err := rows.Scan(&key, &body); err != nil { return nil, err } var in LaunchInventory if err := json.Unmarshal(body, &in); err != nil { return nil, err } if !validLaunchOwner(in.Target) || launchKey(in.Target) != key || !in.Completed.Valid() { return nil, ErrTypedInventory } if in.Target.Host == host { out = append(out, in) } } return out, rows.Err() }