Validation¶
Optional manifest validation utilities.
Usage¶
from k8smith.validation import validate_manifest, ValidationMode
result = validate_manifest(
manifest,
structural=ValidationMode.STRICT,
cross_reference=ValidationMode.CHECK,
best_practice=ValidationMode.NONE,
)
if result.errors:
print("Errors:", result.errors)
if result.warnings:
print("Warnings:", result.warnings)
Validation Modes¶
ValidationMode
¶
Bases: Enum
Validation mode controlling how issues are reported.
Attributes:
| Name | Type | Description |
|---|---|---|
NONE |
Silent - no warnings or errors raised |
|
CHECK |
Emit warnings for issues but don't raise exceptions |
|
STRICT |
Raise exception containing all detected issues |
Source code in src/k8smith/validation/core.py
Functions¶
validate_manifest(manifest, *, structural=ValidationMode.STRICT, cross_reference=ValidationMode.NONE, best_practice=ValidationMode.NONE)
¶
Validate a Kubernetes manifest.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
manifest
|
dict[str, Any]
|
The Kubernetes resource dict to validate |
required |
structural
|
ValidationMode
|
Mode for structural validation (required fields, valid combinations) |
STRICT
|
cross_reference
|
ValidationMode
|
Mode for cross-reference validation (volumes, ports, selectors) |
NONE
|
best_practice
|
ValidationMode
|
Mode for best practices validation (resources, probes) |
NONE
|
Returns:
| Type | Description |
|---|---|
ValidationResult
|
ValidationResult containing all issues found |
Raises:
| Type | Description |
|---|---|
ValidationError
|
In strict mode, if any issues are found in that category |
Example
manifest = build_deployment(spec) result = validate_manifest( ... manifest, ... structural=ValidationMode.STRICT, ... cross_reference=ValidationMode.CHECK, ... best_practice=ValidationMode.NONE, ... )
Source code in src/k8smith/validation/validators.py
Result Types¶
ValidationResult
dataclass
¶
Collection of validation issues from a validation run.
Supports iteration and boolean checks
if result: # True if there are issues for issue in result: print(issue)
Source code in src/k8smith/validation/core.py
errors
property
¶
Get only error-level issues.
warnings
property
¶
Get only warning-level issues.
add(path, message, severity, category)
¶
Add a validation issue.
Source code in src/k8smith/validation/core.py
error(path, message, category)
¶
Add an error-level issue.
warning(path, message, category)
¶
Add a warning-level issue.
__bool__()
¶
ValidationIssue
dataclass
¶
A single validation issue found in a manifest.
Attributes:
| Name | Type | Description |
|---|---|---|
path |
str
|
JSON path to the problematic field (e.g., "spec.template.spec.containers[0]") |
message |
str
|
Human-readable description of the issue |
severity |
ValidationSeverity
|
Whether this is an error or warning |
category |
Literal['structural', 'cross_reference', 'best_practice']
|
Type of validation that caught this (structural, cross_reference, best_practice) |