//go:build linux package host import ( "context" "net" "os/exec" "golang.org/x/sys/unix" ) func dialDBReadWorker(ctx context.Context) (net.Conn, error) { var d net.Dialer return d.DialContext(ctx, "unix", dbReadSocketPath) } // dbReadUnits lists carlos-dbread@ units, readable without privilege. func dbReadUnits(ctx context.Context) (int, error) { out, err := exec.CommandContext(ctx, "systemctl", "list-units", "--all", "--plain", "--no-legend", "--no-pager", "carlos-dbread@*.service").Output() if err != nil { return 0, err } return countDBReadUnits(string(out)), nil } // varTmpFree is the filesystem holding /var/tmp, where every worker's // private /var/tmp lives. func varTmpFree() (uint64, uint64, error) { var st unix.Statfs_t if err := unix.Statfs("/var/tmp", &st); err != nil { return 0, 0, err } return st.Bavail * uint64(st.Bsize), st.Blocks * uint64(st.Bsize), nil }