storageclass ceph add imageformat parameter

This commit is contained in:
Wei Wei
2017-05-15 12:18:56 +08:00
committed by Yecheng Fu
parent c31893978b
commit 2632bdd5e0
2 changed files with 14 additions and 3 deletions

View File

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

View File

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