Ensure volume GetCloudProvider code uses cloud config
This commit is contained in:
		| @@ -23,7 +23,6 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/golang/glog" | 	"github.com/golang/glog" | ||||||
| 	"k8s.io/kubernetes/pkg/cloudprovider" |  | ||||||
| 	"k8s.io/kubernetes/pkg/cloudprovider/providers/aws" | 	"k8s.io/kubernetes/pkg/cloudprovider/providers/aws" | ||||||
| 	"k8s.io/kubernetes/pkg/util/keymutex" | 	"k8s.io/kubernetes/pkg/util/keymutex" | ||||||
| 	"k8s.io/kubernetes/pkg/util/runtime" | 	"k8s.io/kubernetes/pkg/util/runtime" | ||||||
| @@ -108,7 +107,7 @@ func (util *AWSDiskUtil) DetachDisk(c *awsElasticBlockStoreUnmounter) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (util *AWSDiskUtil) DeleteVolume(d *awsElasticBlockStoreDeleter) error { | func (util *AWSDiskUtil) DeleteVolume(d *awsElasticBlockStoreDeleter) error { | ||||||
| 	cloud, err := getCloudProvider() | 	cloud, err := getCloudProvider(d.awsElasticBlockStore.plugin) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| @@ -129,7 +128,7 @@ func (util *AWSDiskUtil) DeleteVolume(d *awsElasticBlockStoreDeleter) error { | |||||||
| // CreateVolume creates an AWS EBS volume. | // CreateVolume creates an AWS EBS volume. | ||||||
| // Returns: volumeID, volumeSizeGB, labels, error | // Returns: volumeID, volumeSizeGB, labels, error | ||||||
| func (util *AWSDiskUtil) CreateVolume(c *awsElasticBlockStoreProvisioner) (string, int, map[string]string, error) { | func (util *AWSDiskUtil) CreateVolume(c *awsElasticBlockStoreProvisioner) (string, int, map[string]string, error) { | ||||||
| 	cloud, err := getCloudProvider() | 	cloud, err := getCloudProvider(c.awsElasticBlockStore.plugin) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return "", 0, nil, err | 		return "", 0, nil, err | ||||||
| 	} | 	} | ||||||
| @@ -175,7 +174,7 @@ func attachDiskAndVerify(b *awsElasticBlockStoreMounter, xvdBeforeSet sets.Strin | |||||||
| 	for numRetries := 0; numRetries < maxRetries; numRetries++ { | 	for numRetries := 0; numRetries < maxRetries; numRetries++ { | ||||||
| 		var err error | 		var err error | ||||||
| 		if awsCloud == nil { | 		if awsCloud == nil { | ||||||
| 			awsCloud, err = getCloudProvider() | 			awsCloud, err = getCloudProvider(b.awsElasticBlockStore.plugin) | ||||||
| 			if err != nil || awsCloud == nil { | 			if err != nil || awsCloud == nil { | ||||||
| 				// Retry on error. See issue #11321 | 				// Retry on error. See issue #11321 | ||||||
| 				glog.Errorf("Error getting AWSCloudProvider while detaching PD %q: %v", b.volumeID, err) | 				glog.Errorf("Error getting AWSCloudProvider while detaching PD %q: %v", b.volumeID, err) | ||||||
| @@ -250,7 +249,7 @@ func detachDiskAndVerify(c *awsElasticBlockStoreUnmounter) { | |||||||
| 	for numRetries := 0; numRetries < maxRetries; numRetries++ { | 	for numRetries := 0; numRetries < maxRetries; numRetries++ { | ||||||
| 		var err error | 		var err error | ||||||
| 		if awsCloud == nil { | 		if awsCloud == nil { | ||||||
| 			awsCloud, err = getCloudProvider() | 			awsCloud, err = getCloudProvider(c.awsElasticBlockStore.plugin) | ||||||
| 			if err != nil || awsCloud == nil { | 			if err != nil || awsCloud == nil { | ||||||
| 				// Retry on error. See issue #11321 | 				// Retry on error. See issue #11321 | ||||||
| 				glog.Errorf("Error getting AWSCloudProvider while detaching PD %q: %v", c.volumeID, err) | 				glog.Errorf("Error getting AWSCloudProvider while detaching PD %q: %v", c.volumeID, err) | ||||||
| @@ -348,12 +347,19 @@ func pathExists(path string) (bool, error) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Return cloud provider | // Return cloud provider | ||||||
| func getCloudProvider() (*aws.AWSCloud, error) { | func getCloudProvider(plugin *awsElasticBlockStorePlugin) (*aws.AWSCloud, error) { | ||||||
| 	awsCloudProvider, err := cloudprovider.GetCloudProvider("aws", nil) | 	if plugin == nil { | ||||||
| 	if err != nil || awsCloudProvider == nil { | 		return nil, fmt.Errorf("Failed to get AWS Cloud Provider. plugin object is nil.") | ||||||
| 		return nil, err | 	} | ||||||
|  | 	if plugin.host == nil { | ||||||
|  | 		return nil, fmt.Errorf("Failed to get AWS Cloud Provider. plugin.host object is nil.") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// The conversion must be safe otherwise bug in GetCloudProvider() | 	cloudProvider := plugin.host.GetCloudProvider() | ||||||
| 	return awsCloudProvider.(*aws.AWSCloud), nil | 	awsCloudProvider, ok := cloudProvider.(*aws.AWSCloud) | ||||||
|  | 	if !ok || awsCloudProvider == nil { | ||||||
|  | 		return nil, fmt.Errorf("Failed to get AWS Cloud Provider. plugin.host.GetCloudProvider returned %v instead", cloudProvider) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return awsCloudProvider, nil | ||||||
| } | } | ||||||
|   | |||||||
| @@ -25,7 +25,6 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/golang/glog" | 	"github.com/golang/glog" | ||||||
| 	"k8s.io/kubernetes/pkg/cloudprovider" |  | ||||||
| 	gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce" | 	gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce" | ||||||
| 	"k8s.io/kubernetes/pkg/util/exec" | 	"k8s.io/kubernetes/pkg/util/exec" | ||||||
| 	"k8s.io/kubernetes/pkg/util/keymutex" | 	"k8s.io/kubernetes/pkg/util/keymutex" | ||||||
| @@ -114,7 +113,7 @@ func (util *GCEDiskUtil) DetachDisk(c *gcePersistentDiskUnmounter) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (util *GCEDiskUtil) DeleteVolume(d *gcePersistentDiskDeleter) error { | func (util *GCEDiskUtil) DeleteVolume(d *gcePersistentDiskDeleter) error { | ||||||
| 	cloud, err := getCloudProvider() | 	cloud, err := getCloudProvider(d.gcePersistentDisk.plugin) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| @@ -130,7 +129,7 @@ func (util *GCEDiskUtil) DeleteVolume(d *gcePersistentDiskDeleter) error { | |||||||
| // CreateVolume creates a GCE PD. | // CreateVolume creates a GCE PD. | ||||||
| // Returns: volumeID, volumeSizeGB, labels, error | // Returns: volumeID, volumeSizeGB, labels, error | ||||||
| func (gceutil *GCEDiskUtil) CreateVolume(c *gcePersistentDiskProvisioner) (string, int, map[string]string, error) { | func (gceutil *GCEDiskUtil) CreateVolume(c *gcePersistentDiskProvisioner) (string, int, map[string]string, error) { | ||||||
| 	cloud, err := getCloudProvider() | 	cloud, err := getCloudProvider(c.gcePersistentDisk.plugin) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return "", 0, nil, err | 		return "", 0, nil, err | ||||||
| 	} | 	} | ||||||
| @@ -171,7 +170,7 @@ func attachDiskAndVerify(b *gcePersistentDiskMounter, sdBeforeSet sets.String) ( | |||||||
| 	for numRetries := 0; numRetries < maxRetries; numRetries++ { | 	for numRetries := 0; numRetries < maxRetries; numRetries++ { | ||||||
| 		var err error | 		var err error | ||||||
| 		if gceCloud == nil { | 		if gceCloud == nil { | ||||||
| 			gceCloud, err = getCloudProvider() | 			gceCloud, err = getCloudProvider(b.gcePersistentDisk.plugin) | ||||||
| 			if err != nil || gceCloud == nil { | 			if err != nil || gceCloud == nil { | ||||||
| 				// Retry on error. See issue #11321 | 				// Retry on error. See issue #11321 | ||||||
| 				glog.Errorf("Error getting GCECloudProvider while detaching PD %q: %v", b.pdName, err) | 				glog.Errorf("Error getting GCECloudProvider while detaching PD %q: %v", b.pdName, err) | ||||||
| @@ -245,7 +244,7 @@ func detachDiskAndVerify(c *gcePersistentDiskUnmounter) { | |||||||
| 	for numRetries := 0; numRetries < maxRetries; numRetries++ { | 	for numRetries := 0; numRetries < maxRetries; numRetries++ { | ||||||
| 		var err error | 		var err error | ||||||
| 		if gceCloud == nil { | 		if gceCloud == nil { | ||||||
| 			gceCloud, err = getCloudProvider() | 			gceCloud, err = getCloudProvider(c.gcePersistentDisk.plugin) | ||||||
| 			if err != nil || gceCloud == nil { | 			if err != nil || gceCloud == nil { | ||||||
| 				// Retry on error. See issue #11321 | 				// Retry on error. See issue #11321 | ||||||
| 				glog.Errorf("Error getting GCECloudProvider while detaching PD %q: %v", c.pdName, err) | 				glog.Errorf("Error getting GCECloudProvider while detaching PD %q: %v", c.pdName, err) | ||||||
| @@ -342,14 +341,21 @@ func pathExists(path string) (bool, error) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Return cloud provider | // Return cloud provider | ||||||
| func getCloudProvider() (*gcecloud.GCECloud, error) { | func getCloudProvider(plugin *gcePersistentDiskPlugin) (*gcecloud.GCECloud, error) { | ||||||
| 	gceCloudProvider, err := cloudprovider.GetCloudProvider("gce", nil) | 	if plugin == nil { | ||||||
| 	if err != nil || gceCloudProvider == nil { | 		return nil, fmt.Errorf("Failed to get GCE Cloud Provider. plugin object is nil.") | ||||||
| 		return nil, err | 	} | ||||||
|  | 	if plugin.host == nil { | ||||||
|  | 		return nil, fmt.Errorf("Failed to get GCE Cloud Provider. plugin.host object is nil.") | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// The conversion must be safe otherwise bug in GetCloudProvider() | 	cloudProvider := plugin.host.GetCloudProvider() | ||||||
| 	return gceCloudProvider.(*gcecloud.GCECloud), nil | 	gceCloudProvider, ok := cloudProvider.(*gcecloud.GCECloud) | ||||||
|  | 	if !ok || gceCloudProvider == nil { | ||||||
|  | 		return nil, fmt.Errorf("Failed to get GCE Cloud Provider. plugin.host.GetCloudProvider returned %v instead", cloudProvider) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return gceCloudProvider, nil | ||||||
| } | } | ||||||
|  |  | ||||||
| // Calls "udevadm trigger --action=change" for newly created "/dev/sd*" drives (exist only in after set). | // Calls "udevadm trigger --action=change" for newly created "/dev/sd*" drives (exist only in after set). | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ var _ = KubeDescribe("Dynamic provisioning", func() { | |||||||
|  |  | ||||||
| 	KubeDescribe("DynamicProvisioner", func() { | 	KubeDescribe("DynamicProvisioner", func() { | ||||||
| 		It("should create and delete persistent volumes", func() { | 		It("should create and delete persistent volumes", func() { | ||||||
| 			SkipUnlessProviderIs("openstack", "gce", "aws") | 			SkipUnlessProviderIs("openstack", "gce", "aws", "gke") | ||||||
| 			By("creating a claim with a dynamic provisioning annotation") | 			By("creating a claim with a dynamic provisioning annotation") | ||||||
| 			claim := createClaim(ns) | 			claim := createClaim(ns) | ||||||
| 			defer func() { | 			defer func() { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 saadali
					saadali