ExLLM.Infrastructure.CircuitBreaker.ConfigManager (ex_llm v0.8.1)

View Source

Configuration management system for circuit breakers.

Provides centralized configuration management with runtime updates, validation, rollback capabilities, and hot-reload functionality.

Features

  • Runtime Configuration Updates: Change settings without restarts
  • Configuration Validation: Ensure settings are safe and valid
  • Rollback Support: Revert to previous configurations on failure
  • Batch Operations: Update multiple circuits simultaneously
  • Configuration Profiles: Pre-defined configuration sets
  • Hot-reload: Automatically apply configuration changes
  • Audit Trail: Track all configuration changes

Configuration Profiles

Built-in profiles for common scenarios:

  • :conservative - High fault tolerance, slow recovery
  • :aggressive - Low fault tolerance, fast recovery
  • :balanced - Moderate settings for general use
  • :high_throughput - Optimized for high-volume services
  • :experimental - For testing and development

Usage

# Update individual circuit
ExLLM.CircuitBreaker.ConfigManager.update_circuit("api_service", %{
  failure_threshold: 10,
  reset_timeout: 60_000
})

# Apply configuration profile
ExLLM.CircuitBreaker.ConfigManager.apply_profile("api_service", :conservative)

# Batch update multiple circuits
ExLLM.CircuitBreaker.ConfigManager.batch_update(%{
  "service_1" => %{failure_threshold: 5},
  "service_2" => %{reset_timeout: 30_000}
})

# Rollback to previous configuration
ExLLM.CircuitBreaker.ConfigManager.rollback("api_service")

Summary

Functions

Apply a pre-defined configuration profile to a circuit.

Batch update multiple circuits with different configurations.

Returns a specification to start this module under a supervisor.

Get current configuration for a circuit.

Get configuration history for a circuit.

Get details of a specific profile.

Initialize the configuration management system.

Get all circuit configurations.

Get available configuration profiles.

Register a custom configuration profile.

Reset a circuit to default configuration.

Rollback to the previous configuration for a circuit.

Start the configuration manager.

Update configuration for a specific circuit.

Validate a configuration map.

Functions

apply_profile(circuit_name, profile_name)

@spec apply_profile(String.t(), atom()) :: :ok | {:error, term()}

Apply a pre-defined configuration profile to a circuit.

batch_update(circuit_configs)

@spec batch_update(map()) :: %{required(String.t()) => :ok | {:error, term()}}

Batch update multiple circuits with different configurations.

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

get_config(circuit_name)

@spec get_config(String.t()) :: {:ok, map()} | {:error, :not_found}

Get current configuration for a circuit.

get_history(circuit_name, opts \\ [])

@spec get_history(
  String.t(),
  keyword()
) :: {:ok, [map()]} | {:error, term()}

Get configuration history for a circuit.

get_profile(profile_name)

@spec get_profile(atom()) :: {:ok, map()} | {:error, :not_found}

Get details of a specific profile.

init_config_system()

Initialize the configuration management system.

list_all_configs()

@spec list_all_configs() :: [map()]

Get all circuit configurations.

list_profiles()

@spec list_profiles() :: [atom()]

Get available configuration profiles.

register_profile(profile_name, config)

@spec register_profile(atom(), map()) :: :ok | {:error, term()}

Register a custom configuration profile.

reset_to_default(circuit_name)

@spec reset_to_default(String.t()) :: :ok | {:error, term()}

Reset a circuit to default configuration.

rollback(circuit_name)

@spec rollback(String.t()) :: :ok | {:error, term()}

Rollback to the previous configuration for a circuit.

start_link(opts \\ [])

Start the configuration manager.

update_circuit(circuit_name, config_changes)

@spec update_circuit(String.t(), map()) :: :ok | {:error, term()}

Update configuration for a specific circuit.

validate_config(config)

@spec validate_config(map() | keyword()) :: :ok | {:error, [atom()]}

Validate a configuration map.