MCPcopy Create free account
hub / github.com/containerd/nerdctl / setContainerStatsAndRenderStatsEntry

Function setContainerStatsAndRenderStatsEntry

pkg/cmd/container/stats_linux.go:50–132  ·  view source on GitHub ↗

nolint:nakedret

(previousStats *statsutil.ContainerStats, firstSet bool, anydata interface{}, pid int, interfaces []native.NetInterface, systemInfo statsutil.SystemInfo)

Source from the content-addressed store, hash-verified

48
49//nolint:nakedret
50func setContainerStatsAndRenderStatsEntry(previousStats *statsutil.ContainerStats, firstSet bool, anydata interface{}, pid int, interfaces []native.NetInterface, systemInfo statsutil.SystemInfo) (statsEntry statsutil.StatsEntry, err error) {
51
52 var (
53 data *v1.Metrics
54 data2 *v2.Metrics
55 )
56
57 switch v := anydata.(type) {
58 case *v1.Metrics:
59 data = v
60 case *v2.Metrics:
61 data2 = v
62 default:
63 err = errors.New("cannot convert metric data to cgroups.Metrics")
64 return
65 }
66
67 var nlinks []netlink.Link
68
69 if !firstSet {
70 var (
71 nlink netlink.Link
72 nlHandle *netlink.Handle
73 ns netns.NsHandle
74 )
75
76 ns, err = netns.GetFromPid(pid)
77 if err != nil {
78 err = fmt.Errorf("failed to retrieve the statistics in netns %s: %v", ns, err)
79 return
80 }
81 defer func() {
82 err = ns.Close()
83 }()
84
85 nlHandle, err = netlink.NewHandleAt(ns)
86 if err != nil {
87 err = fmt.Errorf("failed to retrieve the statistics in netns %s: %v", ns, err)
88 return
89 }
90 defer nlHandle.Close()
91
92 for _, v := range interfaces {
93 nlink, err = nlHandle.LinkByIndex(v.Index)
94 if err != nil {
95 err = fmt.Errorf("failed to retrieve the statistics for %s in netns %s: %v", v.Name, ns, err)
96 return
97 }
98 //exclude inactive interface
99 if nlink.Attrs().Flags&net.FlagUp != 0 {
100
101 //exclude loopback interface
102 if nlink.Attrs().Flags&net.FlagLoopback != 0 || strings.HasPrefix(nlink.Attrs().Name, "lo") {
103 continue
104 }
105 nlinks = append(nlinks, nlink)
106 }
107 }

Callers 1

collectFunction · 0.70

Calls 3

SetCgroupStatsFieldsFunction · 0.92
SetCgroup2StatsFieldsFunction · 0.92
CloseMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…