mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
Expose SummaryProvider for reuse by other parts of kubelet
This commit is contained in:
parent
48ea7cae48
commit
22fc4340a7
@ -55,8 +55,8 @@ type handler struct {
|
|||||||
summaryProvider SummaryProvider
|
summaryProvider SummaryProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateHandlers(provider StatsProvider, resourceAnalyzer ResourceAnalyzer) *restful.WebService {
|
func CreateHandlers(provider StatsProvider, summaryProvider SummaryProvider) *restful.WebService {
|
||||||
h := &handler{provider, NewSummaryProvider(provider, resourceAnalyzer)}
|
h := &handler{provider, summaryProvider}
|
||||||
|
|
||||||
ws := &restful.WebService{}
|
ws := &restful.WebService{}
|
||||||
ws.Path("/stats/").
|
ws.Path("/stats/").
|
||||||
|
@ -23,18 +23,22 @@ type ResourceAnalyzer interface {
|
|||||||
Start()
|
Start()
|
||||||
|
|
||||||
fsResourceAnalyzerInterface
|
fsResourceAnalyzerInterface
|
||||||
|
SummaryProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
// resourceAnalyzer implements ResourceAnalyzer
|
// resourceAnalyzer implements ResourceAnalyzer
|
||||||
type resourceAnalyzer struct {
|
type resourceAnalyzer struct {
|
||||||
*fsResourceAnalyzer
|
*fsResourceAnalyzer
|
||||||
|
SummaryProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ ResourceAnalyzer = &resourceAnalyzer{}
|
var _ ResourceAnalyzer = &resourceAnalyzer{}
|
||||||
|
|
||||||
// NewResourceAnalyzer returns a new ResourceAnalyzer
|
// NewResourceAnalyzer returns a new ResourceAnalyzer
|
||||||
func NewResourceAnalyzer(statsProvider StatsProvider, calVolumeFrequency time.Duration) ResourceAnalyzer {
|
func NewResourceAnalyzer(statsProvider StatsProvider, calVolumeFrequency time.Duration) ResourceAnalyzer {
|
||||||
return &resourceAnalyzer{newFsResourceAnalyzer(statsProvider, calVolumeFrequency)}
|
fsAnalyzer := newFsResourceAnalyzer(statsProvider, calVolumeFrequency)
|
||||||
|
summaryProvider := NewSummaryProvider(statsProvider, fsAnalyzer)
|
||||||
|
return &resourceAnalyzer{fsAnalyzer, summaryProvider}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start starts background functions necessary for the ResourceAnalyzer to function
|
// Start starts background functions necessary for the ResourceAnalyzer to function
|
||||||
|
@ -42,17 +42,17 @@ type SummaryProvider interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type summaryProviderImpl struct {
|
type summaryProviderImpl struct {
|
||||||
provider StatsProvider
|
provider StatsProvider
|
||||||
resourceAnalyzer ResourceAnalyzer
|
fsResourceAnalyzer fsResourceAnalyzerInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ SummaryProvider = &summaryProviderImpl{}
|
var _ SummaryProvider = &summaryProviderImpl{}
|
||||||
|
|
||||||
// NewSummaryProvider returns a new SummaryProvider
|
// NewSummaryProvider returns a new SummaryProvider
|
||||||
func NewSummaryProvider(statsProvider StatsProvider, resourceAnalyzer ResourceAnalyzer) SummaryProvider {
|
func NewSummaryProvider(statsProvider StatsProvider, fsResourceAnalyzer fsResourceAnalyzerInterface) SummaryProvider {
|
||||||
stackBuff := []byte{}
|
stackBuff := []byte{}
|
||||||
runtime.Stack(stackBuff, false)
|
runtime.Stack(stackBuff, false)
|
||||||
return &summaryProviderImpl{statsProvider, resourceAnalyzer}
|
return &summaryProviderImpl{statsProvider, fsResourceAnalyzer}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get implements the SummaryProvider interface
|
// Get implements the SummaryProvider interface
|
||||||
@ -83,18 +83,18 @@ func (sp *summaryProviderImpl) Get() (*stats.Summary, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
sb := &summaryBuilder{sp.resourceAnalyzer, node, nodeConfig, rootFsInfo, imageFsInfo, infos}
|
sb := &summaryBuilder{sp.fsResourceAnalyzer, node, nodeConfig, rootFsInfo, imageFsInfo, infos}
|
||||||
return sb.build()
|
return sb.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
// summaryBuilder aggregates the datastructures provided by cadvisor into a Summary result
|
// summaryBuilder aggregates the datastructures provided by cadvisor into a Summary result
|
||||||
type summaryBuilder struct {
|
type summaryBuilder struct {
|
||||||
resourceAnalyzer ResourceAnalyzer
|
fsResourceAnalyzer fsResourceAnalyzerInterface
|
||||||
node *api.Node
|
node *api.Node
|
||||||
nodeConfig cm.NodeConfig
|
nodeConfig cm.NodeConfig
|
||||||
rootFsInfo cadvisorapiv2.FsInfo
|
rootFsInfo cadvisorapiv2.FsInfo
|
||||||
imageFsInfo cadvisorapiv2.FsInfo
|
imageFsInfo cadvisorapiv2.FsInfo
|
||||||
infos map[string]cadvisorapiv2.ContainerInfo
|
infos map[string]cadvisorapiv2.ContainerInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
// build returns a Summary from aggregating the input data
|
// build returns a Summary from aggregating the input data
|
||||||
@ -221,7 +221,7 @@ func (sb *summaryBuilder) buildSummaryPods() []stats.PodStats {
|
|||||||
for _, podStats := range podToStats {
|
for _, podStats := range podToStats {
|
||||||
// Lookup the volume stats for each pod
|
// Lookup the volume stats for each pod
|
||||||
podUID := types.UID(podStats.PodRef.UID)
|
podUID := types.UID(podStats.PodRef.UID)
|
||||||
if vstats, found := sb.resourceAnalyzer.GetPodVolumeStats(podUID); found {
|
if vstats, found := sb.fsResourceAnalyzer.GetPodVolumeStats(podUID); found {
|
||||||
podStats.VolumeStats = vstats.Volumes
|
podStats.VolumeStats = vstats.Volumes
|
||||||
}
|
}
|
||||||
result = append(result, *podStats)
|
result = append(result, *podStats)
|
||||||
|
Loading…
Reference in New Issue
Block a user