Documentation ¶
Overview ¶
Package api contains the API definition for the patch engine. NOTE: We are introducing this API as a decoupling layer between the patch engine and the concrete components responsible for generating patches, because we aim to provide support for external patches in a future iteration. We also assume that this API and all the related types will be moved in a separate (versioned) package thus providing a versioned contract between Cluster API and the components implementing external patch extensions.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type GenerateRequest ¶
type GenerateRequest struct { // Variables is a name/value map containing variables. Variables map[string]apiextensionsv1.JSON // Items contains the list of templates to generate patches for. Items []*GenerateRequestTemplate }
GenerateRequest defines the input for a Generate request.
type GenerateRequestTemplate ¶
type GenerateRequestTemplate struct { // TemplateRef identifies a template to generate patches for; // the same TemplateRef must be used when specifying to which template a generated patch should be applied to. TemplateRef TemplateRef // Variables is a name/value map containing variables specifically for the current template. // For example some builtin variables like MachineDeployment replicas and version are context-sensitive // and thus are only added to templates for MachineDeployments and with values which correspond to the // current MachineDeployment. Variables map[string]apiextensionsv1.JSON // Template contains the template. Template apiextensionsv1.JSON }
GenerateRequestTemplate defines one of the ClusterClass templates to generate patches for.
type GenerateResponse ¶
type GenerateResponse struct { // Items contains the list of generated patches. Items []GenerateResponsePatch }
GenerateResponse defines the response of a Generate request. NOTE: Patches defined in GenerateResponse will be applied in the same order to the original GenerateRequest object, thus adding changes on templates across all the subsequent Generate calls.
type GenerateResponsePatch ¶
type GenerateResponsePatch struct { // TemplateRef identifies the template the patch should apply to. TemplateRef TemplateRef // Patch contains the patch. Patch apiextensionsv1.JSON // Patch defines the type of the JSON patch. PatchType PatchType }
GenerateResponsePatch defines a Patch targeting a specific GenerateRequestTemplate.
type Generator ¶
type Generator interface { // Generate generates patches for templates. // GenerateRequest contains templates and the corresponding variables. // GenerateResponse contains the patches which should be applied to the templates of the GenerateRequest. Generate(ctx context.Context, request *GenerateRequest) (*GenerateResponse, error) }
Generator defines a component that can generate patches for ClusterClass templates.
type MachineDeploymentRef ¶
type MachineDeploymentRef struct { // TopologyName is the name of the MachineDeploymentTopology. TopologyName string // Class is the name of the MachineDeploymentClass. Class string }
MachineDeploymentRef specifies the MachineDeployment in which the template is used.
type PatchType ¶
type PatchType string
PatchType define the type for patch types enum.
const ( // JSONPatchType identifies a https://datatracker.ietf.org/doc/html/rfc6902 json patch. JSONPatchType PatchType = "JSONPatch" // JSONMergePatchType identifies a https://datatracker.ietf.org/doc/html/rfc7386 json merge patch. JSONMergePatchType PatchType = "JSONMergePatch" )
type TemplateRef ¶
type TemplateRef struct { // APIVersion of the current template. APIVersion string // Kind of the current template. Kind string // TemplateType defines where the template is used. TemplateType TemplateType // MachineDeployment specifies the MachineDeployment in which the template is used. // This field is only set if the template is used in the context of a MachineDeployment. MachineDeploymentRef MachineDeploymentRef }
TemplateRef identifies one of the ClusterClass templates to generate patches for; the same TemplateRef must be used when specifying where a generated patch should apply to.
func (TemplateRef) String ¶
func (t TemplateRef) String() string
type TemplateType ¶
type TemplateType string
TemplateType define the type for target types enum.
const ( // InfrastructureClusterTemplateType identifies a template for the InfrastructureCluster object. InfrastructureClusterTemplateType TemplateType = "InfrastructureClusterTemplate" // ControlPlaneTemplateType identifies a template for the ControlPlane object. ControlPlaneTemplateType TemplateType = "ControlPlaneTemplate" // ControlPlaneInfrastructureMachineTemplateType identifies a template for the InfrastructureMachines to be used for the ControlPlane object. ControlPlaneInfrastructureMachineTemplateType TemplateType = "ControlPlane/InfrastructureMachineTemplate" // MachineDeploymentBootstrapConfigTemplateType identifies a template for the BootstrapConfig to be used for a MachineDeployment object. MachineDeploymentBootstrapConfigTemplateType TemplateType = "MachineDeployment/BootstrapConfigTemplate" // MachineDeploymentInfrastructureMachineTemplateType identifies a template for the InfrastructureMachines to be used for a MachineDeployment object. MachineDeploymentInfrastructureMachineTemplateType TemplateType = "MachineDeployment/InfrastructureMachineTemplate" )