Documentation
¶
Overview ¶
Package signalprocessing provides condition helpers for SignalProcessing CRDs.
Design Decisions:
- DD-SP-002: Kubernetes Conditions Specification
- DD-CRD-002: Cross-Service Conditions Standard
Business Requirements:
- BR-SP-110: Kubernetes Conditions for Operator Visibility
Package signalprocessing provides core interfaces for SignalProcessing service components.
Reference: CONTROLLER_REFACTORING_PATTERN_LIBRARY.md - Pattern 6 (Interface-Based Services)
This file centralizes all service interfaces to provide: - Single source of truth for component contracts - Easier testability through interface mocking - Clear service registry pattern - Reduced coupling between components
TODO: Migrate existing interfaces here (Phase 2 refactoring) - Move K8sEnricher interface from controller to here - Move EnvironmentClassifier interface from controller to here - Move PriorityAssigner interface from controller to here - Document interface contracts with business requirements - Update all imports to reference this file
Estimated effort: 4-6 hours Expected benefits: Centralized interface definitions, improved discoverability
Index ¶
- Constants
- func GetCondition(sp *spv1.SignalProcessing, conditionType string) *metav1.Condition
- func IsConditionTrue(sp *spv1.SignalProcessing, conditionType string) bool
- func SetCategorizationComplete(sp *spv1.SignalProcessing, succeeded bool, reason, message string)
- func SetClassificationComplete(sp *spv1.SignalProcessing, succeeded bool, reason, message string)
- func SetCondition(sp *spv1.SignalProcessing, conditionType string, status metav1.ConditionStatus, ...)
- func SetEnrichmentComplete(sp *spv1.SignalProcessing, succeeded bool, reason, message string)
- func SetProcessingComplete(sp *spv1.SignalProcessing, succeeded bool, reason, message string)
- func SetReady(sp *spv1.SignalProcessing, ready bool, reason, message string)
- type CategorizationService
- type ClassificationService
- type EnrichmentService
Constants ¶
const ( // ConditionReady indicates the SignalProcessing is ready (or not) ConditionReady = "Ready" // ConditionEnrichmentComplete indicates K8s context enrichment phase finished ConditionEnrichmentComplete = "EnrichmentComplete" // ConditionClassificationComplete indicates environment/priority classification finished ConditionClassificationComplete = "ClassificationComplete" // ConditionCategorizationComplete indicates business categorization finished ConditionCategorizationComplete = "CategorizationComplete" // ConditionProcessingComplete indicates signal processing completed (terminal state) ConditionProcessingComplete = "ProcessingComplete" )
Condition types for SignalProcessing
const ( // ReasonEnrichmentSucceeded - K8s context enriched successfully ReasonEnrichmentSucceeded = "EnrichmentSucceeded" // ReasonEnrichmentFailed - K8s context enrichment failed ReasonEnrichmentFailed = "EnrichmentFailed" // ReasonK8sAPITimeout - K8s API call timed out ReasonK8sAPITimeout = "K8sAPITimeout" // ReasonResourceNotFound - Target resource not found in cluster ReasonResourceNotFound = "ResourceNotFound" // ReasonRBACDenied - Controller lacks RBAC permissions ReasonRBACDenied = "RBACDenied" // ReasonDegradedMode - Enrichment completed with partial context (K8s API unavailable) ReasonDegradedMode = "DegradedMode" )
Condition reasons for EnrichmentComplete
const ( // ReasonClassificationSucceeded - environment and priority classified successfully ReasonClassificationSucceeded = "ClassificationSucceeded" // ReasonClassificationFailed - classification failed ReasonClassificationFailed = "ClassificationFailed" // ReasonRegoEvaluationError - Rego policy evaluation failed (runtime error) ReasonRegoEvaluationError = "RegoEvaluationError" // ReasonPolicyNotFound - Rego policy file not found (using fallback) ReasonPolicyNotFound = "PolicyNotFound" // ReasonInvalidNamespaceLabels - namespace labels missing or invalid ReasonInvalidNamespaceLabels = "InvalidNamespaceLabels" // ReasonSeverityFallback - priority assigned via severity fallback (BR-SP-071) ReasonSeverityFallback = "SeverityFallback" )
Condition reasons for ClassificationComplete
const ( // ReasonCategorizationSucceeded - business categorization completed ReasonCategorizationSucceeded = "CategorizationSucceeded" // ReasonCategorizationFailed - business categorization failed ReasonCategorizationFailed = "CategorizationFailed" // ReasonInvalidBusinessUnit - business unit not recognized ReasonInvalidBusinessUnit = "InvalidBusinessUnit" // ReasonInvalidSLATier - SLA tier not valid ReasonInvalidSLATier = "InvalidSLATier" )
Condition reasons for CategorizationComplete
const ( // ReasonProcessingSucceeded - signal processing completed successfully ReasonProcessingSucceeded = "ProcessingSucceeded" // ReasonProcessingFailed - signal processing failed ReasonProcessingFailed = "ProcessingFailed" // ReasonAuditWriteFailed - audit event write failed (logged, not blocking) ReasonAuditWriteFailed = "AuditWriteFailed" // ReasonValidationFailed - CRD validation failed ReasonValidationFailed = "ValidationFailed" )
Condition reasons for ProcessingComplete
const ( ReasonReady = "Ready" ReasonNotReady = "NotReady" )
Ready condition reasons
Variables ¶
This section is empty.
Functions ¶
func GetCondition ¶
func GetCondition(sp *spv1.SignalProcessing, conditionType string) *metav1.Condition
GetCondition returns the condition with the specified type, or nil if not found.
func IsConditionTrue ¶
func IsConditionTrue(sp *spv1.SignalProcessing, conditionType string) bool
IsConditionTrue returns true if the condition exists and has status True.
func SetCategorizationComplete ¶
func SetCategorizationComplete(sp *spv1.SignalProcessing, succeeded bool, reason, message string)
SetCategorizationComplete sets the CategorizationComplete condition. Per BR-SP-002, BR-SP-080: Business categorization.
func SetClassificationComplete ¶
func SetClassificationComplete(sp *spv1.SignalProcessing, succeeded bool, reason, message string)
SetClassificationComplete sets the ClassificationComplete condition. Per BR-SP-051, BR-SP-070: Environment and priority classification.
func SetCondition ¶
func SetCondition(sp *spv1.SignalProcessing, conditionType string, status metav1.ConditionStatus, reason, message string)
SetCondition sets or updates a condition on the SignalProcessing status. Uses k8s.io/apimachinery/pkg/api/meta.SetStatusCondition for proper handling.
func SetEnrichmentComplete ¶
func SetEnrichmentComplete(sp *spv1.SignalProcessing, succeeded bool, reason, message string)
SetEnrichmentComplete sets the EnrichmentComplete condition. Per BR-SP-001: K8s context enrichment.
func SetProcessingComplete ¶
func SetProcessingComplete(sp *spv1.SignalProcessing, succeeded bool, reason, message string)
SetProcessingComplete sets the ProcessingComplete condition. This is the terminal condition indicating overall processing result.
Types ¶
type CategorizationService ¶
type CategorizationService interface {
Categorize(k8sCtx *signalprocessingv1alpha1.KubernetesContext, envClass *signalprocessingv1alpha1.EnvironmentClassification) (*signalprocessingv1alpha1.BusinessClassification, error)
}
CategorizationService provides business categorization. TODO: Move existing implementations to implement this interface (Phase 2 refactoring)
type ClassificationService ¶
type ClassificationService interface {
ClassifyEnvironment(ctx context.Context, k8sCtx *signalprocessingv1alpha1.KubernetesContext, signal *signalprocessingv1alpha1.SignalData) (*signalprocessingv1alpha1.EnvironmentClassification, error)
AssignPriority(ctx context.Context, k8sCtx *signalprocessingv1alpha1.KubernetesContext, envClass *signalprocessingv1alpha1.EnvironmentClassification, signal *signalprocessingv1alpha1.SignalData) (*signalprocessingv1alpha1.PriorityAssignment, error)
}
ClassificationService provides environment and priority classification. TODO: Move existing implementations to implement this interface (Phase 2 refactoring)
type EnrichmentService ¶
type EnrichmentService interface {
Enrich(ctx context.Context, signal *signalprocessingv1alpha1.SignalData) (*signalprocessingv1alpha1.KubernetesContext, error)
}
EnrichmentService provides context enrichment for signals. TODO: Move existing implementations to implement this interface (Phase 2 refactoring)
Directories
¶
| Path | Synopsis |
|---|---|
|
Package audit provides audit event generation for the SignalProcessing controller.
|
Package audit provides audit event generation for the SignalProcessing controller. |
|
Package cache provides TTL-based caching for signal processing.
|
Package cache provides TTL-based caching for signal processing. |
|
Package config provides configuration types for the SignalProcessing controller.
|
Package config provides configuration types for the SignalProcessing controller. |
|
Package enricher provides Kubernetes context enrichment for signal processing.
|
Package enricher provides Kubernetes context enrichment for signal processing. |
|
Package evaluator provides a unified OPA Rego evaluator for SignalProcessing.
|
Package evaluator provides a unified OPA Rego evaluator for SignalProcessing. |
|
Package handler provides phase-specific handler logic extracted from the monolithic controller.
|
Package handler provides phase-specific handler logic extracted from the monolithic controller. |
|
Package metrics provides Prometheus metrics for the SignalProcessing controller.
|
Package metrics provides Prometheus metrics for the SignalProcessing controller. |
|
Package ownerchain provides K8s ownership chain traversal for enrichment.
|
Package ownerchain provides K8s ownership chain traversal for enrichment. |
|
Package phase provides phase constants and state machine logic for SignalProcessing.
|
Package phase provides phase constants and state machine logic for SignalProcessing. |