Documentation

Index

Constants

View Source
const (
	// ExpectationsTimeout defines the length of time that a dormant
	// controller will wait for an expectation to be satisfied. It is
	// specifically targeted at the case where some problem prevents an update
	// of expectations, without it the controller could stay asleep forever. This should
	// be set based on the expected latency of watch events.
	ExpectationsTimeout = 5 * time.Minute
)
View Source
const (
	// ServiceAccountName will be a service account that can run the installer and then
	// upload artifacts to the cluster's namespace.
	ServiceAccountName = "cluster-installer"
)

Variables

View Source
var ExpKeyFunc = func(obj interface{}) (string, error) {
	if e, ok := obj.(*ControlleeExpectations); ok {
		return e.key, nil
	}
	return "", fmt.Errorf("Could not find key for obj %#v", obj)
}

    ExpKeyFunc to parse out the key from a ControlleeExpectation

    Functions

    func AddAdditionalKubeconfigCAs

    func AddAdditionalKubeconfigCAs(data []byte) ([]byte, error)

      AddAdditionalKubeconfigCAs adds additional certificate authorities to a given kubeconfig

      func AddControllerMetricsTransportWrapper

      func AddControllerMetricsTransportWrapper(cfg *rest.Config, controllerName string, remote bool)

        AddControllerMetricsTransportWrapper adds a transport wrapper to the given rest config which exposes metrics based on the requests being made.

        func AddFinalizer

        func AddFinalizer(object metav1.Object, finalizer string)

          AddFinalizer adds a finalizer to the given object

          func AddTypeMeta

          func AddTypeMeta(objects []runtime.RawExtension, scheme *runtime.Scheme) ([]runtime.RawExtension, error)

            AddTypeMeta adds type metadata to objects in a list of RawExtension TypeMeta is needed for proper serialization/deserialization

            func CalculateJobSpecHash

            func CalculateJobSpecHash(job *batchv1.Job) (string, error)

              CalculateJobSpecHash returns a hash of the job.Spec.

              func DNSZoneName

              func DNSZoneName(cdName string) string

                DNSZoneName returns the predictable name for a DNSZone for the given ClusterDeployment.

                func DeleteFinalizer

                func DeleteFinalizer(object metav1.Object, finalizer string)

                  DeleteFinalizer removes a finalizer from the given object

                  func Dotted

                  func Dotted(domain string) string

                    Dotted adds a trailing dot to a domain if it doesn't exist.

                    func FindClusterDeploymentCondition

                    func FindClusterDeploymentCondition(conditions []hivev1.ClusterDeploymentCondition, conditionType hivev1.ClusterDeploymentConditionType) *hivev1.ClusterDeploymentCondition

                      FindClusterDeploymentCondition finds in the condition that has the specified condition type in the given list. If none exists, then returns nil.

                      func FindClusterProvisionCondition

                      func FindClusterProvisionCondition(conditions []hivev1.ClusterProvisionCondition, conditionType hivev1.ClusterProvisionConditionType) *hivev1.ClusterProvisionCondition

                        FindClusterProvisionCondition finds in the condition that has the specified condition type in the given list. If none exists, then returns nil.

                        func FindDNSZoneCondition

                        func FindDNSZoneCondition(conditions []hivev1.DNSZoneCondition, conditionType hivev1.DNSZoneConditionType) *hivev1.DNSZoneCondition

                          FindDNSZoneCondition finds in the condition that has the specified condition type in the given list. If none exists, then returns nil.

                          func FindMachinePoolCondition

                          func FindMachinePoolCondition(conditions []hivev1.MachinePoolCondition, conditionType hivev1.MachinePoolConditionType) *hivev1.MachinePoolCondition

                            FindMachinePoolCondition finds in the condition that has the specified condition type in the given list. If none exists, then returns nil.

                            func FindSyncCondition

                            func FindSyncCondition(conditions []hivev1.SyncCondition, conditionType hivev1.SyncConditionType) *hivev1.SyncCondition

                              FindSyncCondition finds in the condition that has the specified condition type in the given list. If none exists, then returns nil.

                              func GetChecksumOfObject

                              func GetChecksumOfObject(object interface{}) (string, error)

                                GetChecksumOfObject returns the md5sum hash of the object passed in.

                                func GetChecksumOfObjects

                                func GetChecksumOfObjects(objects ...interface{}) (string, error)

                                  GetChecksumOfObjects returns the md5sum hash of the objects passed in.

                                  func GetConcurrentReconciles

                                  func GetConcurrentReconciles() int

                                    GetConcurrentReconciles returns the number of goroutines each controller should use for parallel processing of their queue. For now this is a static value of 5. In future this may be read from an env var set by the operator, and driven by HiveConfig.

                                    func GetRuntimeObjects

                                    func GetRuntimeObjects(c client.Client, typesToList []runtime.Object, namespace string) ([]runtime.Object, error)

                                      GetRuntimeObjects returns a slice of runtime objects returned from the kubernetes client based on the passed in list of types to return.

                                      func HasFinalizer

                                      func HasFinalizer(object metav1.Object, finalizer string) bool

                                        HasFinalizer returns true if the given object has the given finalizer

                                        func IsFailed

                                        func IsFailed(job *batchv1.Job) bool

                                          IsFailed returns true if the job failed

                                          func IsFinished

                                          func IsFinished(job *batchv1.Job) bool

                                            IsFinished returns true if the job completed (succeeded or failed)

                                            func IsSuccessful

                                            func IsSuccessful(job *batchv1.Job) bool

                                              IsSuccessful returns true if the job was successful

                                              func LoadSecretData

                                              func LoadSecretData(c client.Client, secretName, namespace, dataKey string) (string, error)

                                                LoadSecretData loads a given secret key and returns it's data as a string.

                                                func LogLevel

                                                func LogLevel(err error) log.Level

                                                  LogLevel returns the log level to use to log the specified error.

                                                  func MergeJsons

                                                  func MergeJsons(globalPullSecret string, localPullSecret string, cdLog log.FieldLogger) (string, error)

                                                    MergeJsons will merge the global and local pull secret and return it

                                                    func NewClientWithMetricsOrDie

                                                    func NewClientWithMetricsOrDie(mgr manager.Manager, ctrlrName string) client.Client

                                                      NewClientWithMetricsOrDie creates a new controller-runtime client with a wrapper which increments metrics for requests by controller name, HTTP method, URL path, and whether or not the request was to a remote cluster.. The client will re-use the managers cache. This should be used in all Hive controllers.

                                                      func SetClusterDeploymentCondition

                                                      func SetClusterDeploymentCondition(
                                                      	conditions []hivev1.ClusterDeploymentCondition,
                                                      	conditionType hivev1.ClusterDeploymentConditionType,
                                                      	status corev1.ConditionStatus,
                                                      	reason string,
                                                      	message string,
                                                      	updateConditionCheck UpdateConditionCheck,
                                                      ) []hivev1.ClusterDeploymentCondition

                                                        SetClusterDeploymentCondition sets a condition on a ClusterDeployment resource's status

                                                        func SetClusterDeploymentConditionWithChangeCheck

                                                        func SetClusterDeploymentConditionWithChangeCheck(
                                                        	conditions []hivev1.ClusterDeploymentCondition,
                                                        	conditionType hivev1.ClusterDeploymentConditionType,
                                                        	status corev1.ConditionStatus,
                                                        	reason string,
                                                        	message string,
                                                        	updateConditionCheck UpdateConditionCheck,
                                                        ) ([]hivev1.ClusterDeploymentCondition, bool)

                                                          SetClusterDeploymentConditionWithChangeCheck sets a condition on a ClusterDeployment resource's status. It returns the conditions as well a boolean indicating whether there was a change made to the conditions.

                                                          func SetClusterProvisionCondition

                                                          func SetClusterProvisionCondition(
                                                          	conditions []hivev1.ClusterProvisionCondition,
                                                          	conditionType hivev1.ClusterProvisionConditionType,
                                                          	status corev1.ConditionStatus,
                                                          	reason string,
                                                          	message string,
                                                          	updateConditionCheck UpdateConditionCheck,
                                                          ) []hivev1.ClusterProvisionCondition

                                                            SetClusterProvisionCondition sets a condition on a ClusterProvision resource's status

                                                            func SetDNSZoneCondition

                                                            func SetDNSZoneCondition(
                                                            	conditions []hivev1.DNSZoneCondition,
                                                            	conditionType hivev1.DNSZoneConditionType,
                                                            	status corev1.ConditionStatus,
                                                            	reason string,
                                                            	message string,
                                                            	updateConditionCheck UpdateConditionCheck,
                                                            ) []hivev1.DNSZoneCondition

                                                              SetDNSZoneCondition sets a condition on a DNSZone resource's status

                                                              func SetDNSZoneConditionWithChangeCheck

                                                              func SetDNSZoneConditionWithChangeCheck(
                                                              	conditions []hivev1.DNSZoneCondition,
                                                              	conditionType hivev1.DNSZoneConditionType,
                                                              	status corev1.ConditionStatus,
                                                              	reason string,
                                                              	message string,
                                                              	updateConditionCheck UpdateConditionCheck,
                                                              ) ([]hivev1.DNSZoneCondition, bool)

                                                                SetDNSZoneConditionWithChangeCheck sets a condition on a DNSZone resource's status It returns the conditions as well a boolean indicating whether there was a change made to the conditions.

                                                                func SetMachinePoolCondition

                                                                func SetMachinePoolCondition(
                                                                	conditions []hivev1.MachinePoolCondition,
                                                                	conditionType hivev1.MachinePoolConditionType,
                                                                	status corev1.ConditionStatus,
                                                                	reason string,
                                                                	message string,
                                                                	updateConditionCheck UpdateConditionCheck,
                                                                ) []hivev1.MachinePoolCondition

                                                                  SetMachinePoolCondition sets a condition on a MachinePool resource's status

                                                                  func SetMachinePoolConditionWithChangeCheck

                                                                  func SetMachinePoolConditionWithChangeCheck(
                                                                  	conditions []hivev1.MachinePoolCondition,
                                                                  	conditionType hivev1.MachinePoolConditionType,
                                                                  	status corev1.ConditionStatus,
                                                                  	reason string,
                                                                  	message string,
                                                                  	updateConditionCheck UpdateConditionCheck,
                                                                  ) ([]hivev1.MachinePoolCondition, bool)

                                                                    SetMachinePoolConditionWithChangeCheck sets a condition on a MachinePool resource's status. It returns the conditions as well a boolean indicating whether there was a change made to the conditions.

                                                                    func SetSyncCondition

                                                                    func SetSyncCondition(
                                                                    	conditions []hivev1.SyncCondition,
                                                                    	conditionType hivev1.SyncConditionType,
                                                                    	status corev1.ConditionStatus,
                                                                    	reason string,
                                                                    	message string,
                                                                    	updateConditionCheck UpdateConditionCheck,
                                                                    ) []hivev1.SyncCondition

                                                                      SetSyncCondition sets a condition on a SyncSet or resource's status

                                                                      func SetupAdditionalCA

                                                                      func SetupAdditionalCA() error

                                                                        SetupAdditionalCA reads a file referenced by the ADDITIONAL_CA environment variable that contains an additional CA. This should only be called once on initialization

                                                                        func SetupClusterInstallServiceAccount

                                                                        func SetupClusterInstallServiceAccount(c client.Client, namespace string, logger log.FieldLogger) error

                                                                          SetupClusterInstallServiceAccount ensures a service account exists which can upload the required artifacts after running the installer in a pod. (metadata, admin kubeconfig)

                                                                          func Undotted

                                                                          func Undotted(domain string) string

                                                                            Undotted removes the trailing dot from a domain if it exists.

                                                                            func UpdateConditionAlways

                                                                            func UpdateConditionAlways(_, _, _, _ string) bool

                                                                              UpdateConditionAlways returns true. The condition will always be updated.

                                                                              func UpdateConditionIfReasonOrMessageChange

                                                                              func UpdateConditionIfReasonOrMessageChange(oldReason, oldMessage, newReason, newMessage string) bool

                                                                                UpdateConditionIfReasonOrMessageChange returns true if there is a change in the reason or the message of the condition.

                                                                                func UpdateConditionNever

                                                                                func UpdateConditionNever(_, _, _, _ string) bool

                                                                                  UpdateConditionNever return false. The condition will never be updated, unless there is a change in the status of the condition.

                                                                                  func WrapEventHandlerWithLogging

                                                                                  func WrapEventHandlerWithLogging(eventHandler handler.EventHandler, logger log.FieldLogger) handler.EventHandler

                                                                                    WrapEventHandlerWithLogging wraps the specified event handler inside a new event handler that will log when events are handled and items are added to the queue.

                                                                                    Types

                                                                                    type ControlleeExpectations

                                                                                    type ControlleeExpectations struct {
                                                                                    	// contains filtered or unexported fields
                                                                                    }

                                                                                      ControlleeExpectations track controllee creates/deletes.

                                                                                      func (*ControlleeExpectations) Add

                                                                                      func (e *ControlleeExpectations) Add(add, del int64)

                                                                                        Add increments the add and del counters.

                                                                                        func (*ControlleeExpectations) Fulfilled

                                                                                        func (e *ControlleeExpectations) Fulfilled() bool

                                                                                          Fulfilled returns true if this expectation has been fulfilled.

                                                                                          func (*ControlleeExpectations) GetExpectations

                                                                                          func (e *ControlleeExpectations) GetExpectations() (int64, int64)

                                                                                            GetExpectations returns the add and del expectations of the controllee.

                                                                                            type ControllerMetricsTripper

                                                                                            type ControllerMetricsTripper struct {
                                                                                            	http.RoundTripper
                                                                                            	Controller string
                                                                                            	Remote     bool
                                                                                            }

                                                                                              ControllerMetricsTripper is a RoundTripper implementation which tracks our metrics for client requests.

                                                                                              func (*ControllerMetricsTripper) RoundTrip

                                                                                              func (cmt *ControllerMetricsTripper) RoundTrip(req *http.Request) (*http.Response, error)

                                                                                                RoundTrip implements the http RoundTripper interface.

                                                                                                type Expectations

                                                                                                type Expectations struct {
                                                                                                	cache.Store
                                                                                                	// contains filtered or unexported fields
                                                                                                }

                                                                                                  Expectations is a cache mapping controllers to what they expect to see before being woken up for a sync.

                                                                                                  func NewExpectations

                                                                                                  func NewExpectations(logger log.FieldLogger) *Expectations

                                                                                                    NewExpectations returns a store for Expectations.

                                                                                                    func (*Expectations) CreationObserved

                                                                                                    func (r *Expectations) CreationObserved(controllerKey string)

                                                                                                      CreationObserved atomically decrements the `add` expectation count of the given controller.

                                                                                                      func (*Expectations) DeleteExpectations

                                                                                                      func (r *Expectations) DeleteExpectations(controllerKey string)

                                                                                                        DeleteExpectations deletes the expectations of the given controller from the TTLStore.

                                                                                                        func (*Expectations) DeletionObserved

                                                                                                        func (r *Expectations) DeletionObserved(controllerKey string)

                                                                                                          DeletionObserved atomically decrements the `del` expectation count of the given controller.

                                                                                                          func (*Expectations) ExpectCreations

                                                                                                          func (r *Expectations) ExpectCreations(controllerKey string, adds int) error

                                                                                                            ExpectCreations sets the expectations to expect the specified number of additions for the controller with the specified key.

                                                                                                            func (*Expectations) ExpectDeletions

                                                                                                            func (r *Expectations) ExpectDeletions(controllerKey string, dels int) error

                                                                                                              ExpectDeletions sets the expectations to expect the specified number of deletions for the controller with the specified key.

                                                                                                              func (*Expectations) GetExpectations

                                                                                                              func (r *Expectations) GetExpectations(controllerKey string) (*ControlleeExpectations, bool, error)

                                                                                                                GetExpectations returns the ControlleeExpectations of the given controller.

                                                                                                                func (*Expectations) LowerExpectations

                                                                                                                func (r *Expectations) LowerExpectations(controllerKey string, add, del int)

                                                                                                                  LowerExpectations decrements the expectation counts of the given controller.

                                                                                                                  func (*Expectations) RaiseExpectations

                                                                                                                  func (r *Expectations) RaiseExpectations(controllerKey string, add, del int)

                                                                                                                    RaiseExpectations increments the expectation counts of the given controller.

                                                                                                                    func (*Expectations) SatisfiedExpectations

                                                                                                                    func (r *Expectations) SatisfiedExpectations(controllerKey string) bool

                                                                                                                      SatisfiedExpectations returns true if the required adds/dels for the given controller have been observed. Add/del counts are established by the controller at sync time, and updated as controllees are observed by the controller manager.

                                                                                                                      func (*Expectations) SetExpectations

                                                                                                                      func (r *Expectations) SetExpectations(controllerKey string, add, del int) error

                                                                                                                        SetExpectations registers new expectations for the given controller. Forgets existing expectations.

                                                                                                                        type ExpectationsInterface

                                                                                                                        type ExpectationsInterface interface {
                                                                                                                        	GetExpectations(controllerKey string) (*ControlleeExpectations, bool, error)
                                                                                                                        	SatisfiedExpectations(controllerKey string) bool
                                                                                                                        	DeleteExpectations(controllerKey string)
                                                                                                                        	SetExpectations(controllerKey string, add, del int) error
                                                                                                                        	ExpectCreations(controllerKey string, adds int) error
                                                                                                                        	ExpectDeletions(controllerKey string, dels int) error
                                                                                                                        	CreationObserved(controllerKey string)
                                                                                                                        	DeletionObserved(controllerKey string)
                                                                                                                        	RaiseExpectations(controllerKey string, add, del int)
                                                                                                                        	LowerExpectations(controllerKey string, add, del int)
                                                                                                                        }

                                                                                                                          ExpectationsInterface is an interface that allows users to set and wait on expectations. Only abstracted out for testing. Warning: if using KeyFunc it is not safe to use a single ExpectationsInterface with different types of controllers, because the keys might conflict across types.

                                                                                                                          type UpdateConditionCheck

                                                                                                                          type UpdateConditionCheck func(oldReason, oldMessage, newReason, newMessage string) bool

                                                                                                                            UpdateConditionCheck tests whether a condition should be updated from the old condition to the new condition. Returns true if the condition should be updated.