From 194343267d7066a12928e9b9882aa131ef355330 Mon Sep 17 00:00:00 2001 From: Federico Simoncelli Date: Tue, 5 May 2015 10:10:24 -0400 Subject: [PATCH] cloudprovider: add the ProviderName method This patch adds the ProviderName method used to identify the cloud provider. Signed-off-by: Federico Simoncelli --- pkg/cloudprovider/aws/aws.go | 9 ++++++++- pkg/cloudprovider/cloud.go | 2 ++ pkg/cloudprovider/fake/fake.go | 7 +++++++ pkg/cloudprovider/gce/gce.go | 9 ++++++++- pkg/cloudprovider/mesos/mesos.go | 9 +++++++-- pkg/cloudprovider/openstack/openstack.go | 9 ++++++++- pkg/cloudprovider/ovirt/ovirt.go | 9 ++++++++- pkg/cloudprovider/rackspace/rackspace.go | 9 ++++++++- pkg/cloudprovider/vagrant/vagrant.go | 9 ++++++++- 9 files changed, 64 insertions(+), 8 deletions(-) diff --git a/pkg/cloudprovider/aws/aws.go b/pkg/cloudprovider/aws/aws.go index e116cf6bc66..64b5652b62a 100644 --- a/pkg/cloudprovider/aws/aws.go +++ b/pkg/cloudprovider/aws/aws.go @@ -41,6 +41,8 @@ import ( "github.com/golang/glog" ) +const ProviderName = "aws" + // Abstraction over EC2, to allow mocking/other implementations type EC2 interface { // Query EC2 for instances matching the filter @@ -250,7 +252,7 @@ func (s *awsSdkEC2) DeleteVolume(volumeID string) (resp *ec2.DeleteVolumeOutput, } func init() { - cloudprovider.RegisterCloudProvider("aws", func(config io.Reader) (cloudprovider.Interface, error) { + cloudprovider.RegisterCloudProvider(ProviderName, func(config io.Reader) (cloudprovider.Interface, error) { metadata := &awsSdkMetadata{} return newAWSCloud(config, getAuth, metadata) }) @@ -366,6 +368,11 @@ func (aws *AWSCloud) Clusters() (cloudprovider.Clusters, bool) { return nil, false } +// ProviderName returns the cloud provider ID. +func (aws *AWSCloud) ProviderName() string { + return ProviderName +} + // TCPLoadBalancer returns an implementation of TCPLoadBalancer for Amazon Web Services. func (aws *AWSCloud) TCPLoadBalancer() (cloudprovider.TCPLoadBalancer, bool) { return nil, false diff --git a/pkg/cloudprovider/cloud.go b/pkg/cloudprovider/cloud.go index ab5feea5b7a..499555630d8 100644 --- a/pkg/cloudprovider/cloud.go +++ b/pkg/cloudprovider/cloud.go @@ -36,6 +36,8 @@ type Interface interface { Clusters() (Clusters, bool) // Routes returns a routes interface along with whether the interface is supported. Routes() (Routes, bool) + // ProviderName returns the cloud provider ID. + ProviderName() string } // Clusters is an abstract, pluggable interface for clusters of containers. diff --git a/pkg/cloudprovider/fake/fake.go b/pkg/cloudprovider/fake/fake.go index d9db3b6c187..6be5618fcd2 100644 --- a/pkg/cloudprovider/fake/fake.go +++ b/pkg/cloudprovider/fake/fake.go @@ -26,6 +26,8 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider" ) +const ProviderName = "fake" + // FakeBalancer is a fake storage of balancer information type FakeBalancer struct { Name string @@ -81,6 +83,11 @@ func (f *FakeCloud) Clusters() (cloudprovider.Clusters, bool) { return f, true } +// ProviderName returns the cloud provider ID. +func (f *FakeCloud) ProviderName() string { + return ProviderName +} + // TCPLoadBalancer returns a fake implementation of TCPLoadBalancer. // Actually it just returns f itself. func (f *FakeCloud) TCPLoadBalancer() (cloudprovider.TCPLoadBalancer, bool) { diff --git a/pkg/cloudprovider/gce/gce.go b/pkg/cloudprovider/gce/gce.go index 863bc5ddae5..ffde04d696a 100644 --- a/pkg/cloudprovider/gce/gce.go +++ b/pkg/cloudprovider/gce/gce.go @@ -42,6 +42,8 @@ import ( "google.golang.org/cloud/compute/metadata" ) +const ProviderName = "gce" + const EXTERNAL_IP_METADATA_URL = "http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip" // GCECloud is an implementation of Interface, TCPLoadBalancer and Instances for Google Compute Engine. @@ -67,7 +69,7 @@ type Config struct { } func init() { - cloudprovider.RegisterCloudProvider("gce", func(config io.Reader) (cloudprovider.Interface, error) { return newGCECloud(config) }) + cloudprovider.RegisterCloudProvider(ProviderName, func(config io.Reader) (cloudprovider.Interface, error) { return newGCECloud(config) }) } func getMetadata(url string) (string, error) { @@ -182,6 +184,11 @@ func (gce *GCECloud) Clusters() (cloudprovider.Clusters, bool) { return gce, true } +// ProviderName returns the cloud provider ID. +func (gce *GCECloud) ProviderName() string { + return ProviderName +} + // TCPLoadBalancer returns an implementation of TCPLoadBalancer for Google Compute Engine. func (gce *GCECloud) TCPLoadBalancer() (cloudprovider.TCPLoadBalancer, bool) { return gce, true diff --git a/pkg/cloudprovider/mesos/mesos.go b/pkg/cloudprovider/mesos/mesos.go index 97cd5407d1c..cd2560c6dae 100644 --- a/pkg/cloudprovider/mesos/mesos.go +++ b/pkg/cloudprovider/mesos/mesos.go @@ -31,7 +31,7 @@ import ( ) var ( - PluginName = "mesos" + ProviderName = "mesos" CloudProvider *MesosCloud noHostNameSpecified = errors.New("No hostname specified") @@ -39,7 +39,7 @@ var ( func init() { cloudprovider.RegisterCloudProvider( - PluginName, + ProviderName, func(configReader io.Reader) (cloudprovider.Interface, error) { provider, err := newMesosCloud(configReader) if err == nil { @@ -110,6 +110,11 @@ func (c *MesosCloud) Routes() (cloudprovider.Routes, bool) { return nil, false } +// ProviderName returns the cloud provider ID. +func (c *MesosCloud) ProviderName() string { + return ProviderName +} + // ListClusters lists the names of the available Mesos clusters. func (c *MesosCloud) ListClusters() ([]string, error) { // Always returns a single cluster (this one!) diff --git a/pkg/cloudprovider/openstack/openstack.go b/pkg/cloudprovider/openstack/openstack.go index fb855bec152..9c722307480 100644 --- a/pkg/cloudprovider/openstack/openstack.go +++ b/pkg/cloudprovider/openstack/openstack.go @@ -42,6 +42,8 @@ import ( "github.com/golang/glog" ) +const ProviderName = "openstack" + var ErrNotFound = errors.New("Failed to find object") var ErrMultipleResults = errors.New("Multiple results where only one expected") var ErrNoAddressFound = errors.New("No address found for host") @@ -99,7 +101,7 @@ type Config struct { } func init() { - cloudprovider.RegisterCloudProvider("openstack", func(config io.Reader) (cloudprovider.Interface, error) { + cloudprovider.RegisterCloudProvider(ProviderName, func(config io.Reader) (cloudprovider.Interface, error) { cfg, err := readConfig(config) if err != nil { return nil, err @@ -394,6 +396,11 @@ func (os *OpenStack) Clusters() (cloudprovider.Clusters, bool) { return nil, false } +// ProviderName returns the cloud provider ID. +func (os *OpenStack) ProviderName() string { + return ProviderName +} + type LoadBalancer struct { network *gophercloud.ServiceClient compute *gophercloud.ServiceClient diff --git a/pkg/cloudprovider/ovirt/ovirt.go b/pkg/cloudprovider/ovirt/ovirt.go index f4325a4f7d8..ad8e59e70e2 100644 --- a/pkg/cloudprovider/ovirt/ovirt.go +++ b/pkg/cloudprovider/ovirt/ovirt.go @@ -33,6 +33,8 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider" ) +const ProviderName = "ovirt" + type OVirtInstance struct { UUID string Name string @@ -75,7 +77,7 @@ type XmlVmsList struct { } func init() { - cloudprovider.RegisterCloudProvider("ovirt", + cloudprovider.RegisterCloudProvider(ProviderName, func(config io.Reader) (cloudprovider.Interface, error) { return newOVirtCloud(config) }) @@ -115,6 +117,11 @@ func (aws *OVirtCloud) Clusters() (cloudprovider.Clusters, bool) { return nil, false } +// ProviderName returns the cloud provider ID. +func (v *OVirtCloud) ProviderName() string { + return ProviderName +} + // TCPLoadBalancer returns an implementation of TCPLoadBalancer for oVirt cloud func (v *OVirtCloud) TCPLoadBalancer() (cloudprovider.TCPLoadBalancer, bool) { return nil, false diff --git a/pkg/cloudprovider/rackspace/rackspace.go b/pkg/cloudprovider/rackspace/rackspace.go index 72fce7bcc00..ead98594b88 100644 --- a/pkg/cloudprovider/rackspace/rackspace.go +++ b/pkg/cloudprovider/rackspace/rackspace.go @@ -38,6 +38,8 @@ import ( "github.com/golang/glog" ) +const ProviderName = "rackspace" + var ErrNotFound = errors.New("Failed to find object") var ErrMultipleResults = errors.New("Multiple results where only one expected") var ErrNoAddressFound = errors.New("No address found for host") @@ -89,7 +91,7 @@ type Config struct { } func init() { - cloudprovider.RegisterCloudProvider("rackspace", func(config io.Reader) (cloudprovider.Interface, error) { + cloudprovider.RegisterCloudProvider(ProviderName, func(config io.Reader) (cloudprovider.Interface, error) { cfg, err := readConfig(config) if err != nil { return nil, err @@ -399,6 +401,11 @@ func (os *Rackspace) Clusters() (cloudprovider.Clusters, bool) { return nil, false } +// ProviderName returns the cloud provider ID. +func (os *Rackspace) ProviderName() string { + return ProviderName +} + func (os *Rackspace) TCPLoadBalancer() (cloudprovider.TCPLoadBalancer, bool) { return nil, false } diff --git a/pkg/cloudprovider/vagrant/vagrant.go b/pkg/cloudprovider/vagrant/vagrant.go index fcbb1f04ca2..58542d5b37f 100644 --- a/pkg/cloudprovider/vagrant/vagrant.go +++ b/pkg/cloudprovider/vagrant/vagrant.go @@ -31,6 +31,8 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider" ) +const ProviderName = "vagrant" + // VagrantCloud is an implementation of Interface, TCPLoadBalancer and Instances for developer managed Vagrant cluster. type VagrantCloud struct { saltURL string @@ -40,7 +42,7 @@ type VagrantCloud struct { } func init() { - cloudprovider.RegisterCloudProvider("vagrant", func(config io.Reader) (cloudprovider.Interface, error) { return newVagrantCloud() }) + cloudprovider.RegisterCloudProvider(ProviderName, func(config io.Reader) (cloudprovider.Interface, error) { return newVagrantCloud() }) } // SaltToken is an authorization token required by Salt REST API. @@ -84,6 +86,11 @@ func (v *VagrantCloud) Clusters() (cloudprovider.Clusters, bool) { return nil, false } +// ProviderName returns the cloud provider ID. +func (v *VagrantCloud) ProviderName() string { + return ProviderName +} + // TCPLoadBalancer returns an implementation of TCPLoadBalancer for Vagrant cloud. func (v *VagrantCloud) TCPLoadBalancer() (cloudprovider.TCPLoadBalancer, bool) { return nil, false