fake

package
v0.30.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 17, 2024 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package fake is a test-double implementation of cloudprovider Interface, LoadBalancer and Instances. It is useful for testing.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Balancer

type Balancer struct {
	Name           string
	Region         string
	LoadBalancerIP string
	Ports          []v1.ServicePort
	Hosts          []*v1.Node
}

Balancer is a fake storage of balancer information

type Cloud

type Cloud struct {
	DisableInstances     bool
	DisableRoutes        bool
	DisableLoadBalancers bool
	DisableZones         bool
	DisableClusters      bool

	Exists bool
	Err    error

	EnableInstancesV2       bool
	ExistsByProviderID      bool
	ErrByProviderID         error
	NodeShutdown            bool
	ErrShutdownByProviderID error
	MetadataErr             error

	Calls     []string
	Addresses []v1.NodeAddress

	ExtID         map[types.NodeName]string
	ExtIDErr      map[types.NodeName]error
	InstanceTypes map[types.NodeName]string
	Machines      []types.NodeName
	NodeResources v1.ResourceList
	ClusterList   []string
	MasterName    string
	ExternalIP    net.IP
	Balancers     map[string]Balancer

	UpdateCalls []UpdateBalancerCall

	EnsureCalls  []UpdateBalancerCall
	EnsureCallCb func(UpdateBalancerCall)
	UpdateCallCb func(UpdateBalancerCall)
	RouteMap     map[string]*Route
	Lock         sync.Mutex
	Provider     string
	ProviderID   map[types.NodeName]string

	cloudprovider.Zone
	VolumeLabelMap   map[string]map[string]string
	AdditionalLabels map[string]string

	OverrideInstanceMetadata func(ctx context.Context, node *v1.Node) (*cloudprovider.InstanceMetadata, error)

	RequestDelay time.Duration
	// contains filtered or unexported fields
}

Cloud is a test-double implementation of Interface, LoadBalancer, Instances, and Routes. It is useful for testing.

func (*Cloud) AddSSHKeyToAllInstances

func (f *Cloud) AddSSHKeyToAllInstances(ctx context.Context, user string, keyData []byte) error

AddSSHKeyToAllInstances adds an SSH public key as a legal identity for all instances expected format for the key is standard ssh-keygen format: <protocol> <blob>

func (*Cloud) ClearCalls

func (f *Cloud) ClearCalls()

ClearCalls clears internal record of method calls to this Cloud.

func (*Cloud) Clusters

func (f *Cloud) Clusters() (cloudprovider.Clusters, bool)

Clusters returns a clusters interface. Also returns true if the interface is supported, false otherwise.

func (*Cloud) CreateRoute

func (f *Cloud) CreateRoute(ctx context.Context, clusterName string, nameHint string, route *cloudprovider.Route) error

CreateRoute creates the described managed route route.Name will be ignored, although the cloud-provider may use nameHint to create a more user-meaningful name.

func (*Cloud) CurrentNodeName

func (f *Cloud) CurrentNodeName(ctx context.Context, hostname string) (types.NodeName, error)

CurrentNodeName returns the name of the node we are currently running on On most clouds (e.g. GCE) this is the hostname, so we provide the hostname

func (*Cloud) DeleteRoute

func (f *Cloud) DeleteRoute(ctx context.Context, clusterName string, route *cloudprovider.Route) error

DeleteRoute deletes the specified managed route Route should be as returned by ListRoutes

func (*Cloud) EnsureLoadBalancer

func (f *Cloud) EnsureLoadBalancer(ctx context.Context, clusterName string, service *v1.Service, nodes []*v1.Node) (*v1.LoadBalancerStatus, error)

EnsureLoadBalancer is a test-spy implementation of LoadBalancer.EnsureLoadBalancer. It adds an entry "create" into the internal method call record.

func (*Cloud) EnsureLoadBalancerDeleted

