Change:
Is this a BUG REPORT or FEATURE REQUEST?: /kind bug What happened: The local-volume bootstrapper/provisioner configuration format changed in kubernetes-incubator/external-storage, and its related e2e tests will fail when the provisioner & bootstrapper images are updated to v2.0.0. What you expected to happen: I'd expect the e2e tests to continue to work properly with the new version of the provisioner and boostrapper. How to reproduce it (as minimally and precisely as possible): Update local-volume provisioner and boostrapper images to v2.0.0, and then the provisioner e2e test will fail.
/sig storage
/assign

Discussion:
"//vendor/github.com/aws/aws-sdk-go/aws:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws/session:go_default_library", "//vendor/github.com/aws/aws-sdk-go/service/ec2:go_default_library", <ins> "//vendor/github.com/ghodss/yaml:go_default_library", </ins> "//vendor/github.com/onsi/ginkgo:go_default_library", "//vendor/github.com/onsi/gomega:go_default_library", "//vendor/google.golang.org/api/googleapi:go_default_library",

package storage import ( <del> "encoding/json" </del> "fmt" "math/rand" "path"

"strings" "time" <ins> "github.com/ghodss/yaml" </ins> . "github.com/onsi/ginkgo" . "github.com/onsi/gomega"

// volumeConfigName is the configmap passed to bootstrapper and provisioner volumeConfigName = "local-volume-config" // bootstrapper and provisioner images used for e2e tests <del> bootstrapperImageName = "quay.io/external_storage/local-volume-provisioner-bootstrap:v1.0.1" provisionerImageName  = "quay.io/external_storage/local-volume-provisioner:v1.0.1" </del> <ins> bootstrapperImageName = "quay.io/external_storage/local-volume-provisioner-bootstrap:v2.0.0" provisionerImageName  = "quay.io/external_storage/local-volume-provisioner:v2.0.0" </ins> // provisioner daemonSetName name, must match the one defined in bootstrapper daemonSetName = "local-volume-provisioner" // provisioner node/pv cluster role binding, must match the one defined in bootstrapper

} func createVolumeConfigMap(config *localTestConfig) { <del> mountConfig := struct { HostDir string `json:"hostDir"` }{ HostDir: path.Join(hostBase, discoveryDir), </del> <ins> // MountConfig and ProvisionerConfiguration from // https://github.com/kubernetes-incubator/external-storage/blob/master/local-volume/provisioner/pkg/common/common.go type MountConfig struct { // The hostpath directory HostDir string `json:"hostDir" yaml:"hostDir"` </ins> } <del> data, err := json.Marshal(&mountConfig) </del> <ins> type ProvisionerConfiguration struct { // StorageClassConfig defines configuration of Provisioner's storage classes StorageClassConfig map[string]MountConfig `json:"storageClassMap" yaml:"storageClassMap"` } var provisionerConfig ProvisionerConfiguration provisionerConfig.StorageClassConfig = map[string]MountConfig{ config.scName: { HostDir: path.Join(hostBase, discoveryDir), }, } data, err := yaml.Marshal(&provisionerConfig.StorageClassConfig) </ins> Expect(err).NotTo(HaveOccurred()) configMap := v1.ConfigMap{

Namespace: config.ns, }, Data: map[string]string{ <del> config.scName: string(data), </del> <ins> "storageClassMap": string(data), </ins> }, } _, err = config.client.CoreV1().ConfigMaps(config.ns).Create(&configMap)