@@ -68,44 +68,40 @@ var metricsCommand = cli.Command{
6868 if err != nil {
6969 return err
7070 }
71- anydata , err := typeurl .UnmarshalAny (metric .Data )
72- if err != nil {
73- return err
74- }
75- var (
76- data * v1.Metrics
77- data2 * v2.Metrics
78- windowsStats * wstats.Statistics
79- )
80- switch v := anydata .(type ) {
81- case * v1.Metrics :
82- data = v
83- case * v2.Metrics :
84- data2 = v
85- case * wstats.Statistics :
86- windowsStats = v
71+
72+ var data interface {}
73+ switch {
74+ case typeurl .Is (metric .Data , (* v1 .Metrics )(nil )):
75+ data = & v1.Metrics {}
76+ case typeurl .Is (metric .Data , (* v2 .Metrics )(nil )):
77+ data = & v2.Metrics {}
78+ case typeurl .Is (metric .Data , (* wstats .Statistics )(nil )):
79+ data = & wstats.Statistics {}
8780 default :
8881 return errors .New ("cannot convert metric data to cgroups.Metrics or windows.Statistics" )
8982 }
83+ if err := typeurl .UnmarshalTo (metric .Data , data ); err != nil {
84+ return err
85+ }
9086
9187 switch context .String (formatFlag ) {
9288 case formatTable :
9389 w := tabwriter .NewWriter (os .Stdout , 1 , 8 , 4 , ' ' , 0 )
9490 fmt .Fprintf (w , "ID\t TIMESTAMP\t \n " )
9591 fmt .Fprintf (w , "%s\t %s\t \n \n " , metric .ID , metric .Timestamp )
96- if data != nil {
97- printCgroupMetricsTable ( w , data )
98- } else if data2 != nil {
99- printCgroup2MetricsTable ( w , data2 )
100- } else {
101- err := printWindowsStats ( w , windowsStats )
102- if err != nil {
92+ switch v := data .( type ) {
93+ case * v1. Metrics :
94+ printCgroupMetricsTable ( w , v )
95+ case * v2. Metrics :
96+ printCgroup2MetricsTable ( w , v )
97+ case * wstats. Statistics :
98+ if err := printWindowsStats ( w , v ); err != nil {
10399 return fmt .Errorf ("cannot convert metrics data from windows.Statistics: %w" , err )
104100 }
105101 }
106102 return w .Flush ()
107103 case formatJSON :
108- marshaledJSON , err := json .MarshalIndent (anydata , "" , " " )
104+ marshaledJSON , err := json .MarshalIndent (data , "" , " " )
109105 if err != nil {
110106 return err
111107 }
0 commit comments