func (f *Cloud) EnsureLoadBalancerDeleted(ctx context.Context, clusterName string, service *v1.Service) error

EnsureLoadBalancerDeleted is a test-spy implementation of LoadBalancer.EnsureLoadBalancerDeleted. It adds an entry "delete" into the internal method call record.

func (*Cloud) GetLabelsForVolume

func (f *Cloud) GetLabelsForVolume(ctx context.Context, pv *v1.PersistentVolume) (map[string]string, error)

GetLabelsForVolume returns the labels for a PersistentVolume

func (*Cloud) GetLoadBalancer

func (f *Cloud) GetLoadBalancer(ctx context.Context, clusterName string, service *v1.Service) (*v1.LoadBalancerStatus, bool, error)

GetLoadBalancer is a stub implementation of LoadBalancer.GetLoadBalancer.

func (*Cloud) GetLoadBalancerName

func (f *Cloud) GetLoadBalancerName(ctx context.Context, clusterName string, service *v1.Service) string

GetLoadBalancerName is a stub implementation of LoadBalancer.GetLoadBalancerName.

func (*Cloud) GetZone

func (f *Cloud) GetZone(ctx context.Context) (cloudprovider.Zone, error)

GetZone returns the Zone containing the current failure zone and locality region that the program is running in In most cases, this method is called from the kubelet querying a local metadata service to acquire its zone. For the case of external cloud providers, use GetZoneByProviderID or GetZoneByNodeName since GetZone can no longer be called from the kubelets.

func (*Cloud) GetZoneByNodeName

func (f *Cloud) GetZoneByNodeName(ctx context.Context, nodeName types.NodeName) (cloudprovider.Zone, error)

GetZoneByNodeName implements Zones.GetZoneByNodeName This is particularly useful in external cloud providers where the kubelet does not initialize node data.

func (*Cloud) GetZoneByProviderID

func (f *Cloud) GetZoneByProviderID(ctx context.Context, providerID string) (cloudprovider.Zone, error)

GetZoneByProviderID implements Zones.GetZoneByProviderID This is particularly useful in external cloud providers where the kubelet does not initialize node data.

func (*Cloud) HasClusterID

func (f *Cloud) HasClusterID() bool

HasClusterID returns true if the cluster has a clusterID

func (*Cloud) Initialize

func (f *Cloud) Initialize(clientBuilder cloudprovider.ControllerClientBuilder, stop <-chan struct{})

Initialize passes a Kubernetes clientBuilder interface to the cloud provider

func (*Cloud) InstanceExists added in v0.19.0

func (f *Cloud) InstanceExists(ctx context.Context, node *v1.Node) (bool, error)

InstanceExists returns true if the instance corresponding to a node still exists and is running. If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.

func (*Cloud) InstanceExistsByProviderID

func (f *Cloud) InstanceExistsByProviderID(ctx context.Context, providerID string) (bool, error)

InstanceExistsByProviderID returns true if the instance with the given provider id still exists and is running. If false is returned with no error, the instance will be immediately deleted by the cloud controller manager.

func (*Cloud) InstanceID

func (f *Cloud) InstanceID(ctx context.Context, nodeName types.NodeName) (string, error)

InstanceID returns the cloud provider ID of the node with the specified Name, unless an entry for the node exists in ExtIDError, in which case it returns the desired error (to facilitate testing of error handling).

func (*Cloud) InstanceMetadata added in v0.19.0

func (f *Cloud) InstanceMetadata(ctx context.Context, node *v1.Node) (*cloudprovider.InstanceMetadata, error)

InstanceMetadata returns metadata of the specified instance.

func (*Cloud) InstanceShutdown added in v0.19.0

func (f *Cloud) InstanceShutdown(ctx context.Context, node *v1.Node) (bool, error)

InstanceShutdown returns true if the instances is in safe state to detach volumes

func (*Cloud) InstanceShutdownByProviderID

