managers

package
v0.0.0-...-bac2f6a Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2025 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BudgetConfig

type BudgetConfig struct {
	MonthlyLimit    float64  `json:"monthlyLimit"`
	AlertThreshold  float64  `json:"alertThreshold"`
	AlertRecipients []string `json:"alertRecipients"`
}

BudgetConfig for cost alerts

type ComponentManager

type ComponentManager interface {
	// Reconcile reconciles the component for the given platform
	Reconcile(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error

	// ReconcileWithConfig reconciles the component with provided configuration
	ReconcileWithConfig(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, config map[string]interface{}) error

	// Delete removes the component resources
	Delete(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error

	// GetStatus returns the current status of the component
	GetStatus(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) (*observabilityv1beta1.ComponentStatus, error)

	// Validate validates the component configuration
	Validate(platform *observabilityv1beta1.ObservabilityPlatform) error

	// GetServiceURL returns the service URL for the component
	GetServiceURL(platform *observabilityv1beta1.ObservabilityPlatform) string
}

ComponentManager is the base interface for all component managers

type CostAnalysis

type CostAnalysis struct {
	Platform  string  `json:"platform"`
	Namespace string  `json:"namespace"`
	TotalCost float64 `json:"totalCost"`
	Currency  string  `json:"currency"`
}

CostAnalysis represents the cost analysis for a platform

type CostManager

type CostManager interface {
	// AnalyzePlatformCosts analyzes costs for all platform components
	AnalyzePlatformCosts(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) (*CostAnalysis, error)

	// GetRecommendations generates cost optimization recommendations
	GetRecommendations(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) (*OptimizationRecommendations, error)

	// ApplyOptimizations applies cost optimization recommendations
	ApplyOptimizations(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, opts *OptimizationOptions) error

	// SetBudgetAlert configures budget alerts for a platform
	SetBudgetAlert(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, budget *BudgetConfig) error
}

CostManager manages cost optimization for observability platforms

type DefaultManagerFactory

type DefaultManagerFactory struct {
	// contains filtered or unexported fields
}

DefaultManagerFactory is the default implementation of ManagerFactory

func (*DefaultManagerFactory) CreateCostManager

func (f *DefaultManagerFactory) CreateCostManager() CostManager

CreateCostManager creates a new Cost manager

func (*DefaultManagerFactory) CreateGrafanaManager

func (f *DefaultManagerFactory) CreateGrafanaManager() GrafanaManager

CreateGrafanaManager creates a new Grafana manager

func (*DefaultManagerFactory) CreateLokiManager

func (f *DefaultManagerFactory) CreateLokiManager() LokiManager

CreateLokiManager creates a new Loki manager

func (*DefaultManagerFactory) CreatePrometheusManager

func (f *DefaultManagerFactory) CreatePrometheusManager() PrometheusManager

CreatePrometheusManager creates a new Prometheus manager

func (*DefaultManagerFactory) CreateTempoManager

func (f *DefaultManagerFactory) CreateTempoManager() TempoManager

CreateTempoManager creates a new Tempo manager

func (*DefaultManagerFactory) SetMode

func (f *DefaultManagerFactory) SetMode(mode ManagerMode)

SetMode sets the manager mode

func (*DefaultManagerFactory) SetVersionManager

func (f *DefaultManagerFactory) SetVersionManager(vm *version.Manager)

SetVersionManager sets the version manager

type GrafanaManager

type GrafanaManager interface {
	ComponentManager

	// ImportDashboards imports dashboards into Grafana
	ImportDashboards(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error

	// ConfigureDataSources configures data sources in Grafana
	ConfigureDataSources(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
}

GrafanaManager manages Grafana deployments

type LokiManager

type LokiManager interface {
	ComponentManager

	// ConfigureStorage configures storage backend for Loki
	ConfigureStorage(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error

	// UpdateRetention updates log retention policies
	UpdateRetention(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
}

LokiManager manages Loki deployments

type ManagerFactory

type ManagerFactory interface {
	// CreatePrometheusManager creates a new Prometheus manager
	CreatePrometheusManager() PrometheusManager

	// CreateGrafanaManager creates a new Grafana manager
	CreateGrafanaManager() GrafanaManager

	// CreateLokiManager creates a new Loki manager
	CreateLokiManager() LokiManager

	// CreateTempoManager creates a new Tempo manager
	CreateTempoManager() TempoManager

	// CreateCostManager creates a new Cost manager
	CreateCostManager() CostManager
}

ManagerFactory creates component managers

func NewDefaultManagerFactory

func NewDefaultManagerFactory(client client.Client, scheme *runtime.Scheme) ManagerFactory

NewDefaultManagerFactory creates a new default manager factory

func NewDefaultManagerFactoryWithConfig

func NewDefaultManagerFactoryWithConfig(client client.Client, scheme *runtime.Scheme, restConfig *rest.Config) ManagerFactory

NewDefaultManagerFactoryWithConfig creates a new default manager factory with REST config

func NewManagerFactory

func NewManagerFactory(config ManagerFactoryConfig) ManagerFactory

NewManagerFactory creates a new manager factory with configuration

type ManagerFactoryConfig

type ManagerFactoryConfig struct {
	Client         client.Client
	Scheme         *runtime.Scheme
	RestConfig     *rest.Config
	Mode           ManagerMode
	VersionManager *version.Manager
}

ManagerFactoryConfig provides configuration for the manager factory

type ManagerMode

type ManagerMode string

ManagerMode defines the mode for component managers

const (
	// ManagerModeNative uses native Kubernetes resource management
	ManagerModeNative ManagerMode = "native"

	// ManagerModeHelm uses Helm for component management
	ManagerModeHelm ManagerMode = "helm"

	// Environment variable to control manager mode
	EnvManagerMode = "GUNJ_MANAGER_MODE"
)

type MockGrafanaManager

type MockGrafanaManager struct {
	ReconcileFn            func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	DeleteFn               func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	GetStatusFn            func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) (*observabilityv1beta1.ComponentStatus, error)
	ValidateFn             func(platform *observabilityv1beta1.ObservabilityPlatform) error
	ImportDashboardsFn     func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	ConfigureDataSourcesFn func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
}

MockGrafanaManager is a mock implementation of GrafanaManager for testing

func (*MockGrafanaManager) ConfigureDataSources

func (m *MockGrafanaManager) ConfigureDataSources(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error

func (*MockGrafanaManager) Delete

func (*MockGrafanaManager) GetServiceURL

func (*MockGrafanaManager) ImportDashboards

func (*MockGrafanaManager) Reconcile

func (*MockGrafanaManager) ReconcileWithConfig

func (m *MockGrafanaManager) ReconcileWithConfig(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, config map[string]interface{}) error

func (*MockGrafanaManager) Validate

type MockLokiManager

type MockLokiManager struct {
	ReconcileFn        func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	DeleteFn           func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	GetStatusFn        func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) (*observabilityv1beta1.ComponentStatus, error)
	ValidateFn         func(platform *observabilityv1beta1.ObservabilityPlatform) error
	ConfigureStorageFn func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	UpdateRetentionFn  func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
}

MockLokiManager is a mock implementation of LokiManager for testing

func (*MockLokiManager) ConfigureStorage

func (m *MockLokiManager) ConfigureStorage(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error

func (*MockLokiManager) Delete

func (*MockLokiManager) GetServiceURL

func (*MockLokiManager) Reconcile

func (*MockLokiManager) ReconcileWithConfig

func (m *MockLokiManager) ReconcileWithConfig(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, config map[string]interface{}) error

func (*MockLokiManager) UpdateRetention

func (*MockLokiManager) Validate

type MockPrometheusManager

type MockPrometheusManager struct {
	ReconcileFn           func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	DeleteFn              func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	GetStatusFn           func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) (*observabilityv1beta1.ComponentStatus, error)
	ValidateFn            func(platform *observabilityv1beta1.ObservabilityPlatform) error
	UpdateConfigurationFn func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	ScaleReplicasFn       func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, replicas int32) error
}

MockPrometheusManager is a mock implementation of PrometheusManager for testing

func (*MockPrometheusManager) Delete

func (*MockPrometheusManager) GetServiceURL

func (*MockPrometheusManager) Reconcile

func (*MockPrometheusManager) ReconcileWithConfig

func (m *MockPrometheusManager) ReconcileWithConfig(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, config map[string]interface{}) error

func (*MockPrometheusManager) ScaleReplicas

func (m *MockPrometheusManager) ScaleReplicas(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, replicas int32) error

func (*MockPrometheusManager) UpdateConfiguration

func (*MockPrometheusManager) Validate

type MockTempoManager

type MockTempoManager struct {
	ReconcileFn          func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	DeleteFn             func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	GetStatusFn          func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) (*observabilityv1beta1.ComponentStatus, error)
	ValidateFn           func(platform *observabilityv1beta1.ObservabilityPlatform) error
	ConfigureReceiversFn func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
	UpdateSamplingFn     func(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
}

MockTempoManager is a mock implementation of TempoManager for testing

func (*MockTempoManager) ConfigureReceivers

func (m *MockTempoManager) ConfigureReceivers(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error

func (*MockTempoManager) Delete

func (*MockTempoManager) GetServiceURL

func (*MockTempoManager) Reconcile

func (*MockTempoManager) ReconcileWithConfig

func (m *MockTempoManager) ReconcileWithConfig(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, config map[string]interface{}) error

func (*MockTempoManager) UpdateSampling

func (*MockTempoManager) Validate

type OptimizationOptions

type OptimizationOptions struct {
	ApplyResourceOptimization bool     `json:"applyResourceOptimization"`
	EnableSpotInstances       bool     `json:"enableSpotInstances"`
	ApplyScalingPolicies      bool     `json:"applyScalingPolicies"`
	OptimizeStorage           bool     `json:"optimizeStorage"`
	Categories                []string `json:"categories"`
	DryRun                    bool     `json:"dryRun"`
}

OptimizationOptions for applying optimizations

type OptimizationRecommendations

type OptimizationRecommendations struct {
	ResourceRecommendations map[string]interface{} `json:"resourceRecommendations"`
	SpotInstanceCandidates  map[string]bool        `json:"spotInstanceCandidates"`
	ScalingPolicies         map[string]interface{} `json:"scalingPolicies"`
	StorageOptimizations    map[string]interface{} `json:"storageOptimizations"`
	TotalSavings            float64                `json:"totalSavings"`
}

OptimizationRecommendations contains cost optimization suggestions

type PrometheusManager

type PrometheusManager interface {
	ComponentManager

	// UpdateConfiguration updates Prometheus configuration without restart
	UpdateConfiguration(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error

	// ScaleReplicas scales Prometheus replicas
	ScaleReplicas(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform, replicas int32) error
}

PrometheusManager manages Prometheus deployments

type TempoManager

type TempoManager interface {
	ComponentManager

	// ConfigureReceivers configures trace receivers
	ConfigureReceivers(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error

	// UpdateSampling updates sampling configuration
	UpdateSampling(ctx context.Context, platform *observabilityv1beta1.ObservabilityPlatform) error
}

TempoManager manages Tempo deployments

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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