Documentation
¶
Overview ¶
Package external implements external controller types.
Index ¶
- Constants
- Variables
- func CloneTemplate(ctx context.Context, in *CloneTemplateInput) (*corev1.ObjectReference, error)
- func FailuresFrom(obj *unstructured.Unstructured) (string, string, error)
- func GenerateTemplate(in *GenerateTemplateInput) (*unstructured.Unstructured, error)
- func Get(ctx context.Context, c client.Client, ref *corev1.ObjectReference, ...) (*unstructured.Unstructured, error)
- func GetObjectReference(obj *unstructured.Unstructured) *corev1.ObjectReference
- func IsInitialized(obj *unstructured.Unstructured) (bool, error)
- func IsReady(obj *unstructured.Unstructured) (bool, error)
- type CloneTemplateInput
- type GenerateTemplateInput
- type ObjectTracker
- type ReconcileOutput
Constants ¶
const ( // TemplateSuffix is the object kind suffix used by infrastructure references associated // with MachineSet or MachineDeployments. // Deprecated: use api/v1alpha4.TemplatePrefix instead. TemplateSuffix = "Template" )
Variables ¶
var ( // TestGenericBootstrapCRD is a generic boostrap CRD. // Deprecated: This field will be removed in a next release. TestGenericBootstrapCRD = &apiextensionsv1.CustomResourceDefinition{ TypeMeta: metav1.TypeMeta{ APIVersion: apiextensionsv1.SchemeGroupVersion.String(), Kind: "CustomResourceDefinition", }, ObjectMeta: metav1.ObjectMeta{ Name: "bootstrapmachines.bootstrap.cluster.x-k8s.io", Labels: map[string]string{ clusterv1.GroupVersion.String(): "v1alpha4", }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "bootstrap.cluster.x-k8s.io", Scope: apiextensionsv1.NamespaceScoped, Names: apiextensionsv1.CustomResourceDefinitionNames{ Kind: "BootstrapMachine", Plural: "bootstrapmachines", }, Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1alpha4", Served: true, Storage: true, Subresources: &apiextensionsv1.CustomResourceSubresources{ Status: &apiextensionsv1.CustomResourceSubresourceStatus{}, }, Schema: &apiextensionsv1.CustomResourceValidation{ OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{ Type: "object", Properties: map[string]apiextensionsv1.JSONSchemaProps{ "spec": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, "status": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, }, }, }, }, }, }, } // TestGenericBootstrapTemplateCRD is a generic boostrap template CRD. // Deprecated: This field will be removed in a next release. TestGenericBootstrapTemplateCRD = &apiextensionsv1.CustomResourceDefinition{ TypeMeta: metav1.TypeMeta{ APIVersion: apiextensionsv1.SchemeGroupVersion.String(), Kind: "CustomResourceDefinition", }, ObjectMeta: metav1.ObjectMeta{ Name: "bootstrapmachinetemplates.bootstrap.cluster.x-k8s.io", Labels: map[string]string{ clusterv1.GroupVersion.String(): "v1alpha4", }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "bootstrap.cluster.x-k8s.io", Scope: apiextensionsv1.NamespaceScoped, Names: apiextensionsv1.CustomResourceDefinitionNames{ Kind: "BootstrapMachineTemplate", Plural: "bootstrapmachinetemplates", }, Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1alpha4", Served: true, Storage: true, Subresources: &apiextensionsv1.CustomResourceSubresources{ Status: &apiextensionsv1.CustomResourceSubresourceStatus{}, }, Schema: &apiextensionsv1.CustomResourceValidation{ OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{ Type: "object", Properties: map[string]apiextensionsv1.JSONSchemaProps{ "spec": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, "status": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, }, }, }, }, }, }, } // TestGenericInfrastructureCRD is a generic infrastructure CRD. // Deprecated: This field will be removed in a next release. TestGenericInfrastructureCRD = &apiextensionsv1.CustomResourceDefinition{ TypeMeta: metav1.TypeMeta{ APIVersion: apiextensionsv1.SchemeGroupVersion.String(), Kind: "CustomResourceDefinition", }, ObjectMeta: metav1.ObjectMeta{ Name: "infrastructuremachines.infrastructure.cluster.x-k8s.io", Labels: map[string]string{ clusterv1.GroupVersion.String(): "v1alpha4", }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "infrastructure.cluster.x-k8s.io", Scope: apiextensionsv1.NamespaceScoped, Names: apiextensionsv1.CustomResourceDefinitionNames{ Kind: "InfrastructureMachine", Plural: "infrastructuremachines", }, Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1alpha4", Served: true, Storage: true, Subresources: &apiextensionsv1.CustomResourceSubresources{ Status: &apiextensionsv1.CustomResourceSubresourceStatus{}, }, Schema: &apiextensionsv1.CustomResourceValidation{ OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{ Type: "object", Properties: map[string]apiextensionsv1.JSONSchemaProps{ "spec": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, "status": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, }, }, }, }, }, }, } // TestGenericInfrastructureTemplateCRD is a generic infrastructure template CRD. // Deprecated: This field will be removed in a next release. TestGenericInfrastructureTemplateCRD = &apiextensionsv1.CustomResourceDefinition{ TypeMeta: metav1.TypeMeta{ APIVersion: apiextensionsv1.SchemeGroupVersion.String(), Kind: "CustomResourceDefinition", }, ObjectMeta: metav1.ObjectMeta{ Name: "infrastructuremachinetemplates.infrastructure.cluster.x-k8s.io", Labels: map[string]string{ clusterv1.GroupVersion.String(): "v1alpha4", }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "infrastructure.cluster.x-k8s.io", Scope: apiextensionsv1.NamespaceScoped, Names: apiextensionsv1.CustomResourceDefinitionNames{ Kind: "InfrastructureMachineTemplate", Plural: "infrastructuremachinetemplates", }, Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1alpha4", Served: true, Storage: true, Subresources: &apiextensionsv1.CustomResourceSubresources{ Status: &apiextensionsv1.CustomResourceSubresourceStatus{}, }, Schema: &apiextensionsv1.CustomResourceValidation{ OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{ Type: "object", Properties: map[string]apiextensionsv1.JSONSchemaProps{ "spec": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, "status": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, }, }, }, }, }, }, } // TestGenericInfrastructureRemediationCRD is a generic infrastructure remediation CRD. // Deprecated: This field will be removed in a next release. TestGenericInfrastructureRemediationCRD = &apiextensionsv1.CustomResourceDefinition{ TypeMeta: metav1.TypeMeta{ APIVersion: apiextensionsv1.SchemeGroupVersion.String(), Kind: "CustomResourceDefinition", }, ObjectMeta: metav1.ObjectMeta{ Name: "infrastructureremediations.infrastructure.cluster.x-k8s.io", Labels: map[string]string{ clusterv1.GroupVersion.String(): "v1alpha3", }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "infrastructure.cluster.x-k8s.io", Scope: apiextensionsv1.NamespaceScoped, Names: apiextensionsv1.CustomResourceDefinitionNames{ Kind: "InfrastructureRemediation", Plural: "infrastructureremediations", }, Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1alpha3", Served: true, Storage: true, Subresources: &apiextensionsv1.CustomResourceSubresources{ Status: &apiextensionsv1.CustomResourceSubresourceStatus{}, }, Schema: &apiextensionsv1.CustomResourceValidation{ OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{ Type: "object", Properties: map[string]apiextensionsv1.JSONSchemaProps{ "spec": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, "status": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, }, }, }, }, }, }, } // TestGenericInfrastructureRemediationTemplateCRD is a generic infrastructure remediation template CRD. // Deprecated: This field will be removed in a next release. TestGenericInfrastructureRemediationTemplateCRD = &apiextensionsv1.CustomResourceDefinition{ TypeMeta: metav1.TypeMeta{ APIVersion: apiextensionsv1.SchemeGroupVersion.String(), Kind: "CustomResourceDefinition", }, ObjectMeta: metav1.ObjectMeta{ Name: "infrastructureremediationtemplates.infrastructure.cluster.x-k8s.io", Labels: map[string]string{ clusterv1.GroupVersion.String(): "v1alpha3", }, }, Spec: apiextensionsv1.CustomResourceDefinitionSpec{ Group: "infrastructure.cluster.x-k8s.io", Scope: apiextensionsv1.NamespaceScoped, Names: apiextensionsv1.CustomResourceDefinitionNames{ Kind: "InfrastructureRemediationTemplate", Plural: "infrastructureremediationtemplates", }, Versions: []apiextensionsv1.CustomResourceDefinitionVersion{ { Name: "v1alpha3", Served: true, Storage: true, Subresources: &apiextensionsv1.CustomResourceSubresources{ Status: &apiextensionsv1.CustomResourceSubresourceStatus{}, }, Schema: &apiextensionsv1.CustomResourceValidation{ OpenAPIV3Schema: &apiextensionsv1.JSONSchemaProps{ Type: "object", Properties: map[string]apiextensionsv1.JSONSchemaProps{ "spec": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, "status": { Type: "object", XPreserveUnknownFields: pointer.BoolPtr(true), }, }, }, }, }, }, }, } )
Functions ¶
func CloneTemplate ¶
func CloneTemplate(ctx context.Context, in *CloneTemplateInput) (*corev1.ObjectReference, error)
CloneTemplate uses the client and the reference to create a new object from the template.
func FailuresFrom ¶ added in v0.3.0
func FailuresFrom(obj *unstructured.Unstructured) (string, string, error)
FailuresFrom returns the FailureReason and FailureMessage fields from the external object status.
func GenerateTemplate ¶ added in v0.3.3
func GenerateTemplate(in *GenerateTemplateInput) (*unstructured.Unstructured, error)
GenerateTemplate generates an object with the given template input.
func Get ¶
func Get(ctx context.Context, c client.Client, ref *corev1.ObjectReference, namespace string) (*unstructured.Unstructured, error)
Get uses the client and reference to get an external, unstructured object.
func GetObjectReference ¶ added in v0.3.3
func GetObjectReference(obj *unstructured.Unstructured) *corev1.ObjectReference
GetObjectReference converts an unstructured into object reference.
func IsInitialized ¶ added in v0.3.0
func IsInitialized(obj *unstructured.Unstructured) (bool, error)
IsInitialized returns true if the Status.Initialized field on an external object is true.
func IsReady ¶
func IsReady(obj *unstructured.Unstructured) (bool, error)
IsReady returns true if the Status.Ready field on an external object is true.
Types ¶
type CloneTemplateInput ¶ added in v0.3.0
type CloneTemplateInput struct {
// Client is the controller runtime client.
// +required
Client client.Client
// TemplateRef is a reference to the template that needs to be cloned.
// +required
TemplateRef *corev1.ObjectReference
// Namespace is the Kubernetes namespace the cloned object should be created into.
// +required
Namespace string
// ClusterName is the cluster this object is linked to.
// +required
ClusterName string
// OwnerRef is an optional OwnerReference to attach to the cloned object.
// +optional
OwnerRef *metav1.OwnerReference
// Labels is an optional map of labels to be added to the object.
// +optional
Labels map[string]string
// Annotations is an optional map of annotations to be added to the object.
// +optional
Annotations map[string]string
}
CloneTemplateInput is the input to CloneTemplate.
type GenerateTemplateInput ¶ added in v0.3.3
type GenerateTemplateInput struct {
// Template is the TemplateRef turned into an unstructured.
// +required
Template *unstructured.Unstructured
// TemplateRef is a reference to the template that needs to be cloned.
// +required
TemplateRef *corev1.ObjectReference
// Namespace is the Kubernetes namespace the cloned object should be created into.
// +required
Namespace string
// ClusterName is the cluster this object is linked to.
// +required
ClusterName string
// OwnerRef is an optional OwnerReference to attach to the cloned object.
// +optional
OwnerRef *metav1.OwnerReference
// Labels is an optional map of labels to be added to the object.
// +optional
Labels map[string]string
// Annotations is an optional map of annotations to be added to the object.
// +optional
Annotations map[string]string
}
GenerateTemplateInput is the input needed to generate a new template.
type ObjectTracker ¶ added in v0.3.0
type ObjectTracker struct {
Controller controller.Controller
// contains filtered or unexported fields
}
ObjectTracker is a helper struct to deal when watching external unstructured objects.
func (*ObjectTracker) Watch ¶ added in v0.3.0
func (o *ObjectTracker) Watch(log logr.Logger, obj runtime.Object, handler handler.EventHandler) error
Watch uses the controller to issue a Watch only if the object hasn't been seen before.
type ReconcileOutput ¶ added in v0.3.0
type ReconcileOutput struct {
// RequeueAfter if greater than 0, tells the Controller to requeue the reconcile key after the Duration.
// Implies that Requeue is true, there is no need to set Requeue to true at the same time as RequeueAfter.
//
// TODO(vincepri): Remove this field here and try to return a better struct that embeds ctrl.Result,
// we can't do that today because the field would conflict with the current `Result` field,
// which should probably be renamed to `Object` or something similar.
RequeueAfter time.Duration
// Details of the referenced external object.
// +optional
Result *unstructured.Unstructured
// Indicates if the external object is paused.
// +optional
Paused bool
}
ReconcileOutput is a return type of the external reconciliation of referenced objects.