Merge pull request #8302 from Iceber/fix_ctr_task_metrics
ctr/tasks: fix unmarshal the task metrics for cgroup v1
This commit is contained in:
commit
f7f2be7321
@ -68,44 +68,40 @@ var metricsCommand = cli.Command{
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
anydata, err := typeurl.UnmarshalAny(metric.Data)
|
|
||||||
if err != nil {
|
var data interface{}
|
||||||
return err
|
switch {
|
||||||
}
|
case typeurl.Is(metric.Data, (*v1.Metrics)(nil)):
|
||||||
var (
|
data = &v1.Metrics{}
|
||||||
data *v1.Metrics
|
case typeurl.Is(metric.Data, (*v2.Metrics)(nil)):
|
||||||
data2 *v2.Metrics
|
data = &v2.Metrics{}
|
||||||
windowsStats *wstats.Statistics
|
case typeurl.Is(metric.Data, (*wstats.Statistics)(nil)):
|
||||||
)
|
data = &wstats.Statistics{}
|
||||||
switch v := anydata.(type) {
|
|
||||||
case *v1.Metrics:
|
|
||||||
data = v
|
|
||||||
case *v2.Metrics:
|
|
||||||
data2 = v
|
|
||||||
case *wstats.Statistics:
|
|
||||||
windowsStats = v
|
|
||||||
default:
|
default:
|
||||||
return errors.New("cannot convert metric data to cgroups.Metrics or windows.Statistics")
|
return errors.New("cannot convert metric data to cgroups.Metrics or windows.Statistics")
|
||||||
}
|
}
|
||||||
|
if err := typeurl.UnmarshalTo(metric.Data, data); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
switch context.String(formatFlag) {
|
switch context.String(formatFlag) {
|
||||||
case formatTable:
|
case formatTable:
|
||||||
w := tabwriter.NewWriter(os.Stdout, 1, 8, 4, ' ', 0)
|
w := tabwriter.NewWriter(os.Stdout, 1, 8, 4, ' ', 0)
|
||||||
fmt.Fprintf(w, "ID\tTIMESTAMP\t\n")
|
fmt.Fprintf(w, "ID\tTIMESTAMP\t\n")
|
||||||
fmt.Fprintf(w, "%s\t%s\t\n\n", metric.ID, metric.Timestamp)
|
fmt.Fprintf(w, "%s\t%s\t\n\n", metric.ID, metric.Timestamp)
|
||||||
if data != nil {
|
switch v := data.(type) {
|
||||||
printCgroupMetricsTable(w, data)
|
case *v1.Metrics:
|
||||||
} else if data2 != nil {
|
printCgroupMetricsTable(w, v)
|
||||||
printCgroup2MetricsTable(w, data2)
|
case *v2.Metrics:
|
||||||
} else {
|
printCgroup2MetricsTable(w, v)
|
||||||
err := printWindowsStats(w, windowsStats)
|
case *wstats.Statistics:
|
||||||
if err != nil {
|
if err := printWindowsStats(w, v); err != nil {
|
||||||
return fmt.Errorf("cannot convert metrics data from windows.Statistics: %w", err)
|
return fmt.Errorf("cannot convert metrics data from windows.Statistics: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return w.Flush()
|
return w.Flush()
|
||||||
case formatJSON:
|
case formatJSON:
|
||||||
marshaledJSON, err := json.MarshalIndent(anydata, "", " ")
|
marshaledJSON, err := json.MarshalIndent(data, "", " ")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user