v1alpha1

package
v0.1.0-latest-stable Latest Latest
Warning

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

Go to latest
Published: Sep 30, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the provisioning.dpu v1alpha1 API group +kubebuilder:object:generate=true +groupName=provisioning.dpu.nvidia.com

Index

Constants

View Source
const (
	// BFBCondInitialized indicates the BFB has been initialized
	BFBCondInitialized conditions.ConditionType = "Initialized"
	// BFBCondDownloaded indicates the BFB has been downloaded
	BFBCondDownloaded conditions.ConditionType = "Downloaded"
	// BFBCondReady indicates the BFB is ready for use
	BFBCondReady conditions.ConditionType = conditions.TypeReady
	// BFBCondError indicates the BFB is in error state
	BFBCondError conditions.ConditionType = "Error"
	// BFBCondDeleted indicates the BFB has been deleted
	BFBCondDeleted conditions.ConditionType = "Deleted"
)
View Source
const (
	// BlueFieldSoftwareCondInitialized indicates the BlueFieldSoftware has been initialized
	BlueFieldSoftwareCondInitialized conditions.ConditionType = "Initialized"
	// BlueFieldSoftwareCondDownloaded indicates the BlueFieldSoftware components have been downloaded
	BlueFieldSoftwareCondDownloaded conditions.ConditionType = "Downloaded"
	// BlueFieldSoftwareCondReady indicates the BlueFieldSoftware is ready for use
	BlueFieldSoftwareCondReady conditions.ConditionType = conditions.TypeReady
	// BlueFieldSoftwareCondError indicates the BlueFieldSoftware is in error state
	BlueFieldSoftwareCondError conditions.ConditionType = "Error"
	// BlueFieldSoftwareCondDeleted indicates the BlueFieldSoftware has been deleted
	BlueFieldSoftwareCondDeleted conditions.ConditionType = "Deleted"
)
View Source
const (
	// DPUKind is the kind of the DPU object
	DPUKind = "DPU"

	// DPUAgentConditionNVConfigApplied is reported when mlxconfig has been applied for the current boot.
	// It may appear on agentStatus.conditions (DPU Config phase) or agentStatus.preInstall.conditions
	// (best-effort Config FW Parameters phase during reprovision).
	DPUAgentConditionNVConfigApplied = "NVConfigApplied"

	// DPUAgentConditionSPIREWorkloadAttestorEnabled is reported on SPIFFE DPUs once the
	// SPIRE Kubernetes workload attestor is configured, which is what lets the SPIRE
	// agent issue SVIDs to pods.
	DPUAgentConditionSPIREWorkloadAttestorEnabled = "SPIREWorkloadAttestorEnabled"
)
View Source
const (
	// NPDConditionKernelDeadlock indicates the node is in a kernel deadlock state.
	NPDConditionKernelDeadlock corev1.NodeConditionType = "KernelDeadlock"
	// NPDConditionReadonlyFilesystem indicates the filesystem is read-only.
	NPDConditionReadonlyFilesystem corev1.NodeConditionType = "ReadonlyFilesystem"
	// NPDConditionOVSvSwitchdHealthy indicates the ovs-vswitchd service is running
	NPDConditionOVSvSwitchdHealthy corev1.NodeConditionType = "OVSvSwitchdHealthy"
	// NPDConditionOVSDBHealthy indicates the ovsdb-server service is running
	NPDConditionOVSDBHealthy corev1.NodeConditionType = "OVSDBHealthy"
	// NPDConditionOVSHealthy indicates OVS processes have not been OOM killed recently
	NPDConditionOVSHealthy corev1.NodeConditionType = "OVSHealthy"
	// NPDConditionUplinkHealthy indicates the physical uplink interface is up
	NPDConditionUplinkHealthy corev1.NodeConditionType = "UplinkHealthy"
	// NPDConditionPFRepresentorsHealthy indicates host PF representors are present on the DPU eswitch
	NPDConditionPFRepresentorsHealthy corev1.NodeConditionType = "PFRepresentorsHealthy"
	// NPDConditionMTUConfigured indicates network MTU is correctly configured
	NPDConditionMTUConfigured corev1.NodeConditionType = "MTUConfigured"
)

Keep in sync with deploy/charts/dpu-networking/charts/node-problem-detector/templates/configmap.yaml

View Source
const (
	DPUOutdatedReasonBFB               = "OutdatedBFB"
	DPUOutdatedReasonDPUFlavor         = "OutdatedDPUFlavor"
	DPUOutdatedReasonSecureBoot        = "OutdatedSecureBoot"
	DPUOutdatedReasonBlueFieldSoftware = "OutdatedBlueFieldSoftware"
)

Reasons reported on DPUStatus.Outdated.Reason. Exactly one of these is set at a time, corresponding to the first-precedence diverged template field.

View Source
const (
	FinalizerCleanUp         = "provisioning.dpu.nvidia.com/cluster-manager-clean-up"
	FinalizerInternalCleanUp = "provisioning.dpu.nvidia.com/cluster-manager-internal-clean-up"
)
View Source
const (
	// DPUClusterNameLabelKey is the key of the label linking objects to a specific DPU Cluster. The value should be the
	// namespace of the DPUCluster.
	DPUClusterNameLabelKey = "dpu.nvidia.com/cluster"
	// DPUClusterNamespaceLabelKey is the key of the label linking objects to a specific DPU Cluster. The value should
	// be the namespace of the DPUCluster.
	DPUClusterNamespaceLabelKey = "dpu.nvidia.com/cluster-namespace"
)
View Source
const (
	// DPUDeviceKind is the kind of the DPUDevice object
	DPUDeviceKind = "DPUDevice"

	// DPUDeviceFinalizer is the finalizer used to prevent DpuDevice deletion while DPU is using it
	DPUDeviceFinalizer = DPUProvisioningPrefix + "dpudevice-protection"

	// BMCCredentialFinalizer is the finalizer added to per-device BMC credential secrets
	// to prevent accidental deletion while the DPUDevice depends on them.
	BMCCredentialFinalizer = DPUProvisioningPrefix + "bmc-credential"

	// DPUDeviceLabelSkipHWProvisioning indicates the device should skip
	// hardware-specific provisioning steps (install, FW config, reboot).
	DPUDeviceLabelSkipHWProvisioning = DPUProvisioningPrefix + "skip-hw-provisioning"

	// SPIFFEDeregistrationFinalizer is added to a SPIFFE-mode DPUDevice and held until its
	// per-DPU SPIRE ClusterStaticEntry CR has been removed from the K8s API. It enforces the
	// deletion-ordering invariant that the ClusterStaticEntry is GC'd before the DPUDevice,
	// so a reflashed DPU cannot race a stale identity entry.
	SPIFFEDeregistrationFinalizer = DPUProvisioningPrefix + "spiffe-deregistration"

	// RotateBMCServerCertificateAnnotation requests a manual rotation of the DPU BMC mTLS
	// server certificate. The annotation value is an opaque token (any non-empty string;
	// a timestamp or UUID is recommended). Rotation is triggered when the value differs from
	// status.bmcServerCertificate.observedManualTrigger; after a successful rotation the
	// controller copies the value into observedManualTrigger so the same trigger is not
	// processed twice.
	RotateBMCServerCertificateAnnotation = DPUProvisioningPrefix + "rotate-bmc-server-certificate"
)
View Source
const (
	// ConditionDpuDeviceDiscovered indicates that the DPU has been discovered
	ConditionDpuDeviceDiscovered conditions.ConditionType = "Discovered"
	// ConditionDpuDeviceNodeAttached indicates that the DPU is attached to a node
	ConditionDpuDeviceNodeAttached conditions.ConditionType = "NodeAttached"
	// ConditionDpuDeviceBMCFactoryResetReady indicates that the BMC factory reset step of
	// initialization has finished, either because the BMC was reset and came back or because
	// the policy said not to reset it. The reason distinguishes the two.
	ConditionDpuDeviceBMCFactoryResetReady conditions.ConditionType = "BMCFactoryResetReady"
	// ConditionDpuDeviceInitialized indicates that the DPU interface has been initialized
	ConditionDpuDeviceInitialized conditions.ConditionType = "Initialized"
	// ConditionDpuDeviceError indicates that the DPUDevice has an error
	ConditionDpuDeviceError conditions.ConditionType = "Error"
	// ConditionDpuDeviceReady indicates that the DPUDevice is ready
	ConditionDpuDeviceReady conditions.ConditionType = "Ready"
	// ConditionBMCCredentialsReady reports the health of BMC credential resolution.
	ConditionBMCCredentialsReady conditions.ConditionType = "BMCCredentialsReady"
	// ConditionSPIFFEEntryReady reports whether the per-DPU SPIRE ClusterStaticEntry has been
	// registered and rendered (L1 composite mirror of the upstream entry status).
	ConditionSPIFFEEntryReady conditions.ConditionType = "SPIFFEEntryReady"
	// ConditionDpuDeviceBMCServerCertificateReady indicates the BMC mTLS server
	// certificate is installed, valid, and not within its renew-before window.
	ConditionDpuDeviceBMCServerCertificateReady conditions.ConditionType = "BMCServerCertificateReady"
	// ConditionDpuDeviceCATrustBundleReady indicates whether the desired CA trust bundle
	// has been reconciled to the device BMC truststore.
	ConditionDpuDeviceCATrustBundleReady conditions.ConditionType = "CATrustBundleReady"
)

DPUDevice condition types

View Source
const (
	// ReasonBMCServerCertificateRotating indicates a rotation is in progress (CSR generated / CR pending).
	ReasonBMCServerCertificateRotating = "BMCServerCertificateRotating"
	// ReasonBMCServerCertificateRotationFailed indicates the last rotation attempt failed.
	ReasonBMCServerCertificateRotationFailed = "BMCServerCertificateRotationFailed"
	// ReasonBMCServerCertificateUntrusted indicates the BMC presents a server certificate that
	// does not chain to the current DPF CA (or fails identity pinning). The controller re-runs
	// setUpMTLS over basic auth without clearing Initialized.
	ReasonBMCServerCertificateUntrusted = "BMCServerCertificateUntrusted"
	// ReasonBMCIPChanged indicates the BMC IP changed and the controller is re-issuing the
	// IP-bound BMC server certificate before declaring the DPUDevice ready again.
	ReasonBMCIPChanged = "BMCIPChanged"
	// ReasonRedfishClientCertStale indicates the controller's Redfish client certificate does not
	// chain to the current DPF CA. The controller forces cert-manager to reissue it.
	ReasonRedfishClientCertStale = "RedfishClientCertStale"
)

BMCServerCertificateReady condition reasons

View Source
const (
	// ReasonCATrustBundleSynced indicates CA trust bundle is successfully synced to BMC.
	ReasonCATrustBundleSynced = "CATrustBundleSynced"
	// ReasonCATrustBundleSyncing indicates CA trust bundle sync is in progress.
	ReasonCATrustBundleSyncing = "CATrustBundleSyncing"
	// ReasonCredentialsSecretNotFound indicates the referenced secret does not exist.
	ReasonCredentialsSecretNotFound = "CredentialsSecretNotFound"
	// ReasonCredentialsSecretInvalid indicates the secret exists but is malformed.
	ReasonCredentialsSecretInvalid = "CredentialsSecretInvalid"
	// ReasonBMCAuthenticationFailed indicates the password was rejected by the BMC.
	ReasonBMCAuthenticationFailed = "BMCAuthenticationFailed"
	// ReasonModeSwitchNotAllowed indicates an attempt to switch from per-device to shared mode.
	ReasonModeSwitchNotAllowed = "ModeSwitchNotAllowed"
	// ReasonSharedCredentialSecretNotAllowed indicates a per-device BMC credential secret is
	// already referenced by another DPUDevice and must not be shared.
	ReasonSharedCredentialSecretNotAllowed = "SharedCredentialSecretNotAllowed"
	// ReasonCATrustBundleSyncFailed indicates CA trust bundle sync to BMC failed.
	ReasonCATrustBundleSyncFailed = "CATrustBundleSyncFailed"
	// ReasonCATrustBundleUnavailable indicates desired CA trust bundle is unavailable or invalid.
	ReasonCATrustBundleUnavailable = "CATrustBundleUnavailable"
)

BMCCredentialsReady condition reasons

View Source
const (
	// ReasonFactoryResetInProgress indicates ResetToDefaults was accepted by the BMC and DPF is
	// waiting for the BMC to come back.
	ReasonFactoryResetInProgress = "FactoryResetInProgress"
	// ReasonFactoryResetFailed indicates DPF could not submit ResetToDefaults. It is not terminal:
	// the submission is retried with backoff.
	ReasonFactoryResetFailed = "FactoryResetFailed"
	// ReasonFactoryResetCompleted indicates the BMC came back from the factory reset and
	// initialization may continue.
	ReasonFactoryResetCompleted = "FactoryResetCompleted"
	// ReasonFactoryResetSkipped indicates no reset was performed, either because the policy is
	// Never or because the device was already managed by DPF before this feature existed.
	ReasonFactoryResetSkipped = "FactoryResetSkipped"
)

BMCFactoryResetReady condition reasons

View Source
const (
	// DPUNodeKind is the kind of the DPUNode object
	DPUNodeKind = "DPUNode"

	DPUNodeFinalizer = "provisioning.dpu.nvidia.com/dpunode-protection"
)
View Source
const (
	DPUNodeExternalRebootRequiredAnnotation = "provisioning.dpu.nvidia.com/dpunode-external-reboot-required"
	// DPUNodeNameLabel is the label added to the DPU Kubernetes Node that indicates the name of
	// the DPUNode that this DPU belongs to.
	DPUNodeNameLabel = "provisioning.dpu.nvidia.com/dpunode-name"
	// DPUNodeNamespaceLabel is the label added to the DPU Kubernetes Node that indicates
	// the namespace of the DPUNode that this DPU belongs to.
	DPUNodeNamespaceLabel = "provisioning.dpu.nvidia.com/dpunode-namespace"
)
View Source
const (
	// DPUNodeMaintenanceKind is the kind of the DPUNodeMaintenance object
	DPUNodeMaintenanceKind = "DPUNodeMaintenance"
	// DPUNodeMaintenanceListKind is the kind of the DPUNodeMaintenanceList object
	DPUNodeMaintenanceListKind = "DPUNodeMaintenanceList"
	// DPUNodeMaintenanceFinalizer is the finalizer for the DPUNodeMaintenance object
	DPUNodeMaintenanceFinalizer = "provisioning.dpu.nvidia.com/dpunodemaintenance-protection"
)
View Source
const (
	ConditionNodeEffectApplied conditions.ConditionType = "NodeEffectApplied"
	ConditionNodeEffectRemoved conditions.ConditionType = "NodeEffectRemoved"
)

Status related variables

View Source
const (
	// DPUSetKind is the kind of the DPUSet object
	DPUSetKind = "DPUSet"
	// DPUSetListKind is the kind of the DPUSetList object
	DPUSetListKind = "DPUSetList"
)
View Source
const (
	NodeEffectDrain        = "Drain"
	NodeEffectCustomAction = "CustomAction"
	NodeEffectHold         = "Hold"
	NodeEffectTaint        = "Taint"
	NodeEffectCustomLabel  = "CustomLabel"
	NodeEffectNoEffect     = "NoEffect"
	NodeEffectUnknown      = "Unknown"
)
View Source
const (
	// ConditionDPUSetReconciled is the condition type that indicates that the
	// DPUSet is reconciled.
	ConditionDPUSetReconciled conditions.ConditionType = "DPUSetPrereqsReconciled"
	// ConditionDPUFlavorTemplateExists indicates whether the DPUFlavorTemplate referenced by a
	// template-mode DPUSet exists. It is only meaningful for template-mode DPUSets, so it is
	// owned but NOT ensured: it is set on demand (and cleared when the DPUSet reverts to a static
	// DPUFlavor) rather than pre-seeded as Unknown on every DPUSet.
	ConditionDPUFlavorTemplateExists conditions.ConditionType = "DPUFlavorTemplateExists"
)
View Source
const (
	DPUProvisioningGroup  = "provisioning.dpu.nvidia.com"
	DPUProvisioningPrefix = DPUProvisioningGroup + "/"
)
View Source
const (
	// BFBKind is the kind of the BFB object
	BFBKind = "BFB"
)
View Source
const (
	// BlueFieldKind is the kind of the BlueField object
	BlueFieldKind = "BlueFieldSoftware"
)
View Source
const (
	DPUClusterKind = "DPUCluster"
)
View Source
const (
	// DPUDiscoveryKind is the kind of the DPUDiscovery object
	DPUDiscoveryKind = "DPUDiscovery"
)
View Source
const (
	// DPUFlavorKind is the kind of the DPUFlavor object
	DPUFlavorKind = "DPUFlavor"
)
View Source
const (
	// DPUFlavorTemplateKind is the kind of the DPUFlavorTemplate object
	DPUFlavorTemplateKind = "DPUFlavorTemplate"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: DPUProvisioningGroup, Version: "v1alpha1"}

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

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var (
	// BFBConditions are conditions that can be set on a BFB object.
	BFBConditions = []conditions.ConditionType{
		BFBCondInitialized,
		BFBCondDownloaded,
		BFBCondReady,
		BFBCondError,
		BFBCondDeleted,
	}
)
View Source
var BFBGroupVersionKind = GroupVersion.WithKind(BFBKind)

BFBGroupVersionKind is the GroupVersionKind of the BFB object

View Source
var BlueFieldGroupVersionKind = GroupVersion.WithKind(BlueFieldKind)

BlueFieldGroupVersionKind is the GroupVersionKind of the BlueField object

View Source
var (
	// BlueFieldSoftwareConditions are conditions that can be set on a BlueFieldSoftware object.
	BlueFieldSoftwareConditions = []conditions.ConditionType{
		BlueFieldSoftwareCondInitialized,
		BlueFieldSoftwareCondDownloaded,
		BlueFieldSoftwareCondReady,
		BlueFieldSoftwareCondError,
		BlueFieldSoftwareCondDeleted,
	}
)
View Source
var DPUClusterGroupVersionKind = GroupVersion.WithKind(DPUClusterKind)
View Source
var DPUDeviceGroupVersionKind = GroupVersion.WithKind(DPUDeviceKind)

DPUDeviceGroupVersionKind is the GroupVersionKind of the DPUDevice object

View Source
var DPUDiscoveryGroupVersionKind = GroupVersion.WithKind(DPUDiscoveryKind)

DPUDiscoveryGroupVersionKind is the GroupVersionKind of the DPUDiscovery object

View Source
var DPUFlavorGroupVersionKind = GroupVersion.WithKind(DPUFlavorKind)

DPUFlavorGroupVersionKind is the GroupVersionKind of the DPUFlavor object

View Source
var DPUFlavorTemplateGroupVersionKind = GroupVersion.WithKind(DPUFlavorTemplateKind)

DPUFlavorTemplateGroupVersionKind is the GroupVersionKind of the DPUFlavorTemplate object

View Source
var DPUGroupVersionKind = GroupVersion.WithKind(DPUKind)

DPUGroupVersionKind is the GroupVersionKind of the DPU object

View Source
var DPUNodeGroupVersionKind = GroupVersion.WithKind(DPUNodeKind)

DPUNodeGroupVersionKind is the GroupVersionKind of the DPUNode object

View Source
var DPUNodeMaintenanceGroupVersionKind = GroupVersion.WithKind(DPUNodeMaintenanceKind)

DPUNodeMaintenanceGroupVersionKind is the GroupVersionKind of the DPUNodeMaintenance object

View Source
var DPUSetGroupVersionKind = GroupVersion.WithKind(DPUSetKind)

DPUSetGroupVersionKind is the GroupVersionKind of the DPUSet object

Functions

func BlueFieldSoftwareFinalizerForDPUSet

func BlueFieldSoftwareFinalizerForDPUSet(dpuSetName string) string

BlueFieldSoftwareFinalizerForDPUSet returns the protection finalizer a DPUSet places on a BlueFieldSoftware it references.

func GetNodeProblemDetectorConditions

func GetNodeProblemDetectorConditions() []string

GetNodeProblemDetectorConditions returns all expected node-problem-detector condition types that should be present on DPUCluster nodes for health monitoring.

Types

type Action

