Only layering RBD image format 2 feature should be supported for now.

This commit is contained in:
Yecheng Fu
2017-06-16 16:29:58 +00:00
parent 0c7cdf773b
commit 4e5e9ca0cd
4 changed files with 18 additions and 7 deletions

View File

@@ -24,6 +24,7 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
@@ -35,6 +36,10 @@ import (
"k8s.io/kubernetes/pkg/volume/util/volumehelper"
)
var (
supportedFeatures = sets.NewString("layering")
)
// This is the primary entrypoint for volume plugins.
func ProbeVolumePlugins() []volume.VolumePlugin {
return []volume.VolumePlugin{&rbdPlugin{nil, exec.New()}}
@@ -295,7 +300,11 @@ func (r *rbdVolumeProvisioner) Provision() (*v1.PersistentVolume, error) {
case "imagefeatures":
arr := dstrings.Split(v, ",")
for _, f := range arr {
r.imageFeatures = append(r.imageFeatures, f)
if !supportedFeatures.Has(f) {
return nil, fmt.Errorf("invalid feature %q for volume plugin %s, supported features are: %v", f, r.plugin.GetPluginName(), supportedFeatures)
} else {
r.imageFeatures = append(r.imageFeatures, f)
}
}
default:
return nil, fmt.Errorf("invalid option %q for volume plugin %s", k, r.plugin.GetPluginName())