api

package
v1.1.5 Latest Latest
Warning

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

Go to latest
Published: Jun 30, 2022 License: Apache-2.0 Imports: 3 Imported by: 0

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"
)

Jump to

Keyboard shortcuts

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