v1

package
v0.13.0-rc2 Latest Latest
Warning

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

Go to latest
Published: May 14, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

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

View Source
const (
	// CatalogAPIVersion is the supported catalog API version.
	CatalogAPIVersion = "validator.nvidia.com/v1alpha1"

	// CatalogKind is the supported catalog kind.
	CatalogKind = "ValidatorCatalog"
)
View Source
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 Phase

type Phase string

Phase represents a validation phase.

const (
	// PhaseDeployment is the deployment validation phase.
	PhaseDeployment Phase = "deployment"

	// PhasePerformance is the performance validation phase.
	PhasePerformance Phase = "performance"

	// PhaseConformance is the conformance validation phase.
	PhaseConformance Phase = "conformance"
)

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.

Jump to

Keyboard shortcuts

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