Manager
pyvider.rpcplugin.config.manager
¶
RPC Plugin Configuration Manager.
Provides centralized configuration management for multiple RPC plugin instances using Foundation's ConfigManager. This enables: - Managing multiple plugin configurations (multi-tenant scenarios) - Runtime configuration updates with validation - Export/import for debugging and persistence - Backward compatibility with direct config object usage
Examples:
Basic usage: >>> from pyvider.rpcplugin.config import RPCPluginConfig >>> from pyvider.rpcplugin.config.manager import register_plugin_config, get_plugin_config >>> >>> # Register a configuration >>> config = RPCPluginConfig(plugin_server_port=8080) >>> register_plugin_config("server1", config) >>> >>> # Retrieve it later >>> config = get_plugin_config("server1") >>> print(config.plugin_server_port) # 8080
Multiple configurations: >>> client_config = RPCPluginConfig(plugin_client_max_retries=5) >>> server_config = RPCPluginConfig(plugin_server_port=9000) >>> >>> register_plugin_config("client", client_config) >>> register_plugin_config("server", server_config) >>> >>> # List all registered configs >>> configs = list_plugin_configs() >>> print(configs) # ["client", "server"]
Note
This module is completely optional and backward compatible. Direct usage of RPCPluginConfig without the manager continues to work unchanged.
Classes¶
Functions¶
clear_plugin_configs
¶
Clear all registered RPC plugin configurations.
Warning
This removes all registered configurations. Use with caution.
Example
clear_plugin_configs() assert list_plugin_configs() == []
Source code in pyvider/rpcplugin/config/manager.py
export_all_plugin_configs
¶
Export all registered configurations.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
include_sensitive
|
bool
|
Whether to include sensitive fields |
False
|
Returns:
| Type | Description |
|---|---|
dict[str, dict[str, Any]]
|
Dictionary mapping config names to their dictionaries |
Example
all_configs = export_all_plugin_configs() for name, config_dict in all_configs.items(): ... print(f"{name}: {config_dict['plugin_server_port']}")
Source code in pyvider/rpcplugin/config/manager.py
export_plugin_config
¶
Export a registered configuration as a dictionary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Name of the configuration |
required |
include_sensitive
|
bool
|
Whether to include sensitive fields (e.g., passwords) |
False
|
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Configuration dictionary |
Raises:
| Type | Description |
|---|---|
ValueError
|
If configuration not found |
Example
config_dict = export_plugin_config("server1") import json json.dump(config_dict, open("config.json", "w"))
Source code in pyvider/rpcplugin/config/manager.py
get_plugin_config
¶
Get a registered RPC plugin configuration by name.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Name of the configuration |
required |
Returns:
| Type | Description |
|---|---|
RPCPluginConfig | None
|
RPCPluginConfig instance or None if not found |
Example
config = get_plugin_config("server1") if config: ... print(config.plugin_server_port)
Source code in pyvider/rpcplugin/config/manager.py
get_plugin_config_manager
¶
Get the singleton ConfigManager instance for RPC plugins. Returns: ConfigManager instance for RPC plugin configurations
Example
manager = get_plugin_config_manager() manager.register("my-plugin", config=my_config)
Source code in pyvider/rpcplugin/config/manager.py
list_plugin_configs
¶
List all registered RPC plugin configuration names.
Returns:
| Type | Description |
|---|---|
list[str]
|
List of configuration names |
Example
configs = list_plugin_configs() for name in configs: ... config = get_plugin_config(name) ... print(f"{name}: port={config.plugin_server_port}")
Source code in pyvider/rpcplugin/config/manager.py
register_plugin_config
¶
Register an RPC plugin configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Unique name for this configuration |
required |
config
|
RPCPluginConfig
|
RPCPluginConfig instance to register |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If a configuration with this name already exists |
Example
from pyvider.rpcplugin.config import RPCPluginConfig config = RPCPluginConfig(plugin_server_port=8080) register_plugin_config("server1", config)
Source code in pyvider/rpcplugin/config/manager.py
unregister_plugin_config
¶
Unregister an RPC plugin configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Name of the configuration to remove |
required |
Example
unregister_plugin_config("server1")
Source code in pyvider/rpcplugin/config/manager.py
update_plugin_config
¶
Update a registered RPC plugin configuration.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Name of the configuration |
required |
updates
|
dict[str, Any]
|
Dictionary of field updates |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
If configuration not found |
Example
update_plugin_config("server1", {"plugin_server_port": 9000}) config = get_plugin_config("server1") assert config.plugin_server_port == 9000