type Action struct {
	// Add specify taint on the DPU node
	// +optional
	Taint *corev1.Taint `json:"taint,omitempty"`

	// Do not do any action on the DPU node
	// +optional
	NoEffect *bool `json:"noEffect,omitempty"`

	// Add specify labels on the DPU node
	// +optional
	CustomLabel map[string]string `json:"customLabel,omitempty"`

	// Drain the K8s host node by NodeMaintenance operator
	// +optional
	Drain *bool `json:"drain,omitempty"`

	// Name of a config map which contains a pod yaml definition to run which will apply the nodeEffect.
	// The pod is expected to exit when node effect is done, if pod terminates with error then DPU would move to an error phase.
	// The DPUNode's name will be exported as an environment variable, named as DPUNODE_NAME, to each container and init container in the pod.
	// The labels and annotations of DPUNode will be exported in `/etc/dpu/dpf-pod-info/labels` and `/etc/dpu/dpf-pod-info/annotations` accordingly; the volume name `dpf-pod-info` is used to mount the labels and annotations.
	// If any name confliction for env or volume, the controller will not export the name or labels/annotations of DPUNode accordingly.
	// +optional
	CustomAction *string `json:"customAction,omitempty"`

	// Places annotation `wait-for-external-nodeeffect` and waits for it to be removed
	// this is the default behavior in a non K8S environment
	// +optional
	Hold *bool `json:"hold,omitempty"`

	// Force is the flag to indicate if the node effect should be applied immediately.
	// If true, dpfOperatorConfig.multiDPUOperationsSyncWaitTime and dpfOperatorConfig.maxUnavailableDPUNodes will be ignored when applying node effect for DPUNodeMaintenance CR
	// +kubebuilder:default=false
	// +optional
	Force *bool `json:"force,omitempty"`
}

Action defines the mutually exclusive node effect applied during provisioning. Exactly one of taint, noEffect=true, drain=true, non-empty customLabel, non-empty customAction, or hold=true must be set. +kubebuilder:validation:XValidation:rule="(has(self.taint) ? 1 : 0) + ((has(self.noEffect) && self.noEffect) ? 1 : 0) + ((has(self.customLabel) && size(self.customLabel) > 0) ? 1 : 0) + ((has(self.drain) && self.drain) ? 1 : 0) + ((has(self.customAction) && size(self.customAction) > 0) ? 1 : 0) + ((has(self.hold) && self.hold) ? 1 : 0) == 1", message="exactly one of taint, noEffect=true, drain=true, non-empty customLabel, non-empty customAction, hold=true must be set"

func (*Action) DeepCopy

func (in *Action) DeepCopy() *Action

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

func (*Action) DeepCopyInto

func (in *Action) DeepCopyInto(out *Action)

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

type AgentPreInstallStatus

type AgentPreInstallStatus struct {
	// AgentReported is set with a timestamp when dpu-agent detects a new DPU CR is created for reprovisioning.
	// +optional
	AgentReported *metav1.Time `json:"agentReported,omitempty"`

	// Conditions contains pre-install conditions (e.g. NVConfigApplied for reprovisioning).
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

AgentPreInstallStatus is agent status for reprovisioning.

func (*AgentPreInstallStatus) DeepCopy

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

func (*AgentPreInstallStatus) DeepCopyInto

func (in *AgentPreInstallStatus) DeepCopyInto(out *AgentPreInstallStatus)

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

type AgentStatus

type AgentStatus struct {
	// LastStartupTime is the time when the DPU was last started
	// +optional
	LastStartupTime *metav1.Time `json:"lastStartupTime,omitempty"`

	// InitialBootID is the boot ID of the DPU OS during the first boot
	InitialBootID *string `json:"initialBootID,omitempty"`

	// RebootMethod is the type of reset/reboot set by the DPU agent
	// See enum values in RebootMethodType.
	// No default is set intentionally: nil means "check not run or not applicable"
	// (e.g. legacy flow, or agent has not run the check yet);
	// a non-nil value means the check ran and this is the result.
	// +optional
	RebootMethod *RebootMethodType `json:"rebootMethod,omitempty"`

	// LastObservedPendingNVConfig stores the last pending NVConfig parameters seen
	// during reboot-method discovery on this boot. It is used on the next boot to
	// ignore repeated parameters that remained unchanged across boots.
	// +optional
	LastObservedPendingNVConfig *PendingNVConfigState `json:"lastObservedPendingNvconfig,omitempty"`

	// RebootSequenceCount is the length of the current non-NoAction RebootMethod sequence:
	// it increments on each agent run that reports a RebootMethod other than NoAction and
	// resets to 0 when the agent reports NoAction. Used with RebootMethod to bound host reboot loops.
	// +optional
	// +kubebuilder:validation:Minimum=0
	RebootSequenceCount *int32 `json:"rebootSequenceCount,omitempty"`

	// KubeletVersion represents the kubelet version running on the DPU.
	KubeletVersion *string `json:"kubeletVersion,omitempty"`

	// Version is set by an agent that can GET the live DPUFlavor and start a second Run().
	// Empty means an old agent; do not start in-place reconfig for this DPU.
	// +optional
	// +kubebuilder:validation:MinLength=1
	Version string `json:"version,omitempty"`

	// AppliedFlavorResourceVersion is the resourceVersion of the DPUFlavor this Run() GETed.
	// Debug only. It is not used to decide whether to start in-place reconfig.
	// +optional
	// +kubebuilder:validation:MinLength=1
	AppliedFlavorResourceVersion string `json:"appliedFlavorResourceVersion,omitempty"`

	// PreInstall holds agent-reported status for work done before OS install in the reprovisioning process.
	// +optional
	PreInstall *AgentPreInstallStatus `json:"preInstall,omitempty"`
	// TrustBundleHash is the bundle-hash value last applied by the DPU agent.
	// +optional
	TrustBundleHash *string `json:"trustBundleHash,omitempty"`

	// TrustBundleLastUpdateTime is when the trust bundle was last updated by the DPU agent.
	// +optional
	TrustBundleLastUpdateTime *metav1.Time `json:"trustBundleLastUpdateTime,omitempty"`

	// Clock is the DPU clock compared against the host clock, recorded while the DPU agent was
	// acquiring its identity. A DPU whose clock is skewed cannot verify the API server certificate,
	// so it never obtains the identity it would need to report this itself. Set by the host agent,
	// in trusted-host mode only.
	// +optional
	Clock *ClockStatus `json:"clock,omitempty"`

	// Conditions contains the conditions reported from inside the DPU
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// Spiffe contains the SPIFFE heartbeat status reported by the DPU Agent when running in
	// SPIFFE identity mode.
	// +optional
	Spiffe *SpiffeStatus `json:"spiffe,omitempty"`

	// hostOSInit reports terminal host OS init release status from the DPU agent.
	// Unset while the agent is polling or has not reached ReleaseHostOSInit.
	// +optional
	HostOSInit *HostOSInitStatus `json:"hostOSInit,omitempty"`
}

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 BFB

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

	Spec BFBSpec `json:"spec,omitempty"`

	// +kubebuilder:default={phase: Initializing}
	// +optional
	Status BFBStatus `json:"status,omitzero"`
}

BFB is the Schema for the bfbs API

func (*BFB) DeepCopy

func (in *BFB) DeepCopy() *BFB

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

func (*BFB) DeepCopyInto

func (in *BFB) DeepCopyInto(out *BFB)

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

func (*BFB) DeepCopyObject

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

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

func (*BFB) GetConditions

func (b *BFB) GetConditions() []metav1.Condition

GetConditions returns the conditions of the BFB

func (*BFB) SetConditions

func (b *BFB) SetConditions(conditions []metav1.Condition)

SetConditions sets the conditions of the BFB

type BFBList

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

BFBList contains a list of BFB

func (*BFBList) DeepCopy

func (in *BFBList) DeepCopy() *BFBList

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

func (*BFBList) DeepCopyInto

func (in *BFBList) DeepCopyInto(out *BFBList)

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

func (*BFBList) DeepCopyObject

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

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

type BFBPhase

type BFBPhase string

BFBPhase describes current state of BFB CR. Only one of the following state may be specified. Default is Initializing. +kubebuilder:validation:Enum=Initializing;Downloading;Ready;Deleting;Error

const (
	BFBFinalizer = "provisioning.dpu.nvidia.com/bfb-protection"

	// BFB CR is created
	BFBInitializing BFBPhase = "Initializing"
	// Downloading BFB file
	BFBDownloading BFBPhase = "Downloading"
	// Finished downloading BFB file, ready for DPU to use
	BFBReady BFBPhase = "Ready"
	// Delete BFB
	BFBDeleting BFBPhase = "Deleting"
	// Error happens during BFB downloading
	BFBError BFBPhase = "Error"
)

These are the valid statuses of BFB.

type BFBReference

type BFBReference struct {
	// Specifies name of the bfb CR to use for this DPU
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name,omitempty"`
}

BFBReference is a reference to a specific BFB

func (*BFBReference) DeepCopy

func (in *BFBReference) DeepCopy() *BFBReference

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

func (*BFBReference) DeepCopyInto

func (in *BFBReference) DeepCopyInto(out *BFBReference)

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

type BFBSpec

type BFBSpec struct {
	// Specifies the file name where the BFB is downloaded on the volume.
	// +kubebuilder:validation:Pattern=`^[A-Za-z0-9\_\-\.]+\.bfb$`
	// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="Value is immutable"
	// +optional
	FileName *string `json:"fileName,omitempty"`

	// The url of the bfb image to download.
	// +kubebuilder:validation:Pattern=`^(http|https)://.+$`
	// +required
	// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="Value is immutable"
	URL string `json:"url"`

	// Optionally specify BFB component versions. When set, these versions are
	// used directly in status instead of being extracted from the BFB file.
	// If set, all four fields (BSP, DOCA, UEFI, ATF) must be provided.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self.bsp != ” && self.doca != ” && self.uefi != ” && self.atf != ”",message="all four version fields (bsp, doca, uefi, atf) must be provided when versions is set"
	Versions *BFBVersions `json:"versions,omitempty"`
}

BFBSpec defines the content of the BFB +kubebuilder:validation:XValidation:rule="!has(oldSelf.versions) || has(self.versions)",message="versions cannot be removed once set"

func (*BFBSpec) DeepCopy

func (in *BFBSpec) DeepCopy() *BFBSpec

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

func (*BFBSpec) DeepCopyInto

func (in *BFBSpec) DeepCopyInto(out *BFBSpec)

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

type BFBStatus

type BFBStatus struct {
	// Filename is the name of the file where the BFB can be accessed on its volume.
	// This is the same as `.spec.Filename` if set.
	// +optional
	FileName string `json:"fileName,omitempty"`
	// The current state of BFB.
	// +kubebuilder:default=Initializing
	// +optional
	Phase BFBPhase `json:"phase,omitempty"`
	// BFB versions - BSP, DOCA, UEFI and ATF
	// Holds detailed version information for each component within the BFB
	// +optional
	Versions BFBVersions `json:"versions,omitempty"`
	// ObservedGeneration records the Generation observed on the object the last time it was patched.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// Conditions represent the latest available observations of BFB state
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

BFBStatus defines the observed state of BFB

func (*BFBStatus) DeepCopy

func (in *BFBStatus) DeepCopy() *BFBStatus

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

func (*BFBStatus) DeepCopyInto

func (in *BFBStatus) DeepCopyInto(out *BFBStatus)

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

type BFBVersions

type BFBVersions struct {
	// BSP (Board Support Package) version.
	// This field stores the version of the BSP, which provides essential
	// support and drivers for the hardware platform.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="BSP version is immutable"
	BSP string `json:"bsp,omitempty"`

	// DOCA version
	// Specifies the version of NVIDIA's Data Center-on-a-Chip Architecture (DOCA),
	// a platform for developing applications on DPUs
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="DOCA version is immutable"
	DOCA string `json:"doca,omitempty"`

	// UEFI (Unified Extensible Firmware Interface) version.
	// Indicates the UEFI firmware version, which is responsible for booting
	// the operating system and initializing hardware components
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="UEFI version is immutable"
	UEFI string `json:"uefi,omitempty"`

	// ATF (Arm Trusted Firmware) version.
	// Contains the version of ATF, which provides a secure runtime environment
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="ATF version is immutable"
	ATF string `json:"atf,omitempty"`
}

BFBVersions represents the version information for BFB components.

func (*BFBVersions) DeepCopy

func (in *BFBVersions) DeepCopy() *BFBVersions

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

func (*BFBVersions) DeepCopyInto

func (in *BFBVersions) DeepCopyInto(out *BFBVersions)

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

type BMCFactoryResetPolicy

type BMCFactoryResetPolicy string

BMCFactoryResetPolicy controls whether DPF resets a DPU BMC to factory defaults while initializing the DPUDevice. The enum and default are declared on each field that uses it, so they show up in the CRD schema at that field.

const (
	// BMCFactoryResetPolicyOnInitialization resets the BMC to factory defaults once, while the
	// DPUDevice is being initialized.
	BMCFactoryResetPolicyOnInitialization BMCFactoryResetPolicy = "OnInitialization"
	// BMCFactoryResetPolicyNever never resets the BMC.
	BMCFactoryResetPolicyNever BMCFactoryResetPolicy = "Never"
	// BMCFactoryResetPolicyDefault is the policy that applies when the field is left unset. It
	// must stay in step with fields of this type that use API server defaulting.
	BMCFactoryResetPolicyDefault = BMCFactoryResetPolicyOnInitialization
)

func GetBMCFactoryResetPolicy

func GetBMCFactoryResetPolicy(policy BMCFactoryResetPolicy) BMCFactoryResetPolicy

GetBMCFactoryResetPolicy resolves an optional policy field. An object that bypassed API server defaulting — a unit test fixture, anything built in memory — carries no value, and reads here as whatever the CRD default would have written.

type BlueFieldSoftware

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

	Spec BlueFieldSpec `json:"spec,omitempty"`

	// +kubebuilder:default={phase: Initializing}
	// +optional
	Status BlueFieldSoftwareStatus `json:"status,omitzero"`
}

BlueFieldSoftware is the Schema for the bluefieldsoftware API

func (*BlueFieldSoftware) DeepCopy

func (in *BlueFieldSoftware) DeepCopy() *BlueFieldSoftware

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

func (*BlueFieldSoftware) DeepCopyInto

func (in *BlueFieldSoftware) DeepCopyInto(out *BlueFieldSoftware)

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

func (*BlueFieldSoftware) DeepCopyObject

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

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

func (*BlueFieldSoftware) GetConditions

func (b *BlueFieldSoftware) GetConditions() []metav1.Condition

GetConditions returns the conditions of the BlueFieldSoftware

func (*BlueFieldSoftware) SetConditions

func (b *BlueFieldSoftware) SetConditions(conditions []metav1.Condition)

SetConditions sets the conditions of the BlueFieldSoftware

type BlueFieldSoftwareList

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

BlueFieldSoftwareList contains a list of BlueFieldSoftware

func (*BlueFieldSoftwareList) DeepCopy

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

func (*BlueFieldSoftwareList) DeepCopyInto

func (in *BlueFieldSoftwareList) DeepCopyInto(out *BlueFieldSoftwareList)

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

func (*BlueFieldSoftwareList) DeepCopyObject

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

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

type BlueFieldSoftwarePhase

type BlueFieldSoftwarePhase string

BlueFieldSoftwarePhase describes current state of BlueFieldSoftware CR. Only one of the following state may be specified. Default is Initializing. +kubebuilder:validation:Enum=Initializing;Downloading;Extracting;Ready;Deleting;Error

const (
	// BlueFieldSoftwareFinalizerPrefix is the prefix for per-DPUSet protection finalizers
	// placed on a BlueFieldSoftware while that DPUSet references it.
	// Full format: provisioning.dpu.nvidia.com/bfs-dpuset-<dpuSetName>
	BlueFieldSoftwareFinalizerPrefix = DPUProvisioningPrefix + "bfs-dpuset-"

	// BlueFieldSoftwareFinalizer is retained for compatibility with older objects that still
	// carry the shared protection finalizer.
	BlueFieldSoftwareFinalizer = "provisioning.dpu.nvidia.com/bluefieldsoftware-protection"

	// BlueFieldSoftware CR is created
	BlueFieldSoftwareInitializing BlueFieldSoftwarePhase = "Initializing"
	// Downloading BlueFieldSoftware components
	BlueFieldSoftwareDownloading BlueFieldSoftwarePhase = "Downloading"
	// Extracting BlueFieldSoftware components from downloaded bundle
	BlueFieldSoftwareExtracting BlueFieldSoftwarePhase = "Extracting"
	// Finished downloading BlueFieldSoftware components, ready for DPU to use
	BlueFieldSoftwareReady BlueFieldSoftwarePhase = "Ready"
	// Delete BlueFieldSoftware
	BlueFieldSoftwareDeleting BlueFieldSoftwarePhase = "Deleting"
	// Error happens during BlueFieldSoftware downloading
	BlueFieldSoftwareError BlueFieldSoftwarePhase = "Error"
)

These are the valid statuses of BlueFieldSoftware.

type BlueFieldSoftwareReference

type BlueFieldSoftwareReference struct {
	// Specifies name of the BlueFieldSoftware CR to use for this DPU
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name,omitempty"`
}

BlueFieldSoftwareReference is a reference to a specific BlueFieldSoftware

func (*BlueFieldSoftwareReference) DeepCopy

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

func (*BlueFieldSoftwareReference) DeepCopyInto

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

type BlueFieldSoftwareStatus

