v1alpha3

package
v0.22.0 Latest Latest
Warning

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

Go to latest
Published: Nov 4, 2026 License: Apache-2.0 Imports: 8 Imported by: 1

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"

	// MachineConditionAgentBootstrapped indicates whether the unbounded
	// agent completed initial node bootstrap. Status is False with Reason
	// "Running" while the agent is preparing the nspawn node, False with
	// a failure reason when nspawn startup or kubelet TLS bootstrap fails,
	// and True with Reason "Succeeded" once the kubelet has bootstrapped.
	MachineConditionAgentBootstrapped = "AgentBootstrapped"

	// 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 (
	// PXEBootProtocolPXE uses DHCP/TFTP PXE boot.
	PXEBootProtocolPXE = "PXE"
	// PXEBootProtocolHTTP uses Redfish UEFI HTTP boot.
	PXEBootProtocolHTTP = "HTTP"
	// PXEBootProtocolVirtualMedia uses a Redfish-mounted bootstrap ISO.
	PXEBootProtocolVirtualMedia = "VirtualMedia"
	// PXEArchitectureAMD64 is the x86_64 target architecture for PXE boot.
	PXEArchitectureAMD64 = "amd64"
	// PXEArchitectureARM64 is the aarch64 target architecture for PXE boot.
	PXEArchitectureARM64 = "arm64"
	// DefaultPXEArchitecture is used when host.netboot.architecture is omitted.
	DefaultPXEArchitecture = PXEArchitectureAMD64
	// DefaultPXEBootProtocol is used when host.netboot.bootProtocol is omitted.
	DefaultPXEBootProtocol = PXEBootProtocolPXE
)
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 (
	// MachineOperationConditionCompleted indicates whether the operation has
	// reached a terminal state.
	MachineOperationConditionCompleted = "Completed"

	// MachineOperationConditionBootLoaderDownloaded indicates that a metalman
	// target has downloaded the initial PXE boot loader for the operation.
	// Once set to True for an operation, it remains latched.
	MachineOperationConditionBootLoaderDownloaded = "BootLoaderDownloaded"

	// MachineOperationConditionBootImageWritten indicates that a metalman
	// target has booted the PXE installer and written the boot image to disk.
	MachineOperationConditionBootImageWritten = "BootImageWritten"

	// MachineOperationConditionCloudInitDone indicates that a metalman PXE
	// target has completed first-boot cloud-init after writing the boot image.
	MachineOperationConditionCloudInitDone = "CloudInitDone"

	// MachineOperationConditionProviderOperationStalled reports that an
	// accepted external provider operation has exceeded its expected duration.
	MachineOperationConditionProviderOperationStalled = "ProviderOperationStalled"
)

Condition types for MachineOperation.

View Source
const (
	// OverridePhaseNone means no override resolves to any workload for the Site.
	OverridePhaseNone = "None"

	// OverridePhaseApplied means every resolved workload carries the hash that
	// was desired. It reports that the merge was written, not that the pods are
	// healthy.
	OverridePhaseApplied = "Applied"

	// OverridePhaseDegraded means the document could not be used, a workload
	// failed, or an applied hash differs from the desired one.
	OverridePhaseDegraded = "Degraded"
)

Override phases reported in OverrideStatus.Phase.

These are deliberately not declared as a schema enum. The operator is the only writer and the values come from these constants, so validation could only catch a bug the compiler already prevents. What it would add is a failure mode: a newer operator writing a value an older CRD's enum does not list has its whole status patch rejected, taking every condition on the Site with it, where an unrecognized value would otherwise simply be pruned. Every enum elsewhere in this API is on a spec field, where the input is user-supplied and rejecting it is the point.

View Source
const (
	// OverrideStateApplied means the merged workload was written and carries
	// the hash that was desired.
	OverrideStateApplied = "Applied"

	// OverrideStatePending means the write was deferred to the next pass
	// because the cluster moved under this one. Nothing is wrong and no action
	// is needed.
	OverrideStatePending = "Pending"

	// OverrideStateWithheld means the operator declined to write the workload
	// because an override that could have shaped it could not be used. The
	// running workload is untouched, which is the point.
	OverrideStateWithheld = "Withheld"

	// OverrideStateFailed means the override could not be resolved, merged, or
	// written.
	OverrideStateFailed = "Failed"
)

Override states reported in OverriddenWorkload.State. See the note above on why these are not a schema enum either.

View Source
const DefaultRedfishPasswordKey = "password"

DefaultRedfishPasswordKey is the Secret key that holds a Redfish password when RedfishPasswordSelector.Key is not set.

View Source
const (
	ExternalProviderAzureVM = "AzureVM"
)

External provider names.

View Source
const (
	// MachineOperationTargetConditionRedfishDisableBootOverrideUnsupported
	// indicates that metalman determined the target BMC does not support
	// disabling the Redfish boot override. When True, metalman falls back to
	// setting Hdd/Continuous for this target within this operation only.
	MachineOperationTargetConditionRedfishDisableBootOverrideUnsupported = "RedfishDisableBootOverrideUnsupported"
)

Condition types for MachineOperation targets.

