// build returns a Summary from aggregating the input data func (sb *summaryBuilder) build() (*stats.Summary, error) { rootInfo, found := sb.infos["/"] if !found { return nil, fmt.Errorf("Missing stats for root container") } rootStats := sb.containerInfoV2ToStats("", &rootInfo) nodeStats := stats.NodeStats{ NodeName: sb.node.Name, CPU: rootStats.CPU, Memory: rootStats.Memory, Network: sb.containerInfoV2ToNetworkStats("node:"+sb.node.Name, &rootInfo), Fs: &stats.FsStats{ AvailableBytes: &sb.rootFsInfo.Available, CapacityBytes: &sb.rootFsInfo.Capacity, UsedBytes: &sb.rootFsInfo.Usage, InodesFree: sb.rootFsInfo.InodesFree, Inodes: sb.rootFsInfo.Inodes}, StartTime: rootStats.StartTime, Runtime: &stats.RuntimeStats{ ImageFs: &stats.FsStats{ AvailableBytes: &sb.imageFsInfo.Available, CapacityBytes: &sb.imageFsInfo.Capacity, UsedBytes: &sb.imageStats.TotalStorageBytes, InodesFree: sb.imageFsInfo.InodesFree, Inodes: sb.imageFsInfo.Inodes, }, }, } systemContainers := map[string]string{ stats.SystemContainerKubelet: sb.nodeConfig.KubeletCgroupsName, stats.SystemContainerRuntime: sb.nodeConfig.RuntimeCgroupsName, stats.SystemContainerMisc: sb.nodeConfig.SystemCgroupsName, } for sys, name := range systemContainers { if info, ok := sb.infos[name]; ok { sysCont := sb.containerInfoV2ToStats(sys, &info) // System containers don't have a filesystem associated with them. sysCont.Rootfs = nil sysCont.Logs = nil nodeStats.SystemContainers = append(nodeStats.SystemContainers, sysCont) } } summary := stats.Summary{ Node: nodeStats, Pods: sb.buildSummaryPods(), } return &summary, nil }
// build returns a Summary from aggregating the input data func (sb *summaryBuilder) build() (*stats.Summary, error) { rootInfo, found := sb.infos["/"] if !found { return nil, fmt.Errorf("Missing stats for root container") } rootStats := sb.containerInfoV2ToStats("", &rootInfo) nodeStats := stats.NodeStats{ NodeName: sb.node.Name, CPU: rootStats.CPU, Memory: rootStats.Memory, Network: sb.containerInfoV2ToNetworkStats("node:"+sb.node.Name, &rootInfo), Fs: &stats.FsStats{ AvailableBytes: &sb.rootFsInfo.Available, CapacityBytes: &sb.rootFsInfo.Capacity, UsedBytes: &sb.rootFsInfo.Usage}, StartTime: rootStats.StartTime, } systemContainers := map[string]string{ stats.SystemContainerKubelet: sb.nodeConfig.KubeletCgroupsName, stats.SystemContainerRuntime: sb.nodeConfig.RuntimeCgroupsName, stats.SystemContainerMisc: sb.nodeConfig.SystemCgroupsName, } for sys, name := range systemContainers { if info, ok := sb.infos[name]; ok { nodeStats.SystemContainers = append(nodeStats.SystemContainers, sb.containerInfoV2ToStats(sys, &info)) } } summary := stats.Summary{ Node: nodeStats, Pods: sb.buildSummaryPods(), } return &summary, nil }