type BlueFieldSoftwareStatus struct {
	// The current state of BlueFieldSoftware.
	// +kubebuilder:default=Initializing
	// +optional
	Phase BlueFieldSoftwarePhase `json:"phase,omitempty"`
	// Versions tracks the versions of the components
	// +optional
	Versions *BluefieldSoftwareVersions `json:"versions,omitempty"`
	// DownloadedComponents tracks which components have been successfully downloaded
	// +optional
	DownloadedComponents DownloadedComponents `json:"downloadedComponents,omitempty"`
	// ObservedGeneration records the Generation observed on the object the last time it was patched.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// Conditions represent the latest available observations of BlueFieldSoftware state
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

BlueFieldSoftwareStatus defines the observed state of BlueFieldSoftware +kubebuilder:validation:XValidation:rule="!has(oldSelf.versions) || has(self.versions)",message="versions cannot be removed once set"

func (*BlueFieldSoftwareStatus) DeepCopy

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

func (*BlueFieldSoftwareStatus) DeepCopyInto

func (in *BlueFieldSoftwareStatus) DeepCopyInto(out *BlueFieldSoftwareStatus)

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

type BlueFieldSpec

type BlueFieldSpec struct {
	// OS ISO points to the OS ISO used by DPU OS installation flow.
	// +required
	// +kubebuilder:validation:MinLength=1
	OsIso string `json:"osIso"`

	// PldmFwBundle maps each PSID to the PLDM firmware bundle URL used for that DPU model's
	// baseline firmware updates. Each PSID's bundle is a complete PLDM package for that device.
	// Keys are matched case-insensitively against the BMC-reported DPUDevice status PSID.
	// +optional
	// +kubebuilder:validation:MinProperties=1
	// +kubebuilder:validation:XValidation:rule="self.all(k, size(k) > 0 && size(self[k]) > 0)",message="pldmFwBundle entries must have non-empty PSID keys and non-empty bundle URLs"
	PldmFwBundle map[string]string `json:"pldmFwBundle,omitempty"`

	// PlatformPldmFwBundle points to the platform PLDM firmware bundle used for E/W NIC
	// firmware updates.
	// +optional
	// +kubebuilder:validation:MinLength=1
	PlatformPldmFwBundle *string `json:"platformPldmFwBundle,omitempty"`

	// NicFw points to the NIC firmware binary used for E/W NIC firmware updates.
	// Use this when a specific NIC firmware binary is required and is not included in the
	// platform PLDM firmware bundle.
	// In production, prefer using PlatformPldmFwBundle.
	// +optional
	// +kubebuilder:validation:MinLength=1
	NicFw *string `json:"nicFw,omitempty"`
}

BlueFieldSpec defines the desired state of BlueFieldSoftware. +kubebuilder:validation:XValidation:rule="self == oldSelf",message="BlueFieldSpec is immutable" +kubebuilder:validation:XValidation:rule="!(has(self.nicFw) && has(self.platformPldmFwBundle))",message="nicFw and platformPldmFwBundle are mutually exclusive; set only one"

func (*BlueFieldSpec) DeepCopy

func (in *BlueFieldSpec) DeepCopy() *BlueFieldSpec

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

func (*BlueFieldSpec) DeepCopyInto

func (in *BlueFieldSpec) DeepCopyInto(out *BlueFieldSpec)

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

type BluefieldDeviceVersions

type BluefieldDeviceVersions struct {
	// BMCVersion is the DPU BMC firmware version shipped in the bundle.
	// +optional
	// +kubebuilder:validation:MinLength=1
	BMCVersion string `json:"bmcVersion,omitempty"`

	// BMCErotVersion is the BMC ERoT (External Root of Trust) firmware version shipped in the bundle.
	// +optional
	// +kubebuilder:validation:MinLength=1
	BMCErotVersion string `json:"bmcErotVersion,omitempty"`

	// SBIOSVersion is the DPU SBIOS firmware version shipped in the bundle.
	// +optional
	// +kubebuilder:validation:MinLength=1
	SBIOSVersion string `json:"sbiosVersion,omitempty"`

	// BFNicFwVersion is the BlueField NIC firmware version shipped in the bundle.
	// +optional
	// +kubebuilder:validation:MinLength=1
	BFNicFwVersion string `json:"bfNicFwVersion,omitempty"`
}

BluefieldDeviceVersions holds firmware versions extracted from a single PSID's PLDM bundle.

func (*BluefieldDeviceVersions) DeepCopy

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

func (*BluefieldDeviceVersions) DeepCopyInto

func (in *BluefieldDeviceVersions) DeepCopyInto(out *BluefieldDeviceVersions)

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

type BluefieldSoftwareVersions

type BluefieldSoftwareVersions struct {
	// DOCA is the formatted, user-facing DOCA version derived from the OS ISO.
	// +optional
	DOCA string `json:"doca,omitempty"`

	// OSISOVersion is the raw DOCA version for the OS ISO, taken from the ISO filename
	// +optional
	OSISOVersion string `json:"osISOVersion,omitempty"`

	// EWNicFwVersion is the E/W NIC firmware version taken from the platform PLDM bundle.
	// It is not keyed by PSID because a BlueFieldSoftware carries a single platform bundle.
	EWNicFwVersion string `json:"ewNicFwVersion,omitempty"`

	// BluefieldSoftwareVersions maps each PSID to the firmware versions from that device's
	// PLDM bundle. Keys are matched case-insensitively against the BMC-reported DPUDevice PSID.
	// +optional
	BluefieldSoftwareVersions map[string]BluefieldDeviceVersions `json:"bluefieldSoftwareVersions,omitempty"`
}

BluefieldSoftwareVersions defines the versions of various software components for a Bluefield device.

func (*BluefieldSoftwareVersions) DeepCopy

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

func (*BluefieldSoftwareVersions) DeepCopyInto

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

type CertificateStatus

type CertificateStatus struct {
	// NotAfter is the expiry time of the certificate currently installed. It is taken
	// from the issued certificate at rotation time.
	// +optional
	NotAfter *metav1.Time `json:"notAfter,omitempty"`

	// IssuedForBMCIP is the BMC address the installed certificate was issued for. When it differs
	// from status.bmcIp, the identity bound into the certificate no longer matches the address the
	// controller talks to and the certificate must be re-established. It is empty on devices
	// provisioned before this field existed; the controller records it on the next successful
	// rotation or expiry backfill.
	// +optional
	IssuedForBMCIP *string `json:"issuedForBMCIP,omitempty"`

	// LastRotationTime is the time DPF last successfully rotated the certificate.
	// +optional
	LastRotationTime *metav1.Time `json:"lastRotationTime,omitempty"`

	// ObservedManualTrigger records the value of the manual rotation annotation that
	// was last honored, so the same trigger is not processed twice.
	// +optional
	ObservedManualTrigger *string `json:"observedManualTrigger,omitempty"`
}

CertificateStatus reports the rotation state of a DPF-managed certificate.

func (*CertificateStatus) DeepCopy

func (in *CertificateStatus) DeepCopy() *CertificateStatus

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

func (*CertificateStatus) DeepCopyInto

func (in *CertificateStatus) DeepCopyInto(out *CertificateStatus)

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

type ClockStatus

type ClockStatus struct {
	// dpuTime is the DPU clock as reported by the DPU agent.
	DPUTime metav1.Time `json:"dpuTime"`

	// hostTime is the host clock when that report arrived. The host is the trusted side of the
	// comparison, so a difference is attributed to the DPU.
	HostTime metav1.Time `json:"hostTime"`
}

ClockStatus holds two readings of the same instant, taken on the DPU and on the host.

func (*ClockStatus) DeepCopy

func (in *ClockStatus) DeepCopy() *ClockStatus

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

func (*ClockStatus) DeepCopyInto

func (in *ClockStatus) DeepCopyInto(out *ClockStatus)

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

type ClusterEndpointSpec

type ClusterEndpointSpec struct {
	// Keepalived configures the keepalived that will be deployed for the cluster control-plane
	// +optional
	Keepalived *KeepalivedSpec `json:"keepalived,omitempty"`
}

func (*ClusterEndpointSpec) DeepCopy

func (in *ClusterEndpointSpec) DeepCopy() *ClusterEndpointSpec

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

func (*ClusterEndpointSpec) DeepCopyInto

func (in *ClusterEndpointSpec) DeepCopyInto(out *ClusterEndpointSpec)

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

type ClusterPhase

type ClusterPhase string

ClusterPhase describes current state of DPUCluster. Only one of the following state may be specified. Default is Pending. +kubebuilder:validation:Enum="Pending";"Creating";"Ready";"NotReady";"Failed"

const (
	PhasePending  ClusterPhase = "Pending"
	PhaseCreating ClusterPhase = "Creating"
	PhaseReady    ClusterPhase = "Ready"
	PhaseNotReady ClusterPhase = "NotReady"
	PhaseFailed   ClusterPhase = "Failed"
)

type ClusterSpec

type ClusterSpec struct {
	// NodeLabels specifies the labels to be added to the node.
	// +optional
	NodeLabels map[string]string `json:"nodeLabels,omitempty"`
	// NodeAnnotations specifies the annotations to be added to the node.
	// +optional
	NodeAnnotations map[string]string `json:"nodeAnnotations,omitempty"`
	// Selector defines the selector of the DPUClusters the produced DPUs should join
	// +optional
	Selector *metav1.LabelSelector `json:"selector,omitempty"`
}

func (*ClusterSpec) DeepCopy

func (in *ClusterSpec) DeepCopy() *ClusterSpec

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

func (*ClusterSpec) DeepCopyInto

func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec)

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

type ClusterType

type ClusterType string
const (
	StaticCluster ClusterType = "static"
	KamajiCluster ClusterType = "kamaji"
)

type ConditionType

type ConditionType string
const (
	ConditionCreated  ConditionType = "Created"
	ConditionReady    ConditionType = "Ready"
	ConditionUpgraded ConditionType = "Upgraded"
	// ConditionEtcdEncryptionRotationInProgress indicates static key rotation is in progress.
	ConditionEtcdEncryptionRotationInProgress ConditionType = "EtcdEncryptionRotationInProgress"
	// ConditionEtcdEncryptionRotationBlocked indicates static key rotation is blocked.
	ConditionEtcdEncryptionRotationBlocked ConditionType = "EtcdEncryptionRotationBlocked"
)

type ConfigFile

type ConfigFile struct {
	// Type controls when the file content is materialized.
	// cloud-init files use raw inline content and are written during cloud-init.
	// agent-applied files use contentFrom and are written later by dpu-agent.
	// Defaults to cloud-init when omitted.
	// +kubebuilder:default=cloud-init
	// +optional
	Type *ConfigFileType `json:"type,omitempty"`
	// Path is the path of the file to be written.
	// +required
	Path string `json:"path"`
	// Operation is the operation to be performed on the file.
	// +optional
	Operation DPUFlavorFileOp `json:"operation,omitempty"`
	// Raw is the inline file content.
	// Supported only when type is cloud-init. When type is omitted, type defaults
	// to cloud-init and raw must be set.
	// +optional
	Raw *string `json:"raw,omitempty"`
	// ContentFrom references external content for the file.
	// Supported only when type is agent-applied.
	// +optional
	ContentFrom *ConfigFileContentSource `json:"contentFrom,omitempty"`
	// Permissions are the permissions to be set on the file.
	// +optional
	Permissions string `json:"permissions,omitempty"`
}

ConfigFile describes a file materialized from inline raw content or external contentFrom. +kubebuilder:validation:XValidation:rule="has(self.raw) != has(self.contentFrom)",message="exactly one of raw or contentFrom must be specified" +kubebuilder:validation:XValidation:rule="!has(self.contentFrom) || has(self.contentFrom.configMapKeyRef)",message="contentFrom.configMapKeyRef must be specified" +kubebuilder:validation:XValidation:rule="!has(self.type) || self.type != 'cloud-init' || has(self.raw)",message="type cloud-init supports raw only" +kubebuilder:validation:XValidation:rule="!has(self.type) || self.type != 'agent-applied' || has(self.contentFrom)",message="type agent-applied supports contentFrom only" +kubebuilder:validation:XValidation:rule="has(self.type) || has(self.raw)",message="type defaults to cloud-init, which requires raw content"

func (*ConfigFile) DeepCopy

func (in *ConfigFile) DeepCopy() *ConfigFile

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

func (*ConfigFile) DeepCopyInto

func (in *ConfigFile) DeepCopyInto(out *ConfigFile)

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

type ConfigFileContentSource

type ConfigFileContentSource struct {
	// ConfigMapKeyRef selects a key from a ConfigMap in the DPU namespace.
	// +optional
	ConfigMapKeyRef *corev1.ConfigMapKeySelector `json:"configMapKeyRef,omitempty"`
}

func (*ConfigFileContentSource) DeepCopy

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

func (*ConfigFileContentSource) DeepCopyInto

func (in *ConfigFileContentSource) DeepCopyInto(out *ConfigFileContentSource)

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

type ConfigFileType

type ConfigFileType string

ConfigFileType defines when a config file is materialized. +kubebuilder:validation:Enum=cloud-init;agent-applied

const (
	ConfigFileTypeCloudInit    ConfigFileType = "cloud-init"
	ConfigFileTypeAgentApplied ConfigFileType = "agent-applied"
)

type ContainerdConfig

type ContainerdConfig struct {
	// RegistryEndpoint is the endpoint of the container registry.
	// +optional
	RegistryEndpoint string `json:"registryEndpoint,omitempty"`
}

func (*ContainerdConfig) DeepCopy

func (in *ContainerdConfig) DeepCopy() *ContainerdConfig

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

func (*ContainerdConfig) DeepCopyInto

func (in *ContainerdConfig) DeepCopyInto(out *ContainerdConfig)

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

type DMSAddress

type DMSAddress struct {
	// IP address in IPv4 format.
	// +kubebuilder:validation:Format=ipv4
	IP string `json:"ip"`

	// Port number.
	// +kubebuilder:validation:Minimum=1
	Port uint16 `json:"port"`
}

DMSAddress represents the IP and Port configuration for DMS.

func (*DMSAddress) DeepCopy

func (in *DMSAddress) DeepCopy() *DMSAddress

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

func (*DMSAddress) DeepCopyInto

func (in *DMSAddress) DeepCopyInto(out *DMSAddress)

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

func (*DMSAddress) String

func (d *DMSAddress) String() string

type DPU

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

	Spec DPUSpec `json:"spec,omitempty"`

	// +kubebuilder:default={phase: Initializing}
	// +optional
	Status DPUStatus `json:"status,omitzero"`
}

DPU is the Schema for the dpus API

func (*DPU) DeepCopy

func (in *DPU) DeepCopy() *DPU

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

func (*DPU) DeepCopyInto

func (in *DPU) DeepCopyInto(out *DPU)

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

func (*DPU) DeepCopyObject

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

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

func (*DPU) GetConditions

func (s *DPU) GetConditions() []metav1.Condition

GetConditions returns the conditions of the DPUService.

func (*DPU) SetConditions

func (s *DPU) SetConditions(conditions []metav1.Condition)

SetConditions sets the conditions of the DPUService.

type DPUCluster

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

	// +required
	Spec DPUClusterSpec `json:"spec,omitempty"`

	// +kubebuilder:default={phase: Pending}
	// +optional
	Status DPUClusterStatus `json:"status,omitzero"`
}

DPUCluster is the Schema for the dpuclusters API

func (*DPUCluster) DeepCopy

func (in *DPUCluster) DeepCopy() *DPUCluster

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

func (*DPUCluster) DeepCopyInto

func (in *DPUCluster) DeepCopyInto(out *DPUCluster)

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

func (*DPUCluster) DeepCopyObject

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

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

func (*DPUCluster) GetConditions

func (s *DPUCluster) GetConditions() []metav1.Condition

GetConditions returns the conditions of the DPUService.

func (*DPUCluster) SetConditions

func (s *DPUCluster) SetConditions(conditions []metav1.Condition)

SetConditions sets the conditions of the DPUService.

type DPUClusterEtcdEncryptionAtRestStatus

type DPUClusterEtcdEncryptionAtRestStatus struct {
	// Provider is the committed encryption-at-rest provider for the cluster.
	// +kubebuilder:validation:Enum=staticKey;vaultKMS
	// +required
	Provider string `json:"provider,omitempty"`

	// StaticKey exposes staticKey-specific observed state.
	// +optional
	StaticKey *DPUClusterStaticKeyEncryptionStatus `json:"staticKey,omitempty"`
}

DPUClusterEtcdEncryptionAtRestStatus defines the observed encryption-at-rest state for a DPUCluster.

func (*DPUClusterEtcdEncryptionAtRestStatus) DeepCopy

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

func (*DPUClusterEtcdEncryptionAtRestStatus) DeepCopyInto

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

type DPUClusterList

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

DPUClusterList contains a list of DPUCluster

func (*DPUClusterList) DeepCopy

func (in *DPUClusterList) DeepCopy() *DPUClusterList

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

func (*DPUClusterList) DeepCopyInto

func (in *DPUClusterList) DeepCopyInto(out *DPUClusterList)

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

func (*DPUClusterList) DeepCopyObject

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

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

type DPUClusterSpec

type DPUClusterSpec struct {
	// Type of the cluster with few supported values
	// static - existing cluster that is deployed by user. For DPUCluster of this type, the kubeconfig field must be set.
	// kamaji - DPF managed cluster. The kamaji-cluster-manager will create a DPU cluster on behalf of this CR.
	// $(others) - any string defined by ISVs, such type names must start with a prefix.
	// +kubebuilder:validation:Pattern="kamaji|static|[^/]+/.*"
	// +required
	Type string `json:"type"`

	// MaxNodes is the max amount of node in the cluster
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=3000
	// +kubebuilder:default=1000
	// +optional
	MaxNodes int `json:"maxNodes,omitempty"`

	// Kubeconfig is the secret that contains the admin kubeconfig
	// +kubebuilder:validation:XValidation:rule="oldSelf==\"\"||self==oldSelf",message="kubeconfig is immutable"
	// +optional
	Kubeconfig string `json:"kubeconfig,omitempty"`

	// ClusterEndpoint contains configurations of the cluster entry point
	// +optional
	ClusterEndpoint *ClusterEndpointSpec `json:"clusterEndpoint,omitempty"`
}

DPUClusterSpec defines the desired state of DPUCluster

func (*DPUClusterSpec) DeepCopy

func (in *DPUClusterSpec) DeepCopy() *DPUClusterSpec

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

func (*DPUClusterSpec) DeepCopyInto

func (in *DPUClusterSpec) DeepCopyInto(out *DPUClusterSpec)

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

type DPUClusterStaticKeyEncryptionStatus

type DPUClusterStaticKeyEncryptionStatus struct {
	// ActiveKeyRef is the source Secret observed for the currently active key.
	// This field is informational and must not be used by controllers to select desired key material.
	// +optional
	ActiveKeyRef *ObservedSecretKeyRef `json:"activeKeyRef,omitempty"`
}

DPUClusterStaticKeyEncryptionStatus defines observed staticKey encryption-at-rest state.

func (*DPUClusterStaticKeyEncryptionStatus) DeepCopy

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

func (*DPUClusterStaticKeyEncryptionStatus) DeepCopyInto

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

type DPUClusterStatus

type DPUClusterStatus struct {
	// +kubebuilder:default="Pending"
	// +optional
	Phase ClusterPhase `json:"phase,omitempty"`

	// Version is the K8s control-plane version of the cluster
	// +optional
	Version string `json:"version"`

	// NodesCount is the number of DPUs assigned to the cluster
	// +kubebuilder:validation:Minimum=0
	// +optional
	NodesCount int `json:"nodesCount"`

	// EtcdEncryptionAtRest exposes the observed encryption-at-rest state for the cluster.
	// +optional
	EtcdEncryptionAtRest *DPUClusterEtcdEncryptionAtRestStatus `json:"etcdEncryptionAtRest,omitempty"`

	// +optional
	Conditions []metav1.Condition `json:"conditions"`
}

DPUClusterStatus defines the observed state of DPUCluster

func (*DPUClusterStatus) DeepCopy

func (in *DPUClusterStatus) DeepCopy() *DPUClusterStatus

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

func (*DPUClusterStatus) DeepCopyInto

func (in *DPUClusterStatus) DeepCopyInto(out *DPUClusterStatus)

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

type DPUConditionMessage

type DPUConditionMessage string
const (
	// DPUCondMessageModeUpdate is the message for updating the DPU mode in gNOI interface
	DPUCondMessageModeUpdate DPUConditionMessage = "DPU switches from NIC mode to DPU mode"
	// DPUCondMessageRebootFinishedForModeUpdate is the message for rebooting the DPU for mode update
	DPUCondMessageRebootFinishedForModeUpdate DPUConditionMessage = "Reboot finished for DPU mode update"
)

type DPUConditionType

type DPUConditionType string
const (
	DPUCondInitialized            DPUConditionType = "Initialized"
	DPUCondPending                DPUConditionType = "Pending"
	DPUCondBFBReady               DPUConditionType = "BFBReady"
	DPUCondBlueFieldSoftwareReady DPUConditionType = "BlueFieldSoftwareReady"
	DPUCondDPUFlavorExists        DPUConditionType = "DPUFlavorExists"
	DPUCondDPUFlavorRendered      DPUConditionType = "DPUFlavorRendered"
	DPUCondNodeEffectReady        DPUConditionType = "NodeEffectReady"
	DPUCondBFBPrepared            DPUConditionType = "BFBPrepared"
	DPUCondInterfaceInitialized   DPUConditionType = "InterfaceInitialized"
	DPUCondFWConfigured           DPUConditionType = "FWConfigured"
	DPUCondFWArmRestarted         DPUConditionType = "FWArmRestarted"
	DPUCondFwBundleSubmitted      DPUConditionType = "FwBundleSubmitted"
	DPUCondFwBundleUpdated        DPUConditionType = "FwBundleUpdated"
	DPUCondFwBundleActivated      DPUConditionType = "FwBundleActivated"
	DPUCondFwBundleArmShutdown    DPUConditionType = "FwBundleArmShutdown"
	DPUCondBFBTransferred         DPUConditionType = "BFBTransferred"
	DPUCondIsoTransferred         DPUConditionType = "IsoTransferred"
	DPUCondConfigTransferred      DPUConditionType = "ConfigTransferred"
	DPUCondVirtualMediaInserted   DPUConditionType = "VirtualMediaInserted"
	DPUCondChangeBootTarget       DPUConditionType = "ChangeBootTarget"
	DPUCondChassisReset           DPUConditionType = "ChassisReset"
	DPUCondOSInstalled            DPUConditionType = "OSInstalled"
	DPUCondRebooted               DPUConditionType = "Rebooted"
	DPUCondHostNetworkReady       DPUConditionType = "HostNetworkReady"
	DPUCondDPUClusterReady        DPUConditionType = "DPUClusterReady"
	DPUCondDPUConfig              DPUConditionType = "DPUConfig"
	DPUCondServiceReadiness       DPUConditionType = "ServiceReadiness"
	DPUCondNodeEffectRemoved      DPUConditionType = "NodeEffectRemoved"
	DPUCondDeleting               DPUConditionType = "Deleting"
	DPUCondReady                  DPUConditionType = "Ready"
	DPUCondError                  DPUConditionType = "Error"
	DPUCondArmForceRestarted      DPUConditionType = "ArmForceRestarted"
	DPUCondReconfiguring          DPUConditionType = "DPUReconfiguring"
)

func (DPUConditionType) String

func (ct DPUConditionType) String() string

type DPUDevice

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

	Spec   DPUDeviceSpec   `json:"spec,omitempty"`
	Status DPUDeviceStatus `json:"status,omitempty"`
}

DPUDevice is the Schema for the dpudevices API

func (*DPUDevice) BMCAddress

func (d *DPUDevice) BMCAddress() string

func (*DPUDevice) DeepCopy

func (in *DPUDevice) DeepCopy() *DPUDevice

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

func (*DPUDevice) DeepCopyInto

func (in *DPUDevice) DeepCopyInto(out *DPUDevice)

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

func (*DPUDevice) DeepCopyObject

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

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

func (*DPUDevice) GetConditions

