From e7fd1eb78a6a5f5aa2364bd86dbfb3c8917482c1 Mon Sep 17 00:00:00 2001
From: Jeremy Scott <js185692@ncr.com>
Date: Thu, 16 Mar 2023 17:03:02 +0000
Subject: [PATCH] Return error if unknown volume type given

---
 provisioner.go | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/provisioner.go b/provisioner.go
index 74c5c866..4c6cbc61 100644
--- a/provisioner.go
+++ b/provisioner.go
@@ -292,7 +292,10 @@ func (p *LocalPathProvisioner) Provision(ctx context.Context, opts pvController.
 	} else {
 		volumeType = defaultVolumeType
 	}
-	pvs = createPersistentVolumeSource(volumeType, path)
+	pvs, err = createPersistentVolumeSource(volumeType, path)
+	if err != nil {
+		return nil, pvController.ProvisioningFinished, err
+	}
 
 	var nodeAffinity *v1.VolumeNodeAffinity
 	if sharedFS {
@@ -652,8 +655,11 @@ func canonicalizeConfig(data *ConfigData) (cfg *Config, err error) {
 	return cfg, nil
 }
 
-func createPersistentVolumeSource(volumeType string, path string) v1.PersistentVolumeSource {
-	var pvs v1.PersistentVolumeSource
+func createPersistentVolumeSource(volumeType string, path string) (pvs v1.PersistentVolumeSource, err error) {
+	defer func() {
+		err = errors.Wrapf(err, "failed to create persistent volume source")
+	}()
+
 	switch strings.ToLower(volumeType) {
 	case "local":
 		pvs = v1.PersistentVolumeSource{
@@ -670,13 +676,8 @@ func createPersistentVolumeSource(volumeType string, path string) v1.PersistentV
 			},
 		}
 	default:
-		hostPathType := v1.HostPathDirectoryOrCreate
-		pvs = v1.PersistentVolumeSource{
-			HostPath: &v1.HostPathVolumeSource{
-				Path: path,
-				Type: &hostPathType,
-			},
-		}
+		return pvs, fmt.Errorf("\"%s\" is not a recognised volume type", volumeType)
 	}
-	return pvs
+
+	return pvs, nil
 }
-- 
GitLab