From 83a9db51483fbe5cac26d8e7d825a46873a52f69 Mon Sep 17 00:00:00 2001 From: WanLinghao Date: Mon, 22 Oct 2018 17:51:37 +0800 Subject: [PATCH] Support more volume types in stats/summary endpoint including configmap, secret, projected --- pkg/volume/configmap/configmap.go | 10 +++++++--- pkg/volume/downwardapi/downwardapi.go | 24 +++++++++++++++--------- pkg/volume/projected/projected.go | 18 ++++++++++-------- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/pkg/volume/configmap/configmap.go b/pkg/volume/configmap/configmap.go index a1474d2459..16fc940543 100644 --- a/pkg/volume/configmap/configmap.go +++ b/pkg/volume/configmap/configmap.go @@ -47,6 +47,10 @@ type configMapPlugin struct { var _ volume.VolumePlugin = &configMapPlugin{} +func getPath(uid types.UID, volName string, host volume.VolumeHost) string { + return host.GetPodVolumeDir(uid, strings.EscapeQualifiedNameForDisk(configMapPluginName), volName) +} + func (plugin *configMapPlugin) Init(host volume.VolumeHost) error { plugin.host = host plugin.getConfigMap = host.GetConfigMapFunc() @@ -92,7 +96,7 @@ func (plugin *configMapPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts v pod.UID, plugin, plugin.host.GetMounter(plugin.GetPluginName()), - volume.MetricsNil{}, + volume.NewCachedMetrics(volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host))), }, source: *spec.Volume.ConfigMap, pod: *pod, @@ -108,7 +112,7 @@ func (plugin *configMapPlugin) NewUnmounter(volName string, podUID types.UID) (v podUID, plugin, plugin.host.GetMounter(plugin.GetPluginName()), - volume.MetricsNil{}, + volume.NewCachedMetrics(volume.NewMetricsDu(getPath(podUID, volName, plugin.host))), }, }, nil } @@ -128,7 +132,7 @@ type configMapVolume struct { podUID types.UID plugin *configMapPlugin mounter mount.Interface - volume.MetricsNil + volume.MetricsProvider } var _ volume.Volume = &configMapVolume{} diff --git a/pkg/volume/downwardapi/downwardapi.go b/pkg/volume/downwardapi/downwardapi.go index 11fe62fc77..ac33af1feb 100644 --- a/pkg/volume/downwardapi/downwardapi.go +++ b/pkg/volume/downwardapi/downwardapi.go @@ -49,6 +49,10 @@ type downwardAPIPlugin struct { var _ volume.VolumePlugin = &downwardAPIPlugin{} +func getPath(uid types.UID, volName string, host volume.VolumeHost) string { + return host.GetPodVolumeDir(uid, utilstrings.EscapeQualifiedNameForDisk(downwardAPIPluginName), volName) +} + func wrappedVolumeSpec() volume.Spec { return volume.Spec{ Volume: &v1.Volume{VolumeSource: v1.VolumeSource{EmptyDir: &v1.EmptyDirVolumeSource{Medium: v1.StorageMediumMemory}}}, @@ -92,11 +96,12 @@ func (plugin *downwardAPIPlugin) SupportsBulkVolumeVerification() bool { func (plugin *downwardAPIPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volume.VolumeOptions) (volume.Mounter, error) { v := &downwardAPIVolume{ - volName: spec.Name(), - items: spec.Volume.DownwardAPI.Items, - pod: pod, - podUID: pod.UID, - plugin: plugin, + volName: spec.Name(), + items: spec.Volume.DownwardAPI.Items, + pod: pod, + podUID: pod.UID, + plugin: plugin, + MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host))), } return &downwardAPIVolumeMounter{ downwardAPIVolume: v, @@ -108,9 +113,10 @@ func (plugin *downwardAPIPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts func (plugin *downwardAPIPlugin) NewUnmounter(volName string, podUID types.UID) (volume.Unmounter, error) { return &downwardAPIVolumeUnmounter{ &downwardAPIVolume{ - volName: volName, - podUID: podUID, - plugin: plugin, + volName: volName, + podUID: podUID, + plugin: plugin, + MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsDu(getPath(podUID, volName, plugin.host))), }, }, nil } @@ -132,7 +138,7 @@ type downwardAPIVolume struct { pod *v1.Pod podUID types.UID // TODO: remove this redundancy as soon NewUnmounter func will have *v1.POD and not only types.UID plugin *downwardAPIPlugin - volume.MetricsNil + volume.MetricsProvider } // downwardAPIVolumeMounter fetches info from downward API from the pod diff --git a/pkg/volume/projected/projected.go b/pkg/volume/projected/projected.go index 7c2f583e7f..5b89b5ce0b 100644 --- a/pkg/volume/projected/projected.go +++ b/pkg/volume/projected/projected.go @@ -109,10 +109,11 @@ func (plugin *projectedPlugin) SupportsBulkVolumeVerification() bool { func (plugin *projectedPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volume.VolumeOptions) (volume.Mounter, error) { return &projectedVolumeMounter{ projectedVolume: &projectedVolume{ - volName: spec.Name(), - sources: spec.Volume.Projected.Sources, - podUID: pod.UID, - plugin: plugin, + volName: spec.Name(), + sources: spec.Volume.Projected.Sources, + podUID: pod.UID, + plugin: plugin, + MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsDu(getPath(pod.UID, spec.Name(), plugin.host))), }, source: *spec.Volume.Projected, pod: pod, @@ -123,9 +124,10 @@ func (plugin *projectedPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts v func (plugin *projectedPlugin) NewUnmounter(volName string, podUID types.UID) (volume.Unmounter, error) { return &projectedVolumeUnmounter{ &projectedVolume{ - volName: volName, - podUID: podUID, - plugin: plugin, + volName: volName, + podUID: podUID, + plugin: plugin, + MetricsProvider: volume.NewCachedMetrics(volume.NewMetricsDu(getPath(podUID, volName, plugin.host))), }, }, nil } @@ -146,7 +148,7 @@ type projectedVolume struct { sources []v1.VolumeProjection podUID types.UID plugin *projectedPlugin - volume.MetricsNil + volume.MetricsProvider } var _ volume.Volume = &projectedVolume{}