func (d *DPUDevice) GetConditions() []metav1.Condition

GetConditions returns the conditions of the DPUDevice.

func (*DPUDevice) SetConditions

func (d *DPUDevice) SetConditions(conditions []metav1.Condition)

SetConditions sets the conditions of the DPUDevice.

type DPUDeviceClusterSpec

type DPUDeviceClusterSpec struct {
	// NodeLabels specifies labels to be added to the DPU cluster node for this device.
	// +optional
	NodeLabels map[string]string `json:"nodeLabels,omitempty"`
	// NodeAnnotations specifies annotations to be added to the DPU cluster node for this device.
	// +optional
	NodeAnnotations map[string]string `json:"nodeAnnotations,omitempty"`
}

DPUDeviceClusterSpec holds node labels and annotations propagated from DPUDevice to the DPU and cluster node.

func (*DPUDeviceClusterSpec) DeepCopy

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

func (*DPUDeviceClusterSpec) DeepCopyInto

func (in *DPUDeviceClusterSpec) DeepCopyInto(out *DPUDeviceClusterSpec)

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

type DPUDeviceList

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

DPUDeviceList contains a list of DPUDevices

func (*DPUDeviceList) DeepCopy

func (in *DPUDeviceList) DeepCopy() *DPUDeviceList

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

func (*DPUDeviceList) DeepCopyInto

func (in *DPUDeviceList) DeepCopyInto(out *DPUDeviceList)

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

func (*DPUDeviceList) DeepCopyObject

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

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

type DPUDeviceSpec

type DPUDeviceSpec struct {
	// PSID is the Product Serial ID of the device.
	// It's used to track the device's lifecycle and for inventory management.
	// This value is immutable and should not be changed once set.
	// Example: "MT_0001234567", "MT25066004C7"
	//
	// Deprecated: This field is deprecated and will be removed in a future version. Use status.psid instead.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="PSID is immutable"
	// +optional
	PSID *string `json:"psid,omitempty"`

	// SerialNumber is the serial number of the device.
	// It's used to track the device's lifecycle and for inventory management.
	// This value is immutable and should not be changed once set.
	// Example: "MT_0001234567", "MT25066004C7"
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Serial Number is immutable"
	// +kubebuilder:validation:MinLength=1
	// +required
	SerialNumber string `json:"serialNumber,omitempty"`

	// OPN is the Ordering Part Number of the device.
	// It's used to track the device's compatibility with different software versions.
	// This value is immutable and should not be changed once set.
	// Example: "900-9D3B4-00SV-EA0"
	//
	// Deprecated: This field is deprecated and will be removed in a future version. Use status.opn instead.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="OPN is immutable"
	// +optional
	OPN *string `json:"opn,omitempty"`

	// BMCIP is the IP address of the BMC (Base Management Controller) on the device.
	// This is used for remote management and monitoring of the device.
	// When this value changes, the controller re-establishes secure communication with the BMC
	// and re-issues the IP-bound BMC server certificate without reprovisioning the DPU.
	// Example: "10.1.2.3"
	// +kubebuilder:validation:Format=ipv4
	// +optional
	BMCIP *string `json:"bmcIp,omitempty"`

	// BMCPort is the port number of the BMC (Base Management Controller) on the device.
	// This is used for remote management and monitoring of the device.
	// This value is immutable and should not be changed once set.
	// Example: 443
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="BMCPort is immutable"
	// +kubebuilder:default=443
	// +optional
	BMCPort *uint32 `json:"bmcPort,omitempty"`

	// NumberOfPFs is the number of PFs on the device.
	// This value is immutable and should not be changed once set.
	// Example: 1
	// +kubebuilder:default:=1
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Number of PFs is immutable"
	// +optional
	NumberOfPFs *int `json:"numberOfPFs,omitempty"`

	// NICDeviceCount is the expected number of NIC devices used by dpu-agent provisioning.
	// Valid range is 1 to 8. When unspecified, it defaults to 8.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=8
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="NICDeviceCount is immutable"
	// +optional
	NICDeviceCount *int `json:"nicDeviceCount,omitempty"`

	// PF0Name is the name of the PF0 on the device.
	// This value is immutable and should not be changed once set.
	// Example: "eth0"
	//
	// Deprecated: This field is deprecated and will be removed in a future version. Use status.pf0Name instead.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="PF0 Name is immutable"
	// +optional
	PF0Name *string `json:"pf0Name,omitempty"`

	// BMCCredentialSecretName is the name of a Secret in the same namespace containing
	// per-device BMC credentials. The secret must contain a "password" key with the BMC credential value.
	// If specified, this password takes precedence over the shared bmc-shared-password secret.
	// +optional
	BMCCredentialSecretName *string `json:"bmcCredentialSecretName,omitempty"`

	// BMCFactoryResetPolicy controls whether DPF resets this DPU BMC to factory defaults
	// while initializing the DPUDevice. The reset clears all BMC configuration, including
	// network settings, so the BMC must obtain its address via DHCP.
	// - OnInitialization (default): reset the BMC once, while the DPUDevice is initialized.
	// - Never: never reset.
	// The value is honored only until the factory reset step finishes; changing it
	// after BMCFactoryResetReady is True has no effect.
	// +kubebuilder:validation:Enum=OnInitialization;Never
	// +kubebuilder:default=OnInitialization
	// +optional
	BMCFactoryResetPolicy BMCFactoryResetPolicy `json:"bmcFactoryResetPolicy,omitempty"`

	// Specifies details on the K8S cluster to join
	// +optional
	Cluster *DPUDeviceClusterSpec `json:"cluster,omitempty"`

	// Values contains free-form per-device values used to render a DPUFlavorTemplate
	// into a concrete generated DPUFlavor for this device.
	// +optional
	Values *runtime.RawExtension `json:"values,omitempty"`
}

DPUDeviceSpec defines the content of DPUDevice

func (*DPUDeviceSpec) DeepCopy

func (in *DPUDeviceSpec) DeepCopy() *DPUDeviceSpec

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

func (*DPUDeviceSpec) DeepCopyInto

func (in *DPUDeviceSpec) DeepCopyInto(out *DPUDeviceSpec)

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

type DPUDeviceStatus

type DPUDeviceStatus struct {
	// PSID is the Product Serial ID of the device.
	// It's used to track the device's lifecycle and for inventory management.
	// This value is discovered and should not be changed once set.
	// Example: "MT_0001234567", "MT25066004C7"
	// +optional
	PSID *string `json:"psid,omitempty"`

	// SerialNumber is the serial number of the device.
	// It's used to track the device's lifecycle and for inventory management.
	// This value is discovered and should not be changed once set.
	// Example: "MT_0001234567", "MT25066004C7"
	// +optional
	SerialNumber *string `json:"serialNumber,omitempty"`

	// OPN is the Ordering Part Number of the device.
	// It's used to track the device's compatibility with different software versions.
	// This value is discovered and should not be changed once set.
	// Example: "900-9D3B4-00SV-EA0"
	// +optional
	OPN *string `json:"opn,omitempty"`

	// BMCIP is the IP address of the BMC (Base Management Controller) on the device.
	// This is used for remote management and monitoring of the device.
	// The controller synchronizes this value from spec.bmcIp after reconciling an address change.
	// Example: "10.1.2.3"
	// +kubebuilder:validation:Format=ipv4
	// +optional
	BMCIP *string `json:"bmcIp,omitempty"`

	// BMCPort is the port number of the BMC (Base Management Controller) on the device.
	// This is used for remote management and monitoring of the device.
	// This value is immutable and should not be changed once set.
	// Example: 443
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=443
	// +optional
	BMCPort *uint32 `json:"bmcPort,omitempty"`

	// PCIAddress is the PCI address of the device in the host system.
	// Example: "0000-03-00", "03-00"
	// +optional
	PCIAddress *string `json:"pciAddress,omitempty"`

	// PF0Name is the name of the PF0 on the device.
	// Example: "eth0"
	// +optional
	PF0Name *string `json:"pf0Name,omitempty"`

	// PF0MAC is the MAC address of the PF0 on the device.
	// Example: "00:00:00:00:00:00"
	// +kubebuilder:validation:Pattern=`^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$`
	// +optional
	PF0MAC *string `json:"pf0Mac,omitempty"`

	// DPUType is the type of the DPU.
	// +kubebuilder:validation:Enum=Unknown;BlueField2;BlueField3;BlueField4
	// +kubebuilder:default=Unknown
	// +optional
	DPUType DPUType `json:"dpuType,omitempty"`

	// DPUMode is the mode of the DPU.
	// +kubebuilder:default=dpu
	// +optional
	DPUMode DpuModeType `json:"dpuMode,omitempty"`

	// SecureBoot indicates the current UEFI Secure Boot state.
	// +optional
	SecureBoot *SecureBootStatus `json:"secureBoot,omitempty"`

	// BMCCredentialSecretName is the name of the Secret last used successfully for BMC authentication.
	// +optional
	BMCCredentialSecretName *string `json:"bmcCredentialSecretName,omitempty"`

	// BMCFactoryResetRequestTime is when DPF submitted ResetToDefaults to the BMC.
	// It is nil until the request has been accepted, and once set it is never cleared:
	// it is what keeps the BMC from being reset again for this DPUDevice.
	// +optional
	BMCFactoryResetRequestTime *metav1.Time `json:"bmcFactoryResetRequestTime,omitempty"`

	// BMCServerCertificate reports the BMC mTLS server certificate rotation state.
	// +optional
	BMCServerCertificate *CertificateStatus `json:"bmcServerCertificate,omitempty"`
	// CATrustBundle stores trust bundle reconciliation progress for the DPUDevice.
	// +optional
	CATrustBundle *TrustBundleStatus `json:"caTrustBundle,omitempty"`

	// +optional
	Conditions []metav1.Condition `json:"conditions"`
}

func (*DPUDeviceStatus) DeepCopy

func (in *DPUDeviceStatus) DeepCopy() *DPUDeviceStatus

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

func (*DPUDeviceStatus) DeepCopyInto

func (in *DPUDeviceStatus) DeepCopyInto(out *DPUDeviceStatus)

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

type DPUDiscovery

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

	Spec   DPUDiscoverySpec   `json:"spec,omitempty"`
	Status DPUDiscoveryStatus `json:"status,omitempty"`
}

func (*DPUDiscovery) DeepCopy

func (in *DPUDiscovery) DeepCopy() *DPUDiscovery

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

func (*DPUDiscovery) DeepCopyInto

func (in *DPUDiscovery) DeepCopyInto(out *DPUDiscovery)

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

func (*DPUDiscovery) DeepCopyObject

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

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

type DPUDiscoveryList

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

DPUDiscoveryList contains a list of DPUDiscovery types

func (*DPUDiscoveryList) DeepCopy

func (in *DPUDiscoveryList) DeepCopy() *DPUDiscoveryList

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

func (*DPUDiscoveryList) DeepCopyInto

func (in *DPUDiscoveryList) DeepCopyInto(out *DPUDiscoveryList)

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

func (*DPUDiscoveryList) DeepCopyObject

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

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

type DPUDiscoverySpec

type DPUDiscoverySpec struct {
	// IPRange defines the range of IP addresses to scan
	IPRangeSpec IPRangeValidationSpec `json:"ipRangeSpec"`
	// ScanInterval defines how often to perform the scan
	// +kubebuilder:default="1h"
	ScanInterval metav1.Duration `json:"scanInterval,omitempty"`
	// Workers defines the number of workers to use for the scan (default 1 worker for each 255 IPs in the range)
	// +optional
	Workers *int `json:"workers,omitempty"`
}

DPUDiscoverySpec defines the desired state of DPUDiscovery

func (*DPUDiscoverySpec) DeepCopy

func (in *DPUDiscoverySpec) DeepCopy() *DPUDiscoverySpec

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

func (*DPUDiscoverySpec) DeepCopyInto

func (in *DPUDiscoverySpec) DeepCopyInto(out *DPUDiscoverySpec)

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

type DPUDiscoveryStatus

type DPUDiscoveryStatus struct {
	// ObservedGeneration is the generation of the spec that was last applied by a successful scan.
	// When spec (e.g. IP range) changes, reconciliation runs a scan immediately instead of waiting for the next interval.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// LastScanTime is the timestamp of the last successful scan
	// +optional
	LastScanTime *metav1.Time `json:"lastScanTime,omitempty"`
	// FoundDPUs is the list of discovered DPU BMC IPs
	// +optional
	FoundDPUs int `json:"foundDPUs,omitempty"`
}

DPUDiscoveryStatus defines the observed state of DPUDiscovery

func (*DPUDiscoveryStatus) DeepCopy

func (in *DPUDiscoveryStatus) DeepCopy() *DPUDiscoveryStatus

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

func (*DPUDiscoveryStatus) DeepCopyInto

func (in *DPUDiscoveryStatus) DeepCopyInto(out *DPUDiscoveryStatus)

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

type DPUFLavorSysctl

type DPUFLavorSysctl struct {
	// Parameters are the sysctl parameters to be set.
	// +optional
	Parameters []string `json:"parameters,omitempty"`
}

func (*DPUFLavorSysctl) DeepCopy

func (in *DPUFLavorSysctl) DeepCopy() *DPUFLavorSysctl

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

func (*DPUFLavorSysctl) DeepCopyInto

func (in *DPUFLavorSysctl) DeepCopyInto(out *DPUFLavorSysctl)

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

type DPUFlavor

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

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

DPUFlavor is the Schema for the dpuflavors API

func (*DPUFlavor) ConfiguredGate

func (f *DPUFlavor) ConfiguredGate() ServiceReadinessGate

ConfiguredGate returns the gate set on the flavor, or "" when it does not set one. The empty string is outside the enum, so it is unambiguously "unset". Callers decide what unset means for them: the Service Readiness phase does not wait, while ReleaseGate substitutes a default.

func (*DPUFlavor) DMAEnabled

func (f *DPUFlavor) DMAEnabled() bool

DMAEnabled reports whether spec.dma.enabled is set.

func (*DPUFlavor) DeepCopy

func (in *DPUFlavor) DeepCopy() *DPUFlavor

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

func (*DPUFlavor) DeepCopyInto

func (in *DPUFlavor) DeepCopyInto(out *DPUFlavor)

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

func (*DPUFlavor) DeepCopyObject

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

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

func (*DPUFlavor) ReleaseGate

func (f *DPUFlavor) ReleaseGate() ServiceReadinessGate

ReleaseGate is the condition the DPU agent waits for before releasing a host OS init hold. It falls back to DPUServiceCriticalPodsReady when gate is unset, because a hold with no gate would release immediately and defeat the purpose of holding the host at all. This fallback is specific to releasing a hold; do not reuse it to decide whether a phase should block.

type DPUFlavorDMA

type DPUFlavorDMA struct {
	// Enabled creates the SNAP DMA SF on BlueField-4 socket-direct systems.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

DPUFlavorDMA configures the SNAP DMA SF. The agent picks the ECPF; sfnum is 8000 and MAC is derived.

func (*DPUFlavorDMA) DeepCopy

func (in *DPUFlavorDMA) DeepCopy() *DPUFlavorDMA

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

func (*DPUFlavorDMA) DeepCopyInto

func (in *DPUFlavorDMA) DeepCopyInto(out *DPUFlavorDMA)

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

type DPUFlavorFileOp

type DPUFlavorFileOp string

DPUFlavorFileOp defines the operation to be performed on the file +kubebuilder:validation:Enum=override;append

const (
	FileOverride DPUFlavorFileOp = "override"
	FileAppend   DPUFlavorFileOp = "append"
)

type DPUFlavorGrub

type DPUFlavorGrub struct {
	// KernelParameters are the kernel parameters to be set in the grub configuration.
	// +optional
	KernelParameters []string `json:"kernelParameters,omitempty"`
}

func (*DPUFlavorGrub) DeepCopy

func (in *DPUFlavorGrub) DeepCopy() *DPUFlavorGrub

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

func (*DPUFlavorGrub) DeepCopyInto

func (in *DPUFlavorGrub) DeepCopyInto(out *DPUFlavorGrub)

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

type DPUFlavorList

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

DPUFlavorList contains a list of DPUFlavor

func (*DPUFlavorList) DeepCopy

func (in *DPUFlavorList) DeepCopy() *DPUFlavorList

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

func (*DPUFlavorList) DeepCopyInto

func (in *DPUFlavorList) DeepCopyInto(out *DPUFlavorList)

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

func (*DPUFlavorList) DeepCopyObject

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

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

type DPUFlavorOVS

type DPUFlavorOVS struct {
	// RawConfigScript is the raw configuration script for OVS.
	// The DPU agent runs this script once per boot. A restart of the agent in the
	// same boot does not re-run it; a reboot or power cycle does.
	// +optional
	RawConfigScript string `json:"rawConfigScript,omitempty"`
}

func (*DPUFlavorOVS) DeepCopy

func (in *DPUFlavorOVS) DeepCopy() *DPUFlavorOVS

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

func (*DPUFlavorOVS) DeepCopyInto

func (in *DPUFlavorOVS) DeepCopyInto(out *DPUFlavorOVS)

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

type DPUFlavorSpec

type DPUFlavorSpec struct {
	// Grub contains the grub configuration for the DPUFlavor.
	// +optional
	Grub DPUFlavorGrub `json:"grub,omitempty"`
	// Sysctl contains the sysctl configuration for the DPUFlavor.
	// +optional
	Sysctl DPUFLavorSysctl `json:"sysctl,omitempty"`
	// NVConfig contains the device-specific configuration (firmware settings, device parameters).
	// Each entry specifies a device (wildcard '*', or port identifiers 'p0'/'P0'/'p1'/'P1') and its parameters.
	// If device is '*' or unspecified (defaults to '*'), it applies to all devices and must be the only entry.
	// Each device (including unspecified as '*') must be unique across all nvconfig entries (case-insensitive).
	// Validation enforces: device enum values, parameter format (KEY=VALUE), case-insensitive uniqueness, and size limits.
	// +kubebuilder:validation:MaxItems=3
	// +kubebuilder:validation:XValidation:rule="size(self) == 0 || !self.exists(x, has(x.device) && x.device == '*') || size(self) == 1",message="when device is '*', it must be the only nvconfig entry"
	// +kubebuilder:validation:XValidation:rule="size(self) == 0 || !self.exists(x, !has(x.device)) || size(self) == 1",message="when device is unspecified (defaults to '*'), it must be the only nvconfig entry"
	// +kubebuilder:validation:XValidation:rule="self.all(p1, self.exists_one(p2, (has(p1.device) ? p1.device.lowerAscii() : '*') == (has(p2.device) ? p2.device.lowerAscii() : '*')))",message="each nvconfig.device (including unspecified as '*') must be unique (case-insensitive)"
	// +listType=atomic
	// +optional
	NVConfig []NVConfig `json:"nvconfig,omitempty"`

	// ScalableFunctions is the list of SF groups to create on the DPU, or on the host when
	// hostDevice is set. Count is per selected device. Over-subscribe can trigger failures at
	// create time. Editing this field reprovisions the DPU. For backward compatibility, when
	// both this SF list and VF list are empty, SF counts are still derived from PF_TOTAL_SF
	// (removed in a future release).
	// +kubebuilder:validation:MaxItems=16
	// +listType=atomic
	// +optional
	ScalableFunctions []ScalableFunction `json:"scalableFunctions,omitempty"`

	// VirtualFunctions is the list of VF groups to create. Count is per selected
	// device. Groups ending up on the same device sum to a single `sriov_numvfs` and then
	// list order assigns contiguous index ranges. Over-subscribe can trigger failures at
	// create time. Editing this field reprovisions the DPU.
	// +kubebuilder:validation:MaxItems=16
	// +listType=atomic
	// +optional
	VirtualFunctions []VirtualFunction `json:"virtualFunctions,omitempty"`

	// DMA configures the SNAP DMA SF. The agent picks the ECPF; sfnum is 8000 and MAC is derived.
	// Ignored except on BlueField-4.
	// +optional
	DMA *DPUFlavorDMA `json:"dma,omitempty"`

	// OVS contains the OVS configuration for the DPUFlavor.
	// +optional
	OVS DPUFlavorOVS `json:"ovs,omitempty"`
	// BFCfgParameters are the parameters to be set in the bf.cfg file.
	// +optional
	BFCfgParameters []string `json:"bfcfgParameters,omitempty"`
	// ConfigFiles are the files to be written on the DPU.
	// +optional
	ConfigFiles []ConfigFile `json:"configFiles,omitempty"`
	// Packages are the packages to reconcile on the node.
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="package names must be unique"
	// +optional
	Packages []PackageSpec `json:"packages,omitempty"`
	// SystemdServices are the systemd services to manage on the node.
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:XValidation:rule="self.all(x, self.exists_one(y, x.name == y.name))",message="systemd service names must be unique"
	// +optional
	SystemdServices []SystemdServiceSpec `json:"systemdServices,omitempty"`
	// ContainerdConfig contains the configuration for containerd.
	// +optional
	ContainerdConfig ContainerdConfig `json:"containerdConfig,omitempty"`
	// DPUResources indicates the minimum amount of resources needed for a BFB with that flavor to be installed on a
	// DPU. Using this field, the controller can understand if that flavor can be installed on a particular DPU. It
	// should be set to the total amount of resources the system needs + the resources that should be made available for
	// DPUServices to consume.
	// +optional
	DPUResources corev1.ResourceList `json:"dpuResources,omitempty"`
	// SystemReservedResources indicates the resources that are consumed by the system (OS, OVS, DPF system etc) and are
	// not made available for DPUServices to consume. DPUServices can consume the difference between DPUResources and
	// SystemReservedResources. This field must not be specified if dpuResources are not specified.
	// +optional
	SystemReservedResources corev1.ResourceList `json:"systemReservedResources,omitempty"`

	// DpuMode is deprecated and no longer used by provisioning workflows.
	// Deployment mode is sourced from DPFOperatorConfig and exposed on DPU.status.deploymentMode.
	// +optional
	DpuMode DpuModeType `json:"dpuMode,omitempty"`

	// HostNetworkInterfaceConfigs contains the configuration for the host-side network interfaces.
	// +optional
	HostNetworkInterfaceConfigs []NetworkInterfaceConfig `json:"hostNetworkInterfaceConfigs,omitempty"`

	// EWNicConfigurations lists per-NIC configuration for the E/W NICs.
	// Only the first entry is applied in this release; additional entries are ignored until a future
	// release adds multi-NIC support. The field is modeled as a list now so the API shape does not
	// need to change when multiple entries are supported.
	// +kubebuilder:validation:MaxItems=16
	// +listType=atomic
	// +optional
	EWNicConfigurations []NicConfiguration `json:"ewNicConfigurations,omitempty"`

	// serviceReadiness configures the Service Readiness phase.
	// +optional
	ServiceReadiness *ServiceReadiness `json:"serviceReadiness,omitempty"`
}

DPUFlavorSpec defines the content of DPUFlavor. Config-only fields (grub, sysctl, nvconfig, ovs, packages, systemdServices, containerdConfig, agent-applied configFiles, serviceReadiness, ewNicConfigurations, dma, scalableFunctions, virtualFunctions) may be updated in place. Immutable fields require a new DPUFlavor. +kubebuilder:validation:XValidation:rule="(!has(self.dpuMode) && !has(oldSelf.dpuMode)) || (has(self.dpuMode) && has(oldSelf.dpuMode) && self.dpuMode == oldSelf.dpuMode)",message="dpuMode is immutable" +kubebuilder:validation:XValidation:rule="(!has(self.bfcfgParameters) && !has(oldSelf.bfcfgParameters)) || (has(self.bfcfgParameters) && has(oldSelf.bfcfgParameters) && self.bfcfgParameters == oldSelf.bfcfgParameters)",message="bfcfgParameters is immutable" +kubebuilder:validation:XValidation:rule="(!has(self.dpuResources) && !has(oldSelf.dpuResources)) || (has(self.dpuResources) && has(oldSelf.dpuResources) && self.dpuResources == oldSelf.dpuResources)",message="dpuResources is immutable" +kubebuilder:validation:XValidation:rule="(!has(self.systemReservedResources) && !has(oldSelf.systemReservedResources)) || (has(self.systemReservedResources) && has(oldSelf.systemReservedResources) && self.systemReservedResources == oldSelf.systemReservedResources)",message="systemReservedResources is immutable" +kubebuilder:validation:XValidation:rule="(!has(self.hostNetworkInterfaceConfigs) && !has(oldSelf.hostNetworkInterfaceConfigs)) || (has(self.hostNetworkInterfaceConfigs) && has(oldSelf.hostNetworkInterfaceConfigs) && self.hostNetworkInterfaceConfigs == oldSelf.hostNetworkInterfaceConfigs)",message="hostNetworkInterfaceConfigs is immutable" +kubebuilder:validation:XValidation:rule="(has(self.configFiles) ? self.configFiles.filter(f, !has(f.type) || f.type == 'cloud-init') : []) == (has(oldSelf.configFiles) ? oldSelf.configFiles.filter(f, !has(f.type) || f.type == 'cloud-init') : [])",message="configFiles with type cloud-init (the default) are immutable"

func (*DPUFlavorSpec) DeepCopy

func (in *DPUFlavorSpec) DeepCopy() *DPUFlavorSpec

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

func (*DPUFlavorSpec) DeepCopyInto

func (in *DPUFlavorSpec) DeepCopyInto(out *DPUFlavorSpec)

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

func (*DPUFlavorSpec) FirstEWNicConfiguration

func (s *DPUFlavorSpec) FirstEWNicConfiguration() *NicConfiguration

FirstEWNicConfiguration returns the E/W NIC configuration used by provisioning in this release. Only index 0 of Spec.EWNicConfigurations is honored; further entries are reserved for future multi-NIC support.

type DPUFlavorTemplate

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

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

DPUFlavorTemplate is the Schema for the dpuflavortemplates API

func (*DPUFlavorTemplate) DeepCopy

func (in *DPUFlavorTemplate) DeepCopy() *DPUFlavorTemplate

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

func (*DPUFlavorTemplate) DeepCopyInto

func (in *DPUFlavorTemplate) DeepCopyInto(out *DPUFlavorTemplate)

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

func (*DPUFlavorTemplate) DeepCopyObject

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

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

type DPUFlavorTemplateList

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

DPUFlavorTemplateList contains a list of DPUFlavorTemplate

func (*DPUFlavorTemplateList) DeepCopy

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

func (*DPUFlavorTemplateList) DeepCopyInto

func (in *DPUFlavorTemplateList) DeepCopyInto(out *DPUFlavorTemplateList)

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

func (*DPUFlavorTemplateList) DeepCopyObject

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

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

type DPUFlavorTemplateSpec

type DPUFlavorTemplateSpec struct {
	// Template is the DPUFlavor body as a YAML/JSON string with Go template actions
	// (delimited by double curly braces). It is rendered against DPUDevice.spec.values and the result is
	// unmarshalled into a typed DPUFlavor and validated by DPUFlavor admission when
	// the generated flavor is created. Referencing a key that is absent from the device
	// values fails the render, and the "define", "block" and "template" actions are
	// rejected. It should not contain dpuResources or systemReservedResources: the
	// structured fields below take precedence and, when set, override anything the
	// rendered body contains.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1048576
	// +required
	Template string `json:"template"`

	// DPUResources is resource-fitting metadata mirrored from DPUFlavor. It is NOT
	// templated: when set it is stamped onto every generated DPUFlavor and takes
	// precedence over anything in the rendered body.
	// +optional
	DPUResources corev1.ResourceList `json:"dpuResources,omitempty"`

	// SystemReservedResources is resource-fitting metadata mirrored from DPUFlavor. It is
	// NOT templated: when set it is stamped onto every generated DPUFlavor and takes
	// precedence over anything in the rendered body.
	// +optional
	SystemReservedResources corev1.ResourceList `json:"systemReservedResources,omitempty"`
}

DPUFlavorTemplateSpec defines the content of a DPUFlavorTemplate. The template body is rendered per-DPU against DPUDevice.spec.values to produce a concrete DPUFlavor.

func (*DPUFlavorTemplateSpec) DeepCopy

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

func (*DPUFlavorTemplateSpec) DeepCopyInto

func (in *DPUFlavorTemplateSpec) DeepCopyInto(out *DPUFlavorTemplateSpec)

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

type DPUInfoConditionType

type DPUInfoConditionType string
const (
	ReadyForReboot DPUInfoConditionType = "ReadyForReboot"
)

type DPUInstallInterfaceType

type DPUInstallInterfaceType string
const (
	InstallViaGNOI      DPUInstallInterfaceType = "gNOI"
	InstallViaHostAgent DPUInstallInterfaceType = "hostAgent"
	InstallViaRedFish   DPUInstallInterfaceType = "redfish"
	InstallViaMock      DPUInstallInterfaceType = "mock"
)

type DPUList

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

DPUList contains a list of DPU

func (*DPUList) DeepCopy

func (in *DPUList) DeepCopy() *DPUList

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

func (*DPUList) DeepCopyInto

func (in *DPUList) DeepCopyInto(out *DPUList)

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

func (*DPUList) DeepCopyObject

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

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

type DPUNode

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

	Spec   DPUNodeSpec   `json:"spec,omitempty"`
	Status DPUNodeStatus `json:"status,omitempty"`
}

DPUNode is the Schema for the dpunodes API

func (*DPUNode) DeepCopy

func (in *DPUNode) DeepCopy() *DPUNode

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

func (*DPUNode) DeepCopyInto

func (in *DPUNode) DeepCopyInto(out *DPUNode)

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

func (*DPUNode) DeepCopyObject

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

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

func (*DPUNode) GetConditions

func (c *DPUNode) GetConditions() []metav1.Condition

func (*DPUNode) SetConditions

func (c *DPUNode) SetConditions(conditions []metav1.Condition)

type DPUNodeConditionType

type DPUNodeConditionType string
const (
	// DPUNodeConditionReady means the DPU is ready.
	DPUNodeConditionReady DPUNodeConditionType = "Ready"
	// DPUNodeConditionInvalidDPUDetails means the DPU details provided are invalid.
	DPUNodeConditionInvalidDPUDetails DPUNodeConditionType = "InvalidDPUDetails"
	// DPUNodeConditionRebootInProgress means the DPUNode is in the process of rebooting.
	DPUNodeConditionRebootInProgress DPUNodeConditionType = "DPUNodeRebootInProgress"
	// DPUNodeConditionDPUUpdateInProgress means the DPU is in the process of being updated.
	DPUNodeConditionDPUUpdateInProgress DPUNodeConditionType = "DPUUpdateInProgress"
	// DPUNodeConditionNeedDMSUpgrade means the DMS needs to be upgraded.
	DPUNodeConditionNeedHostAgentUpgrade DPUNodeConditionType = "NeedHostAgentUpgrade"
	// DPUNodeConditionBridgeConfigured means the out-of-band management bridge is configured.
	DPUNodeConditionBridgeConfigured DPUNodeConditionType = "OOBBridgeConfigured"
	// DPUNodeConditionRshimAvailable means the rshim is available.
	DPUNodeConditionRshimAvailable DPUNodeConditionType = "RshimAvailable"
	// DPUNodeConditionNodeEffectInProgress means the node effect is processing on the node.
	DPUNodeConditionNodeEffectInProgress DPUNodeConditionType = "DPUNodeNodeEffectInProgress"
)

List of valid condition types

func (DPUNodeConditionType) String

func (ct DPUNodeConditionType) String() string

type DPUNodeInstallInterfaceType

type DPUNodeInstallInterfaceType string
const (
	DPUNodeInstallInterfaceGNOI      DPUNodeInstallInterfaceType = "gNOI"
	DPUNodeInstallInterfaceHostAgent DPUNodeInstallInterfaceType = "hostAgent"
	DPUNodeInstallIntrefaceRedfish   DPUNodeInstallInterfaceType = "redfish"
)

List of valid Install Interface types

type DPUNodeList

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

DPUNodeList contains a list of DPUNode

func (*DPUNodeList) DeepCopy

func (in *DPUNodeList) DeepCopy() *DPUNodeList

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

func (*DPUNodeList) DeepCopyInto

func (in *DPUNodeList) DeepCopyInto(out *DPUNodeList)

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

func (*DPUNodeList) DeepCopyObject

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

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

type DPUNodeMaintenance

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

	Spec   DPUNodeMaintenanceSpec   `json:"spec,omitempty"`
	Status DPUNodeMaintenanceStatus `json:"status,omitempty"`
}

DPUNodeMaintenance is the Schema for the dpunodemaintenances API

func (*DPUNodeMaintenance) DeepCopy

func (in *DPUNodeMaintenance) DeepCopy() *DPUNodeMaintenance

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

func (*DPUNodeMaintenance) DeepCopyInto

func (in *DPUNodeMaintenance) DeepCopyInto(out *DPUNodeMaintenance)

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

func (*DPUNodeMaintenance) DeepCopyObject

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

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

func (*DPUNodeMaintenance) GetConditions

func (c *DPUNodeMaintenance) GetConditions() []metav1.Condition

func (*DPUNodeMaintenance) SetConditions

func (c *DPUNodeMaintenance) SetConditions(conditions []metav1.Condition)

type DPUNodeMaintenanceList

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

DPUNodeMaintenanceList contains a list of DPUNodeMaintenance

func (*DPUNodeMaintenanceList) DeepCopy

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

func (*DPUNodeMaintenanceList) DeepCopyInto

func (in *DPUNodeMaintenanceList) DeepCopyInto(out *DPUNodeMaintenanceList)

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

func (*DPUNodeMaintenanceList) DeepCopyObject

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

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

type DPUNodeMaintenanceSpec

type DPUNodeMaintenanceSpec struct {
	// DPUNodeName is the name of the DPUNode that is being maintained.
	// +required
	DPUNodeName string `json:"dpuNodeName"`
	// NodeEffect is the effect to be applied to the node.
	// +optional
	NodeEffect *NodeEffect `json:"nodeEffect,omitempty"`
	// Requestor is the list of consumers for the maintenance.
	// +optional
	Requestor []string `json:"requestor,omitempty"`
}

DPUNodeMaintenanceSpec is the specification of the DPUNodeMaintenance object

func (*DPUNodeMaintenanceSpec) DeepCopy

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

func (*DPUNodeMaintenanceSpec) DeepCopyInto

func (in *DPUNodeMaintenanceSpec) DeepCopyInto(out *DPUNodeMaintenanceSpec)

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

type DPUNodeMaintenanceStatus

type DPUNodeMaintenanceStatus struct {
	// Conditions reflect the status of the object
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	// NodeEffectSyncStartTime is the time when the node effect sync started.
	// +optional
	NodeEffectSyncStartTime *metav1.Time `json:"nodeEffectSyncStartTime,omitempty"`
	// MultiDPUOperationsSyncWaitTime  is the wait time between DPUs on the same node.
	// +optional
	MultiDPUOperationsSyncWaitTime *metav1.Duration `json:"multiDPUOperationsSyncWaitTime,omitempty"`
	// MaxUnavailableDPUNodes is the maximum number of DPUNodes that are unavailable during the node effect period.
	// +kubebuilder:validation:Minimum=1
	// +optional
	MaxUnavailableDPUNodes *int32 `json:"maxUnavailableDPUNodes,omitempty"`
}

DPUNodeMaintenanceStatus defines the observed state of DPUNodeMaintenance

func (*DPUNodeMaintenanceStatus) DeepCopy

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

func (*DPUNodeMaintenanceStatus) DeepCopyInto

func (in *DPUNodeMaintenanceStatus) DeepCopyInto(out *DPUNodeMaintenanceStatus)

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

type DPUNodeSpec

type DPUNodeSpec struct {
	// Defines the method for rebooting the host.
	// One of the following options can be chosen for this field:
	//    - "external": Reboot the host via an external means, not controlled by the
	//      DPU controller.
	//    - "script": Reboot the host by executing a custom script.
	//    - "hostAgent": Use the host agent to reboot the host.
	//    - "none": Do not reboot a host through the DPUNode.
	// "hostAgent" is the default value.
	// +kubebuilder:default={hostAgent:{}}
	// +optional
	NodeRebootMethod *NodeRebootMethod `json:"nodeRebootMethod,omitempty"`

	// The IP address and port where the DMS is exposed. Only applicable if dpuInstallInterface is set to gNOI.
	//
	// Deprecated: this field is no longer used.
	// +optional
	NodeDMSAddress *DMSAddress `json:"nodeDMSAddress,omitempty"`

	// A map containing names of each DPUDevice attached to the node.
	// +optional
	DPUs []DPURef `json:"dpus,omitempty"`
}

DPUNodeSpec defines the desired state of DPUNode

func (*DPUNodeSpec) DeepCopy

func (in *DPUNodeSpec) DeepCopy() *DPUNodeSpec

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

func (*DPUNodeSpec) DeepCopyInto

func (in *DPUNodeSpec) DeepCopyInto(out *DPUNodeSpec)

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

type DPUNodeStatus

type DPUNodeStatus struct {
	// Conditions represent the latest available observations of an object's state.
	// +kubebuilder:validation:Type=array
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	// The name of the interface which will be used to install the bfb image, can be one of hostAgent,redfish
	// +kubebuilder:validation:Enum=gNOI;hostAgent;redfish
	// +optional
	DPUInstallInterface *string `json:"dpuInstallInterface,omitempty"`
	// The name of the Kubernetes Node object that this DPUNode represents.
	// This field is optional and only relevant if the x86 host is part of the DPF Kubernetes cluster.
	// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="KubeNodeRef is immutable"
	// +optional
	KubeNodeRef *string `json:"kubeNodeRef,omitempty"`
	// RebootInProgress indicates if the node is in the process of rebooting.
	// +optional
	RebootInProgress *bool `json:"rebootInProgress,omitempty"`
	// RebootMethod is the host operation required by the child DPUs in
	// DPURebooting phase: PowerCycle or SystemLevelReset.
	// +optional
	RebootMethod *RebootMethodType `json:"rebootMethod,omitempty"`
}

DPUNodeStatus defines the observed state of DPUNode

func (*DPUNodeStatus) DeepCopy

func (in *DPUNodeStatus) DeepCopy() *DPUNodeStatus

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

func (*DPUNodeStatus) DeepCopyInto

func (in *DPUNodeStatus) DeepCopyInto(out *DPUNodeStatus)

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

type DPUOperationalConditionType

type DPUOperationalConditionType string

DPUOperationalConditionType represents operational readiness condition types

const (
	// DPUOperationalCondReady is the summary condition indicating overall operational readiness
	DPUOperationalCondReady DPUOperationalConditionType = "OperationalReady"
	// DPUOperationalCondNodeProblemsReady indicates whether the DPU node has problems reported by node-problem-detector
	DPUOperationalCondNodeProblemsReady DPUOperationalConditionType = "NodeProblemsReady"
	// DPUOperationalCondDPUServiceCriticalPodsReady indicates whether critical DPU service pods are ready
	DPUOperationalCondDPUServiceCriticalPodsReady DPUOperationalConditionType = "DPUServiceCriticalPodsReady"
	// DPUOperationalCondDPUServiceNonCriticalPodsReady indicates whether non-critical DPU service pods are ready
	DPUOperationalCondDPUServiceNonCriticalPodsReady DPUOperationalConditionType = "DPUServiceNonCriticalPodsReady"
	// DPUOperationalCondDPUServiceInterfacesReady indicates whether DPU service interfaces are ready
	DPUOperationalCondDPUServiceInterfacesReady DPUOperationalConditionType = "DPUServiceInterfacesReady"
	// DPUOperationalCondDPUServiceChainsReady indicates whether DPU service chains are ready
	DPUOperationalCondDPUServiceChainsReady DPUOperationalConditionType = "DPUServiceChainsReady"
)

type DPUOutdated

type DPUOutdated struct {
	// TimeStamp records when this drift was first observed for the current Reason.
	// It is preserved across reconciles as long as Reason is unchanged.
	// +required
	TimeStamp metav1.Time `json:"timeStamp"`

	// Reason is the machine-readable drift code (e.g. OutdatedBFB). When more
	// than one template field has drifted, Reason reports the first in fixed
	// precedence order: BFB -> DPUFlavor -> SecureBoot -> BlueFieldSoftware.
	// +required
	Reason string `json:"reason"`

	// Message is a human-readable summary that lists every drifted field,
	// e.g. "DPU template has changed (BFB: bfb-v1 -> bfb-v2, DPUFlavor: ...)".
	// +required
	Message string `json:"message"`
}

DPUOutdated reports that the DPU has drifted from its owning DPUSet's DPUTemplate in a way that requires the DPU to be reprovisioned. The struct is presence-based: when the DPU matches the template, DPUStatus.Outdated is nil. The DPUSet controller is the sole writer.

func (*DPUOutdated) DeepCopy

func (in *DPUOutdated) DeepCopy() *DPUOutdated

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

func (*DPUOutdated) DeepCopyInto

func (in *DPUOutdated) DeepCopyInto(out *DPUOutdated)

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

type DPUPhase

type DPUPhase string

