Documentation
¶
Overview ¶
Package v1 defines AICR's validator input format (v1alpha1).
Stability ¶
v1alpha1 is unstable and may have breaking changes before v1. Breaking changes at v1+ will require major version bumps (v2.0.0).
API Group ¶
validator.nvidia.com is a non-binding example. AICR ships no CRDs - external projects should use their own API groups.
Usage ¶
This package defines ValidationInput, the input format for AICR's validator plugins. It carries both validation configuration (phases, checks) and recipe context (ComponentRefs, Criteria, Constraints).
ValidationInput supports two usage patterns:
1. Standalone validation.yaml files (with apiVersion/kind/metadata) 2. Embedded in custom resources (metadata fields omitted via omitempty)
For external controllers that want to embed validation configuration, embed ValidationConfig directly (not ValidationInput) to avoid nested spec fields:
type MySpec struct {
Validation ValidationConfig `json:"validation"`
}
Index ¶
Constants ¶
const ( // CatalogAPIVersion is the supported catalog API version. CatalogAPIVersion = "validator.nvidia.com/v1alpha1" // CatalogKind is the supported catalog kind. CatalogKind = "ValidatorCatalog" )
const (
// KindValidationInput is the Kubernetes kind for ValidationInput resources.
KindValidationInput = "ValidationInput"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CatalogMetadata ¶
type CatalogMetadata struct {
Name string `json:"name" yaml:"name"`
Version string `json:"version" yaml:"version"` // SemVer
}
CatalogMetadata contains catalog-level metadata.
type EnvVar ¶
type EnvVar struct {
Name string `json:"name" yaml:"name"`
Value string `json:"value" yaml:"value"`
}
EnvVar is a name/value pair for container environment variables.
type NodeSelection ¶
type NodeSelection struct {
// Selector specifies label-based node selection.
Selector map[string]string `json:"selector,omitempty" yaml:"selector,omitempty"`
// MaxNodes limits the number of nodes to validate.
MaxNodes int `json:"maxNodes,omitempty" yaml:"maxNodes,omitempty"`
// ExcludeNodes lists node names to exclude from validation.
ExcludeNodes []string `json:"excludeNodes,omitempty" yaml:"excludeNodes,omitempty"`
}
NodeSelection defines node filtering for validation scope.
type ResourceRequirements ¶
type ResourceRequirements struct {
CPU string `json:"cpu,omitempty" yaml:"cpu,omitempty"`
Memory string `json:"memory,omitempty" yaml:"memory,omitempty"`
}
ResourceRequirements defines CPU and memory for a validator container.
type ValidationConfig ¶
type ValidationConfig struct {
// Readiness defines readiness validation phase settings.
Readiness *ValidationPhase `json:"readiness,omitempty" yaml:"readiness,omitempty"`
// Deployment defines deployment validation phase settings.
Deployment *ValidationPhase `json:"deployment,omitempty" yaml:"deployment,omitempty"`
// Performance defines performance validation phase settings.
Performance *ValidationPhase `json:"performance,omitempty" yaml:"performance,omitempty"`
// Conformance defines conformance validation phase settings.
Conformance *ValidationPhase `json:"conformance,omitempty" yaml:"conformance,omitempty"`
}
ValidationConfig defines validation phases and settings.
type ValidationInput ¶
type ValidationInput struct {
// APIVersion is the API version (optional, for standalone resource usage).
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
// Kind is always "ValidationInput" (optional, for standalone resource usage).
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
// Metadata contains validation metadata (optional, for standalone resource usage).
Metadata *ValidationMetadata `json:"metadata,omitempty" yaml:"metadata,omitempty"`
// Config defines the validation phases configuration.
Config ValidationConfig `json:"config" yaml:"config"`
// ComponentRefs lists the components to validate (optional).
ComponentRefs []recipe.ComponentRef `json:"componentRefs,omitempty" yaml:"componentRefs,omitempty"`
// Criteria specifies the cluster characteristics (optional).
Criteria recipe.Criteria `json:"criteria,omitempty" yaml:"criteria,omitempty"`
// Constraints are top-level readiness constraints evaluated before validation phases (optional).
Constraints []recipe.Constraint `json:"constraints,omitempty" yaml:"constraints,omitempty"`
}
ValidationInput is the complete validation input specification. Supports both standalone file usage (with full metadata) and embedded usage in CRs (metadata omitted).
Standalone usage (validation.yaml):
apiVersion: validator.nvidia.com/v1alpha1
kind: ValidationInput
metadata:
name: my-validation
version: 1.0.0
config:
readiness:
timeout: 10m
componentRefs: [...]
criteria: {...}
Embedded usage (in a CR):
spec:
validation:
config:
readiness:
timeout: 10m
componentRefs: [...]
criteria: {...}
func NewValidationInput ¶
func NewValidationInput() *ValidationInput
NewValidationInput creates a new empty ValidationInput instance.
func ToValidationInput ¶
func ToValidationInput(r *recipe.RecipeResult) *ValidationInput
ToValidationInput converts RecipeResult to ValidationInput for use with validators. This extracts the validation-relevant fields (ValidationConfig, ComponentRefs, Criteria) and discards recipe-specific metadata (AppliedOverlays, DeploymentOrder, etc.). Returns nil if the input RecipeResult is nil.
Populates optional APIVersion/Kind/Metadata fields to support standalone usage. When embedding in CRs, these fields can be omitted via omitempty tags.
type ValidationMetadata ¶
type ValidationMetadata struct {
// Name is a human-readable name for this validation.
Name string `json:"name,omitempty" yaml:"name,omitempty"`
// Version is the version of this validation specification.
Version string `json:"version,omitempty" yaml:"version,omitempty"`
}
ValidationMetadata contains validation-level metadata.
type ValidationPhase ¶
type ValidationPhase struct {
// Timeout is the maximum duration for this phase (e.g., "10m").
Timeout string `json:"timeout,omitempty" yaml:"timeout,omitempty"`
// Constraints are phase-level constraints to evaluate.
Constraints []recipe.Constraint `json:"constraints,omitempty" yaml:"constraints,omitempty"`
// Checks are named validation checks to run in this phase.
Checks []string `json:"checks,omitempty" yaml:"checks,omitempty"`
// NodeSelection defines which nodes to include in validation.
NodeSelection *NodeSelection `json:"nodeSelection,omitempty" yaml:"nodeSelection,omitempty"`
// Infrastructure references a componentRef that provides validation infrastructure.
// Example: "nccl-doctor" for performance testing.
Infrastructure string `json:"infrastructure,omitempty" yaml:"infrastructure,omitempty"`
}
ValidationPhase represents a single validation phase configuration.
type ValidatorCatalog ¶
type ValidatorCatalog struct {
// APIVersion is the API version (optional, for standalone resource usage).
APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
// Kind is always "ValidatorCatalog" (optional, for standalone resource usage).
Kind string `json:"kind,omitempty" yaml:"kind,omitempty"`
// Metadata contains catalog metadata (optional, for standalone resource usage).
Metadata *CatalogMetadata `json:"metadata,omitempty" yaml:"metadata,omitempty"`
// Validators is the list of validator entries (required).
Validators []ValidatorEntry `json:"validators" yaml:"validators"`
}
ValidatorCatalog is the top-level catalog document. Supports both standalone file usage (with full metadata) and embedded usage in CRs (metadata omitted).
Standalone usage (catalog.yaml):
apiVersion: validator.nvidia.com/v1alpha1 kind: ValidatorCatalog metadata: name: default version: 1.0.0 validators: [...]
Embedded usage (in a CR):
spec:
catalog:
validators: [...]
func (*ValidatorCatalog) ForPhase ¶
func (c *ValidatorCatalog) ForPhase(phase Phase) []ValidatorEntry
ForPhase returns validators filtered by phase.
type ValidatorEntry ¶
type ValidatorEntry struct {
// Name is the unique identifier for this validator, used in Job names.
Name string `json:"name" yaml:"name"`
// Phase is the validation phase: "deployment", "performance", or "conformance".
Phase string `json:"phase" yaml:"phase"`
// Description is a human-readable description of what this validator checks.
Description string `json:"description" yaml:"description"`
// Image is the OCI image reference for the validator container.
Image string `json:"image" yaml:"image"`
// Timeout is the maximum execution time for this validator.
// Maps to Job activeDeadlineSeconds.
Timeout time.Duration `json:"timeout" yaml:"timeout"`
// Args are the container arguments.
Args []string `json:"args,omitempty" yaml:"args,omitempty"`
// Env are environment variables to set in the container.
Env []EnvVar `json:"env,omitempty" yaml:"env,omitempty"`
// Resources specifies container resource requests/limits.
// If nil, defaults from pkg/defaults are used.
Resources *ResourceRequirements `json:"resources,omitempty" yaml:"resources,omitempty"`
}
ValidatorEntry defines a single validator container.
func FilterEntriesByValidation ¶
func FilterEntriesByValidation(entries []ValidatorEntry, phase Phase, validationInput *ValidationInput) []ValidatorEntry
FilterEntriesByValidation filters catalog entries based on the validation's declared checks for the given phase. Returns nil if the validation has no phase configuration or no checks declared.