Skip to content

Commit

Permalink
Add HostAnalysisArgs
Browse files Browse the repository at this point in the history
  • Loading branch information
Lars T Hansen committed Jan 7, 2025
1 parent c058b3c commit 32e5b56
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 75 deletions.
51 changes: 51 additions & 0 deletions code/sonalyze/cmd/args.go
Original file line number Diff line number Diff line change
Expand Up @@ -524,6 +524,57 @@ func (s *SampleAnalysisArgs) Validate() error {
)
}

///////////////////////////////////////////////////////////////////////////////////////////////////
// Shared for analysis commands that work on sonar per-host data.
//
// Almost SampleAnalysisArgs, but HostArgs instead of RecordFilterArgs

type HostAnalysisArgs struct {
DevArgs
SourceArgs
QueryArgs
HostArgs
ConfigFileArgs
VerboseArgs
}

func (sa *HostAnalysisArgs) HostAnalysisFlags() *HostAnalysisArgs {
return sa
}

func (s *HostAnalysisArgs) Add(fs *CLI) {
s.DevArgs.Add(fs)
s.SourceArgs.Add(fs)
s.QueryArgs.Add(fs)
s.HostArgs.Add(fs)
s.ConfigFileArgs.Add(fs)
s.VerboseArgs.Add(fs)
}

func (s *HostAnalysisArgs) ReifyForRemote(x *ArgReifier) error {
// We don't forward s.Verbose, it's mostly useful locally, and ideally sonalyzed should redact
// it on the remote end to avoid revealing internal data (it does not, and indeed would require
// the argument to be named "verbose" to work).
return errors.Join(
s.DevArgs.ReifyForRemote(x),
s.SourceArgs.ReifyForRemote(x),
s.QueryArgs.ReifyForRemote(x),
s.HostArgs.ReifyForRemote(x),
s.ConfigFileArgs.ReifyForRemote(x),
)
}

func (s *HostAnalysisArgs) Validate() error {
return errors.Join(
s.DevArgs.Validate(),
s.SourceArgs.Validate(),
s.QueryArgs.Validate(),
s.HostArgs.Validate(),
s.ConfigFileArgs.Validate(),
s.VerboseArgs.Validate(),
)
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Format arguments - same logic for most consumers.
Expand Down
29 changes: 4 additions & 25 deletions code/sonalyze/cmd/gpus/gpus.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,57 +59,36 @@ DEFAULTS default
ELBAT*/

type GpuCommand struct /* implements AnalysisCommand */ {
// Almost SharedArgs, but HostArgs instead of RecordFilterArgs
DevArgs
SourceArgs
QueryArgs
HostArgs
VerboseArgs
HostAnalysisArgs
FormatArgs
ConfigFileArgs

Gpu int
}

var _ = AnalysisCommand((*GpuCommand)(nil))

func (gc *GpuCommand) Add(fs *CLI) {
gc.DevArgs.Add(fs)
gc.SourceArgs.Add(fs)
gc.QueryArgs.Add(fs)
gc.HostArgs.Add(fs)
gc.VerboseArgs.Add(fs)
gc.HostAnalysisArgs.Add(fs)
gc.FormatArgs.Add(fs)
gc.ConfigFileArgs.Add(fs)
fs.Group("record-filter")
fs.IntVar(&gc.Gpu, "gpu", -1, "Select single GPU")
}

func (gc *GpuCommand) Validate() error {
return errors.Join(
gc.DevArgs.Validate(),
gc.SourceArgs.Validate(),
gc.QueryArgs.Validate(),
gc.HostArgs.Validate(),
gc.VerboseArgs.Validate(),
gc.ConfigFileArgs.Validate(),
gc.HostAnalysisArgs.Validate(),
ValidateFormatArgs(
&gc.FormatArgs, gpuDefaultFields, gpuFormatters, gpuAliases, DefaultFixed),
)
}

func (gc *GpuCommand) ReifyForRemote(x *ArgReifier) error {
// gc.Verbose is not reified, as for SharedArgs.
if gc.Gpu != -1 {
x.IntUnchecked("gpu", gc.Gpu)
}
return errors.Join(
gc.DevArgs.ReifyForRemote(x),
gc.SourceArgs.ReifyForRemote(x),
gc.QueryArgs.ReifyForRemote(x),
gc.HostArgs.ReifyForRemote(x),
gc.HostAnalysisArgs.ReifyForRemote(x),
gc.FormatArgs.ReifyForRemote(x),
gc.ConfigFileArgs.ReifyForRemote(x),
)
}

Expand Down
28 changes: 4 additions & 24 deletions code/sonalyze/cmd/sacct/sacct.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,7 @@ const (
)

type SacctCommand struct /* implements AnalysisCommand */ {
// Almost SharedArgs, but HostArgs instead of RecordFilterArgs
DevArgs
SourceArgs
QueryArgs
HostArgs
VerboseArgs
ConfigFileArgs
HostAnalysisArgs
FormatArgs

// Selections
Expand Down Expand Up @@ -57,12 +51,7 @@ type SacctCommand struct /* implements AnalysisCommand */ {
var _ = AnalysisCommand((*SacctCommand)(nil))

func (sc *SacctCommand) Add(fs *CLI) {
sc.DevArgs.Add(fs)
sc.SourceArgs.Add(fs)
sc.QueryArgs.Add(fs)
sc.HostArgs.Add(fs)
sc.VerboseArgs.Add(fs)
sc.ConfigFileArgs.Add(fs)
sc.HostAnalysisArgs.Add(fs)
sc.FormatArgs.Add(fs)

fs.Group("job-filter")
Expand Down Expand Up @@ -117,24 +106,15 @@ func (sc *SacctCommand) ReifyForRemote(x *ArgReifier) error {
x.Bool("array", sc.Array)
x.Bool("het", sc.Het)
return errors.Join(
sc.DevArgs.ReifyForRemote(x),
sc.SourceArgs.ReifyForRemote(x),
sc.QueryArgs.ReifyForRemote(x),
sc.HostArgs.ReifyForRemote(x),
sc.ConfigFileArgs.ReifyForRemote(x),
sc.HostAnalysisArgs.ReifyForRemote(x),
sc.FormatArgs.ReifyForRemote(x),
)
}

func (sc *SacctCommand) Validate() error {
var e1, e7, e8, e9 error
e1 = errors.Join(
sc.DevArgs.Validate(),
sc.SourceArgs.Validate(),
sc.QueryArgs.Validate(),
sc.HostArgs.Validate(),
sc.VerboseArgs.Validate(),
sc.ConfigFileArgs.Validate(),
sc.HostAnalysisArgs.Validate(),
ValidateFormatArgs(
&sc.FormatArgs, sacctDefaultFields, sacctFormatters, sacctAliases, DefaultFixed),
)
Expand Down
30 changes: 4 additions & 26 deletions code/sonalyze/cmd/top/top.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ package top
import (
"bufio"
_ "embed"
"errors"
"fmt"
"io"
"slices"
Expand All @@ -35,12 +34,7 @@ import (
)

type TopCommand struct /* implements AnalysisCommand */ {
// Almost SharedArgs, but HostArgs instead of RecordFilterArgs
DevArgs
SourceArgs
HostArgs
VerboseArgs
ConfigFileArgs
HostAnalysisArgs
}

var _ = AnalysisCommand((*TopCommand)(nil))
Expand All @@ -53,31 +47,15 @@ func (tc *TopCommand) Summary(out io.Writer) {
}

func (tc *TopCommand) Add(fs *CLI) {
tc.DevArgs.Add(fs)
tc.SourceArgs.Add(fs)
tc.HostArgs.Add(fs)
tc.VerboseArgs.Add(fs)
tc.ConfigFileArgs.Add(fs)
tc.HostAnalysisArgs.Add(fs)
}

func (tc *TopCommand) Validate() error {
var e1, e2, e3, e4, e5 error
e1 = tc.DevArgs.Validate()
e2 = tc.SourceArgs.Validate()
e3 = tc.HostArgs.Validate()
e4 = tc.VerboseArgs.Validate()
e5 = tc.ConfigFileArgs.Validate()
return errors.Join(e1, e2, e3, e4, e5)
return tc.HostAnalysisArgs.Validate()
}

func (tc *TopCommand) ReifyForRemote(x *ArgReifier) error {
// tc.Verbose is not reified, as for SharedArgs.
return errors.Join(
tc.DevArgs.ReifyForRemote(x),
tc.SourceArgs.ReifyForRemote(x),
tc.HostArgs.ReifyForRemote(x),
tc.ConfigFileArgs.ReifyForRemote(x),
)
return tc.HostAnalysisArgs.ReifyForRemote(x)
}

func (tc *TopCommand) MaybeFormatHelp() *FormatHelp {
Expand Down

0 comments on commit 32e5b56

Please sign in to comment.