Skip to content

Commit

Permalink
diagnostics: added flags to report (erigontech#11548)
Browse files Browse the repository at this point in the history
- added flags which was applied to run command to report
  • Loading branch information
dvovk authored Aug 9, 2024
1 parent 5b30f2e commit b0a2654
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions cmd/diag/sysinfo/sysinfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@ var Command = cli.Command{
Description: "Collect information about system and save it to file in order to provide to support person",
}

type Flag struct {
Name string `json:"name"`
Value interface{} `json:"value"`
Usage string `json:"usage"`
Default bool `json:"default"`
}

type SortType int

const (
Expand All @@ -75,11 +82,19 @@ func collectInfo(cliCtx *cli.Context) error {
util.RenderError(err)
}

flagsData, err := getFlagsData(cliCtx)
if err != nil {
util.RenderError(err)
}

cpuusage := sysutils.CPUUsage()
processes := sysutils.GetProcessesInfo()
totalMemory := sysutils.TotalMemoryUsage()

var builder strings.Builder
builder.WriteString("Flags applied by launch command:\n")
writeFlagsInfoToStringBuilder(flagsData, &builder)
builder.WriteString("\n\n")

writeDiskInfoToStringBuilder(data.Disk, &builder)
writeCPUInfoToStringBuilder(data.CPU, cpuusage, &builder)
Expand All @@ -95,6 +110,15 @@ func collectInfo(cliCtx *cli.Context) error {
return nil
}

func writeFlagsInfoToStringBuilder(flags []Flag, builder *strings.Builder) {
flagsRows := make([]table.Row, 0, len(flags))
for _, flag := range flags {
flagsRows = append(flagsRows, table.Row{flag.Name, flag.Value})
}
flagsTableData := util.ExportTable(table.Row{"Flag", "Value"}, flagsRows, nil)
builder.WriteString(flagsTableData)
}

func writeDiskInfoToStringBuilder(diskInfo diagnostics.DiskInfo, builder *strings.Builder) {
builder.WriteString("Disk info:\n")
builder.WriteString(diskInfo.Details)
Expand Down Expand Up @@ -190,3 +214,31 @@ func getData(cliCtx *cli.Context) (diagnostics.HardwareInfo, error) {

return data, nil
}

func getFlagsData(cliCtx *cli.Context) ([]Flag, error) {
var rawData map[string]map[string]interface{}
url := "http://" + cliCtx.String(flags.DebugURLFlag.Name) + flags.ApiPath + "/flags"

err := util.MakeHttpGetCall(cliCtx.Context, url, &rawData)

if err != nil {
return nil, err
}

flagItems := make([]Flag, 0, len(rawData))
for name, item := range rawData {
if item["default"].(bool) {
continue
}

flagItem := Flag{
Name: name,
Value: item["value"],
Usage: item["usage"].(string),
Default: item["default"].(bool),
}
flagItems = append(flagItems, flagItem)
}

return flagItems, nil
}

0 comments on commit b0a2654

Please sign in to comment.