func (f *Cloud) InstanceShutdownByProviderID(ctx context.Context, providerID string) (bool, error)

InstanceShutdownByProviderID returns true if the instances is in safe state to detach volumes

func (*Cloud) InstanceType

func (f *Cloud) InstanceType(ctx context.Context, instance types.NodeName) (string, error)

InstanceType returns the type of the specified instance.

func (*Cloud) InstanceTypeByProviderID

func (f *Cloud) InstanceTypeByProviderID(ctx context.Context, providerID string) (string, error)

InstanceTypeByProviderID returns the type of the specified instance.

func (*Cloud) Instances

func (f *Cloud) Instances() (cloudprovider.Instances, bool)

Instances returns a fake implementation of Instances.

Actually it just returns f itself.

func (*Cloud) InstancesV2 added in v0.19.0

func (f *Cloud) InstancesV2() (cloudprovider.InstancesV2, bool)

InstancesV2 returns a fake implementation of InstancesV2.

Actually it just returns f itself.

func (*Cloud) List

func (f *Cloud) List(filter string) ([]types.NodeName, error)

List is a test-spy implementation of Instances.List. It adds an entry "list" into the internal method call record.

func (*Cloud) ListClusters

func (f *Cloud) ListClusters(ctx context.Context) ([]string, error)

ListClusters lists the names of the available clusters.

func (*Cloud) ListRoutes

func (f *Cloud) ListRoutes(ctx context.Context, clusterName string) ([]*cloudprovider.Route, error)

ListRoutes lists all managed routes that belong to the specified clusterName

func (*Cloud) LoadBalancer

func (f *Cloud) LoadBalancer() (cloudprovider.LoadBalancer, bool)

LoadBalancer returns a fake implementation of LoadBalancer. Actually it just returns f itself.

func (*Cloud) Master

func (f *Cloud) Master(ctx context.Context, name string) (string, error)

Master gets back the address (either DNS name or IP address) of the master node for the cluster.

func (*Cloud) NodeAddresses

func (f *Cloud) NodeAddresses(ctx context.Context, instance types.NodeName) ([]v1.NodeAddress, error)

NodeAddresses is a test-spy implementation of Instances.NodeAddresses. It adds an entry "node-addresses" into the internal method call record.

func (*Cloud) NodeAddressesByProviderID

func (f *Cloud) NodeAddressesByProviderID(ctx context.Context, providerID string) ([]v1.NodeAddress, error)

NodeAddressesByProviderID is a test-spy implementation of Instances.NodeAddressesByProviderID. It adds an entry "node-addresses-by-provider-id" into the internal method call record.

func (*Cloud) ProviderName

func (f *Cloud) ProviderName() string

ProviderName returns the cloud provider ID.

func (*Cloud) Routes

func (f *Cloud) Routes() (cloudprovider.Routes, bool)

Routes returns a routes interface along with whether the interface is supported.

func (*Cloud) SetNodeAddresses

func (f *Cloud) SetNodeAddresses(nodeAddresses []v1.NodeAddress)

SetNodeAddresses sets the addresses for a node

func (*Cloud) UpdateLoadBalancer

func (f *Cloud) UpdateLoadBalancer(ctx context.Context, clusterName string, service *v1.Service, nodes []*v1.Node) error

UpdateLoadBalancer is a test-spy implementation of LoadBalancer.UpdateLoadBalancer. It adds an entry "update" into the internal method call record.

func (*Cloud) Zones

func (f *Cloud) Zones() (cloudprovider.Zones, bool)

Zones returns a zones interface. Also returns true if the interface is supported, false otherwise.

type Route

type Route struct {
	ClusterName string
	Route       cloudprovider.Route
}

Route is a representation of an advanced routing rule.

type UpdateBalancerCall

type UpdateBalancerCall struct {
	Service *v1.Service
	Hosts   []*v1.Node
}

UpdateBalancerCall represents a fake call to update load balancers

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL