Documentation
¶
Overview ¶
+kubebuilder:object:generate=true +groupName=unbounded-cloud.io
Index ¶
- Constants
- Variables
- func ComponentEnabled(component *SiteComponentSpec) bool
- func MachineConfigurationVersionName(configurationName string, version int32) string
- func Resource(resource string) schema.GroupResource
- type AgentArtifact
- type AgentDownloadsSpec
- type AgentSpec
- type AgentStatus
- type AzureHostSpec
- type BastionSSHSpec
- type BondSpec
- type BootstrapStatus
- type CapacityType
- type CloudInitSpec
- type ConfigMapKeySelector
- type ConfigurationContentSnapshot
- type DHCPLease
- type DownloadSource
- type EthernetSpec
- type ExternalHostSpec
- type GantryArtifactStreamingSpec
- type GantryComponentSpec
- type HostNetworkSpec
- type HostSpec
- type InterfaceAddressing
- type IsolationChangePhase
- type IsolationChangeStatus
- type IsolationChangeStrategy
- type IsolationMode
- type KubernetesSpec
- type LocalDNSSpec
- type LocalObjectReference
- type MachinaComponentSpec
- type Machine
- type MachineAllocation
- type MachineAllocationConsumerReference
- type MachineAllocationFailureReason
- type MachineAllocationLifecycle
- type MachineAllocationList
- type MachineAllocationNodeTemplate
- type MachineAllocationOperations
- type MachineAllocationRequirement
- type MachineAllocationSnapshot
- type MachineAllocationSpec
- type MachineAllocationStatus
- type MachineClass
- type MachineClassBootstrap
- type MachineClassList
- type MachineClassOffering
- type MachineClassSpec
- type MachineClassStatus
- type MachineConfiguration
- type MachineConfigurationAgent
- type MachineConfigurationHostSpec
- type MachineConfigurationKubernetes
- type MachineConfigurationList
- type MachineConfigurationRef
- type MachineConfigurationRefStatus
- type MachineConfigurationSpec
- type MachineConfigurationStatus
- type MachineConfigurationTemplate
- type MachineConfigurationUpdateStrategy
- type MachineConfigurationUpdateStrategyType
- type MachineConfigurationVersion
- type MachineConfigurationVersionList
- type MachineConfigurationVersionSpec
- type MachineConfigurationVersionStatus
- type MachineList
- type MachineOperation
- type MachineOperationAllocationResult
- type MachineOperationBootMediaStatus
- type MachineOperationCredential
- type MachineOperationCredentialAuth
- type MachineOperationCredentialAuthMode
- type MachineOperationCredentialList
- type MachineOperationCredentialSpec
- type MachineOperationList
- type MachineOperationSpec
- type MachineOperationStatus
- type MachineOperationTargetInput
- type MachineOperationTargetStatus
- func (t MachineOperationTargetStatus) BootMediaBootUnconfirmed() bool
- func (t MachineOperationTargetStatus) CloudInitReported() bool
- func (in *MachineOperationTargetStatus) DeepCopy() *MachineOperationTargetStatus
- func (in *MachineOperationTargetStatus) DeepCopyInto(out *MachineOperationTargetStatus)
- func (t MachineOperationTargetStatus) HasOutstandingBootMedia() bool
- type MachinePhase
- type MachineSpec
- type MachineStatus
- type MetalmanComponentSpec
- type NamespacedObjectReference
- type NamespacedSecretReference
- type ObjectContentSnapshot
- type OfferingAvailability
- type OfferingOverhead
- type OfferingPrice
- type OperationKind
- type OperationPhase
- type OperationStage
- type OverriddenWorkload
- type OverrideStatus
- type PXESpec
- type ProviderMachineReference
- type ProviderMachineSnapshot
- type ProviderOperationStatus
- type ProviderOwnedResource
- type ProvisioningFormat
- type RedfishPasswordSelector
- type RedfishSpec
- type RedfishStatus
- type RequirementOperator
- type RouteSpec
- type SSHSpec
- type SSHStatus
- type SecretKeySelector
- type Site
- type SiteComponentSpec
- type SiteComponents
- type SiteList
- type SiteSpec
- type SiteStatus
- type TPMStatus
- type TokenRefresherComponentSpec
- type TypedObjectReference
- type UIDReference
- type VLANSpec
Constants ¶
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" // MachineConditionIsolationDrift is True when spec.isolation differs // from the mode the agent reports as applied (status.isolation). // Nothing moves on drift: the node changes mode at its next repave. // False when they match or when spec.isolation is empty (no // declaration), absent when the applied mode has not been reported. MachineConditionIsolationDrift = "IsolationDrift" // 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.
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" // AnnotationAllowReprovision on a Machine, set to "true", allows the // agent to change the isolation mode by resetting the host and // bootstrapping it again (IsolationChangeReprovision). It is separate // from spec.isolation so that declaring a mode never wipes a host by // itself. Without it, a change that needs a reprovision is refused and // reported in status.isolationChange with reason // IsolationChangeReasonReprovisionNotAllowed; the repave goes ahead in // the mode the node already runs. AnnotationAllowReprovision = "unbounded-cloud.io/allow-reprovision" )
Annotation keys.
const ( // BondMode8023AD is IEEE 802.3ad dynamic link aggregation (LACP). BondMode8023AD = "802.3ad" // BondModeActiveBackup keeps one member active at a time. BondModeActiveBackup = "active-backup" // BondModeBalanceXOR balances traffic by the transmit hash policy. BondModeBalanceXOR = "balance-xor" )
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 // DefaultCloudInitTimeout is used when host.netboot.cloudInitTimeout is omitted. DefaultCloudInitTimeout = 20 * time.Minute )
const ( // IsolationChangeReasonUnsupportedMode means the agent on the host cannot // run the target mode, for example because it predates it, or cannot // change a running node to it. IsolationChangeReasonUnsupportedMode = "UnsupportedMode" // IsolationChangeReasonReprovisionNotAllowed means the change needs a // reprovision and the Machine does not carry AnnotationAllowReprovision. IsolationChangeReasonReprovisionNotAllowed = "ReprovisionNotAllowed" // IsolationChangeReasonExperimentalNotEnabled means the target mode is // experimental and the agent's configuration does not opt in to it. IsolationChangeReasonExperimentalNotEnabled = "ExperimentalNotEnabled" )
Machine-readable reasons the agent gives for a refused mode change in IsolationChangeStatus.Reason.
const ( // AllocationProviderIDPrefix prefixes the allocation UID in Node providerIDs. AllocationProviderIDPrefix = "unbounded:///machineallocations/" // MachineAllocationConditionAllocated reports whether the host launched. MachineAllocationConditionAllocated = "Allocated" // MachineAllocationConditionRegistered reports whether the expected Node // registered with the allocation providerID. MachineAllocationConditionRegistered = "Registered" // MachineAllocationConditionDrifted reports whether the frozen class // revision differs from the class's current resolved revision. MachineAllocationConditionDrifted = "Drifted" // MachineAllocationConditionFenced reports whether the host may no longer // repave or rejoin. Fencing never releases infrastructure by itself. MachineAllocationConditionFenced = "Fenced" // MachineAllocationConditionReleased reports whether every remote effect and // the per-allocation bootstrap credential were confirmed released. MachineAllocationConditionReleased = "Released" // MachineAllocationFinalizer is held by the allocation controller on a // MachineAllocation, its Machine and its allocation MachineOperations // until release finishes. MachineAllocationFinalizer = "unbounded-cloud.io/machineallocation" // LabelAllocationUID carries the MachineAllocation UID on the allocation, // its Machine, its MachineOperations and its bootstrap token Secret. LabelAllocationUID = "unbounded-cloud.io/allocation-uid" // LabelConsumerUID carries spec.consumerRef.uid, as written, on a // MachineAllocation. An allocation whose consumer UID is not a valid label // value fails with InvalidRequest. LabelConsumerUID = "unbounded-cloud.io/consumer-uid" // LabelMachineClass carries spec.classRef.name, as written, on a // MachineAllocation and its Machine. An allocation whose class name is not // a valid label value fails with InvalidRequest. LabelMachineClass = "unbounded-cloud.io/machine-class" // LabelCapacityType is the offering label derived from an offering's // capacityType. LabelCapacityType = "unbounded-cloud.io/capacity-type" )
const ( // MachineClassConditionReady reports whether the class inputs resolved for // the current generation and capacity can be requested from it. MachineClassConditionReady = "Ready" // MachineClassConditionOfferingsCurrent reports whether the published // offerings were observed recently enough to be trusted. MachineClassConditionOfferingsCurrent = "OfferingsCurrent" // MachineClassBootstrapRunKey is the required key in the bootstrap files // ConfigMap that holds the script run before the agent installer. MachineClassBootstrapRunKey = "run" )
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.
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.
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.
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.
const DefaultRedfishPasswordKey = "password"
DefaultRedfishPasswordKey is the Secret key that holds a Redfish password when RedfishPasswordSelector.Key is not set.
const (
ExternalProviderAzureVM = "AzureVM"
)
External provider names.
const IsolationChangeMessageMaxLength = 4096
IsolationChangeMessageMaxLength is the longest IsolationChangeStatus.Message the API accepts, in bytes. Writers truncate to it. It must match the MaxLength marker on the field.
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.
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 ¶
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
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 AgentArtifact ¶ added in v0.23.0
type AgentArtifact struct {
// URL is the agent tarball location: an https URL whose host is a DNS name
// or dotted IPv4 address with an optional port from 1 to 65535, or a local
// file:/// path. It must not embed credentials, a query, or a fragment.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength=2048
// +kubebuilder:validation:Pattern=`^(https://[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*(:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3}))?|file://)(/[A-Za-z0-9._~%+=,:-]+)+$`
URL string `json:"url"`
// SHA256 is the lowercase hex SHA-256 digest of the tarball.
// +kubebuilder:validation:Required
// +kubebuilder:validation:Pattern=`^[a-f0-9]{64}$`
SHA256 string `json:"sha256"`
}
AgentArtifact identifies a digest-pinned agent tarball.
func (*AgentArtifact) DeepCopy ¶ added in v0.23.0
func (in *AgentArtifact) DeepCopy() *AgentArtifact
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentArtifact.
func (*AgentArtifact) DeepCopyInto ¶ added in v0.23.0
func (in *AgentArtifact) DeepCopyInto(out *AgentArtifact)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentSpec.
func (*AgentSpec) DeepCopyInto ¶
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 BondSpec ¶ added in v0.24.0
type BondSpec struct {
// Name is the bond interface name, for example bond0.
// +kubebuilder:validation:MaxLength=15
// +kubebuilder:validation:Pattern=`^[a-zA-Z][a-zA-Z0-9_-]{0,14}$`
Name string `json:"name"`
// Interfaces lists the names of the ethernets aggregated by this bond.
// +listType=set
// +kubebuilder:validation:MinItems=1
// +kubebuilder:validation:MaxItems=8
// +kubebuilder:validation:items:MaxLength=15
Interfaces []string `json:"interfaces"`
// Mode is the bonding mode.
// +kubebuilder:validation:Enum="802.3ad";active-backup;balance-xor
// +kubebuilder:default="802.3ad"
// +optional
Mode string `json:"mode,omitempty"`
// MIIMonitorInterval is the link monitoring interval in milliseconds.
// +kubebuilder:validation:Minimum=0
// +kubebuilder:validation:Maximum=10000
// +kubebuilder:default=100
// +optional
MIIMonitorInterval *int32 `json:"miiMonitorInterval,omitempty"`
// TransmitHashPolicy selects the member used to transmit each flow in
// 802.3ad and balance-xor modes.
// +kubebuilder:validation:Enum=layer2;layer2+3;layer3+4;encap2+3;encap3+4
// +optional
TransmitHashPolicy string `json:"transmitHashPolicy,omitempty"`
// LACPRate is the LACPDU transmit rate requested from the link partner in
// 802.3ad mode.
// +kubebuilder:validation:Enum=slow;fast
// +optional
LACPRate string `json:"lacpRate,omitempty"`
InterfaceAddressing `json:",inline"`
}
BondSpec declares a link aggregation interface. +kubebuilder:validation:XValidation:rule="!has(self.lacpRate) || self.mode == '802.3ad'",message="lacpRate requires mode 802.3ad"
func (*BondSpec) DeepCopy ¶ added in v0.24.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BondSpec.
func (*BondSpec) DeepCopyInto ¶ added in v0.24.0
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 CapacityType ¶ added in v0.23.0
type CapacityType string
CapacityType identifies the purchase model of an offering. +kubebuilder:validation:Enum=OnDemand;Spot
const ( // CapacityTypeOnDemand is regular, non-preemptible capacity. CapacityTypeOnDemand CapacityType = "OnDemand" // CapacityTypeSpot is preemptible capacity. CapacityTypeSpot CapacityType = "Spot" )
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 ¶
func (in *ConfigMapKeySelector) DeepCopy() *ConfigMapKeySelector
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 ConfigurationContentSnapshot ¶ added in v0.23.0
type ConfigurationContentSnapshot struct {
// Name is the MachineConfiguration name.
// +kubebuilder:validation:Required
Name string `json:"name"`
// Version is the MachineConfiguration version.
// +kubebuilder:validation:Required
Version int32 `json:"version"`
// VersionName is the MachineConfigurationVersion object name.
// +kubebuilder:validation:Required
VersionName string `json:"versionName"`
// UID is the MachineConfigurationVersion UID.
// +kubebuilder:validation:Required
UID types.UID `json:"uid"`
// Hash is the SHA-256 of the configuration template.
// +kubebuilder:validation:Required
Hash string `json:"hash"`
}
ConfigurationContentSnapshot identifies the exact configuration content.
func (*ConfigurationContentSnapshot) DeepCopy ¶ added in v0.23.0
func (in *ConfigurationContentSnapshot) DeepCopy() *ConfigurationContentSnapshot
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigurationContentSnapshot.
func (*ConfigurationContentSnapshot) DeepCopyInto ¶ added in v0.23.0
func (in *ConfigurationContentSnapshot) DeepCopyInto(out *ConfigurationContentSnapshot)
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"`
// HoldLease, when true, makes the installed host also run a DHCPv4
// client on this lease's NIC so the site DHCP server keeps the lease
// for IPv4 and does not reassign it to another host. The static
// address, gateway, and DNS remain authoritative; routes, DNS, NTP,
// hostname, and domains from DHCP are ignored. The site DHCP server
// should reserve IPv4 for MAC. Leave unset where there is no DHCP
// server.
// +optional
HoldLease bool `json:"holdLease,omitempty"`
}
DHCPLease defines static IPv4 provisioning network settings.
func (*DHCPLease) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DHCPLease.
func (*DHCPLease) DeepCopyInto ¶
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 EthernetSpec ¶ added in v0.24.0
type EthernetSpec struct {
// Name is the interface name persisted on the installed host, for example
// enp1s0f0. Metalman matches the device by MACAddress and does not rely
// on the kernel's naming during installation.
// +kubebuilder:validation:MaxLength=15
// +kubebuilder:validation:Pattern=`^[a-zA-Z][a-zA-Z0-9_-]{0,14}$`
Name string `json:"name"`
// MACAddress is the permanent MAC address of the physical interface, as
// lowercase colon-separated hex (aa:bb:cc:dd:ee:ff).
// +kubebuilder:validation:Pattern=`^([0-9a-f]{2}:){5}[0-9a-f]{2}$`
MACAddress string `json:"macAddress"`
InterfaceAddressing `json:",inline"`
}
EthernetSpec declares a physical network interface.
func (*EthernetSpec) DeepCopy ¶ added in v0.24.0
func (in *EthernetSpec) DeepCopy() *EthernetSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EthernetSpec.
func (*EthernetSpec) DeepCopyInto ¶ added in v0.24.0
func (in *EthernetSpec) DeepCopyInto(out *EthernetSpec)
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 GantryArtifactStreamingSpec ¶ added in v0.23.0
type GantryArtifactStreamingSpec struct {
// Enabled controls the Gantry range endpoint and OverlayBD configurator.
// +optional
Enabled bool `json:"enabled,omitempty"`
// NodeSelector must select only AKS node pools with Artifact Streaming
// enabled. It is required when Enabled is true.
// +kubebuilder:validation:MinProperties=1
// +optional
NodeSelector map[string]string `json:"nodeSelector,omitempty"`
}
GantryArtifactStreamingSpec selects the AKS nodes whose Azure-managed OverlayBD installation should be configured to use Gantry.
func (*GantryArtifactStreamingSpec) DeepCopy ¶ added in v0.23.0
func (in *GantryArtifactStreamingSpec) DeepCopy() *GantryArtifactStreamingSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GantryArtifactStreamingSpec.
func (*GantryArtifactStreamingSpec) DeepCopyInto ¶ added in v0.23.0
func (in *GantryArtifactStreamingSpec) DeepCopyInto(out *GantryArtifactStreamingSpec)
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"`
// ArtifactStreaming configures Gantry as the node-local range proxy for
// AKS ACR Artifact Streaming. It is disabled when omitted. Because Gantry is
// a cluster singleton, every Site that enables it must use the same node
// selector.
// +optional
ArtifactStreaming *GantryArtifactStreamingSpec `json:"artifactStreaming,omitempty"`
}
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 HostNetworkSpec ¶ added in v0.24.0
type HostNetworkSpec struct {
// Ethernets declares the physical network interfaces, matched by their
// permanent MAC addresses.
// +listType=map
// +listMapKey=name
// +kubebuilder:validation:MinItems=1
// +kubebuilder:validation:MaxItems=16
Ethernets []EthernetSpec `json:"ethernets"`
// Bonds declares link aggregation interfaces built from ethernets.
// +listType=map
// +listMapKey=name
// +kubebuilder:validation:MaxItems=8
// +optional
Bonds []BondSpec `json:"bonds,omitempty"`
// VLANs declares 802.1Q VLAN interfaces on top of ethernets or bonds.
// +listType=map
// +listMapKey=name
// +kubebuilder:validation:MaxItems=32
// +optional
VLANs []VLANSpec `json:"vlans,omitempty"`
// DNS is the list of IPv4 nameserver addresses for the host.
// +kubebuilder:validation:MaxItems=3
// +kubebuilder:validation:items:MaxLength=15
// +optional
DNS []string `json:"dns,omitempty"`
}
HostNetworkSpec declares a static host network topology.
The cross-reference rules (bond members and VLAN links) are declared on MachineSpec and HostSpec rather than here: PXESpec is also embedded in the unbounded MachineOperation status.targets list, where these nested list rules would exceed the API server's CEL cost budget.
func (*HostNetworkSpec) DeepCopy ¶ added in v0.24.0
func (in *HostNetworkSpec) DeepCopy() *HostNetworkSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostNetworkSpec.
func (*HostNetworkSpec) DeepCopyInto ¶ added in v0.24.0
func (in *HostNetworkSpec) DeepCopyInto(out *HostNetworkSpec)
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" +kubebuilder:validation:XValidation:rule="!has(self.netboot) || !has(self.netboot.network) || !has(self.netboot.network.bonds) || self.netboot.network.bonds.all(b, b.interfaces.all(i, self.netboot.network.ethernets.exists(e, e.name == i)))",message="bond interfaces must reference declared ethernets",fieldPath=".netboot.network.bonds" +kubebuilder:validation:XValidation:rule="!has(self.netboot) || !has(self.netboot.network) || !has(self.netboot.network.vlans) || self.netboot.network.vlans.all(v, self.netboot.network.ethernets.exists(e, e.name == v.link) || (has(self.netboot.network.bonds) && self.netboot.network.bonds.exists(b, b.name == v.link)))",message="vlan link must reference a declared ethernet or bond",fieldPath=".netboot.network.vlans"
func (*HostSpec) DeepCopy ¶ added in v0.1.23
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostSpec.
func (*HostSpec) DeepCopyInto ¶ added in v0.1.23
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 InterfaceAddressing ¶ added in v0.24.0
type InterfaceAddressing struct {
// MTU is the interface MTU in bytes. When omitted, the kernel default is
// used.
// +kubebuilder:validation:Minimum=576
// +kubebuilder:validation:Maximum=9216
// +optional
MTU *int32 `json:"mtu,omitempty"`
// Addresses lists static IPv4 addresses in CIDR notation, for example
// 192.0.2.10/24.
// +kubebuilder:validation:MaxItems=8
// +kubebuilder:validation:items:MaxLength=18
// +optional
Addresses []string `json:"addresses,omitempty"`
// Gateway is the IPv4 default gateway reachable through this interface.
// At most one interface in the host network may set it.
// +kubebuilder:validation:MaxLength=15
// +optional
Gateway string `json:"gateway,omitempty"`
// Routes lists static IPv4 routes through this interface.
// +kubebuilder:validation:MaxItems=32
// +optional
Routes []RouteSpec `json:"routes,omitempty"`
}
InterfaceAddressing holds the static IPv4 configuration of an interface.
func (*InterfaceAddressing) DeepCopy ¶ added in v0.24.0
func (in *InterfaceAddressing) DeepCopy() *InterfaceAddressing
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InterfaceAddressing.
func (*InterfaceAddressing) DeepCopyInto ¶ added in v0.24.0
func (in *InterfaceAddressing) DeepCopyInto(out *InterfaceAddressing)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type IsolationChangePhase ¶ added in v0.23.0
type IsolationChangePhase string
IsolationChangePhase is how far a mode change got. +kubebuilder:validation:Enum=InProgress;Succeeded;Failed
const ( // IsolationChangeInProgress means the agent started the change. IsolationChangeInProgress IsolationChangePhase = "InProgress" // IsolationChangeSucceeded means the node now runs in the target mode. IsolationChangeSucceeded IsolationChangePhase = "Succeeded" // IsolationChangeFailed means the change did not complete or was // refused. The message says why and whether the node was rolled back. // The agent does not retry on its own; the next repave tries again. IsolationChangeFailed IsolationChangePhase = "Failed" )
type IsolationChangeStatus ¶ added in v0.23.0
type IsolationChangeStatus struct {
// TargetMode is the mode the change was moving the node to. It is not
// limited to the modes this release can run: an agent reports a change it
// refused to a mode it does not know.
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=63
TargetMode IsolationMode `json:"targetMode"`
// Phase is how far the change got.
Phase IsolationChangePhase `json:"phase"`
// Strategy is how the change was carried out.
// +optional
Strategy IsolationChangeStrategy `json:"strategy,omitempty"`
// Reason is a machine-readable CamelCase reason for a refused change,
// such as UnsupportedMode or ReprovisionNotAllowed. Empty for a change
// that was attempted.
// +kubebuilder:validation:MaxLength=64
// +kubebuilder:validation:Pattern=`^([A-Za-z][A-Za-z0-9]*)?$`
// +optional
Reason string `json:"reason,omitempty"`
// Message explains the phase, including why a failed change failed and
// whether the node was rolled back.
// +kubebuilder:validation:MaxLength=4096
// +optional
Message string `json:"message,omitempty"`
// LastTransitionTime is when Phase last changed.
// +optional
LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"`
}
IsolationChangeStatus reports a mode change made at a repave.
func (*IsolationChangeStatus) DeepCopy ¶ added in v0.23.0
func (in *IsolationChangeStatus) DeepCopy() *IsolationChangeStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IsolationChangeStatus.
func (*IsolationChangeStatus) DeepCopyInto ¶ added in v0.23.0
func (in *IsolationChangeStatus) DeepCopyInto(out *IsolationChangeStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type IsolationChangeStrategy ¶ added in v0.23.0
type IsolationChangeStrategy string
IsolationChangeStrategy is how a mode change is carried out. +kubebuilder:validation:Enum=InPlace;Reprovision
const ( // IsolationChangeInPlace builds the target beside the running node and // switches over, rolling back on failure. IsolationChangeInPlace IsolationChangeStrategy = "InPlace" // IsolationChangeReprovision resets the host and bootstraps it again in // the target mode. It needs the AnnotationAllowReprovision opt-in. IsolationChangeReprovision IsolationChangeStrategy = "Reprovision" )
type IsolationMode ¶ added in v0.23.0
type IsolationMode string
IsolationMode names where the node stack runs on a host.
const ( // IsolationNSpawn runs the node stack in a systemd-nspawn machine. It is // the default. IsolationNSpawn IsolationMode = "nspawn" // IsolationNone runs the node stack directly on the host. IsolationNone IsolationMode = "none" // IsolationContainer runs the node stack in a privileged OCI container. // It is experimental and must be enabled explicitly. IsolationContainer IsolationMode = "container" )
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 ¶
func (in *LocalObjectReference) DeepCopy() *LocalObjectReference
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 is a deprecated compatibility setting and is ignored. Machina is required and cannot be disabled.
func (*MachinaComponentSpec) DeepCopy ¶ added in v0.1.23
func (in *MachinaComponentSpec) DeepCopy() *MachinaComponentSpec
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Machine.
func (*Machine) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Machine) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineAllocation ¶ added in v0.23.0
type MachineAllocation struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// +required
Spec MachineAllocationSpec `json:"spec"`
Status MachineAllocationStatus `json:"status,omitempty"`
}
MachineAllocation is one consumer-owned request for one machine from a MachineClass. Its UID owns every remote effect made on its behalf.
func (*MachineAllocation) DeepCopy ¶ added in v0.23.0
func (in *MachineAllocation) DeepCopy() *MachineAllocation
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAllocation.
func (*MachineAllocation) DeepCopyInto ¶ added in v0.23.0
func (in *MachineAllocation) DeepCopyInto(out *MachineAllocation)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineAllocation) DeepCopyObject ¶ added in v0.23.0
func (in *MachineAllocation) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineAllocationConsumerReference ¶ added in v0.23.0
type MachineAllocationConsumerReference struct {
// APIGroup is the consumer API group. An empty value means the core API
// group.
// +kubebuilder:validation:Required
APIGroup string `json:"apiGroup"`
// Kind is the consumer kind.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Kind string `json:"kind"`
// Name is the consumer name.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Name string `json:"name"`
// UID is the consumer UID. A consumer with another UID is a different
// object.
// +kubebuilder:validation:Required
// +kubebuilder:validation:Type=string
// +kubebuilder:validation:MinLength=1
UID types.UID `json:"uid"`
}
MachineAllocationConsumerReference identifies the requesting object.
func (*MachineAllocationConsumerReference) DeepCopy ¶ added in v0.23.0
func (in *MachineAllocationConsumerReference) DeepCopy() *MachineAllocationConsumerReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAllocationConsumerReference.
func (*MachineAllocationConsumerReference) DeepCopyInto ¶ added in v0.23.0
func (in *MachineAllocationConsumerReference) DeepCopyInto(out *MachineAllocationConsumerReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineAllocationFailureReason ¶ added in v0.23.0
type MachineAllocationFailureReason string
MachineAllocationFailureReason is a normalized terminal launch failure. +kubebuilder:validation:Enum=InsufficientCapacity;QuotaExceeded;InvalidRequest;AuthFailed;ProviderConflict;ProviderFailed
const ( // FailureInsufficientCapacity means no offering could satisfy the request. FailureInsufficientCapacity MachineAllocationFailureReason = "InsufficientCapacity" // FailureQuotaExceeded means the provider refused the launch for quota. FailureQuotaExceeded MachineAllocationFailureReason = "QuotaExceeded" // FailureInvalidRequest means the allocation or its class cannot be // satisfied as written. FailureInvalidRequest MachineAllocationFailureReason = "InvalidRequest" // FailureAuthFailed means the provider rejected the credential. FailureAuthFailed MachineAllocationFailureReason = "AuthFailed" // FailureProviderConflict means a provider resource with the planned // identity already exists and is not owned by this allocation. FailureProviderConflict MachineAllocationFailureReason = "ProviderConflict" // FailureProviderFailed means the provider failed for another reason. FailureProviderFailed MachineAllocationFailureReason = "ProviderFailed" )
type MachineAllocationLifecycle ¶ added in v0.23.0
type MachineAllocationLifecycle string
MachineAllocationLifecycle is the consumer's lifecycle intent. +kubebuilder:validation:Enum=Active;Released
const ( // MachineAllocationActive keeps the allocation's machine. MachineAllocationActive MachineAllocationLifecycle = "Active" // MachineAllocationReleased authorizes releasing the machine. Consumers set // it only after their workload and storage safety steps complete. MachineAllocationReleased MachineAllocationLifecycle = "Released" )
type MachineAllocationList ¶ added in v0.23.0
type MachineAllocationList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []MachineAllocation `json:"items"`
}
MachineAllocationList contains a list of MachineAllocation.
func (*MachineAllocationList) DeepCopy ¶ added in v0.23.0
func (in *MachineAllocationList) DeepCopy() *MachineAllocationList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAllocationList.
func (*MachineAllocationList) DeepCopyInto ¶ added in v0.23.0
func (in *MachineAllocationList) DeepCopyInto(out *MachineAllocationList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineAllocationList) DeepCopyObject ¶ added in v0.23.0
func (in *MachineAllocationList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineAllocationNodeTemplate ¶ added in v0.23.0
type MachineAllocationNodeTemplate struct {
// Labels are added to the Node at registration.
// +optional
Labels map[string]string `json:"labels,omitempty"`
// Taints are added to the Node at registration.
// +optional
Taints []corev1.Taint `json:"taints,omitempty"`
// StartupTaints are added at registration and removed by their owners
// once the Node is initialized.
// +optional
StartupTaints []corev1.Taint `json:"startupTaints,omitempty"`
}
MachineAllocationNodeTemplate is applied to the Node at registration.
func (*MachineAllocationNodeTemplate) DeepCopy ¶ added in v0.23.0
func (in *MachineAllocationNodeTemplate) DeepCopy() *MachineAllocationNodeTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAllocationNodeTemplate.
func (*MachineAllocationNodeTemplate) DeepCopyInto ¶ added in v0.23.0
func (in *MachineAllocationNodeTemplate) DeepCopyInto(out *MachineAllocationNodeTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineAllocationOperations ¶ added in v0.23.0
type MachineAllocationOperations struct {
// Allocate is the MachineOperation that launches the host.
// +optional
Allocate *UIDReference `json:"allocate,omitempty"`
// Release is the MachineOperation that releases the host.
// +optional
Release *UIDReference `json:"release,omitempty"`
}
MachineAllocationOperations identifies allocation MachineOperations.
func (*MachineAllocationOperations) DeepCopy ¶ added in v0.23.0
func (in *MachineAllocationOperations) DeepCopy() *MachineAllocationOperations
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAllocationOperations.
func (*MachineAllocationOperations) DeepCopyInto ¶ added in v0.23.0
func (in *MachineAllocationOperations) DeepCopyInto(out *MachineAllocationOperations)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineAllocationRequirement ¶ added in v0.23.0
type MachineAllocationRequirement struct {
// Key is the label key.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Key string `json:"key"`
// Operator is the requirement operator.
// +kubebuilder:validation:Required
Operator RequirementOperator `json:"operator"`
// Values are the operator values.
// +optional
Values []string `json:"values,omitempty"`
// MinValues is the consumer's flexibility floor: at least this many
// distinct values of Key must remain among the current offerings that
// satisfy every requirement, or the allocation fails with
// InsufficientCapacity. The allocation then resolves to one of them.
// +optional
// +kubebuilder:validation:Minimum=1
MinValues *int32 `json:"minValues,omitempty"`
}
MachineAllocationRequirement constrains one offering label.
func (*MachineAllocationRequirement) DeepCopy ¶ added in v0.23.0
func (in *MachineAllocationRequirement) DeepCopy() *MachineAllocationRequirement
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAllocationRequirement.
func (*MachineAllocationRequirement) DeepCopyInto ¶ added in v0.23.0
func (in *MachineAllocationRequirement) DeepCopyInto(out *MachineAllocationRequirement)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineAllocationSnapshot ¶ added in v0.23.0
type MachineAllocationSnapshot struct {
// ClassUID is the class UID the snapshot was taken from.
// +kubebuilder:validation:Required
ClassUID types.UID `json:"classUID"`
// ClassGeneration is the class generation the snapshot was taken from.
// +kubebuilder:validation:Required
ClassGeneration int64 `json:"classGeneration"`
// ClassRevision is the class resolved revision.
// +kubebuilder:validation:Required
ClassRevision string `json:"classRevision"`
// Provider is the provider adapter name.
// +kubebuilder:validation:Required
Provider string `json:"provider"`
// SiteName is the Site the machine joins.
// +kubebuilder:validation:Required
SiteName string `json:"siteName"`
// SiteUID is the exact Site instance frozen before any effect. A Site
// recreated under the same name has a different UID.
// +kubebuilder:validation:Required
SiteUID types.UID `json:"siteUID"`
// Credential is the exact MachineOperationCredential instance frozen
// before any effect. A credential recreated under the same name has a
// different UID.
// +kubebuilder:validation:Required
Credential UIDReference `json:"credential"`
// Offering is the selected offering.
// +kubebuilder:validation:Required
Offering MachineClassOffering `json:"offering"`
// ProviderConfig is the exact provider config content.
// +kubebuilder:validation:Required
ProviderConfig ObjectContentSnapshot `json:"providerConfig"`
// BootstrapFiles is the exact bootstrap files content.
// +optional
BootstrapFiles *ObjectContentSnapshot `json:"bootstrapFiles,omitempty"`
// AgentArtifact is the digest-pinned agent tarball.
// +optional
AgentArtifact *AgentArtifact `json:"agentArtifact,omitempty"`
// Configuration identifies the configuration version content.
// +kubebuilder:validation:Required
Configuration ConfigurationContentSnapshot `json:"configuration"`
// ConfigurationTemplate is the frozen configuration content for Machines
// of this allocation, copied from the configuration version.
// +kubebuilder:validation:Required
ConfigurationTemplate MachineConfigurationTemplate `json:"configurationTemplate"`
// HostImage is the provider-interpreted host image.
// +kubebuilder:validation:Required
HostImage string `json:"hostImage"`
// HostProviderID is the provider-specific host ID planned before the
// host exists. It is intended to become the Machine's
// host.external.providerID.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
HostProviderID string `json:"hostProviderID"`
}
MachineAllocationSnapshot is the protected, immutable allocation input. +kubebuilder:validation:XValidation:rule="self == oldSelf",message="snapshot is immutable"
func (*MachineAllocationSnapshot) DeepCopy ¶ added in v0.23.0
func (in *MachineAllocationSnapshot) DeepCopy() *MachineAllocationSnapshot
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAllocationSnapshot.
func (*MachineAllocationSnapshot) DeepCopyInto ¶ added in v0.23.0
func (in *MachineAllocationSnapshot) DeepCopyInto(out *MachineAllocationSnapshot)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineAllocationSpec ¶ added in v0.23.0
type MachineAllocationSpec struct {
// ConsumerRef identifies the object that requested this allocation.
// +kubebuilder:validation:Required
ConsumerRef MachineAllocationConsumerReference `json:"consumerRef"`
// ClassRef identifies the exact MachineClass the allocation is made from.
// +kubebuilder:validation:Required
ClassRef UIDReference `json:"classRef"`
// Resources are the minimum requested resources.
// +optional
Resources corev1.ResourceList `json:"resources,omitempty"`
// Requirements constrain the offering labels the allocation may use.
// +optional
Requirements []MachineAllocationRequirement `json:"requirements,omitempty"`
// NodeTemplate is applied to the Node at registration.
// +optional
NodeTemplate *MachineAllocationNodeTemplate `json:"nodeTemplate,omitempty"`
// Lifecycle authorizes release. It moves only from Active to Released.
// +optional
// +kubebuilder:default=Active
// +kubebuilder:validation:XValidation:rule="oldSelf == 'Active' || self == 'Released'",message="lifecycle cannot return to Active"
Lifecycle MachineAllocationLifecycle `json:"lifecycle,omitempty"`
}
MachineAllocationSpec defines the requested machine. Every field except lifecycle is immutable. +kubebuilder:validation:XValidation:rule="self.consumerRef == oldSelf.consumerRef",message="consumerRef is immutable" +kubebuilder:validation:XValidation:rule="self.classRef == oldSelf.classRef",message="classRef is immutable" +kubebuilder:validation:XValidation:rule="has(self.resources) == has(oldSelf.resources) && (!has(self.resources) || self.resources == oldSelf.resources)",message="resources is immutable" +kubebuilder:validation:XValidation:rule="has(self.requirements) == has(oldSelf.requirements) && (!has(self.requirements) || self.requirements == oldSelf.requirements)",message="requirements is immutable" +kubebuilder:validation:XValidation:rule="has(self.nodeTemplate) == has(oldSelf.nodeTemplate) && (!has(self.nodeTemplate) || self.nodeTemplate == oldSelf.nodeTemplate)",message="nodeTemplate is immutable"
func (*MachineAllocationSpec) DeepCopy ¶ added in v0.23.0
func (in *MachineAllocationSpec) DeepCopy() *MachineAllocationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAllocationSpec.
func (*MachineAllocationSpec) DeepCopyInto ¶ added in v0.23.0
func (in *MachineAllocationSpec) DeepCopyInto(out *MachineAllocationSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineAllocationStatus ¶ added in v0.23.0
type MachineAllocationStatus struct {
// ObservedGeneration is the allocation generation last reconciled.
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// Snapshot is the frozen input for every remote effect made for this
// allocation. It is set by the allocation controller and cannot change or
// be removed once set.
// +optional
Snapshot *MachineAllocationSnapshot `json:"snapshot,omitempty"`
// ProviderID is the exact Node.spec.providerID the machine registers with.
// It cannot change or be removed once set.
// +optional
ProviderID string `json:"providerID,omitempty"`
// ProviderResourceID is the provider-native host identifier.
// +optional
ProviderResourceID string `json:"providerResourceID,omitempty"`
// InstanceType is the launched instance type.
// +optional
InstanceType string `json:"instanceType,omitempty"`
// Zone is the launched zone.
// +optional
Zone string `json:"zone,omitempty"`
// CapacityType is the launched purchase model.
// +optional
CapacityType CapacityType `json:"capacityType,omitempty"`
// Image is the launched host image.
// +optional
Image string `json:"image,omitempty"`
// Capacity is the machine capacity.
// +optional
Capacity corev1.ResourceList `json:"capacity,omitempty"`
// Allocatable is observed from the Node once registered, otherwise
// capacity minus overhead.
// +optional
Allocatable corev1.ResourceList `json:"allocatable,omitempty"`
// Labels are the labels the Node registers with.
// +optional
Labels map[string]string `json:"labels,omitempty"`
// OwnedResources are the provider resources the allocate operation
// confirmed as created for this allocation, with provider-native identity
// proving ownership. Release is limited to these resources.
// +optional
// +listType=map
// +listMapKey=id
OwnedResources []ProviderOwnedResource `json:"ownedResources,omitempty"`
// MachineRef identifies the Machine created for this allocation.
// +optional
MachineRef *UIDReference `json:"machineRef,omitempty"`
// NodeRef identifies the first Node registered for this allocation.
// +optional
NodeRef *UIDReference `json:"nodeRef,omitempty"`
// Operations identifies the durable allocation operations.
// +optional
Operations MachineAllocationOperations `json:"operations,omitempty"`
// FailureReason is a normalized terminal launch failure category.
// +optional
FailureReason MachineAllocationFailureReason `json:"failureReason,omitempty"`
// FailureMessage describes the terminal launch failure.
// +optional
FailureMessage string `json:"failureMessage,omitempty"`
// Conditions represent the latest available observations.
// +optional
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
MachineAllocationStatus reports the observed allocation state.
func (*MachineAllocationStatus) DeepCopy ¶ added in v0.23.0
func (in *MachineAllocationStatus) DeepCopy() *MachineAllocationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineAllocationStatus.
func (*MachineAllocationStatus) DeepCopyInto ¶ added in v0.23.0
func (in *MachineAllocationStatus) DeepCopyInto(out *MachineAllocationStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineClass ¶ added in v0.23.0
type MachineClass struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// +required
Spec MachineClassSpec `json:"spec"`
Status MachineClassStatus `json:"status,omitempty"`
}
MachineClass describes a provider-neutral template from which capacity consumers request MachineAllocations. Provider-specific settings live in an object referenced by providerConfigRef and are interpreted only by the provider adapter.
func (*MachineClass) DeepCopy ¶ added in v0.23.0
func (in *MachineClass) DeepCopy() *MachineClass
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineClass.
func (*MachineClass) DeepCopyInto ¶ added in v0.23.0
func (in *MachineClass) DeepCopyInto(out *MachineClass)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineClass) DeepCopyObject ¶ added in v0.23.0
func (in *MachineClass) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineClassBootstrap ¶ added in v0.23.0
type MachineClassBootstrap struct {
// FilesRef references a ConfigMap of bootstrap files for hosts launched
// from this class. Its required "run" key is the script that runs as root
// on the host before the agent installer.
// +optional
FilesRef *NamespacedObjectReference `json:"filesRef,omitempty"`
// AgentArtifact overrides the agent tarball location and pins its digest.
// +optional
AgentArtifact *AgentArtifact `json:"agentArtifact,omitempty"`
}
MachineClassBootstrap customizes first-boot artifact delivery. It must not contain credentials; the referenced files become part of host user data.
func (*MachineClassBootstrap) DeepCopy ¶ added in v0.23.0
func (in *MachineClassBootstrap) DeepCopy() *MachineClassBootstrap
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineClassBootstrap.
func (*MachineClassBootstrap) DeepCopyInto ¶ added in v0.23.0
func (in *MachineClassBootstrap) DeepCopyInto(out *MachineClassBootstrap)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineClassList ¶ added in v0.23.0
type MachineClassList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []MachineClass `json:"items"`
}
MachineClassList contains a list of MachineClass.
func (*MachineClassList) DeepCopy ¶ added in v0.23.0
func (in *MachineClassList) DeepCopy() *MachineClassList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineClassList.
func (*MachineClassList) DeepCopyInto ¶ added in v0.23.0
func (in *MachineClassList) DeepCopyInto(out *MachineClassList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachineClassList) DeepCopyObject ¶ added in v0.23.0
func (in *MachineClassList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MachineClassOffering ¶ added in v0.23.0
type MachineClassOffering struct {
// Name uniquely identifies the offering within the class.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Name string `json:"name"`
// InstanceType is the provider instance type.
// +kubebuilder:validation:Required
InstanceType string `json:"instanceType"`
// Zone is the provider zone, or empty for regional capacity.
// +optional
Zone string `json:"zone,omitempty"`
// CapacityType is the purchase model.
// +kubebuilder:validation:Required
CapacityType CapacityType `json:"capacityType"`
// Labels are the well-known labels Nodes from this offering register with.
// +optional
Labels map[string]string `json:"labels,omitempty"`
// Capacity is the machine capacity before overhead.
// +optional
Capacity corev1.ResourceList `json:"capacity,omitempty"`
// Overhead is the capacity reserved from workloads.
// +optional
Overhead OfferingOverhead `json:"overhead,omitempty"`
// Availability is the observed availability.
// +kubebuilder:validation:Required
Availability OfferingAvailability `json:"availability"`
// Price is the observed or configured price, when known.
// +optional
Price *OfferingPrice `json:"price,omitempty"`
// ObservedAt is when availability and capacity were observed.
// +optional
ObservedAt *metav1.Time `json:"observedAt,omitempty"`
// ValidUntil is when this observation expires. An expired offering must
// not be used to launch a machine.
// +optional
ValidUntil *metav1.Time `json:"validUntil,omitempty"`
}
MachineClassOffering is one normalized purchasable capacity shape.
func (*MachineClassOffering) DeepCopy ¶ added in v0.23.0
func (in *MachineClassOffering) DeepCopy() *MachineClassOffering
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineClassOffering.
func (*MachineClassOffering) DeepCopyInto ¶ added in v0.23.0
func (in *MachineClassOffering) DeepCopyInto(out *MachineClassOffering)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineClassSpec ¶ added in v0.23.0
type MachineClassSpec struct {
// SiteRef identifies the Site that allocated machines join. It is
// immutable after creation.
// +kubebuilder:validation:Required
SiteRef LocalObjectReference `json:"siteRef"`
// Provider selects the registered provider adapter that interprets
// providerConfigRef and executes allocation operations. It is immutable
// after creation.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Provider string `json:"provider"`
// ProviderConfigRef references provider-specific configuration. Only a
// namespaced ConfigMap in the core API group is accepted today.
// +kubebuilder:validation:Required
// +kubebuilder:validation:XValidation:rule="!has(self.apiGroup) || self.apiGroup == ”",message="providerConfigRef.apiGroup must be the core group"
// +kubebuilder:validation:XValidation:rule="self.kind == 'ConfigMap'",message="providerConfigRef.kind must be ConfigMap"
// +kubebuilder:validation:XValidation:rule="self.kind != 'ConfigMap' || has(self.namespace)",message="providerConfigRef.namespace is required for a ConfigMap"
ProviderConfigRef TypedObjectReference `json:"providerConfigRef"`
// ConfigurationRef pins the MachineConfiguration version whose content is
// frozen into each allocation.
// +kubebuilder:validation:Required
// +kubebuilder:validation:XValidation:rule="has(self.version)",message="configurationRef.version is required"
ConfigurationRef MachineConfigurationRef `json:"configurationRef"`
// Bootstrap optionally customizes first-boot artifact delivery.
// +optional
Bootstrap *MachineClassBootstrap `json:"bootstrap,omitempty"`
}
MachineClassSpec defines the inputs shared by allocations from this class. +kubebuilder:validation:XValidation:rule="self.provider == oldSelf.provider",message="provider is immutable" +kubebuilder:validation:XValidation:rule="self.siteRef == oldSelf.siteRef",message="siteRef is immutable"
func (*MachineClassSpec) DeepCopy ¶ added in v0.23.0
func (in *MachineClassSpec) DeepCopy() *MachineClassSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineClassSpec.
func (*MachineClassSpec) DeepCopyInto ¶ added in v0.23.0
func (in *MachineClassSpec) DeepCopyInto(out *MachineClassSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachineClassStatus ¶ added in v0.23.0
type MachineClassStatus struct {
// ObservedGeneration is the class generation whose inputs were resolved.
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// ResolvedRevision identifies the resolved spec, provider config,
// bootstrap files, and configuration content. Allocations whose frozen
// revision differs are drifted.
// +optional
ResolvedRevision string `json:"resolvedRevision,omitempty"`
// ProviderConfig records the provider config observed for the revision.
// +optional
ProviderConfig *ObjectContentSnapshot `json:"providerConfig,omitempty"`
// BootstrapFiles records the bootstrap files observed for the revision.
// +optional
BootstrapFiles *ObjectContentSnapshot `json:"bootstrapFiles,omitempty"`
// Configuration records the configuration version observed for the revision.
// +optional
Configuration *ConfigurationContentSnapshot `json:"configuration,omitempty"`
// Site is the exact Site instance the revision was resolved for. A Site
// deleted and recreated under the same name is a different authority.
// +optional
Site *UIDReference `json:"site,omitempty"`
// Credential is the exact MachineOperationCredential instance the
// revision was resolved with.
// +optional
Credential *UIDReference `json:"credential,omitempty"`
// Offerings are the normalized capacity offerings for this class.
// +optional
// +listType=map
// +listMapKey=name
Offerings []MachineClassOffering `json:"offerings,omitempty"`
// Conditions represent the latest available observations.
// +optional
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
MachineClassStatus reports the normalized, observed class state.
func (*MachineClassStatus) DeepCopy ¶ added in v0.23.0
func (in *MachineClassStatus) DeepCopy() *MachineClassStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineClassStatus.
func (*MachineClassStatus) DeepCopyInto ¶ added in v0.23.0
func (in *MachineClassStatus) DeepCopyInto(out *MachineClassStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
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
func (in *MachineConfiguration) DeepCopy() *MachineConfiguration
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
func (in *MachineConfigurationAgent) DeepCopy() *MachineConfigurationAgent
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationAgent.
func (*MachineConfigurationAgent) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationAgent) DeepCopyInto(out *MachineConfigurationAgent)
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
func (in *MachineConfigurationHostSpec) DeepCopy() *MachineConfigurationHostSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationHostSpec.
func (*MachineConfigurationHostSpec) DeepCopyInto ¶ added in v0.1.23
func (in *MachineConfigurationHostSpec) DeepCopyInto(out *MachineConfigurationHostSpec)
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
func (in *MachineConfigurationKubernetes) DeepCopy() *MachineConfigurationKubernetes
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationKubernetes.
func (*MachineConfigurationKubernetes) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationKubernetes) DeepCopyInto(out *MachineConfigurationKubernetes)
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
func (in *MachineConfigurationList) DeepCopy() *MachineConfigurationList
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
func (in *MachineConfigurationRef) DeepCopy() *MachineConfigurationRef
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
func (in *MachineConfigurationRefStatus) DeepCopy() *MachineConfigurationRefStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationRefStatus.
func (*MachineConfigurationRefStatus) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationRefStatus) DeepCopyInto(out *MachineConfigurationRefStatus)
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
func (in *MachineConfigurationSpec) DeepCopy() *MachineConfigurationSpec
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
func (in *MachineConfigurationStatus) DeepCopy() *MachineConfigurationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationStatus.
func (*MachineConfigurationStatus) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationStatus) DeepCopyInto(out *MachineConfigurationStatus)
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
func (in *MachineConfigurationTemplate) DeepCopy() *MachineConfigurationTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationTemplate.
func (*MachineConfigurationTemplate) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationTemplate) DeepCopyInto(out *MachineConfigurationTemplate)
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"`
// 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
func (in *MachineConfigurationUpdateStrategy) DeepCopy() *MachineConfigurationUpdateStrategy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationUpdateStrategy.
func (*MachineConfigurationUpdateStrategy) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationUpdateStrategy) DeepCopyInto(out *MachineConfigurationUpdateStrategy)
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
func (in *MachineConfigurationVersion) DeepCopy() *MachineConfigurationVersion
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersion.
func (*MachineConfigurationVersion) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationVersion) DeepCopyInto(out *MachineConfigurationVersion)
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
func (in *MachineConfigurationVersionList) DeepCopy() *MachineConfigurationVersionList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersionList.
func (*MachineConfigurationVersionList) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationVersionList) DeepCopyInto(out *MachineConfigurationVersionList)
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
func (in *MachineConfigurationVersionSpec) DeepCopy() *MachineConfigurationVersionSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersionSpec.
func (*MachineConfigurationVersionSpec) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationVersionSpec) DeepCopyInto(out *MachineConfigurationVersionSpec)
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
func (in *MachineConfigurationVersionStatus) DeepCopy() *MachineConfigurationVersionStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineConfigurationVersionStatus.
func (*MachineConfigurationVersionStatus) DeepCopyInto ¶ added in v0.1.4
func (in *MachineConfigurationVersionStatus) DeepCopyInto(out *MachineConfigurationVersionStatus)
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. HostAllocate and HostRelease act on a MachineAllocation, and neither the agent nor the cloud or PXE controllers process them.
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 MachineOperationAllocationResult ¶ added in v0.23.0
type MachineOperationAllocationResult struct {
// ProviderResourceID is the provider-native host identifier.
// +optional
ProviderResourceID string `json:"providerResourceID,omitempty"`
// InstanceType is the launched instance type.
// +optional
InstanceType string `json:"instanceType,omitempty"`
// Zone is the launched zone.
// +optional
Zone string `json:"zone,omitempty"`
// Image is the launched host image.
// +optional
Image string `json:"image,omitempty"`
// OwnedResources are the provider resources confirmed as created for the
// allocation, with provider-native identity. A failed allocation may still
// report them.
// +optional
// +listType=map
// +listMapKey=id
OwnedResources []ProviderOwnedResource `json:"ownedResources,omitempty"`
}
MachineOperationAllocationResult is the provider's result for a HostAllocate. Field names match MachineAllocationStatus.
func (*MachineOperationAllocationResult) DeepCopy ¶ added in v0.23.0
func (in *MachineOperationAllocationResult) DeepCopy() *MachineOperationAllocationResult
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationAllocationResult.
func (*MachineOperationAllocationResult) DeepCopyInto ¶ added in v0.23.0
func (in *MachineOperationAllocationResult) DeepCopyInto(out *MachineOperationAllocationResult)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
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
func (in *MachineOperationBootMediaStatus) DeepCopy() *MachineOperationBootMediaStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationBootMediaStatus.
func (*MachineOperationBootMediaStatus) DeepCopyInto ¶ added in v0.15.0
func (in *MachineOperationBootMediaStatus) DeepCopyInto(out *MachineOperationBootMediaStatus)
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
func (in *MachineOperationCredential) DeepCopy() *MachineOperationCredential
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredential.
func (*MachineOperationCredential) DeepCopyInto ¶ added in v0.1.8
func (in *MachineOperationCredential) DeepCopyInto(out *MachineOperationCredential)
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
func (in *MachineOperationCredentialAuth) DeepCopy() *MachineOperationCredentialAuth
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredentialAuth.
func (*MachineOperationCredentialAuth) DeepCopyInto ¶ added in v0.1.8
func (in *MachineOperationCredentialAuth) DeepCopyInto(out *MachineOperationCredentialAuth)
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
func (in *MachineOperationCredentialList) DeepCopy() *MachineOperationCredentialList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredentialList.
func (*MachineOperationCredentialList) DeepCopyInto ¶ added in v0.1.8
func (in *MachineOperationCredentialList) DeepCopyInto(out *MachineOperationCredentialList)
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
func (in *MachineOperationCredentialSpec) DeepCopy() *MachineOperationCredentialSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationCredentialSpec.
func (*MachineOperationCredentialSpec) DeepCopyInto ¶ added in v0.1.8
func (in *MachineOperationCredentialSpec) DeepCopyInto(out *MachineOperationCredentialSpec)
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
func (in *MachineOperationList) DeepCopy() *MachineOperationList
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"`
// AllocationRef identifies the MachineAllocation incarnation that a
// HostAllocate or HostRelease acts on. It is required for those kinds,
// forbidden for all others, and immutable.
// +optional
AllocationRef *UIDReference `json:"allocationRef,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. +kubebuilder:validation:XValidation:rule="!(self.operationKind in ['HostAllocate', 'HostRelease']) || has(self.allocationRef)",message="allocationRef is required for HostAllocate and HostRelease" +kubebuilder:validation:XValidation:rule="!has(self.allocationRef) || self.operationKind in ['HostAllocate', 'HostRelease']",message="allocationRef is allowed only for HostAllocate and HostRelease" +kubebuilder:validation:XValidation:rule="!(self.operationKind in ['HostAllocate', 'HostRelease']) || (has(self.machineRef) && self.machineRef != \"\")",message="machineRef is required for HostAllocate and HostRelease" +kubebuilder:validation:XValidation:rule="!(self.operationKind in ['HostAllocate', 'HostRelease']) || !has(self.machineSelector)",message="machineSelector is not allowed for HostAllocate and HostRelease" +kubebuilder:validation:XValidation:rule="!(self.operationKind in ['HostAllocate', 'HostRelease']) || !has(self.ttlSecondsAfterFinished)",message="ttlSecondsAfterFinished is not allowed for HostAllocate and HostRelease"
func (*MachineOperationSpec) DeepCopy ¶ added in v0.1.4
func (in *MachineOperationSpec) DeepCopy() *MachineOperationSpec
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"`
// Allocation is the provider's result for a HostAllocate. It is accepted
// only on HostAllocate and cannot change or be removed once set.
// +optional
Allocation *MachineOperationAllocationResult `json:"allocation,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
func (in *MachineOperationStatus) DeepCopy() *MachineOperationStatus
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
func (in *MachineOperationTargetInput) DeepCopy() *MachineOperationTargetInput
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationTargetInput.
func (*MachineOperationTargetInput) DeepCopyInto ¶ added in v0.1.23
func (in *MachineOperationTargetInput) DeepCopyInto(out *MachineOperationTargetInput)
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
func (in *MachineOperationTargetStatus) DeepCopy() *MachineOperationTargetStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachineOperationTargetStatus.
func (*MachineOperationTargetStatus) DeepCopyInto ¶ added in v0.1.7
func (in *MachineOperationTargetStatus) DeepCopyInto(out *MachineOperationTargetStatus)
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"`
// Isolation declares where the node stack (containerd, kubelet, CNI and
// CoreDNS) runs on the host. Empty means no declaration: a new host is
// provisioned in nspawn, and a repave leaves a running node in the mode it
// already uses. Setting it does not move a running node: the node changes
// to this mode at its next repave, which the agent performs when the Node
// is deleted. The enum lists only the modes this release can run.
// container is experimental: machina provisions it, and the agent runs
// it, only when explicitly enabled (see the isolation reference docs).
// +kubebuilder:validation:Enum="";nspawn;none;container
// +optional
Isolation IsolationMode `json:"isolation,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"`
// AllocationRef identifies the MachineAllocation this Machine was
// created for. It can be set only when the Machine is created.
// +optional
AllocationRef *UIDReference `json:"allocationRef,omitempty"`
// Fenced forbids the agent from starting this Machine's node again. It
// can only change from false to true, and requires AllocationRef.
// +optional
Fenced bool `json:"fenced,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" +kubebuilder:validation:XValidation:rule="!has(self.fenced) || !self.fenced || has(self.allocationRef)",message="fenced requires allocationRef" +kubebuilder:validation:XValidation:rule="!has(self.pxe) || !has(self.pxe.network) || !has(self.pxe.network.bonds) || self.pxe.network.bonds.all(b, b.interfaces.all(i, self.pxe.network.ethernets.exists(e, e.name == i)))",message="bond interfaces must reference declared ethernets",fieldPath=".pxe.network.bonds" +kubebuilder:validation:XValidation:rule="!has(self.pxe) || !has(self.pxe.network) || !has(self.pxe.network.vlans) || self.pxe.network.vlans.all(v, self.pxe.network.ethernets.exists(e, e.name == v.link) || (has(self.pxe.network.bonds) && self.pxe.network.bonds.exists(b, b.name == v.link)))",message="vlan link must reference a declared ethernet or bond",fieldPath=".pxe.network.vlans"
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"`
// Isolation is the isolation mode the agent reports as applied on the
// host. Empty means the agent has not reported one. It is compared with
// spec.isolation to report drift. Only the agent writes it.
// +kubebuilder:validation:Enum="";nspawn;none;container
// +optional
Isolation IsolationMode `json:"isolation,omitempty"`
// IsolationChange reports the agent's latest attempt to move the node to
// the mode in spec.isolation during a repave. Only the agent writes it.
// +optional
IsolationChange *IsolationChangeStatus `json:"isolationChange,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
func (in *MetalmanComponentSpec) DeepCopy() *MetalmanComponentSpec
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 NamespacedObjectReference ¶ added in v0.23.0
type NamespacedObjectReference struct {
// Namespace is the referenced object namespace.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Namespace string `json:"namespace"`
// Name is the referenced object name.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Name string `json:"name"`
}
NamespacedObjectReference identifies a namespaced object.
func (*NamespacedObjectReference) DeepCopy ¶ added in v0.23.0
func (in *NamespacedObjectReference) DeepCopy() *NamespacedObjectReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespacedObjectReference.
func (*NamespacedObjectReference) DeepCopyInto ¶ added in v0.23.0
func (in *NamespacedObjectReference) DeepCopyInto(out *NamespacedObjectReference)
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
func (in *NamespacedSecretReference) DeepCopy() *NamespacedSecretReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespacedSecretReference.
func (*NamespacedSecretReference) DeepCopyInto ¶ added in v0.1.8
func (in *NamespacedSecretReference) DeepCopyInto(out *NamespacedSecretReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ObjectContentSnapshot ¶ added in v0.23.0
type ObjectContentSnapshot struct {
// Namespace is the object namespace.
// +kubebuilder:validation:Required
Namespace string `json:"namespace"`
// Name is the object name.
// +kubebuilder:validation:Required
Name string `json:"name"`
// UID detects deletion and recreation of the object.
// +kubebuilder:validation:Required
UID types.UID `json:"uid"`
// Hash is the SHA-256 of the object content.
// +kubebuilder:validation:Required
Hash string `json:"hash"`
}
ObjectContentSnapshot identifies the exact content of an object.
func (*ObjectContentSnapshot) DeepCopy ¶ added in v0.23.0
func (in *ObjectContentSnapshot) DeepCopy() *ObjectContentSnapshot
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectContentSnapshot.
func (*ObjectContentSnapshot) DeepCopyInto ¶ added in v0.23.0
func (in *ObjectContentSnapshot) DeepCopyInto(out *ObjectContentSnapshot)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OfferingAvailability ¶ added in v0.23.0
type OfferingAvailability string
OfferingAvailability is the observed availability of an offering. +kubebuilder:validation:Enum=Available;Unavailable;Unknown
const ( // OfferingAvailable means the provider reported the offering as usable. OfferingAvailable OfferingAvailability = "Available" OfferingUnavailable OfferingAvailability = "Unavailable" // OfferingAvailabilityUnknown means availability could not be observed. OfferingAvailabilityUnknown OfferingAvailability = "Unknown" )
type OfferingOverhead ¶ added in v0.23.0
type OfferingOverhead struct {
// KubeReserved is reserved for Kubernetes node components.
// +optional
KubeReserved corev1.ResourceList `json:"kubeReserved,omitempty"`
// SystemReserved is reserved for operating system daemons.
// +optional
SystemReserved corev1.ResourceList `json:"systemReserved,omitempty"`
// EvictionThreshold is the hard eviction threshold.
// +optional
EvictionThreshold corev1.ResourceList `json:"evictionThreshold,omitempty"`
}
OfferingOverhead is the capacity unavailable to workloads.
func (*OfferingOverhead) DeepCopy ¶ added in v0.23.0
func (in *OfferingOverhead) DeepCopy() *OfferingOverhead
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OfferingOverhead.
func (*OfferingOverhead) DeepCopyInto ¶ added in v0.23.0
func (in *OfferingOverhead) DeepCopyInto(out *OfferingOverhead)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OfferingPrice ¶ added in v0.23.0
type OfferingPrice struct {
// Currency is the ISO 4217 currency code.
// +kubebuilder:validation:Required
// +kubebuilder:validation:Pattern=`^[A-Z]{3}$`
Currency string `json:"currency"`
// PerHour is the decimal price per instance hour.
// +kubebuilder:validation:Required
// +kubebuilder:validation:Pattern=`^[0-9]+(\.[0-9]+)?$`
PerHour string `json:"perHour"`
// Source documents where the price came from and what it includes.
// +optional
Source string `json:"source,omitempty"`
// ObservedAt is when the price was observed.
// +optional
ObservedAt *metav1.Time `json:"observedAt,omitempty"`
}
OfferingPrice is a normalized price for an offering.
func (*OfferingPrice) DeepCopy ¶ added in v0.23.0
func (in *OfferingPrice) DeepCopy() *OfferingPrice
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OfferingPrice.
func (*OfferingPrice) DeepCopyInto ¶ added in v0.23.0
func (in *OfferingPrice) DeepCopyInto(out *OfferingPrice)
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;HostAllocate;HostRelease
const ( // OperationNodeReboot restarts the node stack in place without // reprovisioning. Services are stopped, the node stack (nspawn machine, // container or host units, depending on the isolation mode) is // restarted, and services are brought back up. Handled by the 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" // OperationHostAllocate launches the host for the MachineAllocation named // by spec.allocationRef. The shared machine-ops controller, metalman and // the agent do not process it. OperationHostAllocate OperationKind = "HostAllocate" // OperationHostRelease releases the host for the MachineAllocation named // by spec.allocationRef and the provider resources the allocation owns. // The shared machine-ops controller, metalman and the agent do not // process it. OperationHostRelease OperationKind = "HostRelease" )
func (OperationKind) IsAllocationOperation ¶ added in v0.23.0
func (k OperationKind) IsAllocationOperation() bool
IsAllocationOperation reports whether k acts on a MachineAllocation rather than on an existing host. It is true only for HostAllocate and HostRelease.
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"`
// CloudInitTimeout bounds how long a HostReplace target may wait from the
// installer reboot handoff until first-boot cloud-init completes and the
// Node registers. It covers firmware POST. When omitted, metalman allows
// 20 minutes. Large GPU servers can spend most of the default budget in
// POST alone.
// +optional
// +kubebuilder:validation:XValidation:rule="duration(self) > duration('0s')",message="cloudInitTimeout must be positive"
CloudInitTimeout *metav1.Duration `json:"cloudInitTimeout,omitempty"`
// Network declares the host's static network topology: physical
// ethernets identified by MAC address, bonds, and VLANs. The installer
// brings it up before fetching install instructions and persists it as
// netplan or systemd-networkd configuration on the installed host.
// It requires the VirtualMedia boot protocol: metalman then boots the
// installer from the bootstrap ISO without network access, so links that
// only pass traffic once LACP negotiates (no switch fallback) still work.
// The first DHCPLeases entry remains the provisioning identity: its IPv4
// address and gateway must be configured on exactly one declared
// interface, and its MAC must be one of the declared ethernets.
// When omitted, metalman keeps the single-NIC behavior driven by
// DHCPLeases.
// +optional
Network *HostNetworkSpec `json:"network,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" +kubebuilder:validation:XValidation:rule="!has(self.network) || (has(self.bootProtocol) && self.bootProtocol == 'VirtualMedia')",message="network requires bootProtocol VirtualMedia" +kubebuilder:validation:XValidation:rule="!has(self.network) || (has(self.dhcpLeases) && size(self.dhcpLeases) > 0)",message="network requires a dhcpLeases entry for the provisioning address" +kubebuilder:validation:XValidation:rule="!has(self.network) || !has(self.dhcpLeases) || size(self.dhcpLeases) == 0 || !has(self.dhcpLeases[0].holdLease) || !self.dhcpLeases[0].holdLease",message="network does not support dhcpLeases[0].holdLease",fieldPath=".dhcpLeases"
func (*PXESpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PXESpec.
func (*PXESpec) DeepCopyInto ¶
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
TargetArchitecture returns the effective PXE target architecture.
func (*PXESpec) TargetBootProtocol ¶ added in v0.1.20
TargetBootProtocol returns the effective network boot protocol.
func (*PXESpec) TargetCloudInitTimeout ¶ added in v0.26.0
TargetCloudInitTimeout returns the effective first-boot cloud-init timeout.
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
func (in *ProviderMachineReference) DeepCopy() *ProviderMachineReference
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
func (in *ProviderMachineSnapshot) DeepCopy() *ProviderMachineSnapshot
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
func (in *ProviderOperationStatus) DeepCopy() *ProviderOperationStatus
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 ProviderOwnedResource ¶ added in v0.23.0
type ProviderOwnedResource struct {
// ID is the provider resource identifier.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
ID string `json:"id"`
// NativeID is the provider-assigned instance identity. A resource
// recreated under the same ID has a different NativeID.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
NativeID string `json:"nativeID"`
}
ProviderOwnedResource is a provider resource owned by one allocation.
func (*ProviderOwnedResource) DeepCopy ¶ added in v0.23.0
func (in *ProviderOwnedResource) DeepCopy() *ProviderOwnedResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderOwnedResource.
func (*ProviderOwnedResource) DeepCopyInto ¶ added in v0.23.0
func (in *ProviderOwnedResource) DeepCopyInto(out *ProviderOwnedResource)
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
func (in *RedfishPasswordSelector) DeepCopy() *RedfishPasswordSelector
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 RequirementOperator ¶ added in v0.23.0
type RequirementOperator string
RequirementOperator is a label requirement operator. +kubebuilder:validation:Enum=In;NotIn;Exists;DoesNotExist;Gt;Lt
const ( // RequirementOpIn requires the label value to be one of the values. RequirementOpIn RequirementOperator = "In" // RequirementOpNotIn requires the label value to be none of the values. RequirementOpNotIn RequirementOperator = "NotIn" // RequirementOpExists requires the label to be present. RequirementOpExists RequirementOperator = "Exists" // RequirementOpDoesNotExist requires the label to be absent. RequirementOpDoesNotExist RequirementOperator = "DoesNotExist" // RequirementOpGt requires the label value, as an integer, to be greater // than the single value. RequirementOpGt RequirementOperator = "Gt" // RequirementOpLt requires the label value, as an integer, to be less than // the single value. RequirementOpLt RequirementOperator = "Lt" )
type RouteSpec ¶ added in v0.24.0
type RouteSpec struct {
// To is the destination prefix in CIDR notation, for example
// 198.51.100.0/24.
// +kubebuilder:validation:MaxLength=18
To string `json:"to"`
// Via is the IPv4 next-hop address.
// +kubebuilder:validation:MaxLength=15
Via string `json:"via"`
}
RouteSpec declares a static IPv4 route.
func (*RouteSpec) DeepCopy ¶ added in v0.24.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RouteSpec.
func (*RouteSpec) DeepCopyInto ¶ added in v0.24.0
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHSpec.
func (*SSHSpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SSHStatus.
func (*SSHStatus) DeepCopyInto ¶
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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Site.
func (*Site) DeepCopyInto ¶ added in v0.1.23
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
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 is a deprecated compatibility setting and is ignored.
// Machina is required and cannot be disabled.
// +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) and machina are required cluster singletons 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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteList.
func (*SiteList) DeepCopyInto ¶ added in v0.1.23
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
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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SiteSpec.
func (*SiteSpec) DeepCopyInto ¶ added in v0.1.23
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TPMStatus.
func (*TPMStatus) DeepCopyInto ¶
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
func (in *TokenRefresherComponentSpec) DeepCopy() *TokenRefresherComponentSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRefresherComponentSpec.
func (*TokenRefresherComponentSpec) DeepCopyInto ¶ added in v0.5.0
func (in *TokenRefresherComponentSpec) DeepCopyInto(out *TokenRefresherComponentSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TypedObjectReference ¶ added in v0.23.0
type TypedObjectReference struct {
// APIGroup is the API group of the referenced object. An absent or empty
// value means the core API group.
// +optional
APIGroup string `json:"apiGroup,omitempty"`
// Kind is the kind of the referenced object.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Kind string `json:"kind"`
// Name is the name of the referenced object.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Name string `json:"name"`
// Namespace is the namespace of the referenced object. It is absent for
// cluster-scoped kinds.
// +optional
// +kubebuilder:validation:MinLength=1
Namespace string `json:"namespace,omitempty"`
}
TypedObjectReference identifies an object by API group, kind, name, and optional namespace.
func (*TypedObjectReference) DeepCopy ¶ added in v0.23.0
func (in *TypedObjectReference) DeepCopy() *TypedObjectReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TypedObjectReference.
func (*TypedObjectReference) DeepCopyInto ¶ added in v0.23.0
func (in *TypedObjectReference) DeepCopyInto(out *TypedObjectReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type UIDReference ¶ added in v0.23.0
type UIDReference struct {
// Name is the object name.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Name string `json:"name"`
// UID is the object UID.
// +kubebuilder:validation:Required
// +kubebuilder:validation:Type=string
// +kubebuilder:validation:MinLength=1
UID types.UID `json:"uid"`
}
UIDReference identifies one object incarnation by name and UID.
func (*UIDReference) DeepCopy ¶ added in v0.23.0
func (in *UIDReference) DeepCopy() *UIDReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UIDReference.
func (*UIDReference) DeepCopyInto ¶ added in v0.23.0
func (in *UIDReference) DeepCopyInto(out *UIDReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VLANSpec ¶ added in v0.24.0
type VLANSpec struct {
// Name is the VLAN interface name, for example bond0.64.
// +kubebuilder:validation:MaxLength=15
// +kubebuilder:validation:Pattern=`^[a-zA-Z][a-zA-Z0-9_.-]{0,14}$`
Name string `json:"name"`
// ID is the 802.1Q VLAN identifier.
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=4094
ID int32 `json:"id"`
// Link is the name of the ethernet or bond carrying the VLAN.
// +kubebuilder:validation:MaxLength=15
Link string `json:"link"`
InterfaceAddressing `json:",inline"`
}
VLANSpec declares an 802.1Q VLAN interface.
func (*VLANSpec) DeepCopy ¶ added in v0.24.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VLANSpec.
func (*VLANSpec) DeepCopyInto ¶ added in v0.24.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.