signalprocessing

package
v1.3.2 Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

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

View Source
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

View Source
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

View Source
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

View Source
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

View Source
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

View Source
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.

func SetReady

func SetReady(sp *spv1.SignalProcessing, ready bool, reason, message string)

SetReady sets the Ready condition on the SignalProcessing.

Types

type CategorizationService

CategorizationService provides business categorization. TODO: Move existing implementations to implement this interface (Phase 2 refactoring)

type ClassificationService

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.

Jump to

Keyboard shortcuts

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