v1alpha3

package
v0.1.13 Latest Latest
Warning

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

Go to latest
Published: Jun 5, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

+kubebuilder:object:generate=true +groupName=unbounded-cloud.io

Index

Constants

View Source
const (
	// MachineConditionProvisioned indicates that the machine has been
	// successfully provisioned. The observedGeneration field on the
	// condition tracks which generation of the Machine spec was
	// provisioned.
	MachineConditionProvisioned = "Provisioned"

	// MachineConditionSSHReachable indicates whether the machine is
	// reachable via SSH. The lastTransitionTime and message fields are
	// updated on probe results.
	MachineConditionSSHReachable = "SSHReachable"

	// MachineConditionProvisioning indicates that the machine is
	// currently being provisioned. The lastTransitionTime records when
	// provisioning started, which is used to detect stale provisioning
	// attempts (e.g. after a controller restart).
	MachineConditionProvisioning = "Provisioning"

	// MachineConditionRepaved indicates the state of a repave operation.
	// Status is set to False (with Reason "Pending") when a repave begins,
	// and True (with Reason "Succeeded") when the repave completes.
	// The lastTransitionTime records when the repave started, which is
	// used to detect stale repave attempts.
	MachineConditionRepaved = "Repaved"

	// MachineConditionCloudInitDone indicates whether cloud-init has
	// finished on the machine. Status is True with Reason "Succeeded"
	// when cloud-init completes without errors, False with Reason
	// "Running" while cloud-init stages are still executing, and
	// False with Reason "Failed" when a cloud-init stage reports a
	// failure. On failure the message includes the stage name and the
	// error result so that operators can diagnose the problem without
	// logging into the machine.
	MachineConditionCloudInitDone = "CloudInitDone"

	// MachineConditionNodeUpdated indicates the result of a node
	// update performed by the agent daemon. Status is True with
	// Reason "Succeeded" after a successful update, and False with
	// Reason "Failed" when the update fails. While the update is in
	// progress the status is False with Reason "InProgress".
	MachineConditionNodeUpdated = "NodeUpdated"

	// MachineConditionConfigurationPending indicates that no
	// MachineConfiguration has been assigned to this Machine, either
	// directly via configurationRef or through a machineSelector
	// match. The Machine remains in a waiting state until a
	// configuration is assigned.
	MachineConditionConfigurationPending = "ConfigurationPending"

	// MachineConditionRepavePending indicates that the Machine's desired
	// configuration version has not yet been applied to the running Node.
	// For OnDelete updates this remains True until the operator deletes
	// the Node and the agent repaves with the desired version.
	MachineConditionRepavePending = "RepavePending"
)

Condition types for Machine.

View Source
const (
	// AnnotationProvider associates a Machine with a provider's
	// controller for reboot/repave operations.
	AnnotationProvider = "unbounded-cloud.io/provider"

	// AnnotationConfigurationVersion is set on the Kubernetes Node
	// object to record which MachineConfigurationVersion was used to
	// bootstrap the machine.
	AnnotationConfigurationVersion = "unbounded-cloud.io/machine-configuration-version"
)

Annotation keys.

View Source
const (
	ExternalProviderAzureVM     = "AzureVM"
	ExternalProviderOCIInstance = "OCIInstance"
)

External provider names.

View Source
const (
	// MCVConfigurationLabelKey identifies the parent MachineConfiguration.
	MCVConfigurationLabelKey = "unbounded-cloud.io/machine-configuration"

	// MCVVersionLabelKey stores the version number as a label for
	// efficient selection.
	MCVVersionLabelKey = "unbounded-cloud.io/machine-configuration-version"
)

Label keys set on MachineConfigurationVersion objects.

