diff --git a/pkg/volume/rbd/rbd.go b/pkg/volume/rbd/rbd.go index c6d5d95b931..6042e743395 100644 --- a/pkg/volume/rbd/rbd.go +++ b/pkg/volume/rbd/rbd.go @@ -81,7 +81,7 @@ func (plugin *rbdPlugin) GetPluginName() string { } func (plugin *rbdPlugin) GetVolumeName(spec *volume.Spec) (string, error) { - mon, err := getVolumeSourceMonitors(spec) + pool, err := getVolumeSourcePool(spec) if err != nil { return "", err } @@ -92,7 +92,7 @@ func (plugin *rbdPlugin) GetVolumeName(spec *volume.Spec) (string, error) { return fmt.Sprintf( "%v:%v", - mon, + pool, img), nil } @@ -346,11 +346,22 @@ func (plugin *rbdPlugin) newUnmounterInternal(volName string, podUID types.UID, } func (plugin *rbdPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.Spec, error) { + mounter := plugin.host.GetMounter(plugin.GetPluginName()) + pluginDir := plugin.host.GetPluginDir(plugin.GetPluginName()) + sourceName, err := mounter.GetDeviceNameFromMount(mountPath, pluginDir) + if err != nil { + return nil, err + } + s := dstrings.Split(sourceName, "-image-") + if len(s) != 2 { + return nil, fmt.Errorf("sourceName %s wrong, should be pool+\"-image-\"+imageName", sourceName) + } rbdVolume := &v1.Volume{ Name: volumeName, VolumeSource: v1.VolumeSource{ RBD: &v1.RBDVolumeSource{ - CephMonitors: []string{}, + RBDPool: s[0], + RBDImage: s[1], }, }, }