View Source
const (
	// MachineSiteLabelKey is the canonical site-membership label. It scopes a
	// Machine to a site and is also the canonical label the net controller
	// applies to Nodes, superseding the deprecated net.unbounded-cloud.io/site.
	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 = &runtime.SchemeBuilder{}

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

Functions

func ComponentEnabled added in v0.1.23

func ComponentEnabled(component *SiteComponentSpec) bool

ComponentEnabled reports whether a component spec enables a component. Components default to disabled unless explicitly enabled.

func MachineConfigurationVersionName added in v0.1.4

func MachineConfigurationVersionName(configurationName string, version int32) string

MachineConfigurationVersionName returns the canonical name for a MachineConfigurationVersion child object.

func Resource added in v0.1.23

func Resource(resource string) schema.GroupResource

Resource returns a GroupResource for this API group.

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

	// CoreDNS overrides the download source for CoreDNS.
	// +optional
	CoreDNS *DownloadSource `json:"coreDNS,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"`

	// LocalDNS configures the optional CoreDNS cache inside the nspawn machine.
	// +optional
	LocalDNS *LocalDNSSpec `json:"localDNS,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 AzureHostSpec added in v0.1.23

type AzureHostSpec struct {
	// ResourceID is the full Azure Resource Manager ID of the virtual machine.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	ResourceID string `json:"resourceID"`
}

AzureHostSpec identifies one Azure virtual machine. +kubebuilder:validation:XValidation:rule="self.resourceID == oldSelf.resourceID",message="resourceID is immutable"

func (*AzureHostSpec) DeepCopy added in v0.1.23

func (in *AzureHostSpec) DeepCopy() *AzureHostSpec

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

func (*AzureHostSpec) DeepCopyInto added in v0.1.23

func (in *AzureHostSpec) DeepCopyInto(out *AzureHostSpec)

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 BootstrapStatus added in v0.17.0

type BootstrapStatus struct {
	// CredentialID is the ID of the most recent bootstrap ServiceAccount
	// token issued for this Machine, in the form the API server reports in
	// the authentication.kubernetes.io/credential-id user extra
	// (for example "JTI=<uuid>"). Kubelet client certificate requests made
	// with the token are approved only for NodeName.
	// +optional
	CredentialID string `json:"credentialID,omitempty"`

	// NodeName is the Kubernetes Node name the credential was issued for.
	// It is the name written into the agent config served to the host, so
	// later spec.kubernetes.nodeRef edits do not change which node the
	// credential may claim.
	// +optional
	NodeName string `json:"nodeName,omitempty"`

	// IssuedAt is when the credential was issued.
	// +optional
	IssuedAt *metav1.Time `json:"issuedAt,omitempty"`
}

BootstrapStatus identifies the bootstrap credential issued to a Machine.

func (*BootstrapStatus) DeepCopy added in v0.17.0

func (in *BootstrapStatus) DeepCopy() *BootstrapStatus

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

func (*BootstrapStatus) DeepCopyInto added in v0.17.0

func (in *BootstrapStatus) DeepCopyInto(out *BootstrapStatus)

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 static IPv4 provisioning network settings.

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 ExternalHostSpec added in v0.1.23

type ExternalHostSpec struct {
	// Provider selects the registered provider controller and its credentials.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Provider string `json:"provider"`

	// ProviderID is an opaque provider-specific host identifier. Providers that
	// replace the underlying resource may update it after a successful handoff.
	// +optional
	ProviderID string `json:"providerID,omitempty"`

	// MachineRef identifies an optional provider-owned resource containing rich
	// provider-specific state for this Machine.
	// +optional
	MachineRef *ProviderMachineReference `json:"machineRef,omitempty"`
}

ExternalHostSpec identifies a host owned by a registered external provider. +kubebuilder:validation:XValidation:rule="has(self.providerID) || has(self.machineRef)",message="providerID or machineRef is required" +kubebuilder:validation:XValidation:rule="has(self.machineRef) == has(oldSelf.machineRef) && (!has(self.machineRef) || self.machineRef == oldSelf.machineRef)",message="machineRef is immutable" +kubebuilder:validation:XValidation:rule="self.provider == oldSelf.provider",message="provider is immutable"

func (*ExternalHostSpec) DeepCopy added in v0.1.23

func (in *ExternalHostSpec) DeepCopy() *ExternalHostSpec

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

func (*ExternalHostSpec) DeepCopyInto added in v0.1.23

func (in *ExternalHostSpec) DeepCopyInto(out *ExternalHostSpec)

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

type GantryComponentSpec added in v0.2.0

type GantryComponentSpec struct {
	SiteComponentSpec `json:",inline"`
}

GantryComponentSpec configures the gantry peer-to-peer OCI distribution agent for a site. Gantry is a cluster-wide singleton and, unlike the other components, defaults to enabled: it is reconciled unless a site explicitly sets enabled to false.

func (*GantryComponentSpec) DeepCopy added in v0.2.0

func (in *GantryComponentSpec) DeepCopy() *GantryComponentSpec

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

func (*GantryComponentSpec) DeepCopyInto added in v0.2.0

func (in *GantryComponentSpec) DeepCopyInto(out *GantryComponentSpec)

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

type HostSpec added in v0.1.23

type HostSpec struct {
	// Image is an opaque provider-interpreted image identifier. If omitted,
	// HostReplace preserves the host's current image.
	// +optional
	Image string `json:"image,omitempty"`

	// ProvisioningFormat declares the first-boot format for the desired host
	// image. When preserving an image, omission falls back to the installed
	// observation, then CloudInit for legacy hosts. Image identifiers are opaque;
	// an explicit replacement image on a known Ignition host requires a format.
	// +optional
	ProvisioningFormat ProvisioningFormat `json:"provisioningFormat,omitempty"`

	// Netboot contains the machine-specific network boot configuration owned by
	// Metalman.
	// +optional
	Netboot *PXESpec `json:"netboot,omitempty"`

	// Azure identifies an Azure VM managed by the built-in Azure provider.
	// +optional
	Azure *AzureHostSpec `json:"azure,omitempty"`

	// External identifies a host managed by a registered external provider.
	// +optional
	External *ExternalHostSpec `json:"external,omitempty"`
}

HostSpec contains desired host settings and its mutually exclusive owner. +kubebuilder:validation:XValidation:rule="(has(self.netboot) ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.external) ? 1 : 0) <= 1",message="at most one of netboot, azure, or external may be set" +kubebuilder:validation:XValidation:rule="!has(oldSelf.netboot) || has(self.netboot)",message="netboot host ownership is immutable once set" +kubebuilder:validation:XValidation:rule="!has(oldSelf.azure) || has(self.azure)",message="azure host ownership is immutable once set" +kubebuilder:validation:XValidation:rule="!has(oldSelf.external) || has(self.external)",message="external host ownership is immutable once set"

func (*HostSpec) DeepCopy added in v0.1.23

func (in *HostSpec) DeepCopy() *HostSpec

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

func (*HostSpec) DeepCopyInto added in v0.1.23

func (in *HostSpec) DeepCopyInto(out *HostSpec)

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

func (*HostSpec) ProvisioningFormatOrDefault added in v0.9.0

func (s *HostSpec) ProvisioningFormatOrDefault() ProvisioningFormat

ProvisioningFormatOrDefault returns the declared format or the legacy default. Replacement resolution also considers template declarations and observations.

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".
	// +optional
	BootstrapTokenRef *LocalObjectReference `json:"bootstrapTokenRef,omitempty"`
}

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 LocalDNSSpec added in v0.2.3

type LocalDNSSpec struct {
	// +optional
	Enabled bool `json:"enabled,omitempty"`
	// +optional
	NodeListenerIP string `json:"nodeListenerIP,omitempty"`
	// +optional
	ClusterListenerIP string `json:"clusterListenerIP,omitempty"`
	// +optional
	MetricsAddress string `json:"metricsAddress,omitempty"`
	// +optional
	CPULimitInMilliCores *int32 `json:"cpuLimitInMilliCores,omitempty"`
	// +optional
	MemoryLimitInMB *int32 `json:"memoryLimitInMB,omitempty"`
	// +optional
	RequiredPlugins []string `json:"requiredPlugins,omitempty"`
	// +optional
	CorefileTemplate string `json:"corefileTemplate,omitempty"`
}

LocalDNSSpec configures machine-local CoreDNS.

func (*LocalDNSSpec) DeepCopy added in v0.2.3

func (in *LocalDNSSpec) DeepCopy() *LocalDNSSpec

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

func (*LocalDNSSpec) DeepCopyInto added in v0.2.3

func (in *LocalDNSSpec) DeepCopyInto(out *LocalDNSSpec)

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 MachinaComponentSpec added in v0.1.23

type MachinaComponentSpec struct {
	SiteComponentSpec `json:",inline"`
}

MachinaComponentSpec configures the machina controller for a site.

func (*MachinaComponentSpec) DeepCopy added in v0.1.23

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

func (*MachinaComponentSpec) DeepCopyInto added in v0.1.23

func (in *MachinaComponentSpec) DeepCopyInto(out *MachinaComponentSpec)

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.

func (*Machine) NodeName added in v0.17.0

func (m *Machine) NodeName() string

NodeName returns the Kubernetes Node name expected for the Machine: spec.kubernetes.nodeRef.name when set, otherwise the Machine name.

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

	// LocalDNS configures the optional CoreDNS cache for this version.
	// +optional
	LocalDNS *LocalDNSSpec `json:"localDNS,omitempty"`
}

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 MachineConfigurationHostSpec added in v0.1.23

type MachineConfigurationHostSpec struct {
	// ProvisioningFormat declares the first-boot payload understood by Image.
	// +optional
	ProvisioningFormat ProvisioningFormat `json:"provisioningFormat,omitempty"`
	// Image is an opaque provider-interpreted image identifier.
	// +optional
	Image string `json:"image,omitempty"`
}

MachineConfigurationHostSpec contains versioned, provider-neutral host settings. Per-machine host ownership belongs on Machine.spec.host.

func (*MachineConfigurationHostSpec) DeepCopy added in v0.1.23

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

func (*MachineConfigurationHostSpec) DeepCopyInto added in v0.1.23

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 {
	// Host contains provider-neutral desired host settings.
	// +optional
	Host *MachineConfigurationHostSpec `json:"host,omitempty"`

	// 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 and HostSoftReboot, while cloud or PXE controllers handle operations like HostHardReboot, 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 MachineOperationBootMediaStatus added in v0.15.0

type MachineOperationBootMediaStatus struct {
	ID              string    `json:"id"`
	SourceServer    string    `json:"sourceServer,omitempty"`
	SourceName      string    `json:"sourceName,omitempty"`
	Phase           string    `json:"phase"`
	MachineUID      types.UID `json:"machineUID"`
	Netboot         *PXESpec  `json:"netboot"`
	CertFingerprint string    `json:"certFingerprint,omitempty"`
	ImageWritten    bool      `json:"imageWritten,omitempty"`
	Cleaned         bool      `json:"cleaned,omitempty"`
	// StagedDeleted confirms rack media deletion after safe boot is restored.
	StagedDeleted bool `json:"stagedDeleted,omitempty"`
	// CleanedAt starts the bounded wait for installer reboot handoff.
	CleanedAt *metav1.Time `json:"cleanedAt,omitempty"`
	// RebootRequestedAt is set by the successful installer ready callback.
	RebootRequestedAt *metav1.Time `json:"rebootRequestedAt,omitempty"`
	// Released confirms local media removal after Cleaned revokes serving.
	Released bool `json:"released,omitempty"`
	// Site preserves controller ownership after the Machine is deleted.
	Site string `json:"site,omitempty"`
	// NodeName preserves the expected Node across Machine edits.
	NodeName string `json:"nodeName,omitempty"`
	// PhaseStartedAt bounds active progress without spending retry attempts.
	PhaseStartedAt *metav1.Time `json:"phaseStartedAt,omitempty"`
	// ReadinessStartedAt gives AC recovery one fixed grace window per phase.
	ReadinessStartedAt *metav1.Time `json:"readinessStartedAt,omitempty"`
	// LoaderStartedAt is set when the bootloader on the media first fetches
	// its install config. It proves the host booted the media.
	LoaderStartedAt *metav1.Time `json:"loaderStartedAt,omitempty"`
	// BootAttempts counts power-on attempts used to boot the media.
	BootAttempts int32 `json:"bootAttempts,omitempty"`
	// Abandoned ends ownership after the installer never finished its
	// handoff within the allowed time.
	Abandoned bool `json:"abandoned,omitempty"`
}

MachineOperationBootMediaStatus persists media ownership before BMC changes.

func (*MachineOperationBootMediaStatus) DeepCopy added in v0.15.0

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

func (*MachineOperationBootMediaStatus) DeepCopyInto added in v0.15.0

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

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 MachineOperationTargetInput added in v0.1.23

type MachineOperationTargetInput struct {
	// ProviderRef identifies the exact provider-owned resource referenced by
	// host.external.machineRef when the operation target was initialized.
	// +optional
	ProviderRef *ProviderMachineSnapshot `json:"providerRef,omitempty"`

	// HostImage is the resolved provider-interpreted host image for HostReplace.
	// An empty value instructs the provider to preserve the current image.
	// +optional
	HostImage string `json:"hostImage,omitempty"`

	// ProvisioningFormat is resolved with HostImage from the same configuration
	// version at HostReplace initialization. Retries use this frozen pair rather
	// than reselecting intent from a Machine edited during execution.
	// +optional
	ProvisioningFormat ProvisioningFormat `json:"provisioningFormat,omitempty"`
}

MachineOperationTargetInput is the immutable, controller-resolved input for one MachineOperation target. It is persisted before provider execution so retries do not silently adopt later desired-state changes.

func (*MachineOperationTargetInput) DeepCopy added in v0.1.23

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

func (*MachineOperationTargetInput) DeepCopyInto added in v0.1.23

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

type MachineOperationTargetStatus added in v0.1.7

type MachineOperationTargetStatus struct {
	// BootMedia records immutable media ownership and cleanup progress.
	// +optional
	BootMedia *MachineOperationBootMediaStatus `json:"bootMedia,omitempty"`

	// 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"`

	// BootID is the host kernel boot ID the agent observed before it issued
	// a HostSoftReboot. The agent that starts after the reboot compares it with
	// the current boot ID to decide whether the reboot happened.
	// +optional
	BootID string `json:"bootID,omitempty"`

	// Input is the immutable provider input resolved before execution begins.
	// +optional
	Input *MachineOperationTargetInput `json:"input,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"`

	// ProviderOperation identifies the resumable external operation for this
	// target, when the provider returned one.
	// +optional
	ProviderOperation *ProviderOperationStatus `json:"providerOperation,omitempty"`

	// Conditions represent target-scoped observations for this operation. These
	// conditions are not persisted on the Machine, so BMC capability fallbacks
	// apply only to this MachineOperation target.
	// +optional
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

MachineOperationTargetStatus records execution state for one target Machine.

func (MachineOperationTargetStatus) BootMediaBootUnconfirmed added in v0.19.0

func (t MachineOperationTargetStatus) BootMediaBootUnconfirmed() bool

BootMediaBootUnconfirmed reports whether the host may still be running the media installer because it has not reported booting the installed OS.

func (MachineOperationTargetStatus) CloudInitReported added in v0.19.0

func (t MachineOperationTargetStatus) CloudInitReported() bool

CloudInitReported reports whether the installed OS has reported a final cloud-init result. A failure also proves the host left the installer and booted from disk.

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.

func (MachineOperationTargetStatus) HasOutstandingBootMedia added in v0.19.0

func (t MachineOperationTargetStatus) HasOutstandingBootMedia() bool

HasOutstandingBootMedia reports whether virtual boot media for this target is still owned, or released before the host confirmed a boot from disk. The host must not be rebooted by anyone else while this holds.

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 legacy PXE boot configuration for the machine. New callers
	// should use Host.Netboot.
	// +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"`

	// Provider identifies the legacy external control provider for this machine.
	// New callers should use Host.External.Provider or Host.Azure.
	// +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
	//
	// This is a legacy field. New callers should use Host.External.ProviderID,
	// Host.External.MachineRef, or Host.Azure.ResourceID.
	// +optional
	ProviderID string `json:"providerID,omitempty"`

	// Host contains desired host settings and exactly one optional host owner.
	// New Machines should set one of Netboot, Azure, or External. Image alone
	// may be used with deprecated ownership fields during migration.
	// +optional
	Host *HostSpec `json:"host,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. +kubebuilder:validation:XValidation:rule="!has(oldSelf.provider) || (has(self.provider) && self.provider == oldSelf.provider)",message="provider is immutable once set" +kubebuilder:validation:XValidation:rule="!has(self.host) || (!has(self.host.netboot) && !has(self.host.azure) && !has(self.host.external)) || (!has(self.pxe) && !has(self.provider) && !has(self.providerID))",message="host ownership cannot be combined with legacy pxe, provider, or providerID fields"

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.

func (*MachineSpec) Netboot added in v0.1.23

func (s *MachineSpec) Netboot() *PXESpec

Netboot returns the canonical network boot configuration, falling back to the released spec.pxe field for existing Machines.

type MachineStatus

type MachineStatus struct {
	// ObservedProvisioningFormat is the agent's explicit installation observation.
	// It does not override desired replacement image settings.
	// +optional
	ObservedProvisioningFormat ProvisioningFormat `json:"observedProvisioningFormat,omitempty"`
	// 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"`

	// Bootstrap records the bootstrap credential most recently issued to
	// this Machine by TPM attestation.
	// +optional
	Bootstrap *BootstrapStatus `json:"bootstrap,omitempty"`

	// Agent holds the applied agent settings.
	// +optional
	Agent *AgentStatus `json:"agent,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 MetalmanComponentSpec added in v0.1.23

type MetalmanComponentSpec struct {
	SiteComponentSpec `json:",inline"`

	// DHCPAutoInterface lets Metalman choose the DHCP interface automatically.
	// +optional
	DHCPAutoInterface *bool `json:"dhcpAutoInterface,omitempty"`

	// Replicas is the desired number of Metalman replicas. Defaults to 1 when
	// omitted.
	// +kubebuilder:validation:Minimum=0
	// +optional
	Replicas *int32 `json:"replicas,omitempty"`
}

MetalmanComponentSpec configures Metalman for a site.

func (*MetalmanComponentSpec) DeepCopy added in v0.1.23

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

func (*MetalmanComponentSpec) DeepCopyInto added in v0.1.23

func (in *MetalmanComponentSpec) DeepCopyInto(out *MetalmanComponentSpec)

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;HostHardReboot;HostSoftReboot;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"

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

	// OperationHostSoftReboot reboots the host operating system from inside
	// the host (systemctl reboot). Handled by the in-VM agent, which reports
	// completion after it starts again on a new boot. The agent does not start
	// it while an out-of-band host operation targeting the same Machine is
	// unfinished; out-of-band host operations do not wait for it.
	OperationHostSoftReboot OperationKind = "HostSoftReboot"

	// 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"
	OperationStageWaitingCloudInit OperationStage = "WaitingCloudInit"
	OperationStageWaitingNode      OperationStage = "WaitingNode"
	OperationStageWaitingProvider  OperationStage = "WaitingProviderOperation"
)

type OverriddenWorkload added in v0.3.0

type OverriddenWorkload struct {
	// Kind and Name identify the workload. Name alone is not unique, because a
	// Deployment and a DaemonSet may share one.
	Kind string `json:"kind"`
	Name string `json:"name"`

	// DesiredHash is computed by the operator from the observed ConfigMap.
	// AppliedHash is what the workload actually carries. They match when the
	// override is in effect and differ when it could not be applied.
	// +optional
	DesiredHash string `json:"desiredHash,omitempty"`
	// +optional
	AppliedHash string `json:"appliedHash,omitempty"`

	// VersionDrift is set when an override changed a container image, formatted
	// as `<container>=<image>`. Such a component is no longer version-matched to
	// the operator, and the pin survives operator upgrades, which makes it the
	// likeliest cause of an install behaving unlike its reported version.
	// +optional
	VersionDrift string `json:"versionDrift,omitempty"`

	// State is what happened to this workload's override in the last pass: one
	// of Applied, Pending, Withheld or Failed.
	//
	// The hashes alone cannot express it. A workload the operator declined to
	// write has no applied hash, and neither does one whose write was deferred
	// for a second, and neither does one whose merge failed; reading an empty
	// applied hash as "not applied" reported all three identically, and a
	// withheld workload appeared in status not at all.
	//
	// It may be empty when the operator that wrote this status predates the
	// field, or when a CRD older than the operator pruned it. Consumers should
	// fall back to comparing the hashes.
	// +optional
	State string `json:"state,omitempty"`
}

OverriddenWorkload reports the override state of one workload.

func (*OverriddenWorkload) DeepCopy added in v0.3.0

func (in *OverriddenWorkload) DeepCopy() *OverriddenWorkload

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

func (*OverriddenWorkload) DeepCopyInto added in v0.3.0

func (in *OverriddenWorkload) DeepCopyInto(out *OverriddenWorkload)

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

type OverrideStatus added in v0.3.0

type OverrideStatus struct {
	// Phase is the aggregate state of override processing for this Site: one of
	// None, Applied or Degraded.
	//
	// Applied means every resolved workload carries the hash that was desired.
	// It reports that the override merged and was written, not that the
	// resulting pods are healthy.
	Phase string `json:"phase"`

	// ObservedResourceVersion is the resourceVersion of the overrides ConfigMap
	// this status was computed from, so a result is traceable to a specific
	// input version. Empty when no overrides ConfigMap exists.
	// +optional
	ObservedResourceVersion string `json:"observedResourceVersion,omitempty"`

	// Workloads carries the desired and applied hash for each overridden
	// workload.
	//
	// Both are per workload because contributors differ per workload: a
	// Site-wide desired hash would not be comparable to any of them whenever a
	// document targets more than one.
	// +optional
	// +listType=map
	// +listMapKey=kind
	// +listMapKey=name
	Workloads []OverriddenWorkload `json:"workloads,omitempty"`

	// Message explains a Degraded phase, naming the ConfigMap key and entry
	// index at fault. Empty otherwise.
	// +optional
	Message string `json:"message,omitempty"`
}

OverrideStatus summarizes user-supplied workload overrides for one Site.

Overrides live in a cluster-scoped ConfigMap and one document routinely targets several components, so this is aggregated per Site rather than per component; component-level detail stays in Conditions.

func (*OverrideStatus) DeepCopy added in v0.3.0

func (in *OverrideStatus) DeepCopy() *OverrideStatus

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

func (*OverrideStatus) DeepCopyInto added in v0.3.0

func (in *OverrideStatus) DeepCopyInto(out *OverrideStatus)

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 the machine disk image.
	// The image must contain /disk/disk.img.gz.
	// VirtualMedia requires a digest reference (image@sha256:...).
	// Example: "ghcr.io/azure/host-ubuntu2404:v1"
	// +kubebuilder:validation:Required
	Image string `json:"image"`

	// PullSecretRef references a Docker registry credential Secret used to pull
	// Image. The Secret must be type kubernetes.io/dockerconfigjson or
	// kubernetes.io/dockercfg.
	// +optional
	PullSecretRef *NamespacedSecretReference `json:"pullSecretRef,omitempty"`

	// Architecture is the target CPU architecture for PXE boot artifacts and
	// machine images.
	// +kubebuilder:validation:Enum=amd64;arm64
	// +kubebuilder:default=amd64
	// +optional
	Architecture string `json:"architecture,omitempty"`

	// NetbootImage is an OCI image reference containing the PXE boot
	// artifacts used to install Image. When omitted, metalman uses the
	// default netboot image that corresponds to its release.
	// VirtualMedia requires this field to be set to a digest reference
	// (image@sha256:...).
	// +optional
	NetbootImage string `json:"netbootImage,omitempty"`

	// NetbootPullSecretRef references a Docker registry credential Secret used to
	// pull NetbootImage. It is ignored when NetbootImage is omitted; metalman's
	// configured default netboot pull secret is used for the default netboot image.
	// The Secret must be type kubernetes.io/dockerconfigjson or
	// kubernetes.io/dockercfg.
	// +optional
	NetbootPullSecretRef *NamespacedSecretReference `json:"netbootPullSecretRef,omitempty"`

	// BootProtocol selects how metalman should trigger network boot for
	// repaves. PXE uses DHCP/TFTP bootfile options. HTTP uses Redfish UEFI
	// HTTP boot with a URL derived from the netboot image metadata.
	// VirtualMedia mounts an operation-owned bootstrap ISO through Redfish.
	// It requires redfish, a digest Image, and a digest NetbootImage.
	// +kubebuilder:validation:Enum=PXE;HTTP;VirtualMedia
	// +kubebuilder:default=PXE
	// +optional
	BootProtocol string `json:"bootProtocol,omitempty"`

	// DHCPLeases defines static IPv4 provisioning network settings. PXE boot
	// uses them as DHCP leases. HTTP boot uses the first entry to configure the
	// Redfish UEFI HTTP boot client.
	// +optional
	DHCPLeases []DHCPLease `json:"dhcpLeases,omitempty"`

	// TargetDisk is the block device the installer writes the machine image to.
	// Examples: /dev/nvme0n1, /dev/sda, /dev/disk/by-id/...
	// When omitted, the installer chooses a target disk automatically.
	// +optional
	TargetDisk string `json:"targetDisk,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. +kubebuilder:validation:XValidation:rule="!has(self.bootProtocol) || self.bootProtocol != 'VirtualMedia' || has(self.redfish)",message="VirtualMedia requires redfish"

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.

func (*PXESpec) TargetArchitecture added in v0.1.20

func (p *PXESpec) TargetArchitecture() string

TargetArchitecture returns the effective PXE target architecture.

func (*PXESpec) TargetBootProtocol added in v0.1.20

func (p *PXESpec) TargetBootProtocol() string

TargetBootProtocol returns the effective network boot protocol.

type ProviderMachineReference added in v0.1.23

type ProviderMachineReference struct {
	// APIGroup is the API group of the provider-owned Machine resource.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	APIGroup string `json:"apiGroup"`

	// Kind is the kind of the provider-owned Machine resource.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Kind string `json:"kind"`

	// Name is the name of the cluster-scoped provider-owned Machine resource.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`
}

ProviderMachineReference identifies a cluster-scoped provider-owned Machine resource used by an external host provider. API version is intentionally omitted so providers can evolve served versions without rewriting Machines.

func (*ProviderMachineReference) DeepCopy added in v0.1.23

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

func (*ProviderMachineReference) DeepCopyInto added in v0.1.23

func (in *ProviderMachineReference) DeepCopyInto(out *ProviderMachineReference)

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

type ProviderMachineSnapshot added in v0.1.23

type ProviderMachineSnapshot struct {
	// APIGroup is the API group of the provider-owned Machine resource.
	// +kubebuilder:validation:Required
	APIGroup string `json:"apiGroup"`

	// Kind is the kind of the provider-owned Machine resource.
	// +kubebuilder:validation:Required
	Kind string `json:"kind"`

	// Name is the name of the provider-owned Machine resource.
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// UID detects deletion and recreation of the provider-owned resource.
	// +kubebuilder:validation:Required
	UID types.UID `json:"uid"`

	// Generation records the provider-owned resource generation whose inputs
	// were observed.
	// +kubebuilder:validation:Minimum=1
	Generation int64 `json:"generation"`
}

ProviderMachineSnapshot identifies the exact provider-owned resource observed when a MachineOperation target was initialized.

func (*ProviderMachineSnapshot) DeepCopy added in v0.1.23

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

func (*ProviderMachineSnapshot) DeepCopyInto added in v0.1.23

func (in *ProviderMachineSnapshot) DeepCopyInto(out *ProviderMachineSnapshot)

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

type ProviderOperationStatus added in v0.1.23

type ProviderOperationStatus struct {
	// Provider is the external provider that accepted the operation.
	// +kubebuilder:validation:Required
	Provider string `json:"provider"`

	// OperationID is the provider-assigned operation identifier.
	// +kubebuilder:validation:Required
	OperationID string `json:"operationID"`

	// ResumeToken is opaque provider data needed to resume polling. Providers
	// must not store credentials or other secrets in this field.
	// +optional
	ResumeToken string `json:"resumeToken,omitempty"`
}

ProviderOperationStatus identifies a resumable operation owned by an external provider.

func (*ProviderOperationStatus) DeepCopy added in v0.1.23

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

func (*ProviderOperationStatus) DeepCopyInto added in v0.1.23

func (in *ProviderOperationStatus) DeepCopyInto(out *ProviderOperationStatus)

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

type ProvisioningFormat added in v0.9.0

type ProvisioningFormat string

ProvisioningFormat identifies the first-boot payload a host image consumes. +kubebuilder:validation:Enum=CloudInit;Ignition

const (
	ProvisioningFormatCloudInit ProvisioningFormat = "CloudInit"
	ProvisioningFormatIgnition  ProvisioningFormat = "Ignition"
)

type RedfishPasswordSelector added in v0.19.0

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

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

	// Key within the secret. Defaults to "password".
	// +kubebuilder:default=password
	Key string `json:"key,omitempty"`
}

