forked from LaconicNetwork/kompose
Add storageClassName label to pvc manifest(#1413)
This commit is contained in:
@@ -498,7 +498,7 @@ func (k *Kubernetes) CreateSecrets(komposeObject kobject.KomposeObject) ([]*api.
|
||||
}
|
||||
|
||||
// CreatePVC initializes PersistentVolumeClaim
|
||||
func (k *Kubernetes) CreatePVC(name string, mode string, size string, selectorValue string) (*api.PersistentVolumeClaim, error) {
|
||||
func (k *Kubernetes) CreatePVC(name string, mode string, size string, selectorValue string, storageClassName string) (*api.PersistentVolumeClaim, error) {
|
||||
volSize, err := resource.ParseQuantity(size)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "resource.ParseQuantity failed, Error parsing size")
|
||||
@@ -533,6 +533,11 @@ func (k *Kubernetes) CreatePVC(name string, mode string, size string, selectorVa
|
||||
} else {
|
||||
pvc.Spec.AccessModes = []api.PersistentVolumeAccessMode{api.ReadWriteOnce}
|
||||
}
|
||||
|
||||
if len(storageClassName) > 0 {
|
||||
pvc.Spec.StorageClassName = &storageClassName
|
||||
}
|
||||
|
||||
return pvc, nil
|
||||
}
|
||||
|
||||
@@ -844,6 +849,7 @@ func (k *Kubernetes) ConfigVolumes(name string, service kobject.ServiceConfig) (
|
||||
} else {
|
||||
volsource = k.ConfigPVCVolumeSource(volumeName, readonly)
|
||||
if volume.VFrom == "" {
|
||||
var storageClassName string
|
||||
defaultSize := PVCRequestSize
|
||||
if k.Opt.PVCRequestSize != "" {
|
||||
defaultSize = k.Opt.PVCRequestSize
|
||||
@@ -854,11 +860,13 @@ func (k *Kubernetes) ConfigVolumes(name string, service kobject.ServiceConfig) (
|
||||
for key, value := range service.Labels {
|
||||
if key == "kompose.volume.size" {
|
||||
defaultSize = value
|
||||
} else if key == "kompose.volume.storage-class-name" {
|
||||
storageClassName = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
createdPVC, err := k.CreatePVC(volumeName, volume.Mode, defaultSize, volume.SelectorValue)
|
||||
createdPVC, err := k.CreatePVC(volumeName, volume.Mode, defaultSize, volume.SelectorValue, storageClassName)
|
||||
|
||||
if err != nil {
|
||||
return nil, nil, nil, nil, errors.Wrap(err, "k.CreatePVC failed")
|
||||
|
||||
@@ -697,3 +697,15 @@ func TestServiceAccountNameOnMultipleContainers(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreatePVC(t *testing.T) {
|
||||
storageClassName := "custom-storage-class-name"
|
||||
k := Kubernetes{}
|
||||
result, err := k.CreatePVC("", "", PVCRequestSize, "", storageClassName)
|
||||
if err != nil {
|
||||
t.Error(errors.Wrap(err, "k.CreatePVC failed"))
|
||||
}
|
||||
if *result.Spec.StorageClassName != storageClassName {
|
||||
t.Errorf("Expected %s returned, got %s", storageClassName, *result.Spec.StorageClassName)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user