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
- Variables
- func BlueFieldSoftwareFinalizerForDPUSet(dpuSetName string) string
- func GetNodeProblemDetectorConditions() []string
- type Action
- type AgentPreInstallStatus
- type AgentStatus
- type BFB
- type BFBList
- type BFBPhase
- type BFBReference
- type BFBSpec
- type BFBStatus
- type BFBVersions
- type BMCFactoryResetPolicy
- type BlueFieldSoftware
- func (in *BlueFieldSoftware) DeepCopy() *BlueFieldSoftware
- func (in *BlueFieldSoftware) DeepCopyInto(out *BlueFieldSoftware)
- func (in *BlueFieldSoftware) DeepCopyObject() runtime.Object
- func (b *BlueFieldSoftware) GetConditions() []metav1.Condition
- func (b *BlueFieldSoftware) SetConditions(conditions []metav1.Condition)
- type BlueFieldSoftwareList
- type BlueFieldSoftwarePhase
- type BlueFieldSoftwareReference
- type BlueFieldSoftwareStatus
- type BlueFieldSpec
- type BluefieldDeviceVersions
- type BluefieldSoftwareVersions
- type CertificateStatus
- type ClockStatus
- type ClusterEndpointSpec
- type ClusterPhase
- type ClusterSpec
- type ClusterType
- type ConditionType
- type ConfigFile
- type ConfigFileContentSource
- type ConfigFileType
- type ContainerdConfig
- type DMSAddress
- type DPU
- type DPUCluster
- type DPUClusterEtcdEncryptionAtRestStatus
- type DPUClusterList
- type DPUClusterSpec
- type DPUClusterStaticKeyEncryptionStatus
- type DPUClusterStatus
- type DPUConditionMessage
- type DPUConditionType
- type DPUDevice
- func (d *DPUDevice) BMCAddress() string
- func (in *DPUDevice) DeepCopy() *DPUDevice
- func (in *DPUDevice) DeepCopyInto(out *DPUDevice)
- func (in *DPUDevice) DeepCopyObject() runtime.Object
- func (d *DPUDevice) GetConditions() []metav1.Condition
- func (d *DPUDevice) SetConditions(conditions []metav1.Condition)
- type DPUDeviceClusterSpec
- type DPUDeviceList
- type DPUDeviceSpec
- type DPUDeviceStatus
- type DPUDiscovery
- type DPUDiscoveryList
- type DPUDiscoverySpec
- type DPUDiscoveryStatus
- type DPUFLavorSysctl
- type DPUFlavor
- type DPUFlavorDMA
- type DPUFlavorFileOp
- type DPUFlavorGrub
- type DPUFlavorList
- type DPUFlavorOVS
- type DPUFlavorSpec
- type DPUFlavorTemplate
- type DPUFlavorTemplateList
- type DPUFlavorTemplateSpec
- type DPUInfoConditionType
- type DPUInstallInterfaceType
- type DPUList
- type DPUNode
- type DPUNodeConditionType
- type DPUNodeInstallInterfaceType
- type DPUNodeList
- type DPUNodeMaintenance
- func (in *DPUNodeMaintenance) DeepCopy() *DPUNodeMaintenance
- func (in *DPUNodeMaintenance) DeepCopyInto(out *DPUNodeMaintenance)
- func (in *DPUNodeMaintenance) DeepCopyObject() runtime.Object
- func (c *DPUNodeMaintenance) GetConditions() []metav1.Condition
- func (c *DPUNodeMaintenance) SetConditions(conditions []metav1.Condition)
- type DPUNodeMaintenanceList
- type DPUNodeMaintenanceSpec
- type DPUNodeMaintenanceStatus
- type DPUNodeSpec
- type DPUNodeStatus
- type DPUOperationalConditionType
- type DPUOutdated
- type DPUPhase
- type DPUReconfigStatus
- type DPURef
- type DPUSet
- func (in *DPUSet) DeepCopy() *DPUSet
- func (in *DPUSet) DeepCopyInto(out *DPUSet)
- func (in *DPUSet) DeepCopyObject() runtime.Object
- func (c *DPUSet) GetConditions() []metav1.Condition
- func (c *DPUSet) IsAstraEnabledForNonBlueField4(dpuDevice DPUDevice) bool
- func (c *DPUSet) SetConditions(conditions []metav1.Condition)
- type DPUSetList
- type DPUSetReconfigStatus
- type DPUSetSpec
- type DPUSetStatus
- type DPUSetStrategy
- type DPUSpec
- type DPUStatus
- type DPUTemplate
- type DPUTemplateSpec
- type DPUType
- type DeploymentMode
- type DownloadedComponents
- type DpuModeType
- type External
- type Firmware
- type GNOI
- type HostAgent
- type HostOSInitSkipped
- type HostOSInitStatus
- type HostOSInitSucceeded
- type IPRange
- type IPRangeValidationSpec
- type IdentityMode
- type K8sCluster
- type KeepalivedSpec
- type NVConfig
- type NetworkInterfaceConfig
- type NicConfiguration
- type NodeEffect
- func (in *NodeEffect) DeepCopy() *NodeEffect
- func (in *NodeEffect) DeepCopyInto(out *NodeEffect)
- func (n *NodeEffect) IsCustomAction() bool
- func (n *NodeEffect) IsCustomLabel() bool
- func (n *NodeEffect) IsDrain() bool
- func (n *NodeEffect) IsHold() bool
- func (n *NodeEffect) IsNoEffect() bool
- func (n *NodeEffect) IsTaint() bool
- func (n *NodeEffect) String() string
- type NodeRebootMethod
- type None
- type ObservedSecretKeyRef
- type PackageSpec
- type PackageVersionMatchPolicy
- type PackageVersionSpec
- type PendingNVConfigDevice
- type PendingNVConfigEntry
- type PendingNVConfigState
- type RebootMethodType
- type RebootStatus
- type RebootStatusPhase
- type RollingUpdateDPU
- type ScalableFunction
- type ScalableFunctionOptions
- type Script
- type SecureBootStatus
- type ServiceReadiness
- type ServiceReadinessGate
- type SpiffeStatus
- type StrategyType
- type SystemdServiceOperation
- type SystemdServiceSpec
- type TrustBundleStatus
- type UpgradePolicy
- type VirtualFunction
- type VirtualFunctionOptions
Constants ¶
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" )
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" )
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" )
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
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.
const ( FinalizerCleanUp = "provisioning.dpu.nvidia.com/cluster-manager-clean-up" FinalizerInternalCleanUp = "provisioning.dpu.nvidia.com/cluster-manager-internal-clean-up" )
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" )
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" )
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
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
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" // already referenced by another DPUDevice and must not be shared. ReasonSharedCredentialSecretNotAllowed = "SharedCredentialSecretNotAllowed" // ReasonCATrustBundleSyncFailed indicates CA trust bundle sync to BMC failed. ReasonCATrustBundleSyncFailed = "CATrustBundleSyncFailed" ReasonCATrustBundleUnavailable = "CATrustBundleUnavailable" )
BMCCredentialsReady condition reasons
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
const ( // DPUNodeKind is the kind of the DPUNode object DPUNodeKind = "DPUNode" DPUNodeFinalizer = "provisioning.dpu.nvidia.com/dpunode-protection" )
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" )
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" )
const ( ConditionNodeEffectApplied conditions.ConditionType = "NodeEffectApplied" ConditionNodeEffectRemoved conditions.ConditionType = "NodeEffectRemoved" )
Status related variables
const ( // DPUSetKind is the kind of the DPUSet object DPUSetKind = "DPUSet" // DPUSetListKind is the kind of the DPUSetList object DPUSetListKind = "DPUSetList" )
const ( NodeEffectDrain = "Drain" NodeEffectCustomAction = "CustomAction" NodeEffectHold = "Hold" NodeEffectTaint = "Taint" NodeEffectCustomLabel = "CustomLabel" NodeEffectNoEffect = "NoEffect" NodeEffectUnknown = "Unknown" )
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" )
const ( DPUProvisioningGroup = "provisioning.dpu.nvidia.com" DPUProvisioningPrefix = DPUProvisioningGroup + "/" )
const (
// BFBKind is the kind of the BFB object
BFBKind = "BFB"
)
const (
// BlueFieldKind is the kind of the BlueField object
BlueFieldKind = "BlueFieldSoftware"
)
const (
DPUClusterKind = "DPUCluster"
)
const (
// DPUDiscoveryKind is the kind of the DPUDiscovery object
DPUDiscoveryKind = "DPUDiscovery"
)
const (
// DPUFlavorKind is the kind of the DPUFlavor object
DPUFlavorKind = "DPUFlavor"
)
const (
// DPUFlavorTemplateKind is the kind of the DPUFlavorTemplate object
DPUFlavorTemplateKind = "DPUFlavorTemplate"
)
Variables ¶
var ( DPUSetConditions = []conditions.ConditionType{ conditions.TypeReady, ConditionDPUSetReconciled, } DPUSetOwnedConditions = append(append([]conditions.ConditionType{}, DPUSetConditions...), ConditionDPUFlavorTemplateExists) )
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 )
var ( // BFBConditions are conditions that can be set on a BFB object. BFBConditions = []conditions.ConditionType{ BFBCondInitialized, BFBCondDownloaded, BFBCondReady, BFBCondError, BFBCondDeleted, } )
var BFBGroupVersionKind = GroupVersion.WithKind(BFBKind)
BFBGroupVersionKind is the GroupVersionKind of the BFB object
var BlueFieldGroupVersionKind = GroupVersion.WithKind(BlueFieldKind)
BlueFieldGroupVersionKind is the GroupVersionKind of the BlueField object
var ( // BlueFieldSoftwareConditions are conditions that can be set on a BlueFieldSoftware object. BlueFieldSoftwareConditions = []conditions.ConditionType{ BlueFieldSoftwareCondInitialized, BlueFieldSoftwareCondDownloaded, BlueFieldSoftwareCondReady, BlueFieldSoftwareCondError, BlueFieldSoftwareCondDeleted, } )
var DPUClusterGroupVersionKind = GroupVersion.WithKind(DPUClusterKind)
var ( // DPUDeviceConditions are conditions that can be set on a DPUDevice object. DPUDeviceConditions = []conditions.ConditionType{ ConditionDpuDeviceDiscovered, ConditionDpuDeviceBMCFactoryResetReady, ConditionDpuDeviceNodeAttached, ConditionDpuDeviceInitialized, ConditionDpuDeviceError, ConditionDpuDeviceReady, ConditionBMCCredentialsReady, ConditionSPIFFEEntryReady, ConditionDpuDeviceBMCServerCertificateReady, ConditionDpuDeviceCATrustBundleReady, } )
var DPUDeviceGroupVersionKind = GroupVersion.WithKind(DPUDeviceKind)
DPUDeviceGroupVersionKind is the GroupVersionKind of the DPUDevice object
var DPUDiscoveryGroupVersionKind = GroupVersion.WithKind(DPUDiscoveryKind)
DPUDiscoveryGroupVersionKind is the GroupVersionKind of the DPUDiscovery object
var DPUFlavorGroupVersionKind = GroupVersion.WithKind(DPUFlavorKind)
DPUFlavorGroupVersionKind is the GroupVersionKind of the DPUFlavor object
var DPUFlavorTemplateGroupVersionKind = GroupVersion.WithKind(DPUFlavorTemplateKind)
DPUFlavorTemplateGroupVersionKind is the GroupVersionKind of the DPUFlavorTemplate object
var DPUGroupVersionKind = GroupVersion.WithKind(DPUKind)
DPUGroupVersionKind is the GroupVersionKind of the DPU object
var DPUNodeGroupVersionKind = GroupVersion.WithKind(DPUNodeKind)
DPUNodeGroupVersionKind is the GroupVersionKind of the DPUNode object
var DPUNodeMaintenanceGroupVersionKind = GroupVersion.WithKind(DPUNodeMaintenanceKind)
DPUNodeMaintenanceGroupVersionKind is the GroupVersionKind of the DPUNodeMaintenance object
var DPUSetGroupVersionKind = GroupVersion.WithKind(DPUSetKind)
DPUSetGroupVersionKind is the GroupVersionKind of the DPUSet object
Functions ¶
func BlueFieldSoftwareFinalizerForDPUSet ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Action.
func (*Action) DeepCopyInto ¶
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 ¶
func (in *AgentPreInstallStatus) DeepCopy() *AgentPreInstallStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BFB.
func (*BFB) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*BFB) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*BFB) GetConditions ¶
GetConditions returns the conditions of the BFB
func (*BFB) SetConditions ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BFBList.
func (*BFBList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*BFBList) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BFBSpec.
func (*BFBSpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BFBStatus.
func (*BFBStatus) DeepCopyInto ¶
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 ¶
func (in *BlueFieldSoftwareList) DeepCopy() *BlueFieldSoftwareList
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 ¶
func (in *BlueFieldSoftwareReference) DeepCopy() *BlueFieldSoftwareReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlueFieldSoftwareReference.
func (*BlueFieldSoftwareReference) DeepCopyInto ¶
func (in *BlueFieldSoftwareReference) DeepCopyInto(out *BlueFieldSoftwareReference)
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 ¶
func (in *BlueFieldSoftwareStatus) DeepCopy() *BlueFieldSoftwareStatus
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 ¶
func (in *BluefieldDeviceVersions) DeepCopy() *BluefieldDeviceVersions
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 ¶
func (in *BluefieldSoftwareVersions) DeepCopy() *BluefieldSoftwareVersions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BluefieldSoftwareVersions.
func (*BluefieldSoftwareVersions) DeepCopyInto ¶
func (in *BluefieldSoftwareVersions) DeepCopyInto(out *BluefieldSoftwareVersions)
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 ¶
func (in *ConfigFileContentSource) DeepCopy() *ConfigFileContentSource
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPU.
func (*DPU) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DPU) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*DPU) GetConditions ¶
GetConditions returns the conditions of the DPUService.
func (*DPU) SetConditions ¶
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 ¶
func (in *DPUClusterEtcdEncryptionAtRestStatus) DeepCopy() *DPUClusterEtcdEncryptionAtRestStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPUClusterEtcdEncryptionAtRestStatus.
func (*DPUClusterEtcdEncryptionAtRestStatus) DeepCopyInto ¶
func (in *DPUClusterEtcdEncryptionAtRestStatus) DeepCopyInto(out *DPUClusterEtcdEncryptionAtRestStatus)
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 ¶
func (in *DPUClusterStaticKeyEncryptionStatus) DeepCopy() *DPUClusterStaticKeyEncryptionStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPUClusterStaticKeyEncryptionStatus.
func (*DPUClusterStaticKeyEncryptionStatus) DeepCopyInto ¶
func (in *DPUClusterStaticKeyEncryptionStatus) DeepCopyInto(out *DPUClusterStaticKeyEncryptionStatus)
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 (*DPUDevice) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPUDevice.
func (*DPUDevice) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DPUDevice) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*DPUDevice) GetConditions ¶
GetConditions returns the conditions of the DPUDevice.
func (*DPUDevice) SetConditions ¶
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 ¶
func (in *DPUDeviceClusterSpec) DeepCopy() *DPUDeviceClusterSpec
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 ¶
DMAEnabled reports whether spec.dma.enabled is set.
func (*DPUFlavor) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPUFlavor.
func (*DPUFlavor) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DPUFlavor) DeepCopyObject ¶
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 ¶
func (in *DPUFlavorTemplateList) DeepCopy() *DPUFlavorTemplateList
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 ¶
func (in *DPUFlavorTemplateSpec) DeepCopy() *DPUFlavorTemplateSpec
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPUList.
func (*DPUList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DPUList) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPUNode.
func (*DPUNode) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DPUNode) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*DPUNode) GetConditions ¶
func (*DPUNode) SetConditions ¶
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 ¶
func (in *DPUNodeMaintenanceList) DeepCopy() *DPUNodeMaintenanceList
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 ¶
func (in *DPUNodeMaintenanceSpec) DeepCopy() *DPUNodeMaintenanceSpec
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"`
// +kubebuilder:validation:Minimum=1
// +optional
MaxUnavailableDPUNodes *int32 `json:"maxUnavailableDPUNodes,omitempty"`
}
DPUNodeMaintenanceStatus defines the observed state of DPUNodeMaintenance
func (*DPUNodeMaintenanceStatus) DeepCopy ¶
func (in *DPUNodeMaintenanceStatus) DeepCopy() *DPUNodeMaintenanceStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPURef.
func (*DPURef) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPUSet.
func (*DPUSet) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*DPUSet) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*DPUSet) GetConditions ¶
func (*DPUSet) IsAstraEnabledForNonBlueField4 ¶
IsAstraEnabledForNonBlueField4 returns true if Astra is enabled on this DPUSet and the target DPUDevice is not a BlueField4.
func (*DPUSet) SetConditions ¶
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 ¶
func (in *DPUSetReconfigStatus) DeepCopy() *DPUSetReconfigStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPUSpec.
func (*DPUSpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DPUStatus.
func (*DPUStatus) DeepCopyInto ¶
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 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 ¶
func (in *DownloadedComponents) DeepCopy() *DownloadedComponents
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new External.
func (*External) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Firmware.
func (*Firmware) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GNOI.
func (*GNOI) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostAgent.
func (*HostAgent) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPRange.
func (*IPRange) DeepCopyInto ¶
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 ¶
func (in *IPRangeValidationSpec) DeepCopy() *IPRangeValidationSpec
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NVConfig.
func (*NVConfig) DeepCopyInto ¶
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 ¶
func (in *NetworkInterfaceConfig) DeepCopy() *NetworkInterfaceConfig
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new None.
func (*None) DeepCopyInto ¶
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 ¶
func (in *ObservedSecretKeyRef) DeepCopy() *ObservedSecretKeyRef
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 ¶
func (in *PendingNVConfigDevice) DeepCopy() *PendingNVConfigDevice
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 ¶
func (in *PendingNVConfigEntry) DeepCopy() *PendingNVConfigEntry
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 ¶
func (in *PendingNVConfigState) DeepCopy() *PendingNVConfigState
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 {
//
// 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 ¶
func (in *ScalableFunctionOptions) DeepCopy() *ScalableFunctionOptions
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Script.
func (*Script) DeepCopyInto ¶
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 ¶
func (in *VirtualFunctionOptions) DeepCopy() *VirtualFunctionOptions
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.