Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
d3a21cf5
Unverified
Commit
d3a21cf5
authored
Nov 13, 2018
by
k8s-ci-robot
Committed by
GitHub
Nov 13, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #70848 from cofyc/fix64590
Improve usability of CSI plugin metrics
parents
54243e19
dfe0a08f
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
37 additions
and
18 deletions
+37
-18
BUILD
pkg/controller/volume/attachdetach/metrics/BUILD
+1
-0
metrics.go
pkg/controller/volume/attachdetach/metrics/metrics.go
+5
-3
BUILD
pkg/kubelet/volumemanager/metrics/BUILD
+1
-0
metrics.go
pkg/kubelet/volumemanager/metrics/metrics.go
+3
-2
metrics.go
pkg/volume/util/metrics.go
+14
-0
operation_generator.go
pkg/volume/util/operationexecutor/operation_generator.go
+13
-13
No files found.
pkg/controller/volume/attachdetach/metrics/BUILD
View file @
d3a21cf5
...
@@ -9,6 +9,7 @@ go_library(
...
@@ -9,6 +9,7 @@ go_library(
"//pkg/controller/volume/attachdetach/cache:go_default_library",
"//pkg/controller/volume/attachdetach/cache:go_default_library",
"//pkg/controller/volume/attachdetach/util:go_default_library",
"//pkg/controller/volume/attachdetach/util:go_default_library",
"//pkg/volume:go_default_library",
"//pkg/volume:go_default_library",
"//pkg/volume/util:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
...
...
pkg/controller/volume/attachdetach/metrics/metrics.go
View file @
d3a21cf5
...
@@ -26,6 +26,7 @@ import (
...
@@ -26,6 +26,7 @@ import (
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/util"
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/util"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
volumeutil
"k8s.io/kubernetes/pkg/volume/util"
)
)
const
pluginNameNotAvailable
=
"N/A"
const
pluginNameNotAvailable
=
"N/A"
...
@@ -166,7 +167,8 @@ func (collector *attachDetachStateCollector) getVolumeInUseCount() volumeCount {
...
@@ -166,7 +167,8 @@ func (collector *attachDetachStateCollector) getVolumeInUseCount() volumeCount {
if
err
!=
nil
{
if
err
!=
nil
{
continue
continue
}
}
nodeVolumeMap
.
add
(
pod
.
Spec
.
NodeName
,
volumePlugin
.
GetPluginName
())
pluginName
:=
volumeutil
.
GetFullQualifiedPluginNameForVolume
(
volumePlugin
.
GetPluginName
(),
volumeSpec
)
nodeVolumeMap
.
add
(
pod
.
Spec
.
NodeName
,
pluginName
)
}
}
}
}
return
nodeVolumeMap
return
nodeVolumeMap
...
@@ -178,7 +180,7 @@ func (collector *attachDetachStateCollector) getTotalVolumesCount() volumeCount
...
@@ -178,7 +180,7 @@ func (collector *attachDetachStateCollector) getTotalVolumesCount() volumeCount
if
plugin
,
err
:=
collector
.
volumePluginMgr
.
FindPluginBySpec
(
v
.
VolumeSpec
);
err
==
nil
{
if
plugin
,
err
:=
collector
.
volumePluginMgr
.
FindPluginBySpec
(
v
.
VolumeSpec
);
err
==
nil
{
pluginName
:=
pluginNameNotAvailable
pluginName
:=
pluginNameNotAvailable
if
plugin
!=
nil
{
if
plugin
!=
nil
{
pluginName
=
plugin
.
GetPluginName
(
)
pluginName
=
volumeutil
.
GetFullQualifiedPluginNameForVolume
(
plugin
.
GetPluginName
(),
v
.
VolumeSpec
)
}
}
stateVolumeMap
.
add
(
"desired_state_of_world"
,
pluginName
)
stateVolumeMap
.
add
(
"desired_state_of_world"
,
pluginName
)
}
}
...
@@ -187,7 +189,7 @@ func (collector *attachDetachStateCollector) getTotalVolumesCount() volumeCount
...
@@ -187,7 +189,7 @@ func (collector *attachDetachStateCollector) getTotalVolumesCount() volumeCount
if
plugin
,
err
:=
collector
.
volumePluginMgr
.
FindPluginBySpec
(
v
.
VolumeSpec
);
err
==
nil
{
if
plugin
,
err
:=
collector
.
volumePluginMgr
.
FindPluginBySpec
(
v
.
VolumeSpec
);
err
==
nil
{
pluginName
:=
pluginNameNotAvailable
pluginName
:=
pluginNameNotAvailable
if
plugin
!=
nil
{
if
plugin
!=
nil
{
pluginName
=
plugin
.
GetPluginName
(
)
pluginName
=
volumeutil
.
GetFullQualifiedPluginNameForVolume
(
plugin
.
GetPluginName
(),
v
.
VolumeSpec
)
}
}
stateVolumeMap
.
add
(
"actual_state_of_world"
,
pluginName
)
stateVolumeMap
.
add
(
"actual_state_of_world"
,
pluginName
)
}
}
...
...
pkg/kubelet/volumemanager/metrics/BUILD
View file @
d3a21cf5
...
@@ -8,6 +8,7 @@ go_library(
...
@@ -8,6 +8,7 @@ go_library(
deps = [
deps = [
"//pkg/kubelet/volumemanager/cache:go_default_library",
"//pkg/kubelet/volumemanager/cache:go_default_library",
"//pkg/volume:go_default_library",
"//pkg/volume:go_default_library",
"//pkg/volume/util:go_default_library",
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
],
],
...
...
pkg/kubelet/volumemanager/metrics/metrics.go
View file @
d3a21cf5
...
@@ -23,6 +23,7 @@ import (
...
@@ -23,6 +23,7 @@ import (
"k8s.io/klog"
"k8s.io/klog"
"k8s.io/kubernetes/pkg/kubelet/volumemanager/cache"
"k8s.io/kubernetes/pkg/kubelet/volumemanager/cache"
"k8s.io/kubernetes/pkg/volume"
"k8s.io/kubernetes/pkg/volume"
volumeutil
"k8s.io/kubernetes/pkg/volume/util"
)
)
const
(
const
(
...
@@ -95,7 +96,7 @@ func (c *totalVolumesCollector) Collect(ch chan<- prometheus.Metric) {
...
@@ -95,7 +96,7 @@ func (c *totalVolumesCollector) Collect(ch chan<- prometheus.Metric) {
func
(
c
*
totalVolumesCollector
)
getVolumeCount
()
volumeCount
{
func
(
c
*
totalVolumesCollector
)
getVolumeCount
()
volumeCount
{
counter
:=
make
(
volumeCount
)
counter
:=
make
(
volumeCount
)
for
_
,
mountedVolume
:=
range
c
.
asw
.
GetMountedVolumes
()
{
for
_
,
mountedVolume
:=
range
c
.
asw
.
GetMountedVolumes
()
{
pluginName
:=
mountedVolume
.
PluginName
pluginName
:=
volumeutil
.
GetFullQualifiedPluginNameForVolume
(
mountedVolume
.
PluginName
,
mountedVolume
.
VolumeSpec
)
if
pluginName
==
""
{
if
pluginName
==
""
{
pluginName
=
pluginNameNotAvailable
pluginName
=
pluginNameNotAvailable
}
}
...
@@ -105,7 +106,7 @@ func (c *totalVolumesCollector) getVolumeCount() volumeCount {
...
@@ -105,7 +106,7 @@ func (c *totalVolumesCollector) getVolumeCount() volumeCount {
for
_
,
volumeToMount
:=
range
c
.
dsw
.
GetVolumesToMount
()
{
for
_
,
volumeToMount
:=
range
c
.
dsw
.
GetVolumesToMount
()
{
pluginName
:=
pluginNameNotAvailable
pluginName
:=
pluginNameNotAvailable
if
plugin
,
err
:=
c
.
pluginMgr
.
FindPluginBySpec
(
volumeToMount
.
VolumeSpec
);
err
==
nil
{
if
plugin
,
err
:=
c
.
pluginMgr
.
FindPluginBySpec
(
volumeToMount
.
VolumeSpec
);
err
==
nil
{
pluginName
=
plugin
.
GetPluginName
(
)
pluginName
=
volumeutil
.
GetFullQualifiedPluginNameForVolume
(
plugin
.
GetPluginName
(),
volumeToMount
.
VolumeSpec
)
}
}
counter
.
add
(
"desired_state_of_world"
,
pluginName
)
counter
.
add
(
"desired_state_of_world"
,
pluginName
)
}
}
...
...
pkg/volume/util/metrics.go
View file @
d3a21cf5
...
@@ -17,9 +17,11 @@ limitations under the License.
...
@@ -17,9 +17,11 @@ limitations under the License.
package
util
package
util
import
(
import
(
"fmt"
"time"
"time"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus"
"k8s.io/kubernetes/pkg/volume"
)
)
var
storageOperationMetric
=
prometheus
.
NewHistogramVec
(
var
storageOperationMetric
=
prometheus
.
NewHistogramVec
(
...
@@ -62,3 +64,15 @@ func OperationCompleteHook(plugin, operationName string) func(*error) {
...
@@ -62,3 +64,15 @@ func OperationCompleteHook(plugin, operationName string) func(*error) {
}
}
return
opComplete
return
opComplete
}
}
// GetFullQualifiedPluginNameForVolume returns full qualified plugin name for
// given volume. For CSI plugin, it appends plugin driver name at the end of
// plugin name, e.g. kubernetes.io/csi:csi-hostpath. It helps to distinguish
// between metrics emitted for CSI volumes which may be handled by different
// CSI plugin drivers.
func
GetFullQualifiedPluginNameForVolume
(
pluginName
string
,
spec
*
volume
.
Spec
)
string
{
if
spec
!=
nil
&&
spec
.
PersistentVolume
!=
nil
&&
spec
.
PersistentVolume
.
Spec
.
CSI
!=
nil
{
return
fmt
.
Sprintf
(
"%s:%s"
,
pluginName
,
spec
.
PersistentVolume
.
Spec
.
CSI
.
Driver
)
}
return
pluginName
}
pkg/volume/util/operationexecutor/operation_generator.go
View file @
d3a21cf5
...
@@ -203,7 +203,7 @@ func (og *operationGenerator) GenerateVolumesAreAttachedFunc(
...
@@ -203,7 +203,7 @@ func (og *operationGenerator) GenerateVolumesAreAttachedFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
volumesAreAttachedFunc
,
OperationFunc
:
volumesAreAttachedFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
"<n/a>"
,
"verify_volumes_are_attached_per_node"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
"<n/a>"
,
nil
)
,
"verify_volumes_are_attached_per_node"
),
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
},
nil
},
nil
}
}
...
@@ -274,7 +274,7 @@ func (og *operationGenerator) GenerateBulkVolumeVerifyFunc(
...
@@ -274,7 +274,7 @@ func (og *operationGenerator) GenerateBulkVolumeVerifyFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
bulkVolumeVerifyFunc
,
OperationFunc
:
bulkVolumeVerifyFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
pluginName
,
"verify_volumes_are_attached"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
pluginName
,
nil
)
,
"verify_volumes_are_attached"
),
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
},
nil
},
nil
...
@@ -348,7 +348,7 @@ func (og *operationGenerator) GenerateAttachVolumeFunc(
...
@@ -348,7 +348,7 @@ func (og *operationGenerator) GenerateAttachVolumeFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
attachVolumeFunc
,
OperationFunc
:
attachVolumeFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
attachableVolumePlugin
.
GetPluginName
(
),
"volume_attach"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
attachableVolumePlugin
.
GetPluginName
(),
volumeToAttach
.
VolumeSpec
),
"volume_attach"
),
},
nil
},
nil
}
}
...
@@ -427,7 +427,7 @@ func (og *operationGenerator) GenerateDetachVolumeFunc(
...
@@ -427,7 +427,7 @@ func (og *operationGenerator) GenerateDetachVolumeFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
getVolumePluginMgrFunc
,
OperationFunc
:
getVolumePluginMgrFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
pluginName
,
"volume_detach"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
pluginName
,
volumeToDetach
.
VolumeSpec
)
,
"volume_detach"
),
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
},
nil
},
nil
}
}
...
@@ -593,7 +593,7 @@ func (og *operationGenerator) GenerateMountVolumeFunc(
...
@@ -593,7 +593,7 @@ func (og *operationGenerator) GenerateMountVolumeFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
mountVolumeFunc
,
OperationFunc
:
mountVolumeFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
volumePlugin
.
GetPluginName
(
),
"volume_mount"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
volumePlugin
.
GetPluginName
(),
volumeToMount
.
VolumeSpec
),
"volume_mount"
),
},
nil
},
nil
}
}
...
@@ -703,7 +703,7 @@ func (og *operationGenerator) GenerateUnmountVolumeFunc(
...
@@ -703,7 +703,7 @@ func (og *operationGenerator) GenerateUnmountVolumeFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
unmountVolumeFunc
,
OperationFunc
:
unmountVolumeFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
volumePlugin
.
GetPluginName
(
),
"volume_unmount"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
volumePlugin
.
GetPluginName
(),
volumeToUnmount
.
VolumeSpec
),
"volume_unmount"
),
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
},
nil
},
nil
}
}
...
@@ -780,7 +780,7 @@ func (og *operationGenerator) GenerateUnmountDeviceFunc(
...
@@ -780,7 +780,7 @@ func (og *operationGenerator) GenerateUnmountDeviceFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
unmountDeviceFunc
,
OperationFunc
:
unmountDeviceFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
deviceMountableVolumePlugin
.
GetPluginName
(
),
"unmount_device"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
deviceMountableVolumePlugin
.
GetPluginName
(),
deviceToDetach
.
VolumeSpec
),
"unmount_device"
),
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
},
nil
},
nil
}
}
...
@@ -946,7 +946,7 @@ func (og *operationGenerator) GenerateMapVolumeFunc(
...
@@ -946,7 +946,7 @@ func (og *operationGenerator) GenerateMapVolumeFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
mapVolumeFunc
,
OperationFunc
:
mapVolumeFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
blockVolumePlugin
.
GetPluginName
(
),
"map_volume"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
blockVolumePlugin
.
GetPluginName
(),
volumeToMount
.
VolumeSpec
),
"map_volume"
),
},
nil
},
nil
}
}
...
@@ -1015,7 +1015,7 @@ func (og *operationGenerator) GenerateUnmapVolumeFunc(
...
@@ -1015,7 +1015,7 @@ func (og *operationGenerator) GenerateUnmapVolumeFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
unmapVolumeFunc
,
OperationFunc
:
unmapVolumeFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
blockVolumePlugin
.
GetPluginName
(
),
"unmap_volume"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
blockVolumePlugin
.
GetPluginName
(),
volumeToUnmount
.
VolumeSpec
),
"unmap_volume"
),
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
},
nil
},
nil
}
}
...
@@ -1130,7 +1130,7 @@ func (og *operationGenerator) GenerateUnmapDeviceFunc(
...
@@ -1130,7 +1130,7 @@ func (og *operationGenerator) GenerateUnmapDeviceFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
unmapDeviceFunc
,
OperationFunc
:
unmapDeviceFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
blockVolumePlugin
.
GetPluginName
(
),
"unmap_device"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
blockVolumePlugin
.
GetPluginName
(),
deviceToDetach
.
VolumeSpec
),
"unmap_device"
),
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
},
nil
},
nil
}
}
...
@@ -1204,7 +1204,7 @@ func (og *operationGenerator) GenerateVerifyControllerAttachedVolumeFunc(
...
@@ -1204,7 +1204,7 @@ func (og *operationGenerator) GenerateVerifyControllerAttachedVolumeFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
verifyControllerAttachedVolumeFunc
,
OperationFunc
:
verifyControllerAttachedVolumeFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
volumePlugin
.
GetPluginName
(
),
"verify_controller_attached_volume"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
volumePlugin
.
GetPluginName
(),
volumeToMount
.
VolumeSpec
),
"verify_controller_attached_volume"
),
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
EventRecorderFunc
:
nil
,
// nil because we do not want to generate event on error
},
nil
},
nil
...
@@ -1321,7 +1321,7 @@ func (og *operationGenerator) GenerateExpandVolumeFunc(
...
@@ -1321,7 +1321,7 @@ func (og *operationGenerator) GenerateExpandVolumeFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
expandVolumeFunc
,
OperationFunc
:
expandVolumeFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
volumePlugin
.
GetPluginName
(
),
"expand_volume"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
volumePlugin
.
GetPluginName
(),
volumeSpec
),
"expand_volume"
),
},
nil
},
nil
}
}
...
@@ -1378,7 +1378,7 @@ func (og *operationGenerator) GenerateExpandVolumeFSWithoutUnmountingFunc(
...
@@ -1378,7 +1378,7 @@ func (og *operationGenerator) GenerateExpandVolumeFSWithoutUnmountingFunc(
return
volumetypes
.
GeneratedOperations
{
return
volumetypes
.
GeneratedOperations
{
OperationFunc
:
fsResizeFunc
,
OperationFunc
:
fsResizeFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
EventRecorderFunc
:
eventRecorderFunc
,
CompleteFunc
:
util
.
OperationCompleteHook
(
volumePlugin
.
GetPluginName
(
),
"volume_fs_resize"
),
CompleteFunc
:
util
.
OperationCompleteHook
(
util
.
GetFullQualifiedPluginNameForVolume
(
volumePlugin
.
GetPluginName
(),
volumeToMount
.
VolumeSpec
),
"volume_fs_resize"
),
},
nil
},
nil
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment