contract

package
v1.7.1 Latest Latest
Warning

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

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

Documentation

Overview

Package contract provides support for the ClusterReconciler to handle with providers objects according to the Cluster API contract.

Index

Constants

This section is empty.

Variables

View Source
var ErrFieldNotFound = errors.New("field not found")

ErrFieldNotFound is returned when a field is not found in the object.

Functions

func GetNestedRef

func GetNestedRef(obj *unstructured.Unstructured, fields ...string) (*corev1.ObjectReference, error)

GetNestedRef returns the ref value from a nested field in an Unstructured object.

func ObjToRef

ObjToRef returns a reference to the given object. Note: This function only operates on Unstructured instead of client.Object because it is only safe to assume for Unstructured that the GVK is set.

func SetNestedRef

func SetNestedRef(obj, refObj *unstructured.Unstructured, fields ...string) error

SetNestedRef sets the value of a nested field in an Unstructured to a reference to the refObj provided.

Types

type Bool added in v1.3.0

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

Bool represents an accessor to an bool path value.

func (*Bool) Get added in v1.3.0

func (b *Bool) Get(obj *unstructured.Unstructured) (*bool, error)

Get gets the bool value.

func (*Bool) Path added in v1.3.0

func (b *Bool) Path() Path

Path returns the path to the bool value.

func (*Bool) Set added in v1.3.0

func (b *Bool) Set(obj *unstructured.Unstructured, value bool) error

Set sets the bool value in the path.

type BootstrapConfigTemplateContract added in v1.4.0

type BootstrapConfigTemplateContract struct{}

BootstrapConfigTemplateContract encodes information about the Cluster API contract for BootstrapConfigTemplate objects like KubeadmConfigTemplate, etc.

func BootstrapConfigTemplate added in v1.4.0

func BootstrapConfigTemplate() *BootstrapConfigTemplateContract

BootstrapConfigTemplate provide access to the information about the Cluster API contract for BootstrapConfigTemplate objects.

func (*BootstrapConfigTemplateContract) Template added in v1.4.0

Template provides access to the template.

type BootstrapConfigTemplateTemplate added in v1.4.0

type BootstrapConfigTemplateTemplate struct{}

BootstrapConfigTemplateTemplate provides a helper struct for working with the template in an BootstrapConfigTemplate.

func (*BootstrapConfigTemplateTemplate) Metadata added in v1.4.0

Metadata provides access to the metadata of a template.

type BootstrapContract added in v1.3.0

type BootstrapContract struct{}

BootstrapContract encodes information about the Cluster API contract for bootstrap objects.

func Bootstrap added in v1.3.0

func Bootstrap() *BootstrapContract

Bootstrap provide access to the information about the Cluster API contract for bootstrap objects.

func (*BootstrapContract) DataSecretName added in v1.3.0

func (b *BootstrapContract) DataSecretName() *String

DataSecretName provide access to status.dataSecretName field in a bootstrap object.

func (*BootstrapContract) FailureMessage added in v1.3.0

func (b *BootstrapContract) FailureMessage() *String

FailureMessage provides access to the status.failureMessage field in an bootstrap object. Note that this field is optional.

func (*BootstrapContract) FailureReason added in v1.3.0

func (b *BootstrapContract) FailureReason() *String

FailureReason provides access to the status.failureReason field in an bootstrap object. Note that this field is optional.

func (*BootstrapContract) Ready added in v1.3.0

func (b *BootstrapContract) Ready() *Bool

Ready provide access to status.ready field in a bootstrap object.

type ControlPlaneContract

type ControlPlaneContract struct{}

ControlPlaneContract encodes information about the Cluster API contract for ControlPlane objects like e.g the KubeadmControlPlane etc.

func ControlPlane

func ControlPlane() *ControlPlaneContract

ControlPlane provide access to the information about the Cluster API contract for ControlPlane objects.

func (*ControlPlaneContract) ExternalManagedControlPlane added in v1.3.0

func (c *ControlPlaneContract) ExternalManagedControlPlane() *Bool

ExternalManagedControlPlane provides access to the status.externalManagedControlPlane field in an ControlPlane object. Note that this field is optional.

func (*ControlPlaneContract) FailureMessage added in v1.3.0

func (c *ControlPlaneContract) FailureMessage() *String

FailureMessage provides access to the status.failureMessage field in an ControlPlane object. Note that this field is optional.

func (*ControlPlaneContract) FailureReason added in v1.3.0

func (c *ControlPlaneContract) FailureReason() *String

FailureReason provides access to the status.failureReason field in an ControlPlane object. Note that this field is optional.

func (*ControlPlaneContract) Initialized added in v1.3.0

func (c *ControlPlaneContract) Initialized() *Bool

Initialized provide access to status.initialized field in a ControlPlane object.

func (*ControlPlaneContract) IsProvisioning

func (c *ControlPlaneContract) IsProvisioning(obj *unstructured.Unstructured) (bool, error)

IsProvisioning returns true if the control plane is being created for the first time. Returns false, if the control plane was already previously provisioned.

func (*ControlPlaneContract) IsScaling

IsScaling returns true if the control plane is in the middle of a scale operation, false otherwise. A control plane is considered scaling if: - status.replicas is not yet set. - spec.replicas != status.replicas. - spec.replicas != status.updatedReplicas. - spec.replicas != status.readyReplicas. - status.unavailableReplicas > 0.

func (*ControlPlaneContract) IsUpgrading

func (c *ControlPlaneContract) IsUpgrading(obj *unstructured.Unstructured) (bool, error)

IsUpgrading returns true if the control plane is in the middle of an upgrade, false otherwise. A control plane is considered upgrading if: - if spec.version is greater than status.version. Note: A control plane is considered not upgrading if the status or status.version is not set.

func (*ControlPlaneContract) MachineTemplate

func (c *ControlPlaneContract) MachineTemplate() *ControlPlaneMachineTemplate

MachineTemplate provides access to MachineTemplate in a ControlPlane object, if any. NOTE: When working with unstructured there is no way to understand if the ControlPlane provider do support a field in the type definition from the fact that a field is not set in a given instance. This is why in we are deriving if MachineTemplate is required from the ClusterClass in the topology reconciler code.

func (*ControlPlaneContract) Ready added in v1.3.0

func (c *ControlPlaneContract) Ready() *Bool

Ready provide access to the status.ready field in a ControlPlane object.

func (*ControlPlaneContract) ReadyReplicas

func (c *ControlPlaneContract) ReadyReplicas() *Int64

ReadyReplicas provide access to the status.readyReplicas field in a ControlPlane object, if any. Applies to implementations using replicas.

func (*ControlPlaneContract) Replicas

func (c *ControlPlaneContract) Replicas() *Int64

Replicas provide access to replicas field in a ControlPlane object, if any. NOTE: When working with unstructured there is no way to understand if the ControlPlane provider do support a field in the type definition from the fact that a field is not set in a given instance. This is why in we are deriving if replicas is required from the ClusterClass in the topology reconciler code.

func (*ControlPlaneContract) Selector added in v1.3.0

func (c *ControlPlaneContract) Selector() *String

Selector provide access to the status.selector field in a ControlPlane object, if any. Applies to implementations using replicas.

func (*ControlPlaneContract) StatusReplicas

func (c *ControlPlaneContract) StatusReplicas() *Int64

StatusReplicas provide access to the status.replicas field in a ControlPlane object, if any. Applies to implementations using replicas.

func (*ControlPlaneContract) StatusVersion

func (c *ControlPlaneContract) StatusVersion() *String

StatusVersion provide access to the version field in a ControlPlane object status, if any.

func (*ControlPlaneContract) UnavailableReplicas added in v1.2.10

func (c *ControlPlaneContract) UnavailableReplicas() *Int64

UnavailableReplicas provide access to the status.unavailableReplicas field in a ControlPlane object, if any. Applies to implementations using replicas.

func (*ControlPlaneContract) UpdatedReplicas

func (c *ControlPlaneContract) UpdatedReplicas() *Int64

UpdatedReplicas provide access to the status.updatedReplicas field in a ControlPlane object, if any. Applies to implementations using replicas.

func (*ControlPlaneContract) Version

func (c *ControlPlaneContract) Version() *String

Version provide access to version field in a ControlPlane object, if any. NOTE: When working with unstructured there is no way to understand if the ControlPlane provider do support a field in the type definition from the fact that a field is not set in a given instance. This is why in we are deriving if version is required from the ClusterClass in the topology reconciler code.

type ControlPlaneMachineTemplate

type ControlPlaneMachineTemplate struct{}

ControlPlaneMachineTemplate provides a helper struct for working with MachineTemplate in ClusterClass.

func (*ControlPlaneMachineTemplate) InfrastructureRef

func (c *ControlPlaneMachineTemplate) InfrastructureRef() *Ref

InfrastructureRef provides access to the infrastructureRef of a MachineTemplate.

func (*ControlPlaneMachineTemplate) Metadata

func (c *ControlPlaneMachineTemplate) Metadata() *Metadata

Metadata provides access to the metadata of a MachineTemplate.

func (*ControlPlaneMachineTemplate) NodeDeletionTimeout added in v1.3.0

func (c *ControlPlaneMachineTemplate) NodeDeletionTimeout() *Duration

NodeDeletionTimeout provides access to the nodeDeletionTimeout of a MachineTemplate.

func (*ControlPlaneMachineTemplate) NodeDrainTimeout

func (c *ControlPlaneMachineTemplate) NodeDrainTimeout() *Duration

NodeDrainTimeout provides access to the nodeDrainTimeout of a MachineTemplate.

func (*ControlPlaneMachineTemplate) NodeVolumeDetachTimeout added in v1.3.0

func (c *ControlPlaneMachineTemplate) NodeVolumeDetachTimeout() *Duration

NodeVolumeDetachTimeout provides access to the nodeVolumeDetachTimeout of a MachineTemplate.

type ControlPlaneTemplateContract

type ControlPlaneTemplateContract struct{}

ControlPlaneTemplateContract encodes information about the Cluster API contract for ControlPlaneTemplate objects like e.g. the KubeadmControlPlane etc.

func ControlPlaneTemplate

func ControlPlaneTemplate() *ControlPlaneTemplateContract

ControlPlaneTemplate provide access to the information about the Cluster API contract for ControlPlaneTemplate objects.

func (*ControlPlaneTemplateContract) InfrastructureMachineTemplate

func (c *ControlPlaneTemplateContract) InfrastructureMachineTemplate() *Ref

InfrastructureMachineTemplate provide access to InfrastructureMachineTemplate reference, if any. NOTE: When working with unstructured there is no way to understand if the ControlPlane provider do support a field in the type definition from the fact that a field is not set in a given instance. This is why in we are deriving if this field is required from the ClusterClass in the topology reconciler code.

func (*ControlPlaneTemplateContract) Template added in v1.4.0

Template provides access to the template.

type ControlPlaneTemplateMachineTemplate added in v1.4.0

type ControlPlaneTemplateMachineTemplate struct{}

ControlPlaneTemplateMachineTemplate provides a helper struct for working with MachineTemplate.

func (*ControlPlaneTemplateMachineTemplate) Metadata added in v1.4.0

Metadata provides access to the metadata of the MachineTemplate of a ControlPlaneTemplate.

func (*ControlPlaneTemplateMachineTemplate) NodeDeletionTimeout added in v1.4.0

func (c *ControlPlaneTemplateMachineTemplate) NodeDeletionTimeout() *Duration

NodeDeletionTimeout provides access to the nodeDeletionTimeout of a MachineTemplate.

func (*ControlPlaneTemplateMachineTemplate) NodeDrainTimeout added in v1.4.0

func (c *ControlPlaneTemplateMachineTemplate) NodeDrainTimeout() *Duration

NodeDrainTimeout provides access to the nodeDrainTimeout of a MachineTemplate.

func (*ControlPlaneTemplateMachineTemplate) NodeVolumeDetachTimeout added in v1.4.0

func (c *ControlPlaneTemplateMachineTemplate) NodeVolumeDetachTimeout() *Duration

NodeVolumeDetachTimeout provides access to the nodeVolumeDetachTimeout of a MachineTemplate.

type ControlPlaneTemplateTemplate added in v1.4.0

type ControlPlaneTemplateTemplate struct{}

ControlPlaneTemplateTemplate provides a helper struct for working with the template in an ControlPlaneTemplate.

func (*ControlPlaneTemplateTemplate) MachineTemplate added in v1.4.0

MachineTemplate provides access to MachineTemplate in a ControlPlaneTemplate object, if any.

func (*ControlPlaneTemplateTemplate) Metadata added in v1.4.0

func (c *ControlPlaneTemplateTemplate) Metadata() *Metadata

Metadata provides access to the metadata of a template.

type Duration

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

Duration represents an accessor to a metav1.Duration path value.

func (*Duration) Get

Get gets the metav1.Duration value.

func (*Duration) Path

func (i *Duration) Path() Path

Path returns the path to the metav1.Duration value.

func (*Duration) Set

func (i *Duration) Set(obj *unstructured.Unstructured, value metav1.Duration) error

Set sets the metav1.Duration value in the path.

type FailureDomains added in v1.3.0

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

FailureDomains represents an accessor to a clusterv1.FailureDomains path value.

func (*FailureDomains) Get added in v1.3.0

Get gets the metav1.MachineAddressList value.

func (*FailureDomains) Path added in v1.3.0

func (d *FailureDomains) Path() Path

Path returns the path to the clusterv1.FailureDomains value.

func (*FailureDomains) Set added in v1.3.0

Set sets the clusterv1.FailureDomains value in the path.

type InfrastructureClusterContract

type InfrastructureClusterContract struct{}

InfrastructureClusterContract encodes information about the Cluster API contract for InfrastructureCluster objects like DockerClusters, AWS Clusters, etc.

func InfrastructureCluster

func InfrastructureCluster() *InfrastructureClusterContract

InfrastructureCluster provide access to the information about the Cluster API contract for InfrastructureCluster objects.

func (*InfrastructureClusterContract) ControlPlaneEndpoint added in v1.1.6

ControlPlaneEndpoint provides access to ControlPlaneEndpoint in an InfrastructureCluster object.

func (*InfrastructureClusterContract) FailureDomains added in v1.3.0

func (c *InfrastructureClusterContract) FailureDomains() *FailureDomains

FailureDomains provides access to the status.failureDomains field in an InfrastructureCluster object. Note that this field is optional.

func (*InfrastructureClusterContract) FailureMessage added in v1.3.0

func (c *InfrastructureClusterContract) FailureMessage() *String

FailureMessage provides access to the status.failureMessage field in an InfrastructureCluster object. Note that this field is optional.

func (*InfrastructureClusterContract) FailureReason added in v1.3.0

func (c *InfrastructureClusterContract) FailureReason() *String

FailureReason provides access to the status.failureReason field in an InfrastructureCluster object. Note that this field is optional.

func (*InfrastructureClusterContract) IgnorePaths

func (c *InfrastructureClusterContract) IgnorePaths(infrastructureCluster *unstructured.Unstructured) ([]Path, error)

IgnorePaths returns a list of paths to be ignored when reconciling an InfrastructureCluster. NOTE: The controlPlaneEndpoint struct currently contains two mandatory fields (host and port). As the host and port fields are not using omitempty, they are automatically set to their zero values if they are not set by the user. We don't want to reconcile the zero values as we would then overwrite changes applied by the infrastructure provider controller.

func (*InfrastructureClusterContract) Ready added in v1.3.0

func (c *InfrastructureClusterContract) Ready() *Bool

Ready provides access to the status.ready field in an InfrastructureCluster object.

type InfrastructureClusterControlPlaneEndpoint added in v1.1.6

type InfrastructureClusterControlPlaneEndpoint struct{}

InfrastructureClusterControlPlaneEndpoint provides a helper struct for working with ControlPlaneEndpoint in an InfrastructureCluster object.

func (*InfrastructureClusterControlPlaneEndpoint) Host added in v1.1.6

Host provides access to the host field in the ControlPlaneEndpoint in an InfrastructureCluster object.

func (*InfrastructureClusterControlPlaneEndpoint) Port added in v1.1.6

Port provides access to the port field in the ControlPlaneEndpoint in an InfrastructureCluster object.

type InfrastructureClusterTemplateContract added in v1.4.0

type InfrastructureClusterTemplateContract struct{}

InfrastructureClusterTemplateContract encodes information about the Cluster API contract for InfrastructureClusterTemplate objects like DockerClusterTemplates, AWSClusterTemplates, etc.

func InfrastructureClusterTemplate added in v1.4.0

func InfrastructureClusterTemplate() *InfrastructureClusterTemplateContract

InfrastructureClusterTemplate provides access to the information about the Cluster API contract for InfrastructureClusterTemplate objects.

func (*InfrastructureClusterTemplateContract) Template added in v1.4.0

Template provides access to the template.

type InfrastructureClusterTemplateTemplate added in v1.4.0

type InfrastructureClusterTemplateTemplate struct{}

InfrastructureClusterTemplateTemplate provides a helper struct for working with the template in an InfrastructureClusterTemplate..

func (*InfrastructureClusterTemplateTemplate) Metadata added in v1.4.0

Metadata provides access to the metadata of a template.

type InfrastructureMachineContract added in v1.3.0

type InfrastructureMachineContract struct{}

InfrastructureMachineContract encodes information about the Cluster API contract for InfrastructureMachine objects like DockerMachines, AWS Machines, etc.

func InfrastructureMachine added in v1.3.0

func InfrastructureMachine() *InfrastructureMachineContract

InfrastructureMachine provide access to the information about the Cluster API contract for InfrastructureMachine objects.

func (*InfrastructureMachineContract) Addresses added in v1.3.0

Addresses provides access to the status.addresses field in an InfrastructureMachine object. Note that this field is optional.

func (*InfrastructureMachineContract) FailureDomain added in v1.3.0

func (m *InfrastructureMachineContract) FailureDomain() *String

FailureDomain provides access to the spec.failureDomain field in an InfrastructureMachine object. Note that this field is optional.

func (*InfrastructureMachineContract) FailureMessage added in v1.3.0

func (m *InfrastructureMachineContract) FailureMessage() *String

FailureMessage provides access to the status.failureMessage field in an InfrastructureMachine object. Note that this field is optional.

func (*InfrastructureMachineContract) FailureReason added in v1.3.0

func (m *InfrastructureMachineContract) FailureReason() *String

FailureReason provides access to the status.failureReason field in an InfrastructureMachine object. Note that this field is optional.

func (*InfrastructureMachineContract) ProviderID added in v1.3.0

func (m *InfrastructureMachineContract) ProviderID() *String

ProviderID provides access to the spec.providerID field in an InfrastructureMachine object.

func (*InfrastructureMachineContract) Ready added in v1.3.0

func (m *InfrastructureMachineContract) Ready() *Bool

Ready provides access to status.ready field in an InfrastructureMachine object.

type InfrastructureMachinePoolTemplateContract added in v1.6.0

type InfrastructureMachinePoolTemplateContract struct{}

InfrastructureMachinePoolTemplateContract encodes information about the Cluster API contract for InfrastructureMachinePoolTemplate objects like DockerMachinePoolTemplates, AWSMachinePoolTemplates, etc.

func InfrastructureMachinePoolTemplate added in v1.6.0

func InfrastructureMachinePoolTemplate() *InfrastructureMachinePoolTemplateContract

InfrastructureMachinePoolTemplate provide access to the information about the Cluster API contract for InfrastructureMachinePoolTemplate objects.

func (*InfrastructureMachinePoolTemplateContract) Template added in v1.6.0

Template provides access to the template.

type InfrastructureMachinePoolTemplateTemplate added in v1.6.0

type InfrastructureMachinePoolTemplateTemplate struct{}

InfrastructureMachinePoolTemplateTemplate provides a helper struct for working with the template in an InfrastructureMachinePoolTemplate.

func (*InfrastructureMachinePoolTemplateTemplate) Metadata added in v1.6.0

Metadata provides access to the metadata of a template.

type InfrastructureMachineTemplateContract added in v1.4.0

type InfrastructureMachineTemplateContract struct{}

InfrastructureMachineTemplateContract encodes information about the Cluster API contract for InfrastructureMachineTemplate objects like DockerMachineTemplates, AWSMachineTemplates, etc.

func InfrastructureMachineTemplate added in v1.4.0

func InfrastructureMachineTemplate() *InfrastructureMachineTemplateContract

InfrastructureMachineTemplate provide access to the information about the Cluster API contract for InfrastructureMachineTemplate objects.

func (*InfrastructureMachineTemplateContract) Template added in v1.4.0

Template provides access to the template.

type InfrastructureMachineTemplateTemplate added in v1.4.0

type InfrastructureMachineTemplateTemplate struct{}

InfrastructureMachineTemplateTemplate provides a helper struct for working with the template in an InfrastructureMachineTemplate.

func (*InfrastructureMachineTemplateTemplate) Metadata added in v1.4.0

Metadata provides access to the metadata of a template.

type Int64

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

Int64 represents an accessor to an int64 path value.

func (*Int64) Get

func (i *Int64) Get(obj *unstructured.Unstructured) (*int64, error)

Get gets the int64 value.

func (*Int64) Path

func (i *Int64) Path() Path

Path returns the path to the int64 value.

func (*Int64) Set

func (i *Int64) Set(obj *unstructured.Unstructured, value int64) error

Set sets the int64 value in the path.

type MachineAddresses added in v1.3.0

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

MachineAddresses represents an accessor to a []clusterv1.MachineAddress path value.

func (*MachineAddresses) Get added in v1.3.0

Get gets the metav1.MachineAddressList value.

func (*MachineAddresses) Path added in v1.3.0

func (m *MachineAddresses) Path() Path

Path returns the path to the []clusterv1.MachineAddress value.

func (*MachineAddresses) Set added in v1.3.0

Set sets the []clusterv1.MachineAddress value in the path.

type Metadata

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

Metadata provides a helper struct for working with Metadata.

func (*Metadata) Get

Get gets the metadata object.

func (*Metadata) Path

func (m *Metadata) Path() Path

Path returns the path of the metadata.

func (*Metadata) Set

func (m *Metadata) Set(obj *unstructured.Unstructured, metadata *clusterv1.ObjectMeta) error

Set sets the metadata value. Note: We are blanking out empty label annotations, thus avoiding triggering infinite reconcile given that at json level label: {} or annotation: {} is different from no field, which is the corresponding value stored in etcd given that those fields are defined as omitempty.

type Path

type Path []string

Path defines a how to access a field in an Unstructured object.

func (Path) Append added in v1.2.0

func (p Path) Append(k string) Path

Append a field name to a path.

func (Path) Equal added in v1.2.0

func (p Path) Equal(other Path) bool

Equal check if two path are equal (exact match).

func (Path) IsParentOf added in v1.2.0

func (p Path) IsParentOf(other Path) bool

IsParentOf check if one path is Parent of the other.

func (Path) Overlaps added in v1.2.0

func (p Path) Overlaps(other Path) bool

Overlaps return true if two paths are Equal or one IsParentOf the other.

func (Path) String added in v1.1.6

func (p Path) String() string

String returns the path as a dotted string.

type Ref

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

Ref provide a helper struct for working with references in Unstructured objects.

func (*Ref) Get

Get gets the reference value from the Unstructured object.

func (*Ref) Path

func (r *Ref) Path() Path

Path returns the path of the reference.

func (*Ref) Set

func (r *Ref) Set(obj, refObj *unstructured.Unstructured) error

Set sets the reference value in the Unstructured object.

type String

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

String represents an accessor to a string path value.

func (*String) Get

func (s *String) Get(obj *unstructured.Unstructured) (*string, error)

Get gets the string value.

func (*String) Path

func (s *String) Path() Path

Path returns the path to the string value.

func (*String) Set

func (s *String) Set(obj *unstructured.Unstructured, value string) error

Set sets the string value in the path.

Jump to

Keyboard shortcuts

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