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:
		| @@ -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 | ||||||
| 			} | 			} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Fu Wei
					Fu Wei