Support more volume types in stats/summary endpoint including configmap, secret, projected

pull/564/head
WanLinghao 2018-10-22 17:51:37 +08:00
parent 3905fb6696
commit 83a9db5148
3 changed files with 32 additions and 20 deletions

View File

@ -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{}

View File

@ -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

View File

@ -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{}