DPUPhase describes current state of DPU. Only one of the following state may be specified. Default is Initializing. +kubebuilder:validation:Enum="Initializing";"Node Effect";"Pending";"Update Firmware";"Config FW Parameters";"Prepare BFB";"OS Installing";"DPU Config";"DPU Cluster Config";"Host Network Configuration";"Service Readiness";"Ready";"Error";"Deleting";"Rebooting";"Perform ARM Force Restart";"Initialize Interface";"Node Effect Removal";"Checking Host Reboot Required"

const (
	DPUFinalizer = "provisioning.dpu.nvidia.com/dpu-protection"

	// AnnotationArmRestartTracker stores ARM restart tracking state for Secure Boot configuration
	AnnotationArmRestartTracker = "provisioning.dpu.nvidia.com/arm-restart-tracker"

	// DPUInitializing is the first phase after the DPU is created.
	DPUInitializing DPUPhase = "Initializing"
	// DPUNodeEffect means the controller will handle the node effect provided by the user.
	DPUNodeEffect DPUPhase = "Node Effect"
	// DPUPending means the controller is waiting for the BFB to be ready.
	DPUPending DPUPhase = "Pending"
	// DPUPrepareBFB means the controller is preparing the BFB and bf.cfg to be installed to DPU
	DPUPrepareBFB DPUPhase = "Prepare BFB"
	// DPUUpdateFirmware means the controller will update the DPU firmware for BlueField4.
	DPUUpdateFirmware DPUPhase = "Update Firmware"
	// DPUConfig means the DPU agent will configure the DPU
	DPUConfig DPUPhase = "DPU Config"
	// DPUConfigFWParameters means the controller will manipulate DPU firmware, e.g., set DPU mode, check firmware version
	DPUConfigFWParameters DPUPhase = "Config FW Parameters"
	// DPUInitializeInterface means the controller will intitialize the interface used to provision the DPUs, e.g., create the DMS pod, set up RedFish account.
	DPUInitializeInterface DPUPhase = "Initialize Interface"
	// DPUOSInstalling means the controller will provision the DPU through the DMS gNOI interface.
	DPUOSInstalling DPUPhase = "OS Installing"
	// DPUClusterConfig  means the node configuration and Kubernetes Node join procedure are in progress .
	DPUClusterConfig DPUPhase = "DPU Cluster Config"
	// DPUHostNetworkConfiguration means the host network configuration is running.
	DPUHostNetworkConfiguration DPUPhase = "Host Network Configuration"
	// DPUServiceReadiness waits for DPU services to become ready before the DPU is put into service.
	// When the flavor configures a gate the phase blocks on it; it also waits for the DPU agent to
	// release a host OS init hold when one was requested.
	DPUServiceReadiness DPUPhase = "Service Readiness"
	// DPUNodeEffectRemoval means the controller will remove the node effect from the DPU.
	DPUNodeEffectRemoval DPUPhase = "Node Effect Removal"
	// DPUReady means the DPU is ready to use.
	DPUReady DPUPhase = "Ready"
	// DPUError means error occurred.
	DPUError DPUPhase = "Error"
	// DPUDeleting means the DPU CR will be deleted, controller will do some cleanup works.
	DPUDeleting DPUPhase = "Deleting"
	// DPURebooting means the host of DPU is rebooting.
	DPURebooting DPUPhase = "Rebooting"
	// DPUPerformArmForceRestart means ARM ForceRestart operations are in progress for Secure Boot configuration.
	DPUPerformArmForceRestart DPUPhase = "Perform ARM Force Restart"
)

These are the valid statuses of DPU.

type DPUReconfigStatus

type DPUReconfigStatus struct {
	// InProgress permits the DPU controller to jump to Node Effect. It is cleared when
	// this DPU is Ready again for this round. Do not set it together with Outdated.
	// +optional
	InProgress *bool `json:"inProgress,omitempty"`

	// Round is the DPUSet round assigned when InProgress was set.
	// Zero means InProgress has not been set for a round.
	// +optional
	// +kubebuilder:validation:Minimum=1
	Round int32 `json:"round,omitempty"`

	// CompletedRound is the last round that reached Ready. Zero means this DPU has not
	// finished an in-place round. While it equals DPUSet status.dpuReconfig.round, this
	// DPU is not started again for the same annotation.
	// +optional
	// +kubebuilder:validation:Minimum=1
	CompletedRound int32 `json:"completedRound,omitempty"`
}

DPUReconfigStatus is the in-place reconfig state of one DPU. DPUSet is the only writer.

func (*DPUReconfigStatus) DeepCopy

func (in *DPUReconfigStatus) DeepCopy() *DPUReconfigStatus

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

func (*DPUReconfigStatus) DeepCopyInto

func (in *DPUReconfigStatus) DeepCopyInto(out *DPUReconfigStatus)

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

type DPURef

type DPURef struct {
	// Name of the DPU device.
	// +kubebuilder:validation:MinLength=1
	// +required
	Name string `json:"name"`
}

func (*DPURef) DeepCopy

func (in *DPURef) DeepCopy() *DPURef

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

func (*DPURef) DeepCopyInto

func (in *DPURef) DeepCopyInto(out *DPURef)

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

type DPUSet

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

	Spec   DPUSetSpec   `json:"spec,omitempty"`
	Status DPUSetStatus `json:"status,omitempty"`
}

DPUSet is the Schema for the dpusets API

func (*DPUSet) DeepCopy

func (in *DPUSet) DeepCopy() *DPUSet

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

func (*DPUSet) DeepCopyInto

func (in *DPUSet) DeepCopyInto(out *DPUSet)

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

func (*DPUSet) DeepCopyObject

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

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

func (*DPUSet) GetConditions

func (c *DPUSet) GetConditions() []metav1.Condition

func (*DPUSet) IsAstraEnabledForNonBlueField4

func (c *DPUSet) IsAstraEnabledForNonBlueField4(dpuDevice DPUDevice) bool

IsAstraEnabledForNonBlueField4 returns true if Astra is enabled on this DPUSet and the target DPUDevice is not a BlueField4.

func (*DPUSet) SetConditions

func (c *DPUSet) SetConditions(conditions []metav1.Condition)

type DPUSetList

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

DPUSetList contains a list of DPUSet

func (*DPUSetList) DeepCopy

func (in *DPUSetList) DeepCopy() *DPUSetList

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

func (*DPUSetList) DeepCopyInto

func (in *DPUSetList) DeepCopyInto(out *DPUSetList)

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

func (*DPUSetList) DeepCopyObject

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

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

type DPUSetReconfigStatus

type DPUSetReconfigStatus struct {
	// Round identifies the current or last round. It increases by one when a new
	// annotation round starts and is not reset when the annotation is removed.
	// Zero means no round has started.
	// +optional
	// +kubebuilder:validation:Minimum=1
	Round int32 `json:"round,omitempty"`

	// Active is true while this annotation round is not finished.
	// +optional
	Active *bool `json:"active,omitempty"`

	// StartedAt is when this round became active. It distinguishes a DPU that was
	// already Ready before the round from one that first becomes Ready during it.
	// The controller sets it with round and active, and never leaves it zero.
	// +optional
	StartedAt *metav1.Time `json:"startedAt,omitempty"`
}

DPUSetReconfigStatus is one annotation round of in-place DPU reconfig. A nil DPUSetStatus.DPUReconfig means no round has started. The controller sets round, active, and startedAt together.

func (*DPUSetReconfigStatus) DeepCopy

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

func (*DPUSetReconfigStatus) DeepCopyInto

func (in *DPUSetReconfigStatus) DeepCopyInto(out *DPUSetReconfigStatus)

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

type DPUSetSpec

type DPUSetSpec struct {
	// The rolling update strategy to use to updating existing DPUs with new ones.
	// +required
	Strategy DPUSetStrategy `json:"strategy"`

	// Select the DPUNodes with specific labels
	// +optional
	DPUNodeSelector *metav1.LabelSelector `json:"dpuNodeSelector,omitempty"`

	// Select the DPU with specific labels
	//
	// Deprecated: This field is deprecated and will be removed with v27.1.0. Use DPUDeviceSelector instead.
	// +optional
	DPUSelector map[string]string `json:"dpuSelector,omitempty"`

	// DPUDeviceSelector defines the selector for DPUDevices that the DPUSet should target and should create a DPU for.
	// +optional
	DPUDeviceSelector *metav1.LabelSelector `json:"dpuDeviceSelector,omitempty"`

	// Object that describes the DPU that will be created if insufficient replicas are detected
	// +required
	DPUTemplate DPUTemplate `json:"dpuTemplate"`
}

DPUSetSpec defines the desired state of DPUSet

func (*DPUSetSpec) DeepCopy

func (in *DPUSetSpec) DeepCopy() *DPUSetSpec

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

func (*DPUSetSpec) DeepCopyInto

func (in *DPUSetSpec) DeepCopyInto(out *DPUSetSpec)

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

type DPUSetStatus

type DPUSetStatus struct {
	// DPUStatistics is a map of DPUPhase to the number of DPUs in that phase.
	// +optional
	DPUStatistics map[DPUPhase]int `json:"dpuStatistics,omitempty"`
	// Conditions reflect the status of the object
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	// ObservedGeneration records the Generation observed on the object the last time it was patched.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// DPUReconfig is the in-place reconfig round owned by the DPUSet controller.
	// The user starts a round with annotation provisioning.dpu.nvidia.com/inplace-reconfig=true.
	// Nil means no round has started.
	// +optional
	DPUReconfig *DPUSetReconfigStatus `json:"dpuReconfig,omitempty,omitzero"`
}

DPUSetStatus defines the observed state of DPUSet

func (*DPUSetStatus) DeepCopy

func (in *DPUSetStatus) DeepCopy() *DPUSetStatus

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

func (*DPUSetStatus) DeepCopyInto

func (in *DPUSetStatus) DeepCopyInto(out *DPUSetStatus)

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

type DPUSetStrategy

type DPUSetStrategy struct {
	// Can be "OnDelete" or "RollingUpdate".
	// +required
	Type StrategyType `json:"type"`

	// Rolling update config params. Present only if StrategyType = RollingUpdate.
	// +optional
	RollingUpdate *RollingUpdateDPU `json:"rollingUpdate,omitempty"`
}

func (*DPUSetStrategy) DeepCopy

func (in *DPUSetStrategy) DeepCopy() *DPUSetStrategy

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

func (*DPUSetStrategy) DeepCopyInto

func (in *DPUSetStrategy) DeepCopyInto(out *DPUSetStrategy)

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

type DPUSpec

type DPUSpec struct {
	// Specifies the DPUNode this DPU belongs to
	// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="Value is immutable"
	// +required
	DPUNodeName string `json:"dpuNodeName"`

	// Specifies the name of the DPUDevice this DPU is associated with
	// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="Value is immutable"
	// +kubebuilder:validation:MinLength=1
	// +required
	DPUDeviceName string `json:"dpuDeviceName"`

	// Specifies name of the bfb CR to use for this DPU
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +optional
	BFB *string `json:"bfb,omitempty"`

	// Specifies the name of the BlueFieldSoftware CR to use for this DPU
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +optional
	BlueFieldSoftware *string `json:"blueFieldSoftware,omitempty"`

	// The serial number of the DPU
	// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="Value is immutable"
	// +kubebuilder:validation:MinLength=1
	// +required
	SerialNumber string `json:"serialNumber"`

	// The PCI device related DPU
	// Example: "0000-03-00", "03-00"
	// +kubebuilder:validation:Pattern=`^([0-9a-fA-F]{4}[-])?[0-9a-fA-F]{2}[-][0-9a-fA-F]{2}$`
	// +optional
	PCIAddress *string `json:"pciAddress,omitempty"`

	// Specifies how changes to the DPU should affect the Node
	// +required
	NodeEffect NodeEffect `json:"nodeEffect"`

	// Specifies details on the K8S cluster to join
	// +optional
	Cluster K8sCluster `json:"cluster,omitempty"`

	// DPUFlavor is the name of the DPUFlavor that will be used to deploy the DPU.
	// +kubebuilder:validation:XValidation:rule="self==oldSelf", message="Value is immutable"
	// +kubebuilder:validation:MinLength=1
	// +required
	DPUFlavor string `json:"dpuFlavor"`

	// AstraEnabled indicates whether E/W NIC configuration (Astra) is enabled
	// +optional
	AstraEnabled *bool `json:"astraEnabled,omitempty"`

	// SecureBoot specifies whether UEFI Secure Boot should be enabled.
	// +optional
	// +kubebuilder:validation:XValidation:rule="self == oldSelf", message="Value is immutable"
	SecureBoot *bool `json:"secureBoot,omitempty"`

	// BMCIP is the ip address of the DPU BMC
	//
	// Deprecated: Use BMCIP from DPUDevice instead.
	// +optional
	BMCIP string `json:"bmcIP,omitempty"`
}

DPUSpec defines the desired state of DPU +kubebuilder:validation:XValidation:rule="has(self.bfb) != has(self.blueFieldSoftware)",message="exactly one of bfb or blueFieldSoftware must be set"

func (*DPUSpec) DeepCopy

func (in *DPUSpec) DeepCopy() *DPUSpec

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

func (*DPUSpec) DeepCopyInto

func (in *DPUSpec) DeepCopyInto(out *DPUSpec)

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

type DPUStatus

type DPUStatus struct {
	// The current state of DPU.
	// +kubebuilder:default=Initializing
	// +optional
	Phase DPUPhase `json:"phase,omitempty"`

	// PreviousPhase is the last non-empty Phase before the current Phase, set by the controller
	// when Phase transitions. It may be unset during early initialization (empty Phase) or until
	// the first transition from a non-empty Phase. Internal controller tracking only.
	// +optional
	PreviousPhase DPUPhase `json:"previousPhase,omitempty"`

	// Outdated, when present, indicates the DPU has drifted from its owning
	// DPUSet's DPUTemplate and needs to be reprovisioned. Set by the DPUSet
	// controller; absent when the DPU matches the template.
	// +optional
	Outdated *DPUOutdated `json:"outdated,omitempty"`

	// Conditions represents the provisioning lifecycle conditions.
	// +optional
	Conditions []metav1.Condition `json:"conditions"`

	// OperationalConditions represents aggregated operational readiness conditions.
	// These conditions reflect the runtime health and readiness of DPU services and node health,
	// separate from the provisioning lifecycle represented by Conditions.
	// +listType=map
	// +listMapKey=type
	// +optional
	OperationalConditions []metav1.Condition `json:"operationalConditions,omitempty"`

	// BFBFile is the path to the BFB file
	// +optional
	BFBFile string `json:"bfbFile,omitempty"`

	// BFCFGFile is the path to the bf.cfg
	// +optional
	BFCFGFile string `json:"bfCFGFile,omitempty"`

	// bfb version of this DPU
	// +optional
	BFBVersion string `json:"bfbVersion,omitempty"`

	// DPF version used to install this DPU
	// +kubebuilder:validation:XValidation:rule="self==oldSelf", message="Value is immutable"
	// +optional
	DPFVersion *string `json:"dpfVersion,omitempty"`

	// pci device information of this DPU
	// +optional
	PCIDevice string `json:"pciDevice,omitempty"`

	// whether require reset of DPU
	// +optional
	RequiredReset *bool `json:"requiredReset,omitempty"`

	// the firmware information of DPU
	// +optional
	Firmware Firmware `json:"firmware,omitempty"`

	// The DPU node's IP addresses
	// +optional
	Addresses []corev1.NodeAddress `json:"addresses,omitempty"`

	// the name of the interface which will be used to install the bfb image,
	// and communicate with DPU, can be one of hostAgent,redfish
	// +kubebuilder:validation:Enum=gNOI;hostAgent;redfish
	// +optional
	DPUInstallInterface *string `json:"dpuInstallInterface,omitempty"`

	// Indicates that node effect was triggered by post-provisioning label changes
	// +optional
	PostProvisioningNodeEffect *bool `json:"postProvisioningNodeEffect,omitempty"`

	// PostProvisioningDPUConfig must be set before entering Node Effect for an in-place
	// flavor reconfig, so Node Effect exits to DPU Config instead of Initialize Interface.
	// The DPU controller owns this field. If both this and PostProvisioningNodeEffect would
	// be set, only this one is set.
	// +optional
	PostProvisioningDPUConfig *bool `json:"postProvisioningDPUConfig,omitempty"`

	// DPUReconfig is the in-place reconfig round state for this DPU. DPUSet writes it.
	// The DPU controller reads inProgress and does not write these fields.
	// Nil means no round has been assigned.
	// +optional
	DPUReconfig *DPUReconfigStatus `json:"dpuReconfig,omitempty,omitzero"`

	// ObservedGeneration records the Generation observed on the object the last time it was patched.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// The type of the DPU
	// +kubebuilder:validation:Enum=Unknown;BlueField2;BlueField3;BlueField4
	// +kubebuilder:default=Unknown
	// +optional
	DPUType DPUType `json:"dpuType,omitempty"`

	// AgentLastStartupTime is the time when the DPU agent was last started. This is copied from agentStatus.lastStartupTime.
	// +optional
	AgentLastStartupTime *metav1.Time `json:"agentLastStartupTime,omitempty"`

	// AgentStatus contains the information reported from inside the DPU
	// +optional
	AgentStatus *AgentStatus `json:"agentStatus,omitempty"`

	// RebootStatus contains host reboot progress.
	// DPU controller derives user-facing DPUCondRebooted from this status.
	// +optional
	RebootStatus *RebootStatus `json:"rebootStatus,omitempty"`

	// The mode of the DPU
	// +kubebuilder:default=dpu
	// +optional
	DPUMode DpuModeType `json:"dpuMode,omitempty"`

	// DeploymentMode is copied from DPFOperatorConfig.spec.deploymentMode by the controller.
	// This field is read-only for users.
	// +kubebuilder:validation:Enum=zero-trust;host-trusted
	// +optional
	DeploymentMode DeploymentMode `json:"deploymentMode,omitempty"`

	// Hostless indicates that the DPU is attached to a system-managed synthetic
	// DPUNode rather than a physical host.
	// +optional
	Hostless bool `json:"hostless,omitempty"`

	// SecureBoot indicates the current UEFI Secure Boot state.
	// +optional
	SecureBoot *SecureBootStatus `json:"secureBoot,omitempty"`

	// IdentityMode records which authentication mechanism the DPU Agent uses to reach the
	// management-cluster kube-apiserver. Stamped exactly once by the DPU controller during phase
	// Initializing (nil guard); immutable thereafter. Pre-SPIFFE legacy DPUs have IdentityMode
	// unset (nil) which consumers MUST treat semantically as bootstrap-token.
	// +kubebuilder:validation:Enum=spiffe;bootstrap-token
	// +optional
	IdentityMode *IdentityMode `json:"identityMode,omitempty"`

	// The task ID of the last task performed on the DPU BMC
	// +optional
	RedfishTaskID *string `json:"redfishTaskId,omitempty"`
}

DPUStatus defines the observed state of DPU +kubebuilder:validation:XValidation:rule="!has(oldSelf.identityMode) || (has(self.identityMode) && self.identityMode == oldSelf.identityMode)",message="identityMode is immutable once set: can only transition from unset to a value"

func (*DPUStatus) DeepCopy

func (in *DPUStatus) DeepCopy() *DPUStatus

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

func (*DPUStatus) DeepCopyInto

func (in *DPUStatus) DeepCopyInto(out *DPUStatus)

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

type DPUTemplate

type DPUTemplate struct {
	// Annotations specifies annotations which are added to the DPU.
	Annotations map[string]string `json:"annotations,omitempty"`
	// Spec specifies the DPU specification.
	Spec DPUTemplateSpec `json:"spec,omitempty"`
}

DPUTemplate is a template for DPU

func (*DPUTemplate) DeepCopy

func (in *DPUTemplate) DeepCopy() *DPUTemplate

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

func (*DPUTemplate) DeepCopyInto

func (in *DPUTemplate) DeepCopyInto(out *DPUTemplate)

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

type DPUTemplateSpec

type DPUTemplateSpec struct {
	// Specifies a BFB CR
	// +optional
	BFB *BFBReference `json:"bfb,omitempty"`
	// Specifies a BlueFieldSoftware CR
	// +optional
	BlueFieldSoftware *BlueFieldSoftwareReference `json:"blueFieldSoftware,omitempty"`
	// Specifies how changes to the DPU should affect the Node
	// +required
	NodeEffect NodeEffect `json:"nodeEffect"`
	// Specifies details on the K8S cluster to join
	// +optional
	Cluster *ClusterSpec `json:"cluster,omitempty"`
	// DPUFlavor is the name of the DPUFlavor that will be used to deploy the DPU.
	// Mutually exclusive with DPUFlavorTemplate.
	// +kubebuilder:validation:MinLength=1
	// +optional
	DPUFlavor *string `json:"dpuFlavor,omitempty"`
	// DPUFlavorTemplate is the name of a DPUFlavorTemplate that is rendered per-DPU
	// (against DPUDevice.spec.values) into a generated DPUFlavor. Mutually exclusive
	// with DPUFlavor.
	// +kubebuilder:validation:MinLength=1
	// +optional
	DPUFlavorTemplate *string `json:"dpuFlavorTemplate,omitempty"`
	// AstraEnabled indicates whether E/W NIC configuration (Astra) is enabled
	// +optional
	AstraEnabled *bool `json:"astraEnabled,omitempty"`
	// SecureBoot specifies whether UEFI Secure Boot should be enabled.
	// +optional
	SecureBoot *bool `json:"secureBoot,omitempty"`
}

DPUTemplateSpec defines the desired provisioning template for DPUs. +kubebuilder:validation:XValidation:rule="(has(self.bfb) && has(self.bfb.name) ? 1 : 0) + (has(self.blueFieldSoftware) && has(self.blueFieldSoftware.name) ? 1 : 0) == 1",message="exactly one of bfb or blueFieldSoftware must be set" +kubebuilder:validation:XValidation:rule="has(self.dpuFlavor) != has(self.dpuFlavorTemplate)",message="exactly one of dpuFlavor or dpuFlavorTemplate must be set"

func (*DPUTemplateSpec) DeepCopy

func (in *DPUTemplateSpec) DeepCopy() *DPUTemplateSpec

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

func (*DPUTemplateSpec) DeepCopyInto

func (in *DPUTemplateSpec) DeepCopyInto(out *DPUTemplateSpec)

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

type DPUType

type DPUType string
const (
	DPUTypeUnknown    DPUType = "Unknown"
	DPUTypeBlueField2 DPUType = "BlueField2"
	DPUTypeBlueField3 DPUType = "BlueField3"
	DPUTypeBlueField4 DPUType = "BlueField4"
)

type DeploymentMode

type DeploymentMode string

DeploymentMode describes the cluster deployment model for provisioning (zero-trust vs host-trusted). This type is intentionally duplicated from operator/v1alpha1.DeploymentMode: the provisioning API must not import the operator API group. Keep values and semantics aligned with DPFOperatorConfig.spec.deploymentMode.

const (
	DeploymentModeZeroTrust   DeploymentMode = "zero-trust"
	DeploymentModeHostTrusted DeploymentMode = "host-trusted"
)

type DownloadedComponents

type DownloadedComponents struct {
	// PldmFwBundle maps each PSID to the local path of its downloaded PLDM firmware bundle.
	// Keys are matched case-insensitively against the BMC-reported DPUDevice PSID.
	PldmFwBundle map[string]string `json:"pldmFwBundle,omitempty"`

	// PlatformPldmFwBundle is the local path of the downloaded platform PLDM firmware bundle.
	PlatformPldmFwBundle string `json:"platformPldmFwBundle,omitempty"`

	// OsIso is the local path of the downloaded OS ISO.
	OsIso string `json:"osIso,omitempty"`

	// NicFw is the local path of the E/W NIC firmware binary, either downloaded from
	// spec.nicFw or unpacked from the platform PLDM firmware bundle.
	NicFw string `json:"nicFw,omitempty"`
}

DownloadedComponents tracks which components have been downloaded

func (*DownloadedComponents) DeepCopy

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

func (*DownloadedComponents) DeepCopyInto

func (in *DownloadedComponents) DeepCopyInto(out *DownloadedComponents)

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

type DpuModeType

type DpuModeType string

DpuModeType defines the mode of the DPU +kubebuilder:validation:Enum=dpu;zero-trust;nic

const (
	DpuMode DpuModeType = "dpu"
	NicMode DpuModeType = "nic"
	// ZeroTrustMode is deprecated and kept for backward compatibility with DPUFlavor.spec.dpuMode.
	// Deprecated: DPUFlavor.spec.dpuMode is deprecated; use DPFOperatorConfig.spec.deploymentMode.
	ZeroTrustMode DpuModeType = "zero-trust"
)

type External

type External struct{}

func (*External) DeepCopy

func (in *External) DeepCopy() *External

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

func (*External) DeepCopyInto

func (in *External) DeepCopyInto(out *External)

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

type Firmware

type Firmware struct {
	// BMC is the used BMC firmware version
	BMC string `json:"bmc,omitempty"`
	// NIC is the used NIC firmware version
	NIC string `json:"nic,omitempty"`
	// UEFI is the used UEFI firmware version
	UEFI string `json:"uefi,omitempty"`
}

func (*Firmware) DeepCopy

func (in *Firmware) DeepCopy() *Firmware

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

func (*Firmware) DeepCopyInto

func (in *Firmware) DeepCopyInto(out *Firmware)

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

type GNOI

type GNOI struct{}

func (*GNOI) DeepCopy

func (in *GNOI) DeepCopy() *GNOI

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

func (*GNOI) DeepCopyInto

func (in *GNOI) DeepCopyInto(out *GNOI)

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

type HostAgent

type HostAgent struct{}

func (*HostAgent) DeepCopy

func (in *HostAgent) DeepCopy() *HostAgent

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

func (*HostAgent) DeepCopyInto

func (in *HostAgent) DeepCopyInto(out *HostAgent)

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

type HostOSInitSkipped

type HostOSInitSkipped struct {
	// reason is a stable machine-readable outcome code.
	// +optional
	Reason *string `json:"reason,omitempty"`
	// message is a human-readable explanation.
	// +optional
	Message *string `json:"message,omitempty"`
}

HostOSInitSkipped reports that host OS init release was not required.

func (*HostOSInitSkipped) DeepCopy

func (in *HostOSInitSkipped) DeepCopy() *HostOSInitSkipped

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

func (*HostOSInitSkipped) DeepCopyInto

func (in *HostOSInitSkipped) DeepCopyInto(out *HostOSInitSkipped)

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

type HostOSInitStatus

type HostOSInitStatus struct {
	// skipped indicates release was not required for this DPU.
	// +optional
	Skipped *HostOSInitSkipped `json:"skipped,omitempty"`
	// succeeded indicates host OS init was released or was already cleared.
	// +optional
	Succeeded *HostOSInitSucceeded `json:"succeeded,omitempty"`
}

HostOSInitStatus is the agent-reported terminal status for host OS init release. +kubebuilder:validation:XValidation:rule="(has(self.skipped) ? 1 : 0) + (has(self.succeeded) ? 1 : 0) == 1",message="exactly one of skipped or succeeded must be set"

func (*HostOSInitStatus) DeepCopy

func (in *HostOSInitStatus) DeepCopy() *HostOSInitStatus

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

func (*HostOSInitStatus) DeepCopyInto

func (in *HostOSInitStatus) DeepCopyInto(out *HostOSInitStatus)

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

type HostOSInitSucceeded

type HostOSInitSucceeded struct {
	// gate echoes the effective gate used for release.
	// +optional
	Gate ServiceReadinessGate `json:"gate,omitempty"`
}

HostOSInitSucceeded reports successful host OS init release.

func (*HostOSInitSucceeded) DeepCopy

func (in *HostOSInitSucceeded) DeepCopy() *HostOSInitSucceeded

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

func (*HostOSInitSucceeded) DeepCopyInto

func (in *HostOSInitSucceeded) DeepCopyInto(out *HostOSInitSucceeded)

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

type IPRange

type IPRange struct {
	StartIP string `json:"startIP"`

	EndIP string `json:"endIP"`

	// +optional
	// Port defines the port to on which BMC is listening
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +kubebuilder:default=443
	Port *uint32 `json:"port,omitempty"`
}

IPRange represents a range of IP addresses to scan

func (*IPRange) DeepCopy

func (in *IPRange) DeepCopy() *IPRange

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

func (*IPRange) DeepCopyInto

func (in *IPRange) DeepCopyInto(out *IPRange)

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

type IPRangeValidationSpec

type IPRangeValidationSpec struct {
	IPRange IPRange `json:"ipRange"`
}

IPRangeValidationSpec defines the desired state of IPRangeValidation IPRange defines the IP range to validate +kubebuilder:validation:XValidation:rule="size(self.ipRange.startIP) > 0 && size(self.ipRange.endIP) > 0",message="Both startIP and endIP must be provided" +kubebuilder:validation:XValidation:rule="self.ipRange.startIP != '0.0.0.0' && self.ipRange.endIP != '0.0.0.0'",message="IP addresses cannot be 0.0.0.0" +kubebuilder:validation:XValidation:rule="!self.ipRange.startIP.contains(':') && !self.ipRange.endIP.contains(':')",message="Only IPv4 addresses are supported (IPv6 not allowed)" +required

func (*IPRangeValidationSpec) DeepCopy

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

func (*IPRangeValidationSpec) DeepCopyInto

func (in *IPRangeValidationSpec) DeepCopyInto(out *IPRangeValidationSpec)

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

type IdentityMode

type IdentityMode string

IdentityMode records which authentication mechanism the DPU Agent uses to reach the management-cluster kube-apiserver. It is immutable once set (see DPUStatus.IdentityMode).

const (
	// IdentityModeSpiffe indicates the DPU Agent authenticates with a SPIFFE-issued JWT-SVID.
	IdentityModeSpiffe IdentityMode = "spiffe"
	// IdentityModeBootstrapToken indicates the DPU Agent authenticates with a kubeadm bootstrap token.
	// An unset (nil) IdentityMode is treated semantically as bootstrap-token; no sentinel is declared
	// for the unset case deliberately, to force explicit handling by consumers.
	IdentityModeBootstrapToken IdentityMode = "bootstrap-token"
)

type K8sCluster

type K8sCluster struct {
	// Name is the name of the DPUs Kubernetes cluster
	// +kubebuilder:validation:XValidation:rule="self==oldSelf", message="Value is immutable"
	// +optional
	Name string `json:"name,omitempty"`
	// Namespace is the tenants namespace name where the Kubernetes cluster will be deployed
	// +kubebuilder:validation:XValidation:rule="self==oldSelf", message="Value is immutable"
	// +optional
	Namespace string `json:"namespace,omitempty"`

	ClusterSpec `json:",inline"`
}

func (*K8sCluster) DeepCopy

func (in *K8sCluster) DeepCopy() *K8sCluster

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

func (*K8sCluster) DeepCopyInto

func (in *K8sCluster) DeepCopyInto(out *K8sCluster)

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

type KeepalivedSpec

type KeepalivedSpec struct {
	// VIP is the virtual IP owned by the keepalived instances
	VIP string `json:"vip"`

	// VirtualRouterID is the virtual_router_id in keepalived.conf
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=255
	VirtualRouterID int `json:"virtualRouterID"`

	// Interface specifies on which interface the VIP should be assigned
	// +kubebuilder:validation:MinLength=1
	Interface string `json:"interface"`

	// NodeSelector is used to specify a subnet of control plane nodes to deploy keepalived instances.
	// Note: keepalived instances are always deployed on control plane nodes
	// +optional
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`
}

func (*KeepalivedSpec) DeepCopy

func (in *KeepalivedSpec) DeepCopy() *KeepalivedSpec

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

func (*KeepalivedSpec) DeepCopyInto

func (in *KeepalivedSpec) DeepCopyInto(out *KeepalivedSpec)

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

type NVConfig

type NVConfig struct {
	// Device is the device to which the configuration applies. If not specified, the configuration applies to all.
	// Supported values: "*" (wildcard for all devices), "p0"/"P0" (port 0), "p1"/"P1" (port 1). Case-insensitive.
	// +kubebuilder:validation:Enum={"*","p0","p1","P0","P1"}
	// +optional
	Device *string `json:"device,omitempty"`
	// Parameters are the parameters to be set for the device.
	// DELAY_HOST_OS_INIT=ENABLE_USER (0x3) holds the host at UEFI and is rejected by the DPU agent
	// outside zero-trust, where the agent needs the host to reach the kube-apiserver.
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=64
	// +kubebuilder:validation:items:Pattern=`^[^=\s]+=[^\s]*$`
	// +kubebuilder:validation:items:MaxLength=200
	// +listType=atomic
	// +optional
	Parameters []string `json:"parameters,omitempty"`
	// force applies the parameters with `mlxconfig --force` and skips the `mlxconfig q` filter,
	// so parameters firmware does not yet expose are applied now instead of deferred to a later
	// reboot. Required when a parameter is gated behind another parameter in the same batch.
	// Requires DOCA 3.5.0 or later; on an older DOCA version the operation fails.
	// `--force` skips validation for the whole batch, so an invalid value is applied silently.
	// Ignored under `spec.hostNetworkInterfaceConfigs[].nvconfig`.
	// +optional
	Force *bool `json:"force,omitempty"`
}

func (*NVConfig) DeepCopy

func (in *NVConfig) DeepCopy() *NVConfig

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

func (*NVConfig) DeepCopyInto

func (in *NVConfig) DeepCopyInto(out *NVConfig)

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

type NetworkInterfaceConfig

type NetworkInterfaceConfig struct {
	// MTU is the MTU value to be set on the network interface.
	// +kubebuilder:validation:Minimum=1280
	// +kubebuilder:validation:Maximum=9216
	// +optional
	MTU *int32 `json:"mtu,omitempty"`

	// DHCP is the DHCP configuration for the network interface.
	// +optional
	DHCP *bool `json:"dhcp,omitempty"`

	// PortNumber identifies which port this configuration applies to.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=1
	// +required
	PortNumber int32 `json:"portNumber"`

	// NVConfig contains port-specific configuration for this network interface.
	// This configuration is applied in addition to the global NVConfig settings in DPUFlavorSpec.
	// Both global and per-interface NVConfig settings can coexist without collision.
	// +optional
	NVConfig *NVConfig `json:"nvconfig,omitempty"`
}

NetworkInterfaceConfig defines the configuration for a network interface

func (*NetworkInterfaceConfig) DeepCopy

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

func (*NetworkInterfaceConfig) DeepCopyInto

func (in *NetworkInterfaceConfig) DeepCopyInto(out *NetworkInterfaceConfig)

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

type NicConfiguration

type NicConfiguration struct {
	// Number of VFs to be configured
	// +required
	NumVfs int `json:"numVfs"`
	// LinkType to be configured, Ethernet|Infiniband. Required unless networkBay is configured;
	// for Network Bay the link type is governed by the system configuration and must not be set.
	// +kubebuilder:validation:Enum=Ethernet;Infiniband
	// +optional
	LinkType nicconfigv1alpha1.LinkTypeEnum `json:"linkType,omitempty"`
	// Spectrum-X optimization settings. Works only with linkType==Ethernet && numVfs==1. RawNvConfig parameters, if provided, are merged as overrides on top of Spectrum-X calculated params.
	SpectrumXOptimized *nicconfigv1alpha1.SpectrumXOptimizedSpec `json:"spectrumXOptimized,omitempty"`
	// List of arbitrary nv config parameters
	RawNvConfig []nicconfigv1alpha1.NvConfigParam `json:"rawNvConfig,omitempty"`
	// NetworkBay configures a ConnectX-9 Network Bay card (per-ASIC set_system_conf). Allowed only for ConnectX-9 (nicType 1025).
	// +optional
	NetworkBay *nicconfigv1alpha1.NetworkBaySpec `json:"networkBay,omitempty"`
	// Force passes `--force` to mlxconfig set commands. When set, the daemon
	// applies the nv config batch and set_system_conf with --force, letting
	// mlxconfig accept a batch it would otherwise refuse due to implicit
	// parameter dependencies.
	// +optional
	// +kubebuilder:default:=false
	Force bool `json:"force,omitempty"`
}

NicConfiguration is a set of configurations for the NICs +kubebuilder:validation:XValidation:rule="!(has(self.spectrumXOptimized) && self.spectrumXOptimized.enabled) || ((!has(self.linkType) || self.linkType == 'Ethernet') && self.numVfs == 1)",message="spectrumXOptimized can be enabled only when linkType=='Ethernet' (or unset for Network Bay) and numVfs==1" +kubebuilder:validation:XValidation:rule="has(self.networkBay) || has(self.linkType)",message="linkType is required unless networkBay is configured" +kubebuilder:validation:XValidation:rule="!has(self.networkBay) || !has(self.linkType)",message="linkType must not be set when networkBay is configured (the Network Bay link type is governed by the system configuration)" +kubebuilder:validation:XValidation:rule="!has(self.networkBay) || self.networkBay.conf != \"\"",message="networkBay.conf must not be empty"

func (*NicConfiguration) DeepCopy

func (in *NicConfiguration) DeepCopy() *NicConfiguration

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

func (*NicConfiguration) DeepCopyInto

func (in *NicConfiguration) DeepCopyInto(out *NicConfiguration)

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

type NodeEffect

type NodeEffect struct {
	Action        `json:",inline"`
	UpgradePolicy `json:",inline"`
}

NodeEffect is the effect the DPU has on Nodes during provisioning. Only one of Taint, NoEffect, CustomLabel, Drain, CustomAction, Hold can be set.

func (*NodeEffect) DeepCopy

func (in *NodeEffect) DeepCopy() *NodeEffect

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

func (*NodeEffect) DeepCopyInto

func (in *NodeEffect) DeepCopyInto(out *NodeEffect)

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

func (*NodeEffect) IsCustomAction

func (n *NodeEffect) IsCustomAction() bool

func (*NodeEffect) IsCustomLabel

func (n *NodeEffect) IsCustomLabel() bool

func (*NodeEffect) IsDrain

func (n *NodeEffect) IsDrain() bool

func (*NodeEffect) IsHold

func (n *NodeEffect) IsHold() bool

func (*NodeEffect) IsNoEffect

func (n *NodeEffect) IsNoEffect() bool

func (*NodeEffect) IsTaint

func (n *NodeEffect) IsTaint() bool

func (*NodeEffect) String

func (n *NodeEffect) String() string

type NodeRebootMethod

type NodeRebootMethod struct {
	// Use the DPU's DMS interface to reboot the host.
	//
	// Deprecated: Use HostAgent instead.
	// +optional
	GNOI *GNOI `json:"gNOI,omitempty"`
	// Use the HostAgent to reboot the host.
	// +optional
	HostAgent *HostAgent `json:"hostAgent,omitempty"`
	// Reboot the host via an external means, not controlled by the DPU controller.
	// +optional
	External *External `json:"external,omitempty"`
	// Reboot the host by executing a custom script. This field defined which ConfigMap store the custom script.
	// The ConfigMap should include a pod template of Job object under the `pod-template` key.
	// That pod template will be put in a Job object to be executed.
	// +optional
	Script *Script `json:"script,omitempty"`
	// Do not reboot a host through the DPUNode. Used for hostless devices where
	// DPF manages the DPU reboot directly through Redfish.
	// +optional
	None *None `json:"none,omitempty"`
}

NodeRebootMethod defines the desired reboot method +kubebuilder:validation:XValidation:rule="(((has(self.hostAgent) || has(self.gNOI)) && !has(self.external) && !has(self.script) && !has(self.none)) || (has(self.external) && !has(self.hostAgent) && !has(self.gNOI) && !has(self.script) && !has(self.none)) || (has(self.script) && !has(self.external) && !has(self.hostAgent) && !has(self.gNOI) && !has(self.none)) || (has(self.none) && !has(self.external) && !has(self.hostAgent) && !has(self.gNOI) && !has(self.script)))", message="only one of hostAgent, external, script, none can be set"

func (*NodeRebootMethod) DeepCopy

func (in *NodeRebootMethod) DeepCopy() *NodeRebootMethod

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

func (*NodeRebootMethod) DeepCopyInto

func (in *NodeRebootMethod) DeepCopyInto(out *NodeRebootMethod)

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

type None

type None struct{}

func (*None) DeepCopy

func (in *None) DeepCopy() *None

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

func (*None) DeepCopyInto

func (in *None) DeepCopyInto(out *None)

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

type ObservedSecretKeyRef

type ObservedSecretKeyRef struct {
	// Name is the name of the Secret.
	// +kubebuilder:validation:MinLength=1
	// +required
	Name string `json:"name,omitempty"`

	// Key is the key within the Secret data.
	// +kubebuilder:validation:MinLength=1
	// +required
	Key string `json:"key,omitempty"`

	// Namespace is the namespace of the Secret.
	// +kubebuilder:validation:MinLength=1
	// +required
	Namespace string `json:"namespace,omitempty"`

	// UID is the UID of the Secret.
	// +kubebuilder:validation:MinLength=1
	// +required
	UID string `json:"uid,omitempty"`

	// ResourceVersion is the resourceVersion of the Secret.
	// +kubebuilder:validation:MinLength=1
	// +required
	ResourceVersion string `json:"resourceVersion,omitempty"`
}

ObservedSecretKeyRef identifies an observed source Secret version.

func (*ObservedSecretKeyRef) DeepCopy

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

func (*ObservedSecretKeyRef) DeepCopyInto

func (in *ObservedSecretKeyRef) DeepCopyInto(out *ObservedSecretKeyRef)

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

type PackageSpec

type PackageSpec struct {
	// Name is the package name.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Name string `json:"name"`
	// Version constrains the package version.
	// If empty, any installed version satisfies the spec.
	// +optional
	Version *PackageVersionSpec `json:"version,omitempty"`
	// RepoFileRef constrains package resolution to a specific repository file available on the node.
	// If empty, any configured repository may satisfy the package.
	// If specified, only the referenced repository file may provide candidates.
	// If that repository file does not provide the package or requested version, the dpu-agent flow does not continue.
	// +optional
	RepoFileRef string `json:"repoFileRef,omitempty"`
}

PackageSpec defines a package to reconcile on the node.

func (*PackageSpec) DeepCopy

func (in *PackageSpec) DeepCopy() *PackageSpec

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

func (*PackageSpec) DeepCopyInto

func (in *PackageSpec) DeepCopyInto(out *PackageSpec)

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

type PackageVersionMatchPolicy

type PackageVersionMatchPolicy string

PackageVersionMatchPolicy defines how a package version constraint is evaluated.

const (
	// PackageVersionMatchExact requires the installed package version to equal Value.
	PackageVersionMatchExact PackageVersionMatchPolicy = "Exact"

	// PackageVersionMatchAtLeast requires the installed package version to be greater than or equal to Value.
	PackageVersionMatchAtLeast PackageVersionMatchPolicy = "AtLeast"
)

type PackageVersionSpec

type PackageVersionSpec struct {
	// Value is the package version to compare against.
	// +kubebuilder:validation:MinLength=1
	Value string `json:"value"`
	// MatchPolicy controls how Value is matched.
	// If omitted, AtLeast is used.
	// +kubebuilder:validation:Enum=Exact;AtLeast
	// +kubebuilder:default=AtLeast
	// +optional
	MatchPolicy PackageVersionMatchPolicy `json:"matchPolicy,omitempty"`
}

PackageVersionSpec defines a package version constraint.

func (*PackageVersionSpec) DeepCopy

func (in *PackageVersionSpec) DeepCopy() *PackageVersionSpec

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

func (*PackageVersionSpec) DeepCopyInto

func (in *PackageVersionSpec) DeepCopyInto(out *PackageVersionSpec)

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

type PendingNVConfigDevice

type PendingNVConfigDevice struct {
	Device  string                 `json:"device,omitempty"`
	Entries []PendingNVConfigEntry `json:"entries"`
}

func (*PendingNVConfigDevice) DeepCopy

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

func (*PendingNVConfigDevice) DeepCopyInto

func (in *PendingNVConfigDevice) DeepCopyInto(out *PendingNVConfigDevice)

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

type PendingNVConfigEntry

type PendingNVConfigEntry struct {
	Name    string `json:"name,omitempty"`
	Default string `json:"default,omitempty"`
	Current string `json:"current,omitempty"`
	// NextBoot uses the "next_boot" so this type can be reused for parsing mlxfwrest output
	NextBoot string `json:"next_boot,omitempty"`
}

func (*PendingNVConfigEntry) DeepCopy

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

func (*PendingNVConfigEntry) DeepCopyInto

func (in *PendingNVConfigEntry) DeepCopyInto(out *PendingNVConfigEntry)

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

type PendingNVConfigState

type PendingNVConfigState struct {
	BootID  string                  `json:"bootID,omitempty"`
	Devices []PendingNVConfigDevice `json:"devices,omitempty"`
}

func (*PendingNVConfigState) DeepCopy

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

func (*PendingNVConfigState) DeepCopyInto

func (in *PendingNVConfigState) DeepCopyInto(out *PendingNVConfigState)

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

type RebootMethodType

type RebootMethodType string

RebootMethodType is the type of reset/reboot required after NVConfig or firmware changes. Set by the DPU agent. Most values align with NVIDIA BlueField Reset and Reboot Procedures (mlxfwreset levels). +kubebuilder:validation:Enum=Unknown;NoAction;PowerCycle;SystemReboot;SystemLevelReset;FirmwareReset;DPUWarmReboot

const (
	// RebootMethodUnknown is the initial value set by the DPU agent on startup before
	// HandleReboot determines the actual method. It prevents the controller from acting
	// on a stale RebootMethod left over from a previous agent session.
	RebootMethodUnknown RebootMethodType = "Unknown"
	// RebootMethodNoAction indicates no reset or reboot is required.
	RebootMethodNoAction RebootMethodType = "NoAction"
	// RebootMethodPowerCycle indicates a full server power cycle (cold boot) is required.
	RebootMethodPowerCycle RebootMethodType = "PowerCycle"
	// RebootMethodSystemReboot firmware update without full server power cycle.
	RebootMethodSystemReboot RebootMethodType = "SystemReboot"
	// RebootMethodSystemLevelReset firmware configuration changes to take effect.
	RebootMethodSystemLevelReset RebootMethodType = "SystemLevelReset"
	// RebootMethodFirmwareReset driver restart and PCI reset.
	RebootMethodFirmwareReset RebootMethodType = "FirmwareReset"
	// RebootMethodDPUWarmReboot indicates the DPU OS is rebooting itself to apply
	// configuration changes (e.g. grub kernel parameters) that do not originate
	// from firmware or NVConfig. The provisioning controller should stay in the
	// current phase and wait for the agent to come back.
	RebootMethodDPUWarmReboot RebootMethodType = "DPUWarmReboot"
)

type RebootStatus

type RebootStatus struct {
	// Phase is the current host reboot progress.
	Phase RebootStatusPhase `json:"phase,omitempty"`
	// Method is the recommended reboot method.
	// +optional
	Method *RebootMethodType `json:"method,omitempty"`
	// Reason indicates machine-readable reason for current phase.
	// +optional
	Reason string `json:"reason,omitempty"`
	// Message provides human-readable details for current phase.
	// +optional
	Message string `json:"message,omitempty"`
	// LastTransitionTime is the last update time for reboot status.
	// +optional
	LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty"`
}

RebootStatus stores the host reboot execution status.

func (*RebootStatus) DeepCopy

func (in *RebootStatus) DeepCopy() *RebootStatus

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

func (*RebootStatus) DeepCopyInto

func (in *RebootStatus) DeepCopyInto(out *RebootStatus)

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

type RebootStatusPhase

type RebootStatusPhase string

RebootStatusPhase is the host reboot progress phase. +kubebuilder:validation:Enum=WaitForShutdown;Pending;Succeeded;Failed;Unknown

const (
	// RebootStatusWaitForShutdown means the host reboot is held until the DPU has
	// completed its graceful shutdown. Used in Zero Trust mode for a System Level
	// Reset so the External/Script host reboot is not triggered while the Arm OS is
	// still shutting down.
	RebootStatusWaitForShutdown RebootStatusPhase = "WaitForShutdown"
	// RebootStatusPending means reboot is requested but execution has not started yet
	// (for example, waiting for a manual external reboot trigger).
	RebootStatusPending RebootStatusPhase = "Pending"
	// RebootStatusSucceeded means reboot completed successfully.
	RebootStatusSucceeded RebootStatusPhase = "Succeeded"
	// RebootStatusFailed means reboot execution failed.
	RebootStatusFailed RebootStatusPhase = "Failed"
	// RebootStatusUnknown means reboot execution state cannot be determined.
	RebootStatusUnknown RebootStatusPhase = "Unknown"
)

type RollingUpdateDPU

type RollingUpdateDPU struct {
	// MaxUnavailable is the maximum number of DPUs that can be unavailable during the update.
	//
	// Deprecated: This field is deprecated and will be removed with v27.1.0.
	// +optional
	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
}

RollingUpdateDPU is the rolling update strategy for a DPUSet.

func (*RollingUpdateDPU) DeepCopy

func (in *RollingUpdateDPU) DeepCopy() *RollingUpdateDPU

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

func (*RollingUpdateDPU) DeepCopyInto

func (in *RollingUpdateDPU) DeepCopyInto(out *RollingUpdateDPU)

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

type ScalableFunction

type ScalableFunction struct {
	// Count is SFs to create per selected device. With device "*", count 20 is 20 SFs
	// on each port. Zero creates nothing.
	// +kubebuilder:validation:Minimum=0
	// +required
	Count *int32 `json:"count,omitempty"`

	// Device is the target port: "*", a name such as p0, or a PCI address. Defaults to "*".
	// +kubebuilder:validation:Pattern=`^(\*|[pP][0-9]+|[0-9a-fA-F]{4}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\.[0-7])$`
	// +optional
	Device *string `json:"device,omitempty"`

	// HostDevice creates the SFs on the host (representors on the DPU). Implies
	// controller 1; options.controller overrides. Host SFs use the host firmware
	// budget and must not set poolName.
	// +optional
	HostDevice *bool `json:"hostDevice,omitempty"`

	// PoolName is the device-plugin resource (for example bf_sf). Unset: created in
	// hardware only. Forbidden with hostDevice.
	// +kubebuilder:validation:MaxLength=63
	// +kubebuilder:validation:Pattern=`^[A-Za-z0-9][A-Za-z0-9_.-]*$`
	// +optional
	PoolName *string `json:"poolName,omitempty"`

	// Options are creation settings for this group.
	// +optional
	Options *ScalableFunctionOptions `json:"options,omitempty"`
}

ScalableFunction is one group of SFs to create. +kubebuilder:validation:XValidation:rule="!has(self.options) || !has(self.options.macAddress) || self.count == 1",message="options.macAddress requires count == 1" +kubebuilder:validation:XValidation:rule="!has(self.hostDevice) || !self.hostDevice || !has(self.poolName)",message="poolName must not be set when hostDevice is true"

func (*ScalableFunction) DeepCopy

func (in *ScalableFunction) DeepCopy() *ScalableFunction

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

func (*ScalableFunction) DeepCopyInto

func (in *ScalableFunction) DeepCopyInto(out *ScalableFunction)

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

type ScalableFunctionOptions

type ScalableFunctionOptions struct {
	// MACAddress pins the SF MAC (colon-separated 48-bit). Requires count 1.
	// +kubebuilder:validation:Pattern=`^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$`
	// +optional
	MACAddress *string `json:"macAddress,omitempty"`

	// SFNumStart is the first sfnum of the group; the rest are sequential from it.
	// Reserved before agent-numbered groups, which fill from 0 around them.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=65535
	// +optional
	SFNumStart *int32 `json:"sfNumStart,omitempty"`

	// Trusted creates the SFs as trusted functions.
	// +optional
	Trusted *bool `json:"trusted,omitempty"`

	// Controller is the external controller to create on. Overrides hostDevice.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=15
	// +optional
	Controller *int32 `json:"controller,omitempty"`

	// CPUList pins the SFs to CPUs in mlnx-sf list form, for example 0-3 or 0,2,4.
	// +kubebuilder:validation:MaxLength=200
	// +kubebuilder:validation:Pattern=`^[0-9]+(-[0-9]+)?(,[0-9]+(-[0-9]+)?)*$`
	// +optional
	CPUList *string `json:"cpuList,omitempty"`

	// DisableRoCE creates the SFs with RoCE disabled.
	// +optional
	DisableRoCE *bool `json:"disableRoCE,omitempty"`

	// DisableNetdev leaves the SFs without an ethernet netdev.
	// +optional
	DisableNetdev *bool `json:"disableNetdev,omitempty"`
}

ScalableFunctionOptions are per-group SF creation settings.

func (*ScalableFunctionOptions) DeepCopy

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

func (*ScalableFunctionOptions) DeepCopyInto

func (in *ScalableFunctionOptions) DeepCopyInto(out *ScalableFunctionOptions)

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

type Script

type Script struct {
	// +kubebuilder:validation:MinLength=1
	// +required
	Name string `json:"name"`
}

func (*Script) DeepCopy

func (in *Script) DeepCopy() *Script

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

func (*Script) DeepCopyInto

func (in *Script) DeepCopyInto(out *Script)

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

type SecureBootStatus

type SecureBootStatus struct {
	// Enabled indicates whether UEFI Secure Boot is currently enabled on the DPU.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

SecureBootStatus represents the UEFI Secure Boot configuration status on the DPU.

func (*SecureBootStatus) DeepCopy

func (in *SecureBootStatus) DeepCopy() *SecureBootStatus

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

func (*SecureBootStatus) DeepCopyInto

func (in *SecureBootStatus) DeepCopyInto(out *SecureBootStatus)

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

type ServiceReadiness

type ServiceReadiness struct {
	// gate is the DPU.status.operationalConditions entry that must be True before the DPU leaves
	// the Service Readiness phase. When unset the phase does not wait, and a host hold requested
	// via DELAY_HOST_OS_INIT is released on DPUServiceCriticalPodsReady.
	// +optional
	Gate ServiceReadinessGate `json:"gate,omitempty"`
}

ServiceReadiness configures the Service Readiness provisioning phase.

func (*ServiceReadiness) DeepCopy

func (in *ServiceReadiness) DeepCopy() *ServiceReadiness

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

func (*ServiceReadiness) DeepCopyInto

func (in *ServiceReadiness) DeepCopyInto(out *ServiceReadiness)

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

type ServiceReadinessGate

type ServiceReadinessGate string

ServiceReadinessGate names a DPU operational condition. Values match DPUOperationalConditionType. +kubebuilder:validation:Enum=DPUServiceCriticalPodsReady;OperationalReady

const (
	// GateDPUServiceCriticalPodsReady waits for
	// DPU.status.operationalConditions[DPUServiceCriticalPodsReady] == True.
	GateDPUServiceCriticalPodsReady ServiceReadinessGate = "DPUServiceCriticalPodsReady"
	// GateOperationalReady waits for DPU.status.operationalConditions[OperationalReady] == True.
	GateOperationalReady ServiceReadinessGate = "OperationalReady"
)

type SpiffeStatus

type SpiffeStatus struct {
	// LastProbeTime is the wall-clock timestamp the DPU Agent recorded on its most recent successful
	// status report. It is informational and subject to DPU clock skew, so it is not a precise
	// liveness signal on its own.
	// +optional
	LastProbeTime *metav1.Time `json:"lastProbeTime,omitempty"`

	// LastProbeMessage is a structured one-line diagnostic for the most recent self-probe. Unset in
	// the steady-state happy path. Bounded to 256 chars (truncated agent-side).
	// +kubebuilder:validation:MaxLength=256
	// +optional
	LastProbeMessage *string `json:"lastProbeMessage,omitempty"`
}

SpiffeStatus is the DPU Agent's SPIFFE heartbeat sub-status.

func (*SpiffeStatus) DeepCopy

func (in *SpiffeStatus) DeepCopy() *SpiffeStatus

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

func (*SpiffeStatus) DeepCopyInto

func (in *SpiffeStatus) DeepCopyInto(out *SpiffeStatus)

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

type StrategyType

type StrategyType string

StrategyType describes strategy to use to reprovision existing DPUs. +kubebuilder:validation:Enum=OnDelete;RollingUpdate

const (
	DPUSetFinalizer = "provisioning.dpu.nvidia.com/dpuset-protection"

	// New DPU CR will only be created when you manually delete old DPU CR.
	OnDeleteStrategyType StrategyType = "OnDelete"

	// Gradually scale down the old DPUs and scale up the new one.
	RollingUpdateStrategyType StrategyType = "RollingUpdate"
)

type SystemdServiceOperation

type SystemdServiceOperation string

SystemdServiceOperation defines the operation to perform on a systemd service. +kubebuilder:validation:Enum=Start;Enable;EnableAndStart

const (
	// SystemdServiceStart starts the service without enabling it at boot.
	SystemdServiceStart SystemdServiceOperation = "Start"

	// SystemdServiceEnable enables the service at boot without starting it immediately.
	SystemdServiceEnable SystemdServiceOperation = "Enable"

	// SystemdServiceEnableAndStart enables the service at boot and starts it immediately (equivalent to systemctl enable --now).
	SystemdServiceEnableAndStart SystemdServiceOperation = "EnableAndStart"
)

type SystemdServiceSpec

type SystemdServiceSpec struct {
	// Name is the systemd service name.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Name string `json:"name"`
	// Operation is the systemd operation to perform on the service.
	Operation SystemdServiceOperation `json:"operation"`
}

SystemdServiceSpec defines a systemd service to manage on the node.

func (*SystemdServiceSpec) DeepCopy

func (in *SystemdServiceSpec) DeepCopy() *SystemdServiceSpec

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

func (*SystemdServiceSpec) DeepCopyInto

func (in *SystemdServiceSpec) DeepCopyInto(out *SystemdServiceSpec)

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

type TrustBundleStatus

type TrustBundleStatus struct {
	// ObservedBundleHash records the last successfully applied bundle hash.
	// +optional
	ObservedBundleHash *string `json:"observedBundleHash,omitempty"`
	// LastUpdateTime is when the last successful reconciliation completed.
	// +optional
	LastUpdateTime *metav1.Time `json:"lastUpdateTime,omitempty"`
}

TrustBundleStatus reports reconciliation progress for a CA trust bundle.

func (*TrustBundleStatus) DeepCopy

func (in *TrustBundleStatus) DeepCopy() *TrustBundleStatus

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

func (*TrustBundleStatus) DeepCopyInto

func (in *TrustBundleStatus) DeepCopyInto(out *TrustBundleStatus)

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

type UpgradePolicy

type UpgradePolicy struct {
	// Apply node effect when labels change on the DPU object
	// When set to true, label changes in Ready state will trigger node effect logic
	// +optional
	// +kubebuilder:default=false
	ApplyOnLabelChange *bool `json:"applyOnLabelChange,omitempty"`
	// Additional requestors to be added to the NvidiaNodeMaintenance CR when Drain is selected
	// +optional
	NodeMaintenanceAdditionalRequestors []string `json:"nodeMaintenanceAdditionalRequestors,omitempty"`
}

UpgradePolicy is the policy for the upgrade of the DPUSet.

func (*UpgradePolicy) DeepCopy

func (in *UpgradePolicy) DeepCopy() *UpgradePolicy

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

func (*UpgradePolicy) DeepCopyInto

func (in *UpgradePolicy) DeepCopyInto(out *UpgradePolicy)

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

type VirtualFunction

type VirtualFunction struct {
	// Count is VFs to create per selected device. Groups ending up on the same device sum to
	// a single `sriov_numvfs` and then list order assigns contiguous index ranges. Zero creates nothing.
	// +kubebuilder:validation:Minimum=0
	// +required
	Count *int32 `json:"count,omitempty"`

	// Device is the target port: "*", a name such as p0, or a PCI address. Defaults to "*".
	// +kubebuilder:validation:Pattern=`^(\*|[pP][0-9]+|[0-9a-fA-F]{4}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\.[0-7])$`
	// +optional
	Device *string `json:"device,omitempty"`

	// PoolName is the device-plugin resource (for example bf_vf). Unset: created in
	// hardware only.
	// +kubebuilder:validation:MaxLength=63
	// +kubebuilder:validation:Pattern=`^[A-Za-z0-9][A-Za-z0-9_.-]*$`
	// +optional
	PoolName *string `json:"poolName,omitempty"`

	// Options are creation settings for this group.
	// +optional
	Options *VirtualFunctionOptions `json:"options,omitempty"`
}

VirtualFunction is one group of VFs to create. +kubebuilder:validation:XValidation:rule="!has(self.options) || !has(self.options.macAddress) || self.count == 1",message="options.macAddress requires count == 1"

func (*VirtualFunction) DeepCopy

func (in *VirtualFunction) DeepCopy() *VirtualFunction

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

func (*VirtualFunction) DeepCopyInto

func (in *VirtualFunction) DeepCopyInto(out *VirtualFunction)

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

type VirtualFunctionOptions

type VirtualFunctionOptions struct {
	// MACAddress sets the VF MAC (colon-separated 48-bit). Requires count 1.
	// +kubebuilder:validation:Pattern=`^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$`
	// +optional
	MACAddress *string `json:"macAddress,omitempty"`
}

VirtualFunctionOptions are per-group VF creation settings.

func (*VirtualFunctionOptions) DeepCopy

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

func (*VirtualFunctionOptions) DeepCopyInto

func (in *VirtualFunctionOptions) DeepCopyInto(out *VirtualFunctionOptions)

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

Jump to

Keyboard shortcuts

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