View Source
const (
	// MachineSiteLabelKey identifies the site a Machine belongs to.
	MachineSiteLabelKey = "unbounded-cloud.io/site"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects.
	GroupVersion = schema.GroupVersion{Group: "unbounded-cloud.io", Version: "v1alpha3"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme.
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

func MachineConfigurationVersionName added in v0.1.4

func MachineConfigurationVersionName(configurationName string, version int32) string

MachineConfigurationVersionName returns the canonical name for a MachineConfigurationVersion child object.

Types

type AgentDownloadsSpec added in v0.1.3

type AgentDownloadsSpec struct {
	// Kubernetes overrides the download source for kubelet/kubectl/kube-proxy
	// (upstream default: https://dl.k8s.io).
	// +optional
	Kubernetes *DownloadSource `json:"kubernetes,omitempty"`

	// Containerd overrides the download source for containerd
	// (upstream default: https://github.com/containerd/containerd).
	// +optional
	Containerd *DownloadSource `json:"containerd,omitempty"`

	// Runc overrides the download source for runc
	// (upstream default: https://github.com/opencontainers/runc).
	// +optional
	Runc *DownloadSource `json:"runc,omitempty"`

	// CNI overrides the download source for CNI plugins
	// (upstream default: https://github.com/containernetworking/plugins).
	// +optional
	CNI *DownloadSource `json:"cni,omitempty"`

	// Crictl overrides the download source for crictl
	// (upstream default: https://github.com/kubernetes-sigs/cri-tools).
	// +optional
	Crictl *DownloadSource `json:"crictl,omitempty"`
}

AgentDownloadsSpec overrides the download sources for the artifacts the agent installs into the nspawn rootfs. Each entry is optional; unset entries fall back to the upstream defaults.

func (*AgentDownloadsSpec) DeepCopy added in v0.1.3

func (in *AgentDownloadsSpec) DeepCopy() *AgentDownloadsSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentDownloadsSpec.

func (*AgentDownloadsSpec) DeepCopyInto added in v0.1.3

func (in *AgentDownloadsSpec) DeepCopyInto(out *AgentDownloadsSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentSpec

type AgentSpec struct {
	// Image is the OCI image reference used for provisioning the
	// nspawn machine (e.g. "ghcr.io/org/repo:tag"). When empty the
	// agent falls back to its built-in default image.
	// +optional
	Image string `json:"image,omitempty"`

	// Version pins the unbounded-agent release tag that is downloaded
	// onto the host (e.g. "v0.0.10"). When empty the install script
	// tracks the latest published release.
	// +optional
	Version string `json:"version,omitempty"`

	// BaseURL overrides the base URL used to construct the
	// unbounded-agent download URL. Defaults to the upstream GitHub
	// releases URL. The layout under BaseURL must match the GitHub
	// releases layout (<base>/latest/download/<asset> and
	// <base>/download/<tag>/<asset>).
	// +optional
	BaseURL string `json:"baseURL,omitempty"`

	// URL is a fully qualified download URL for the unbounded-agent
	// tarball. When set it overrides Version and BaseURL entirely.
	// +optional
	URL string `json:"url,omitempty"`

	// Downloads overrides the download sources for the binaries the
	// agent installs into the nspawn rootfs (kubelet, containerd, runc,
	// CNI plugins, crictl). When unset the agent downloads each
	// artifact from its upstream default host.
	// +optional
	Downloads *AgentDownloadsSpec `json:"downloads,omitempty"`
}

AgentSpec defines settings for the unbounded node agent.

func (*AgentSpec) DeepCopy

func (in *AgentSpec) DeepCopy() *AgentSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentSpec.

func (*AgentSpec) DeepCopyInto

func (in *AgentSpec) DeepCopyInto(out *AgentSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentStatus

type AgentStatus struct {
	// Image is the OCI image reference that was applied to the
	// nspawn machine.
	Image string `json:"image,omitempty"`
}

AgentStatus holds the applied agent settings for the machine.

func (*AgentStatus) DeepCopy

func (in *AgentStatus) DeepCopy() *AgentStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentStatus.

func (*AgentStatus) DeepCopyInto

func (in *AgentStatus) DeepCopyInto(out *AgentStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BastionSSHSpec

type BastionSSHSpec struct {
	// Host is the hostname or IP address of the bastion, optionally
	// including the port (e.g. "1.2.3.4:2222"). When the port is
	// omitted, 22 is assumed.
	// +kubebuilder:validation:Required
	Host string `json:"host"`

	// Username is the SSH username for the bastion.
	// +kubebuilder:default=azureuser
	Username string `json:"username,omitempty"`

	// PrivateKeyRef references a secret containing the SSH private key
	// for the bastion. If not specified, uses the same key as the
	// parent SSHSpec.
	// +optional
	PrivateKeyRef *SecretKeySelector `json:"privateKeyRef,omitempty"`
}

BastionSSHSpec defines SSH connection details for a bastion host. It mirrors SSHSpec but omits the recursive Bastion field.

func (*BastionSSHSpec) DeepCopy

func (in *BastionSSHSpec) DeepCopy() *BastionSSHSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BastionSSHSpec.

func (*BastionSSHSpec) DeepCopyInto

func (in *BastionSSHSpec) DeepCopyInto(out *BastionSSHSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CloudInitSpec

type CloudInitSpec struct {
	// UserDataConfigMapRef references a ConfigMap containing custom
	// cloud-init user-data. The referenced key (default "user-data")
	// must contain a valid cloud-init configuration (e.g. a
	// #cloud-config YAML document).
	// +optional
	UserDataConfigMapRef *ConfigMapKeySelector `json:"userDataConfigMapRef,omitempty"`
}

CloudInitSpec defines cloud-init customization for PXE-booted machines. Cloud-init merges vendor-data (managed by unbounded-kube) with user-data (managed by the cluster operator). This spec controls the user-data portion, allowing operators to configure SSH keys, install packages, and perform other host-level customization.

func (*CloudInitSpec) DeepCopy

func (in *CloudInitSpec) DeepCopy() *CloudInitSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CloudInitSpec.

func (*CloudInitSpec) DeepCopyInto

func (in *CloudInitSpec) DeepCopyInto(out *CloudInitSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ConfigMapKeySelector

type ConfigMapKeySelector struct {
	// Name of the ConfigMap.
	Name string `json:"name"`

	// Namespace of the ConfigMap.
	Namespace string `json:"namespace"`

	// Key within the ConfigMap.
	// +kubebuilder:default=user-data
	Key string `json:"key,omitempty"`
}

ConfigMapKeySelector selects a key from a ConfigMap.

func (*ConfigMapKeySelector) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapKeySelector.

func (*ConfigMapKeySelector) DeepCopyInto

func (in *ConfigMapKeySelector) DeepCopyInto(out *ConfigMapKeySelector)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DHCPLease

type DHCPLease struct {
	// IPv4 is the IP address to assign.
	IPv4 string `json:"ipv4"`

	// MAC is the MAC address of the network interface.
	MAC string `json:"mac"`

	// SubnetMask is the subnet mask for the lease.
	SubnetMask string `json:"subnetMask"`

	// Gateway is the default gateway.
	Gateway string `json:"gateway"`

	// DNS is a list of DNS server addresses.
	// +optional
	DNS []string `json:"dns,omitempty"`
}

DHCPLease defines a static DHCP lease for PXE booting.

func (*DHCPLease) DeepCopy

func (in *DHCPLease) DeepCopy() *DHCPLease

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DHCPLease.

func (*DHCPLease) DeepCopyInto

func (in *DHCPLease) DeepCopyInto(out *DHCPLease)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DownloadSource added in v0.1.3

type DownloadSource struct {
	// BaseURL replaces the upstream host + path prefix used to
	// construct the download URL. Version and arch substitution are
	// preserved so mirrors need to publish assets under the same
	// layout as the upstream project.
	// +optional
	BaseURL string `json:"baseURL,omitempty"`

	// URL is a fully qualified download URL template. Version/arch
	// substitution via fmt directives is preserved. When set it
	// overrides BaseURL entirely.
	// +optional
	URL string `json:"url,omitempty"`

	// Version overrides the version of the artifact that would
	// otherwise be derived from the cluster Kubernetes version or the
	// agent's compiled-in defaults.
	// +optional
	Version string `json:"version,omitempty"`
}

DownloadSource configures an override for a binary download source. Exactly one of URL or BaseURL should typically be set; when both are set URL wins. Version overrides the version that would otherwise be derived from the cluster Kubernetes version or agent defaults.

func (*DownloadSource) DeepCopy added in v0.1.3

func (in *DownloadSource) DeepCopy() *DownloadSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DownloadSource.

func (*DownloadSource) DeepCopyInto added in v0.1.3

func (in *DownloadSource) DeepCopyInto(out *DownloadSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type KubernetesSpec

type KubernetesSpec struct {
	// Version is the Kubernetes version to install (e.g., "v1.34.0").
	// When omitted the controller falls back to the cluster's
	// Kubernetes version.
	// +optional
	Version string `json:"version,omitempty"`

	// NodeRef references the Node that corresponds to this Machine.
	// +optional
	NodeRef *LocalObjectReference `json:"nodeRef,omitempty"`

	// NodeLabels are labels passed to kubelet's --node-labels flag.
	// +optional
	NodeLabels map[string]string `json:"nodeLabels,omitempty"`

	// RegisterWithTaints are taints passed to kubelet's --register-with-taints flag.
	// Each entry uses the standard Kubernetes taint format: key=value:Effect.
	// +optional
	RegisterWithTaints []string `json:"registerWithTaints,omitempty"`

	// BootstrapTokenRef references a bootstrap token Secret in
	// kube-system. The secret must be of type
	// bootstrap.kubernetes.io/token with the well-known keys
	// "token-id" and "token-secret".
	// +kubebuilder:validation:Required
	BootstrapTokenRef LocalObjectReference `json:"bootstrapTokenRef"`
}

KubernetesSpec defines Kubernetes-specific configuration for a Machine.

func (*KubernetesSpec) DeepCopy

func (in *KubernetesSpec) DeepCopy() *KubernetesSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubernetesSpec.

func (*KubernetesSpec) DeepCopyInto

func (in *KubernetesSpec) DeepCopyInto(out *KubernetesSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LocalObjectReference

type LocalObjectReference struct {
	// Name of the referenced resource.
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`
}

LocalObjectReference contains enough information to locate the referenced resource.

func (*LocalObjectReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalObjectReference.

func (*LocalObjectReference) DeepCopyInto

func (in *LocalObjectReference) DeepCopyInto(out *LocalObjectReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Machine

type Machine struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   MachineSpec   `json:"spec,omitempty"`
	Status MachineStatus `json:"status,omitempty"`
}

Machine represents a machine that can be managed by machina.

func (*Machine) DeepCopy

func (in *Machine) DeepCopy() *Machine

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Machine.

func (*Machine) DeepCopyInto

func (in *Machine) DeepCopyInto(out *Machine)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Machine) DeepCopyObject

func (in *Machine) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineConfiguration added in v0.1.4

type MachineConfiguration struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   MachineConfigurationSpec   `json:"spec,omitempty"`
	Status MachineConfigurationStatus `json:"status,omitempty"`
}

MachineConfiguration stores a configuration profile for a class of machines. It acts like a Deployment: edits to the spec automatically create or update a child MachineConfigurationVersion, similar to how Deployment edits create or update ReplicaSets.

func (*MachineConfiguration) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfiguration.

func (*MachineConfiguration) DeepCopyInto added in v0.1.4

func (in *MachineConfiguration) DeepCopyInto(out *MachineConfiguration)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineConfiguration) DeepCopyObject added in v0.1.4

func (in *MachineConfiguration) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineConfigurationAgent added in v0.1.4

type MachineConfigurationAgent struct {
	// Image is the OCI image reference used for provisioning the
	// nspawn machine (e.g. "ghcr.io/org/repo:tag").
	// +kubebuilder:validation:Required
	Image string `json:"image"`
}

MachineConfigurationAgent holds agent-specific fields that are part of the versioned configuration.

func (*MachineConfigurationAgent) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationAgent.

func (*MachineConfigurationAgent) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineConfigurationKubernetes added in v0.1.4

type MachineConfigurationKubernetes struct {
	// Version is the Kubernetes version to install (e.g. "v1.34.0").
	// +optional
	Version string `json:"version,omitempty"`

	// NodeLabels are labels passed to kubelet's --node-labels flag.
	// +optional
	NodeLabels map[string]string `json:"nodeLabels,omitempty"`

	// RegisterWithTaints are taints passed to kubelet's
	// --register-with-taints flag.
	// +optional
	RegisterWithTaints []corev1.Taint `json:"registerWithTaints,omitempty"`
}

MachineConfigurationKubernetes holds the Kubernetes-specific fields that are part of the versioned configuration.

func (*MachineConfigurationKubernetes) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationKubernetes.

func (*MachineConfigurationKubernetes) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineConfigurationList added in v0.1.4

type MachineConfigurationList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MachineConfiguration `json:"items"`
}

MachineConfigurationList contains a list of MachineConfiguration.

func (*MachineConfigurationList) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationList.

func (*MachineConfigurationList) DeepCopyInto added in v0.1.4

func (in *MachineConfigurationList) DeepCopyInto(out *MachineConfigurationList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineConfigurationList) DeepCopyObject added in v0.1.4

func (in *MachineConfigurationList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineConfigurationRef added in v0.1.4

type MachineConfigurationRef struct {
	// Name is the name of the MachineConfiguration.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Version is the specific MachineConfigurationVersion number to
	// use. If omitted, the controller selects the latest locked
	// (deployed) version and populates this field.
	// +optional
	Version *int32 `json:"version,omitempty"`
}

MachineConfigurationRef references a MachineConfiguration and optionally a specific MachineConfigurationVersion.

func (*MachineConfigurationRef) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationRef.

func (*MachineConfigurationRef) DeepCopyInto added in v0.1.4

func (in *MachineConfigurationRef) DeepCopyInto(out *MachineConfigurationRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineConfigurationRefStatus added in v0.1.4

type MachineConfigurationRefStatus struct {
	// Name is the MachineConfiguration name.
	Name string `json:"name,omitempty"`

	// Version is the MachineConfigurationVersion number that was applied.
	Version int32 `json:"version,omitempty"`

	// VersionName is the full MachineConfigurationVersion object name
	// (e.g. "myconfig-v3").
	VersionName string `json:"versionName,omitempty"`
}

MachineConfigurationRefStatus records which configuration version was applied to a Machine.

func (*MachineConfigurationRefStatus) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationRefStatus.

func (*MachineConfigurationRefStatus) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineConfigurationSpec added in v0.1.4

type MachineConfigurationSpec struct {
	// Template contains the configuration fields that are versioned
	// into MachineConfigurationVersion objects.
	// +kubebuilder:validation:Required
	Template MachineConfigurationTemplate `json:"template"`

	// MachineSelector selects machines that should automatically
	// receive this configuration. If set, new machines matching the
	// selector will be assigned the latest locked version of the
	// highest priority configuration that matches.
	// +optional
	MachineSelector *metav1.LabelSelector `json:"machineSelector,omitempty"`

	// Priority determines which configuration is selected when multiple
	// configurations match a machine's labels. Higher values take
	// precedence. When two configurations have the same priority,
	// lexicographic ordering of names is used as a tiebreaker.
	// +optional
	// +kubebuilder:default=0
	Priority int32 `json:"priority,omitempty"`

	// UpdateStrategy controls how configuration changes are rolled out
	// to machines that reference this configuration.
	// +optional
	UpdateStrategy MachineConfigurationUpdateStrategy `json:"updateStrategy,omitempty"`

	// RevisionHistoryLimit is the number of old
	// MachineConfigurationVersions to retain for rollback. Versions
	// that are still referenced by a Machine are never deleted
	// regardless of this limit, so the actual number of retained
	// versions may exceed this value.
	// +optional
	// +kubebuilder:default=10
	// +kubebuilder:validation:Minimum=0
	RevisionHistoryLimit *int32 `json:"revisionHistoryLimit,omitempty"`
}

MachineConfigurationSpec defines the desired configuration profile for a class of machines.

func (*MachineConfigurationSpec) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationSpec.

func (*MachineConfigurationSpec) DeepCopyInto added in v0.1.4

func (in *MachineConfigurationSpec) DeepCopyInto(out *MachineConfigurationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineConfigurationStatus added in v0.1.4

type MachineConfigurationStatus struct {
	// LatestVersion is the highest version number that has been
	// created for this MachineConfiguration. The controller uses this
	// to avoid reusing version numbers when versions are deleted.
	LatestVersion int32 `json:"latestVersion,omitempty"`

	// CurrentVersion is the version number of the latest non-deployed
	// (editable) MachineConfigurationVersion. If all versions are
	// deployed, this is 0.
	CurrentVersion int32 `json:"currentVersion,omitempty"`

	// Conditions represent the latest available observations of the
	// MachineConfiguration's state.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

MachineConfigurationStatus defines the observed state of a MachineConfiguration.

func (*MachineConfigurationStatus) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationStatus.

func (*MachineConfigurationStatus) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineConfigurationTemplate added in v0.1.4

type MachineConfigurationTemplate struct {
	// Kubernetes contains Kubernetes-specific configuration such as
	// the target version, node labels, and taints.
	// +optional
	Kubernetes *MachineConfigurationKubernetes `json:"kubernetes,omitempty"`

	// Agent contains settings for the unbounded node agent (e.g. the
	// OCI image reference for the nspawn machine).
	// +optional
	Agent *MachineConfigurationAgent `json:"agent,omitempty"`
}

MachineConfigurationTemplate holds the versioned configuration fields. These fields are copied into each MachineConfigurationVersion.

func (*MachineConfigurationTemplate) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationTemplate.

func (*MachineConfigurationTemplate) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineConfigurationUpdateStrategy added in v0.1.4

type MachineConfigurationUpdateStrategy struct {
	// Type is the update strategy type.
	// +kubebuilder:default=OnDelete
	Type MachineConfigurationUpdateStrategyType `json:"type,omitempty"`

	// MaxUnavailable is the maximum number of machines that can be
	// unavailable during a RollingUpdate. Only used when Type is
	// RollingUpdate. Can be an absolute number or a percentage.
	// +optional
	MaxUnavailable *int32 `json:"maxUnavailable,omitempty"`
}

MachineConfigurationUpdateStrategy defines the strategy for applying configuration updates.

func (*MachineConfigurationUpdateStrategy) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationUpdateStrategy.

func (*MachineConfigurationUpdateStrategy) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineConfigurationUpdateStrategyType added in v0.1.4

type MachineConfigurationUpdateStrategyType string

MachineConfigurationUpdateStrategyType defines how configuration changes are applied to machines. +kubebuilder:validation:Enum=OnDelete;RollingUpdate

const (
	// OnDeleteUpdateStrategy requires the operator to manually
	// cordon, drain, and delete the Node object to trigger a repave
	// with the new configuration.
	OnDeleteUpdateStrategy MachineConfigurationUpdateStrategyType = "OnDelete"

	// RollingUpdateStrategy automates the cordon/drain/delete cycle
	// across machines, respecting maxUnavailable. Reserved for future
	// implementation.
	RollingUpdateStrategy MachineConfigurationUpdateStrategyType = "RollingUpdate"
)

type MachineConfigurationVersion added in v0.1.4

type MachineConfigurationVersion struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   MachineConfigurationVersionSpec   `json:"spec,omitempty"`
	Status MachineConfigurationVersionStatus `json:"status,omitempty"`
}

MachineConfigurationVersion is an immutable-once-deployed snapshot of a MachineConfiguration's spec at a specific point in time. It acts like a ReplicaSet to a Deployment: the MachineConfiguration controller automatically creates and manages these objects. Versions remain editable until they are deployed (referenced by a Machine). Once deployed, the spec fields become immutable.

func (*MachineConfigurationVersion) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersion.

func (*MachineConfigurationVersion) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineConfigurationVersion) DeepCopyObject added in v0.1.4

func (in *MachineConfigurationVersion) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineConfigurationVersionList added in v0.1.4

type MachineConfigurationVersionList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MachineConfigurationVersion `json:"items"`
}

MachineConfigurationVersionList contains a list of MachineConfigurationVersion.

func (*MachineConfigurationVersionList) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersionList.

func (*MachineConfigurationVersionList) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineConfigurationVersionList) DeepCopyObject added in v0.1.4

func (in *MachineConfigurationVersionList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineConfigurationVersionSpec added in v0.1.4

type MachineConfigurationVersionSpec struct {
	// Version is the monotonically increasing version number within
	// the parent MachineConfiguration.
	// +kubebuilder:validation:Minimum=1
	Version int32 `json:"version"`

	// Template is the configuration snapshot copied from the parent
	// MachineConfiguration at the time this version was created or
	// last updated (while still editable).
	Template MachineConfigurationTemplate `json:"template"`
}

MachineConfigurationVersionSpec defines the versioned configuration snapshot.

func (*MachineConfigurationVersionSpec) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersionSpec.

func (*MachineConfigurationVersionSpec) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineConfigurationVersionStatus added in v0.1.4

type MachineConfigurationVersionStatus struct {
	// Deployed indicates whether any Machine has been provisioned
	// using this version. Once true, the spec fields are immutable.
	Deployed bool `json:"deployed,omitempty"`

	// DeployedMachines is the count of Machines currently referencing
	// this version.
	DeployedMachines int32 `json:"deployedMachines,omitempty"`

	// Conditions represent the latest available observations.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

MachineConfigurationVersionStatus defines the observed state of a MachineConfigurationVersion.

func (*MachineConfigurationVersionStatus) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersionStatus.

func (*MachineConfigurationVersionStatus) DeepCopyInto added in v0.1.4

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineList

type MachineList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Machine `json:"items"`
}

MachineList contains a list of Machine.

func (*MachineList) DeepCopy

func (in *MachineList) DeepCopy() *MachineList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineList.

func (*MachineList) DeepCopyInto

func (in *MachineList) DeepCopyInto(out *MachineList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineList) DeepCopyObject

func (in *MachineList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineOperation added in v0.1.4

type MachineOperation struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   MachineOperationSpec   `json:"spec,omitempty"`
	Status MachineOperationStatus `json:"status,omitempty"`
}

MachineOperation represents a discrete operation to be performed on a Machine. MachineOperations are created by CLI commands or controllers and processed by the appropriate agent. The in-VM agent handles operations like NodeReboot, while cloud or PXE controllers handle operations like HostReboot, HostPowerOff, and HostPowerOn.

func (*MachineOperation) DeepCopy added in v0.1.4

func (in *MachineOperation) DeepCopy() *MachineOperation

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperation.

func (*MachineOperation) DeepCopyInto added in v0.1.4

func (in *MachineOperation) DeepCopyInto(out *MachineOperation)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineOperation) DeepCopyObject added in v0.1.4

func (in *MachineOperation) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineOperationCredential added in v0.1.8

type MachineOperationCredential struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec MachineOperationCredentialSpec `json:"spec,omitempty"`
}

MachineOperationCredential defines the credential source used by external MachineOperation controllers for machines in a site.

func (*MachineOperationCredential) DeepCopy added in v0.1.8

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredential.

func (*MachineOperationCredential) DeepCopyInto added in v0.1.8

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineOperationCredential) DeepCopyObject added in v0.1.8

func (in *MachineOperationCredential) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineOperationCredentialAuth added in v0.1.8

type MachineOperationCredentialAuth struct {
	// Mode identifies the credential source.
	// +kubebuilder:validation:Required
	Mode MachineOperationCredentialAuthMode `json:"mode"`

	// SecretRef references provider-specific external plugin configuration. It
	// is required for ExternalPlugin mode.
	// +optional
	SecretRef *NamespacedSecretReference `json:"secretRef,omitempty"`
}

MachineOperationCredentialAuth defines the credential source configuration.

func (*MachineOperationCredentialAuth) DeepCopy added in v0.1.8

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredentialAuth.

func (*MachineOperationCredentialAuth) DeepCopyInto added in v0.1.8

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineOperationCredentialAuthMode added in v0.1.8

type MachineOperationCredentialAuthMode string

MachineOperationCredentialAuthMode identifies the credential source used by a MachineOperation controller. +kubebuilder:validation:Enum=WorkloadIdentity;ExternalPlugin

const (
	// MachineOperationCredentialAuthWorkloadIdentity uses OIDC/workload identity
	// credentials available to the controller process.
	MachineOperationCredentialAuthWorkloadIdentity MachineOperationCredentialAuthMode = "WorkloadIdentity"

	// MachineOperationCredentialAuthExternalPlugin delegates credential handling
	// to provider-specific external plugin configuration.
	MachineOperationCredentialAuthExternalPlugin MachineOperationCredentialAuthMode = "ExternalPlugin"
)

type MachineOperationCredentialList added in v0.1.8

type MachineOperationCredentialList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MachineOperationCredential `json:"items"`
}

MachineOperationCredentialList contains a list of MachineOperationCredential.

func (*MachineOperationCredentialList) DeepCopy added in v0.1.8

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredentialList.

func (*MachineOperationCredentialList) DeepCopyInto added in v0.1.8

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineOperationCredentialList) DeepCopyObject added in v0.1.8

func (in *MachineOperationCredentialList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineOperationCredentialSpec added in v0.1.8

type MachineOperationCredentialSpec struct {
	// SiteName is matched against the Machine site label.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	SiteName string `json:"siteName"`

	// Provider identifies the external control provider this credential applies
	// to.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Provider string `json:"provider"`

	// Auth identifies how the provider should authenticate.
	// +kubebuilder:validation:Required
	Auth MachineOperationCredentialAuth `json:"auth"`
}

MachineOperationCredentialSpec defines a provider credential source for a site.

func (*MachineOperationCredentialSpec) DeepCopy added in v0.1.8

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredentialSpec.

func (*MachineOperationCredentialSpec) DeepCopyInto added in v0.1.8

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineOperationList added in v0.1.4

type MachineOperationList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MachineOperation `json:"items"`
}

MachineOperationList contains a list of MachineOperation.

func (*MachineOperationList) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationList.

func (*MachineOperationList) DeepCopyInto added in v0.1.4

func (in *MachineOperationList) DeepCopyInto(out *MachineOperationList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineOperationList) DeepCopyObject added in v0.1.4

func (in *MachineOperationList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MachineOperationSpec added in v0.1.4

type MachineOperationSpec struct {
	// MachineRef is the name of the Machine CR this operation targets.
	// Either machineRef or machineSelector must be set.
	// +optional
	MachineRef string `json:"machineRef,omitempty"`

	// MachineSelector selects machines by labels. When set, the
	// controller creates individual MachineOperation children for
	// each matched machine. Either machineRef or machineSelector
	// must be set.
	// +optional
	MachineSelector *metav1.LabelSelector `json:"machineSelector,omitempty"`

	// OperationKind is the operation to perform on the target machine.
	// +kubebuilder:validation:Required
	OperationKind OperationKind `json:"operationKind"`

	// Parameters is an optional set of key-value pairs passed to the
	// operation executor. For example, RestartService uses "service" to
	// specify the systemd unit name.
	// TODO: Revisit whether map[string]string is sufficient or if we
	// need a richer type (e.g. runtime.RawExtension for arbitrary
	// JSON, or a typed []OperationParameter struct).
	// +optional
	Parameters map[string]string `json:"parameters,omitempty"`

	// TTLSecondsAfterFinished limits the lifetime of a completed or failed
	// MachineOperation. If set, the agent deletes the MachineOperation
	// this many seconds after it reaches a terminal phase. If unset, the
	// MachineOperation is kept indefinitely.
	// +optional
	// +kubebuilder:validation:Minimum=0
	TTLSecondsAfterFinished *int32 `json:"ttlSecondsAfterFinished,omitempty"`
}

MachineOperationSpec defines the desired state of a MachineOperation.

func (*MachineOperationSpec) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationSpec.

func (*MachineOperationSpec) DeepCopyInto added in v0.1.4

func (in *MachineOperationSpec) DeepCopyInto(out *MachineOperationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineOperationStatus added in v0.1.4

type MachineOperationStatus struct {
	// Phase is the current phase of the operation.
	Phase OperationPhase `json:"phase,omitempty"`

	// Message is a human-readable description of the current state.
	// +optional
	Message string `json:"message,omitempty"`

	// StartedAt is when the agent began executing the operation.
	// +optional
	StartedAt *metav1.Time `json:"startedAt,omitempty"`

	// CompletedAt is when the operation reached a terminal state
	// (Complete or Failed).
	// +optional
	CompletedAt *metav1.Time `json:"completedAt,omitempty"`

	// ObservedMachineGeneration is the Machine's metadata.generation
	// at the time the agent began executing the operation. Clients
	// can compare this to the current Machine generation to determine
	// whether the operation acted on the expected machine state.
	// +optional
	ObservedMachineGeneration int64 `json:"observedMachineGeneration,omitempty"`

	// Targets records the per-machine execution state for this operation.
	// For single-machine operations this contains one entry. For selector
	// operations, targets are snapshotted when execution begins and remain
	// authoritative even if selector matches change later.
	// +optional
	// +listType=map
	// +listMapKey=machineRef
	Targets []MachineOperationTargetStatus `json:"targets,omitempty"`

	// Conditions represent the latest available observations of the
	// operation's state.
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

MachineOperationStatus defines the observed state of a MachineOperation.

func (*MachineOperationStatus) DeepCopy added in v0.1.4

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationStatus.

func (*MachineOperationStatus) DeepCopyInto added in v0.1.4

func (in *MachineOperationStatus) DeepCopyInto(out *MachineOperationStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MachineOperationStatus) IsTerminal added in v0.1.4

func (s *MachineOperationStatus) IsTerminal() bool

IsTerminal returns true if the operation phase is Complete or Failed.

type MachineOperationTargetStatus added in v0.1.7

type MachineOperationTargetStatus struct {
	// MachineRef is the name of the targeted Machine.
	// +kubebuilder:validation:Required
	MachineRef string `json:"machineRef"`

	// Phase is the current lifecycle phase for this target.
	// +optional
	Phase OperationPhase `json:"phase,omitempty"`

	// Stage is the current operation-specific stage for this target.
	// +optional
	Stage OperationStage `json:"stage,omitempty"`

	// Message is a human-readable description of target progress or failure.
	// +optional
	Message string `json:"message,omitempty"`

	// StartedAt is when execution began for this target.
	// +optional
	StartedAt *metav1.Time `json:"startedAt,omitempty"`

	// CompletedAt is when this target reached a terminal phase.
	// +optional
	CompletedAt *metav1.Time `json:"completedAt,omitempty"`

	// ObservedGeneration is the target Machine generation acted on.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// TargetOperations records the Machine operation counters this operation
	// requested. It is used by counter-backed HostReplace operations to remain
	// idempotent across controller restarts.
	// +optional
	TargetOperations *OperationsStatus `json:"targetOperations,omitempty"`

	// Attempts is the number of external action attempts made for this target.
	// Polling expected state changes does not increment this field.
	// +optional
	Attempts int32 `json:"attempts,omitempty"`

	// LastAttemptAt records when the latest external action attempt occurred.
	// +optional
	LastAttemptAt *metav1.Time `json:"lastAttemptAt,omitempty"`
}

MachineOperationTargetStatus records execution state for one target Machine.

func (*MachineOperationTargetStatus) DeepCopy added in v0.1.7

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationTargetStatus.

func (*MachineOperationTargetStatus) DeepCopyInto added in v0.1.7

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachinePhase

type MachinePhase string

MachinePhase represents the current phase of a Machine.

const (
	MachinePhasePending      MachinePhase = "Pending"
	MachinePhaseRebooting    MachinePhase = "Rebooting"
	MachinePhaseProvisioning MachinePhase = "Provisioning"
	MachinePhaseJoining      MachinePhase = "Joining"
	MachinePhaseReady        MachinePhase = "Ready"
	MachinePhaseFailed       MachinePhase = "Failed"
)

type MachineSpec

type MachineSpec struct {
	// SSH contains the SSH connection and credential details for the
	// machine.
	// +optional
	SSH *SSHSpec `json:"ssh,omitempty"`

	// PXE contains PXE boot configuration for the machine.
	// +optional
	PXE *PXESpec `json:"pxe,omitempty"`

	// Kubernetes contains Kubernetes-specific configuration.
	// +optional
	Kubernetes *KubernetesSpec `json:"kubernetes,omitempty"`

	// Agent contains settings for the unbounded node agent.
	// +optional
	Agent *AgentSpec `json:"agent,omitempty"`

	// Operations contains counter-based operation triggers.
	// +optional
	Operations *OperationsSpec `json:"operations,omitempty"`

	// Provider identifies the external control provider for this machine.
	// +optional
	// +kubebuilder:validation:MinLength=1
	Provider string `json:"provider,omitempty"`

	// ProviderID identifies the underlying infrastructure resource for this
	// machine, using a Kubernetes-style provider ID such as
	// azure:///subscriptions/.../virtualMachines/name or oci://ocid1.instance...
	// +optional
	ProviderID string `json:"providerID,omitempty"`

	// ConfigurationRef references a MachineConfiguration (and
	// optionally a specific version) that defines the configuration
	// profile for this machine. If a specific version is set, that
	// version is used at provisioning time; otherwise the latest
	// locked version is used and the version field is set by the
	// controller.
	// +optional
	ConfigurationRef *MachineConfigurationRef `json:"configurationRef,omitempty"`
}

MachineSpec defines the desired state of a Machine.

func (*MachineSpec) DeepCopy

func (in *MachineSpec) DeepCopy() *MachineSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineSpec.

func (*MachineSpec) DeepCopyInto

func (in *MachineSpec) DeepCopyInto(out *MachineSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MachineStatus

type MachineStatus struct {
	// Phase is the current phase of the machine. Intended for human
	// consumption; follows the state machine rather than driving it.
	Phase MachinePhase `json:"phase,omitempty"`

	// Message provides additional status information.
	Message string `json:"message,omitempty"`

	// SSH holds observed SSH state.
	// +optional
	SSH *SSHStatus `json:"ssh,omitempty"`

	// Redfish holds observed Redfish state.
	// +optional
	Redfish *RedfishStatus `json:"redfish,omitempty"`

	// TPM holds observed TPM state.
	// +optional
	TPM *TPMStatus `json:"tpm,omitempty"`

	// Agent holds the applied agent settings.
	// +optional
	Agent *AgentStatus `json:"agent,omitempty"`

	// Operations holds the last-observed operation counters.
	// +optional
	Operations *OperationsStatus `json:"operations,omitempty"`

	// Configuration records the MachineConfigurationVersion that was
	// applied to this machine during the most recent provisioning.
	// +optional
	Configuration *MachineConfigurationRefStatus `json:"configuration,omitempty"`

	// Conditions represent the latest available observations of the
	// machine's state.
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

MachineStatus defines the observed state of a Machine.

func (*MachineStatus) DeepCopy

func (in *MachineStatus) DeepCopy() *MachineStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineStatus.

func (*MachineStatus) DeepCopyInto

func (in *MachineStatus) DeepCopyInto(out *MachineStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NamespacedSecretReference added in v0.1.8

type NamespacedSecretReference struct {
	// Name of the secret.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Namespace of the secret.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Namespace string `json:"namespace"`
}

NamespacedSecretReference contains enough information to locate a Secret.

func (*NamespacedSecretReference) DeepCopy added in v0.1.8

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespacedSecretReference.

func (*NamespacedSecretReference) DeepCopyInto added in v0.1.8

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OperationKind added in v0.1.4

type OperationKind string

OperationKind identifies the kind of operation to perform. Predefined operations cover common lifecycle actions; custom operations may be supported by individual cloud controllers. +kubebuilder:validation:Enum=NodeReboot;AgentUpgrade;AgentReset;HostReboot;HostPowerOff;HostPowerOn;HostReplace

const (
	// OperationNodeReboot restarts the nspawn-backed node in place without
	// reprovisioning the rootfs. Services are stopped, the nspawn container
	// is restarted, and services are brought back up. Handled by the
	// in-VM agent.
	OperationNodeReboot OperationKind = "NodeReboot"

	// OperationAgentUpgrade upgrades the host-side unbounded-agent binary.
	// Handled by the in-VM agent.
	OperationAgentUpgrade OperationKind = "AgentUpgrade"

	// OperationAgentReset resets the host by removing the unbounded-agent and
	// all associated resources. Handled by the in-VM agent.
	OperationAgentReset OperationKind = "AgentReset"

	// OperationHostReboot triggers a full hardware power cycle of the host
	// via BMC (e.g. Redfish). Handled by the machina controller or cloud
	// controller.
	OperationHostReboot OperationKind = "HostReboot"

	// OperationHostPowerOff powers off the host through an out-of-band provider.
	OperationHostPowerOff OperationKind = "HostPowerOff"

	// OperationHostPowerOn powers on the host through an out-of-band provider.
	OperationHostPowerOn OperationKind = "HostPowerOn"

	// OperationHostReplace replaces the host VM through an out-of-band provider
	// and reinstalls the unbounded-agent so the node can rejoin the cluster.
	OperationHostReplace OperationKind = "HostReplace"
)

type OperationPhase added in v0.1.4

type OperationPhase string

OperationPhase represents the current phase of a MachineOperation.

const (
	OperationPhasePending    OperationPhase = "Pending"
	OperationPhaseInProgress OperationPhase = "InProgress"
	OperationPhaseComplete   OperationPhase = "Complete"
	OperationPhaseFailed     OperationPhase = "Failed"
)

type OperationStage added in v0.1.7

type OperationStage string

OperationStage represents the current stage of a target operation.

const (
	OperationStagePoweringOff     OperationStage = "PoweringOff"
	OperationStageWaitingOff      OperationStage = "WaitingOff"
	OperationStagePoweringOn      OperationStage = "PoweringOn"
	OperationStageWaitingOn       OperationStage = "WaitingOn"
	OperationStageRepaveRequested OperationStage = "RepaveRequested"
	OperationStageWaitingRepave   OperationStage = "WaitingRepave"
)

type OperationsSpec

type OperationsSpec struct {
	// RebootCounter triggers a reboot when it exceeds the status
	// reboot counter.
	// +optional
	RebootCounter int64 `json:"rebootCounter,omitempty"`

	// RepaveCounter triggers a repave when it exceeds the status
	// repave counter.
	// +optional
	RepaveCounter int64 `json:"repaveCounter,omitempty"`
}

OperationsSpec defines counter-based operation triggers. Controllers compare spec counters against status counters to determine if an operation is needed.

func (*OperationsSpec) DeepCopy

func (in *OperationsSpec) DeepCopy() *OperationsSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationsSpec.

func (*OperationsSpec) DeepCopyInto

func (in *OperationsSpec) DeepCopyInto(out *OperationsSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OperationsStatus

type OperationsStatus struct {
	// RebootCounter is the last reboot counter value that was acted on.
	RebootCounter int64 `json:"rebootCounter,omitempty"`

	// RepaveCounter is the last repave counter value that was acted on.
	RepaveCounter int64 `json:"repaveCounter,omitempty"`
}

OperationsStatus holds the last-observed operation counters.

func (*OperationsStatus) DeepCopy

func (in *OperationsStatus) DeepCopy() *OperationsStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationsStatus.

func (*OperationsStatus) DeepCopyInto

func (in *OperationsStatus) DeepCopyInto(out *OperationsStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PXESpec

type PXESpec struct {
	// Image is an OCI image reference containing netboot artifacts.
	// Example: "ghcr.io/azure/images/host-ubuntu2404:v1"
	// +kubebuilder:validation:Required
	Image string `json:"image"`

	// DHCPLeases defines static DHCP leases for PXE booting.
	// +optional
	DHCPLeases []DHCPLease `json:"dhcpLeases,omitempty"`

	// Redfish configures optional Redfish BMC access.
	// +optional
	Redfish *RedfishSpec `json:"redfish,omitempty"`

	// CloudInit contains optional cloud-init customization for PXE-booted
	// machines.
	// +optional
	CloudInit *CloudInitSpec `json:"cloudInit,omitempty"`
}

PXESpec defines PXE boot configuration for a Machine.

func (*PXESpec) DeepCopy

func (in *PXESpec) DeepCopy() *PXESpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PXESpec.

func (*PXESpec) DeepCopyInto

func (in *PXESpec) DeepCopyInto(out *PXESpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RedfishSpec

type RedfishSpec struct {
	// URL is the Redfish endpoint URL.
	// +kubebuilder:validation:Required
	URL string `json:"url"`

	// Username is the Redfish username.
	// +kubebuilder:validation:Required
	Username string `json:"username"`

	// DeviceID is the Redfish system device ID. Defaults to "1".
	// +kubebuilder:default="1"
	DeviceID string `json:"deviceID,omitempty"`

	// PasswordRef references a secret containing the Redfish password.
	// +kubebuilder:validation:Required
	PasswordRef SecretKeySelector `json:"passwordRef"`
}

RedfishSpec defines Redfish BMC connection details.

func (*RedfishSpec) DeepCopy

func (in *RedfishSpec) DeepCopy() *RedfishSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RedfishSpec.

func (*RedfishSpec) DeepCopyInto

func (in *RedfishSpec) DeepCopyInto(out *RedfishSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RedfishStatus

type RedfishStatus struct {
	// CertFingerprint is the TLS certificate fingerprint for the
	// Redfish endpoint, pinned on first connection.
	CertFingerprint string `json:"certFingerprint,omitempty"`
}

RedfishStatus holds observed Redfish state.

func (*RedfishStatus) DeepCopy

func (in *RedfishStatus) DeepCopy() *RedfishStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RedfishStatus.

func (*RedfishStatus) DeepCopyInto

func (in *RedfishStatus) DeepCopyInto(out *RedfishStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SSHSpec

type SSHSpec struct {
	// Host is the hostname or IP address of the machine, optionally
	// including the port (e.g. "1.2.3.4:2222"). When the port is
	// omitted, 22 is assumed.
	// +kubebuilder:validation:Required
	Host string `json:"host"`

	// Username is the SSH username.
	// +kubebuilder:default=azureuser
	Username string `json:"username,omitempty"`

	// PrivateKeyRef references a secret containing the SSH private key.
	// +kubebuilder:validation:Required
	PrivateKeyRef SecretKeySelector `json:"privateKeyRef"`

	// Bastion configures an optional SSH jump host (bastion) for proxy
	// connections. Its structure is identical to SSHSpec minus the
	// bastion field itself.
	// +optional
	Bastion *BastionSSHSpec `json:"bastion,omitempty"`
}

SSHSpec defines SSH connection details. The same structure is reused for both the target machine and the optional bastion host.

func (*SSHSpec) DeepCopy

func (in *SSHSpec) DeepCopy() *SSHSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHSpec.

func (*SSHSpec) DeepCopyInto

func (in *SSHSpec) DeepCopyInto(out *SSHSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SSHStatus

type SSHStatus struct {
	// Fingerprint is the SSH host key fingerprint discovered on
	// first connection. Subsequent connections must match this value.
	Fingerprint string `json:"fingerprint,omitempty"`
}

SSHStatus holds observed SSH state.

func (*SSHStatus) DeepCopy

func (in *SSHStatus) DeepCopy() *SSHStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHStatus.

func (*SSHStatus) DeepCopyInto

func (in *SSHStatus) DeepCopyInto(out *SSHStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecretKeySelector

type SecretKeySelector struct {
	// Name of the secret.
	Name string `json:"name"`

	// Namespace of the secret.
	Namespace string `json:"namespace"`

	// Key within the secret.
	// +kubebuilder:default=ssh-privatekey
	Key string `json:"key,omitempty"`
}

SecretKeySelector selects a key from a Secret.

func (*SecretKeySelector) DeepCopy

func (in *SecretKeySelector) DeepCopy() *SecretKeySelector

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretKeySelector.

func (*SecretKeySelector) DeepCopyInto

func (in *SecretKeySelector) DeepCopyInto(out *SecretKeySelector)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TPMStatus

type TPMStatus struct {
	// EKPublicKey is the TPM endorsement key public key, written
	// when the PXE boot image requests a bootstrap token.
	EKPublicKey string `json:"ekPublicKey,omitempty"`
}

TPMStatus holds observed TPM state.

func (*TPMStatus) DeepCopy

func (in *TPMStatus) DeepCopy() *TPMStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TPMStatus.

func (*TPMStatus) DeepCopyInto

func (in *TPMStatus) DeepCopyInto(out *TPMStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

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