mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-02 17:57:33 +00:00
storageclass ceph add imageformat parameter
This commit is contained in:
@@ -51,8 +51,10 @@ var _ volume.DeletableVolumePlugin = &rbdPlugin{}
|
|||||||
var _ volume.ProvisionableVolumePlugin = &rbdPlugin{}
|
var _ volume.ProvisionableVolumePlugin = &rbdPlugin{}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
rbdPluginName = "kubernetes.io/rbd"
|
rbdPluginName = "kubernetes.io/rbd"
|
||||||
secretKeyName = "key" // key name used in secret
|
secretKeyName = "key" // key name used in secret
|
||||||
|
rbdImageFormat1 = "1"
|
||||||
|
rbdImageFormat2 = "2"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (plugin *rbdPlugin) Init(host volume.VolumeHost) error {
|
func (plugin *rbdPlugin) Init(host volume.VolumeHost) error {
|
||||||
@@ -267,6 +269,7 @@ func (r *rbdVolumeProvisioner) Provision() (*v1.PersistentVolume, error) {
|
|||||||
adminSecretNamespace := "default"
|
adminSecretNamespace := "default"
|
||||||
secretName := ""
|
secretName := ""
|
||||||
secret := ""
|
secret := ""
|
||||||
|
imageFormat := ""
|
||||||
|
|
||||||
for k, v := range r.options.Parameters {
|
for k, v := range r.options.Parameters {
|
||||||
switch dstrings.ToLower(k) {
|
switch dstrings.ToLower(k) {
|
||||||
@@ -287,11 +290,18 @@ func (r *rbdVolumeProvisioner) Provision() (*v1.PersistentVolume, error) {
|
|||||||
r.Pool = v
|
r.Pool = v
|
||||||
case "usersecretname":
|
case "usersecretname":
|
||||||
secretName = v
|
secretName = v
|
||||||
|
case "imageformat":
|
||||||
|
imageFormat = v
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("invalid option %q for volume plugin %s", k, r.plugin.GetPluginName())
|
return nil, fmt.Errorf("invalid option %q for volume plugin %s", k, r.plugin.GetPluginName())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// sanity check
|
// sanity check
|
||||||
|
if imageFormat != rbdImageFormat1 && imageFormat != rbdImageFormat2 {
|
||||||
|
return nil, fmt.Errorf("invalid ceph imageformat %s, expecting %s or %s",
|
||||||
|
imageFormat, rbdImageFormat1, rbdImageFormat2)
|
||||||
|
}
|
||||||
|
r.imageFormat = imageFormat
|
||||||
if adminSecretName == "" {
|
if adminSecretName == "" {
|
||||||
return nil, fmt.Errorf("missing Ceph admin secret name")
|
return nil, fmt.Errorf("missing Ceph admin secret name")
|
||||||
}
|
}
|
||||||
@@ -384,6 +394,7 @@ type rbdMounter struct {
|
|||||||
adminSecret string
|
adminSecret string
|
||||||
adminId string
|
adminId string
|
||||||
mountOptions []string
|
mountOptions []string
|
||||||
|
imageFormat string
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ volume.Mounter = &rbdMounter{}
|
var _ volume.Mounter = &rbdMounter{}
|
||||||
|
@@ -357,7 +357,7 @@ func (util *RBDUtil) CreateImage(p *rbdVolumeProvisioner) (r *v1.RBDVolumeSource
|
|||||||
mon := p.Mon[i%l]
|
mon := p.Mon[i%l]
|
||||||
glog.V(4).Infof("rbd: create %s size %s using mon %s, pool %s id %s key %s", p.rbdMounter.Image, volSz, mon, p.rbdMounter.Pool, p.rbdMounter.adminId, p.rbdMounter.adminSecret)
|
glog.V(4).Infof("rbd: create %s size %s using mon %s, pool %s id %s key %s", p.rbdMounter.Image, volSz, mon, p.rbdMounter.Pool, p.rbdMounter.adminId, p.rbdMounter.adminSecret)
|
||||||
output, err = p.rbdMounter.plugin.execCommand("rbd",
|
output, err = p.rbdMounter.plugin.execCommand("rbd",
|
||||||
[]string{"create", p.rbdMounter.Image, "--size", volSz, "--pool", p.rbdMounter.Pool, "--id", p.rbdMounter.adminId, "-m", mon, "--key=" + p.rbdMounter.adminSecret, "--image-format", "1"})
|
[]string{"create", p.rbdMounter.Image, "--size", volSz, "--pool", p.rbdMounter.Pool, "--id", p.rbdMounter.adminId, "-m", mon, "--key=" + p.rbdMounter.adminSecret, "--image-format", p.rbdMounter.imageFormat})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user