mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 15:05:27 +00:00
compile check to ensure cloud providers implement cloud interfaces
This commit is contained in:
parent
6be4f1bbf3
commit
4b0f2ab442
@ -261,9 +261,6 @@ const DefaultVolumeType = "gp2"
|
||||
// Used to call recognizeWellKnownRegions just once
|
||||
var once sync.Once
|
||||
|
||||
// AWS implements PVLabeler.
|
||||
var _ cloudprovider.PVLabeler = (*Cloud)(nil)
|
||||
|
||||
// Services is an abstraction over AWS, to allow mocking/other implementations
|
||||
type Services interface {
|
||||
Compute(region string) (EC2, error)
|
||||
@ -480,6 +477,13 @@ type InstanceGroupInfo interface {
|
||||
CurrentSize() (int, error)
|
||||
}
|
||||
|
||||
var _ cloudprovider.Interface = (*Cloud)(nil)
|
||||
var _ cloudprovider.Instances = (*Cloud)(nil)
|
||||
var _ cloudprovider.LoadBalancer = (*Cloud)(nil)
|
||||
var _ cloudprovider.Routes = (*Cloud)(nil)
|
||||
var _ cloudprovider.Zones = (*Cloud)(nil)
|
||||
var _ cloudprovider.PVLabeler = (*Cloud)(nil)
|
||||
|
||||
// Cloud is an implementation of Interface, LoadBalancer and Instances for Amazon Web Services.
|
||||
type Cloud struct {
|
||||
ec2 EC2
|
||||
|
@ -71,9 +71,6 @@ var (
|
||||
defaultExcludeMasterFromStandardLB = true
|
||||
)
|
||||
|
||||
// Azure implements PVLabeler.
|
||||
var _ cloudprovider.PVLabeler = (*Cloud)(nil)
|
||||
|
||||
// Config holds the configuration parsed from the --cloud-config flag
|
||||
// All fields are required unless otherwise specified
|
||||
type Config struct {
|
||||
@ -143,6 +140,13 @@ type Config struct {
|
||||
MaximumLoadBalancerRuleCount int `json:"maximumLoadBalancerRuleCount" yaml:"maximumLoadBalancerRuleCount"`
|
||||
}
|
||||
|
||||
var _ cloudprovider.Interface = (*Cloud)(nil)
|
||||
var _ cloudprovider.Instances = (*Cloud)(nil)
|
||||
var _ cloudprovider.LoadBalancer = (*Cloud)(nil)
|
||||
var _ cloudprovider.Routes = (*Cloud)(nil)
|
||||
var _ cloudprovider.Zones = (*Cloud)(nil)
|
||||
var _ cloudprovider.PVLabeler = (*Cloud)(nil)
|
||||
|
||||
// Cloud holds the config and clients
|
||||
type Cloud struct {
|
||||
Config
|
||||
|
@ -120,6 +120,11 @@ func newCSCloud(cfg *CSConfig) (*CSCloud, error) {
|
||||
return cs, nil
|
||||
}
|
||||
|
||||
var _ cloudprovider.Interface = (*CSCloud)(nil)
|
||||
var _ cloudprovider.Instances = (*CSCloud)(nil)
|
||||
var _ cloudprovider.LoadBalancer = (*CSCloud)(nil)
|
||||
var _ cloudprovider.Zones = (*CSCloud)(nil)
|
||||
|
||||
// Initialize passes a Kubernetes clientBuilder interface to the cloud provider
|
||||
func (cs *CSCloud) Initialize(clientBuilder cloudprovider.ControllerClientBuilder, stop <-chan struct{}) {
|
||||
}
|
||||
|
@ -31,6 +31,9 @@ import (
|
||||
"k8s.io/klog"
|
||||
)
|
||||
|
||||
var _ cloudprovider.Instances = (*metadata)(nil)
|
||||
var _ cloudprovider.Zones = (*metadata)(nil)
|
||||
|
||||
type metadata struct {
|
||||
dhcpServer string
|
||||
zone string
|
||||
|
@ -45,6 +45,14 @@ type FakeUpdateBalancerCall struct {
|
||||
Hosts []*v1.Node
|
||||
}
|
||||
|
||||
var _ cloudprovider.Interface = (*FakeCloud)(nil)
|
||||
var _ cloudprovider.Instances = (*FakeCloud)(nil)
|
||||
var _ cloudprovider.LoadBalancer = (*FakeCloud)(nil)
|
||||
var _ cloudprovider.Routes = (*FakeCloud)(nil)
|
||||
var _ cloudprovider.Zones = (*FakeCloud)(nil)
|
||||
var _ cloudprovider.PVLabeler = (*FakeCloud)(nil)
|
||||
var _ cloudprovider.Clusters = (*FakeCloud)(nil)
|
||||
|
||||
// FakeCloud is a test-double implementation of Interface, LoadBalancer, Instances, and Routes. It is useful for testing.
|
||||
type FakeCloud struct {
|
||||
Exists bool
|
||||
|
@ -98,6 +98,14 @@ type gceObject interface {
|
||||
MarshalJSON() ([]byte, error)
|
||||
}
|
||||
|
||||
var _ cloudprovider.Interface = (*Cloud)(nil)
|
||||
var _ cloudprovider.Instances = (*Cloud)(nil)
|
||||
var _ cloudprovider.LoadBalancer = (*Cloud)(nil)
|
||||
var _ cloudprovider.Routes = (*Cloud)(nil)
|
||||
var _ cloudprovider.Zones = (*Cloud)(nil)
|
||||
var _ cloudprovider.PVLabeler = (*Cloud)(nil)
|
||||
var _ cloudprovider.Clusters = (*Cloud)(nil)
|
||||
|
||||
// Cloud is an implementation of Interface, LoadBalancer and Instances for Google Compute Engine.
|
||||
type Cloud struct {
|
||||
// ClusterID contains functionality for getting (and initializing) the ingress-uid. Call Cloud.Initialize()
|
||||
@ -765,9 +773,6 @@ func isProjectNumber(idOrNumber string) bool {
|
||||
return err == nil
|
||||
}
|
||||
|
||||
// Cloud implements cloudprovider.Interface.
|
||||
var _ cloudprovider.Interface = (*Cloud)(nil)
|
||||
|
||||
func gceNetworkURL(apiEndpoint, project, network string) string {
|
||||
if apiEndpoint == "" {
|
||||
apiEndpoint = gceComputeAPIEndpoint
|
||||
|
@ -126,6 +126,9 @@ type MetadataOpts struct {
|
||||
RequestTimeout MyDuration `gcfg:"request-timeout"`
|
||||
}
|
||||
|
||||
var _ cloudprovider.Interface = (*OpenStack)(nil)
|
||||
var _ cloudprovider.Zones = (*OpenStack)(nil)
|
||||
|
||||
// OpenStack is an implementation of cloud provider Interface for OpenStack.
|
||||
type OpenStack struct {
|
||||
provider *gophercloud.ProviderClient
|
||||
|
@ -30,6 +30,8 @@ import (
|
||||
cloudprovider "k8s.io/cloud-provider"
|
||||
)
|
||||
|
||||
var _ cloudprovider.Instances = (*Instances)(nil)
|
||||
|
||||
// Instances encapsulates an implementation of Instances for OpenStack.
|
||||
type Instances struct {
|
||||
compute *gophercloud.ServiceClient
|
||||
|
@ -78,6 +78,8 @@ const (
|
||||
ServiceAnnotationLoadBalancerInternal = "service.beta.kubernetes.io/openstack-internal-load-balancer"
|
||||
)
|
||||
|
||||
var _ cloudprovider.LoadBalancer = (*LbaasV2)(nil)
|
||||
|
||||
// LbaasV2 is a LoadBalancer implementation for Neutron LBaaS v2 API
|
||||
type LbaasV2 struct {
|
||||
LoadBalancer
|
||||
|
@ -33,6 +33,8 @@ import (
|
||||
|
||||
var errNoRouterID = errors.New("router-id not set in cloud provider config")
|
||||
|
||||
var _ cloudprovider.Routes = (*Routes)(nil)
|
||||
|
||||
// Routes implements the cloudprovider.Routes for OpenStack clouds
|
||||
type Routes struct {
|
||||
compute *gophercloud.ServiceClient
|
||||
|
@ -49,6 +49,9 @@ type Instance struct {
|
||||
// InstanceMap provides the map of Ovirt instances.
|
||||
type InstanceMap map[string]Instance
|
||||
|
||||
var _ cloudprovider.Interface = (*Cloud)(nil)
|
||||
var _ cloudprovider.Instances = (*Cloud)(nil)
|
||||
|
||||
// Cloud is an implementation of the cloud provider interface for Ovirt.
|
||||
type Cloud struct {
|
||||
VmsRequest *url.URL
|
||||
|
@ -55,6 +55,10 @@ const (
|
||||
// overrideIP = true in cloud config file. Default value is false.
|
||||
var overrideIP bool = false
|
||||
|
||||
var _ cloudprovider.Interface = (*PCCloud)(nil)
|
||||
var _ cloudprovider.Instances = (*PCCloud)(nil)
|
||||
var _ cloudprovider.Zones = (*PCCloud)(nil)
|
||||
|
||||
// Photon is an implementation of the cloud provider interface for Photon Controller.
|
||||
type PCCloud struct {
|
||||
cfg *PCConfig
|
||||
|
@ -76,6 +76,10 @@ var (
|
||||
ErrPasswordMissing = errors.New(MissingPasswordErrMsg)
|
||||
)
|
||||
|
||||
var _ cloudprovider.Interface = (*VSphere)(nil)
|
||||
var _ cloudprovider.Instances = (*VSphere)(nil)
|
||||
var _ cloudprovider.Zones = (*VSphere)(nil)
|
||||
|
||||
// VSphere is an implementation of cloud provider Interface for VSphere.
|
||||
type VSphere struct {
|
||||
cfg *VSphereConfig
|
||||
|
Loading…
Reference in New Issue
Block a user