RedfishPasswordSelector selects the key of a Secret that holds a Redfish password. It differs from SecretKeySelector only in its key default.

func (*RedfishPasswordSelector) DeepCopy added in v0.19.0

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

func (*RedfishPasswordSelector) DeepCopyInto added in v0.19.0

func (in *RedfishPasswordSelector) DeepCopyInto(out *RedfishPasswordSelector)

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

func (RedfishPasswordSelector) KeyOrDefault added in v0.19.0

func (s RedfishPasswordSelector) KeyOrDefault() string

KeyOrDefault returns Key, or DefaultRedfishPasswordKey when Key is empty. The API server applies the default on admission, but objects built in Go without going through it can still carry an empty key.

type RedfishSpec

type RedfishSpec struct {
	// URL is the Redfish endpoint URL. It may include a per-system path prefix,
	// for example https://manager:8080/7. Do not include /redfish/v1.
	// +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".
	// It is ignored when the endpoint exposes a single system selected by its URL.
	// +kubebuilder:default="1"
	DeviceID string `json:"deviceID,omitempty"`

	// PasswordRef references a secret containing the Redfish password. Its key
	// defaults to "password".
	// +kubebuilder:validation:Required
	PasswordRef RedfishPasswordSelector `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 Site added in v0.1.23

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

	Spec   SiteSpec   `json:"spec,omitempty"`
	Status SiteStatus `json:"status,omitempty"`
}

Site defines a top-level Unbounded location and the optional components enabled for that location.

func (*Site) DeepCopy added in v0.1.23

func (in *Site) DeepCopy() *Site

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

func (*Site) DeepCopyInto added in v0.1.23

func (in *Site) DeepCopyInto(out *Site)

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

func (*Site) DeepCopyObject added in v0.1.23

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

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

type SiteComponentSpec added in v0.1.23

type SiteComponentSpec struct {
	// Enabled controls whether the component is reconciled.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

SiteComponentSpec contains common component configuration. Components install into the unbounded-system namespace at the operator's own version, so neither namespace nor image is configurable here.

The generated Deployments and DaemonSets can be customized through workload overrides, a cluster-scoped ConfigMap the operator reads. That surface is deliberately separate from this one: it is cluster-scoped because the net, machina and gantry singletons are shared across Sites, and write access to it is equivalent to cluster-admin. See docs/content/reference/workload-overrides.md.

func (*SiteComponentSpec) DeepCopy added in v0.1.23

func (in *SiteComponentSpec) DeepCopy() *SiteComponentSpec

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

func (*SiteComponentSpec) DeepCopyInto added in v0.1.23

func (in *SiteComponentSpec) DeepCopyInto(out *SiteComponentSpec)

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

type SiteComponents added in v0.1.23

type SiteComponents struct {
	// Machina configures the machina controller for this site.
	// +optional
	Machina *MachinaComponentSpec `json:"machina,omitempty"`

	// Metalman configures the Metalman PXE controller for this site.
	// +optional
	Metalman *MetalmanComponentSpec `json:"metalman,omitempty"`

	// Gantry configures the gantry peer-to-peer OCI distribution agent for this
	// site. Gantry defaults to enabled; set
	// gantry.enabled to false to opt a site out. The apiserver defaults an
	// omitted gantry block to enabled=true so the intent is explicit on read
	// (for example the Gantry print column) whenever a components block is
	// present. A site that omits the components block entirely is not defaulted.
	// +optional
	// +kubebuilder:default={enabled: true}
	Gantry *GantryComponentSpec `json:"gantry,omitempty"`

	// TokenRefresher maintains bootstrap tokens for machines joining this Site.
	// It defaults to enabled and is ignored for the reserved cluster Site.
	// +optional
	// +kubebuilder:default={enabled: true}
	TokenRefresher *TokenRefresherComponentSpec `json:"tokenRefresher,omitempty"`
}

SiteComponents declares optional components managed by the unbounded operator. Networking (unbounded-net) is not a component: it is a cluster singleton the operator deploys whenever at least one Site exists.

Each field corresponds to a component reconciler registered with the operator. To add a new component, add a typed field here and implement component.ClusterComponent or component.SiteComponent in a package under internal/operator/components, then register it in operator.DefaultRegistry.

func (*SiteComponents) DeepCopy added in v0.1.23

func (in *SiteComponents) DeepCopy() *SiteComponents

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

func (*SiteComponents) DeepCopyInto added in v0.1.23

func (in *SiteComponents) DeepCopyInto(out *SiteComponents)

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

type SiteList added in v0.1.23

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

SiteList contains a list of Site.

func (*SiteList) DeepCopy added in v0.1.23

func (in *SiteList) DeepCopy() *SiteList

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

func (*SiteList) DeepCopyInto added in v0.1.23

func (in *SiteList) DeepCopyInto(out *SiteList)

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

func (*SiteList) DeepCopyObject added in v0.1.23

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

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

type SiteSpec added in v0.1.23

type SiteSpec struct {
	// NodeCidrs are the CIDRs that contain the internal IPs of nodes at this site.
	// +kubebuilder:validation:MinItems=1
	NodeCidrs []string `json:"nodeCidrs"`

	// PodCidrAssignments define how pod CIDRs are allocated to nodes in this site.
	// +kubebuilder:validation:MinItems=1
	PodCidrAssignments []unboundednetv1alpha1.PodCidrAssignment `json:"podCidrAssignments"`

	// ManageCniPlugin controls whether the node agent writes CNI configuration
	// and creates tunnel endpoints for same-site nodes. When true (the default),
	// CNI config is written and all same-site nodes are tunnel peers.
	// When false, only tunnel links to gateway pools for other sites are created,
	// allowing an external CNI plugin to manage intra-site networking.
	// Omitted assignmentEnabled values on podCidrAssignments default to this
	// setting. Explicit assignmentEnabled values override that default.
	// The podCidrAssignments are still required to define the CIDR ranges
	// used for inter-site routing, even when assignment is disabled.
	// +optional
	ManageCniPlugin *bool `json:"manageCniPlugin,omitempty"`

	// NonMasqueradeCIDRs are CIDR blocks that should NOT be masqueraded when
	// traffic leaves the node via the default gateway. Traffic to these CIDRs
	// will use the pod's actual IP address.
	// +optional
	NonMasqueradeCIDRs []string `json:"nonMasqueradeCIDRs,omitempty"`

	// LocalCIDRs are CIDR blocks that are considered local to this site.
	// Traffic to these CIDRs should never be routed via gateway pools.
	// +optional
	LocalCIDRs []string `json:"localCidrs,omitempty"`

	// HealthCheckSettings controls health check settings for inter-site tunnel peers.
	// +optional
	HealthCheckSettings *unboundednetv1alpha1.HealthCheckSettings `json:"healthCheckSettings,omitempty"`

	// TunnelProtocol selects the tunnel protocol for this site.
	// Valid values are "WireGuard", "IPIP", "GENEVE", "VXLAN", "None", or "Auto".
	// Defaults to "Auto" when unset.
	// +kubebuilder:validation:Enum=WireGuard;IPIP;GENEVE;VXLAN;None;Auto
	// +optional
	TunnelProtocol *unboundednetv1alpha1.TunnelProtocol `json:"tunnelProtocol,omitempty"`

	// TunnelMTU is the MTU to set on routes through tunnels for this site.
	// +kubebuilder:validation:Minimum=576
	// +kubebuilder:validation:Maximum=9000
	// +optional
	TunnelMTU *int32 `json:"tunnelMTU,omitempty"`

	// Components declares optional Unbounded components managed for this site.
	// +optional
	Components SiteComponents `json:"components,omitempty"`
}

SiteSpec defines the desired state of Site.

func (*SiteSpec) DeepCopy added in v0.1.23

func (in *SiteSpec) DeepCopy() *SiteSpec

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

func (*SiteSpec) DeepCopyInto added in v0.1.23

func (in *SiteSpec) DeepCopyInto(out *SiteSpec)

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

func (SiteSpec) PodCIDRAssignmentEnabled added in v0.17.0

func (s SiteSpec) PodCIDRAssignmentEnabled(assignment unboundednetv1alpha1.PodCidrAssignment) bool

PodCIDRAssignmentEnabled resolves an assignment's explicit setting or the site's CNI management default without persisting an inherited value.

type SiteStatus added in v0.1.23

type SiteStatus struct {
	// NodeCount is the number of nodes matched to this site by unbounded-net.
	// +optional
	NodeCount int `json:"nodeCount,omitempty"`

	// SliceCount is the number of SiteNodeSlice objects for this site.
	// +optional
	SliceCount int `json:"sliceCount,omitempty"`

	// Conditions report the last observed state of site components. One
	// condition is published per component (for example NetReady, MachinaReady,
	// MetalmanReady) so callers can `kubectl wait` on a Site.
	// +optional
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// Overrides summarizes user-supplied workload overrides affecting this
	// Site. It is absent when no override targets any of the Site's workloads.
	// +optional
	Overrides *OverrideStatus `json:"overrides,omitempty"`
}

SiteStatus defines the observed state of Site.

func (*SiteStatus) DeepCopy added in v0.1.23

func (in *SiteStatus) DeepCopy() *SiteStatus

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

func (*SiteStatus) DeepCopyInto added in v0.1.23

func (in *SiteStatus) DeepCopyInto(out *SiteStatus)

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.

type TokenRefresherComponentSpec added in v0.5.0

type TokenRefresherComponentSpec struct {
	SiteComponentSpec `json:",inline"`
}

TokenRefresherComponentSpec configures bootstrap token refresh for a Site.

func (*TokenRefresherComponentSpec) DeepCopy added in v0.5.0

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

func (*TokenRefresherComponentSpec) DeepCopyInto added in v0.5.0

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