EngineConfiguration_KeyValueService
What it is
Pydantic-based configuration models and loader logic for creating a KeyValueService with a selectable key-value adapter (redis, python, or custom).
Public API
KeyValueAdapterRedisConfiguration(Pydantic model)- Purpose: Validate configuration for the Redis KV adapter.
- Fields:
redis_url: str(default:"redis://localhost:6379")
KeyValueAdapterPythonConfiguration(Pydantic model)- Purpose: Validate configuration for the Python KV adapter.
- Fields: none (extra fields are forbidden).
KeyValueAdapterConfiguration(GenericLoader)- Purpose: Select and load a KV adapter implementation based on
adapter. - Fields:
adapter: Literal["redis", "python", "custom"]config: dict | None
- Methods:
validate_adapter(self) -> KeyValueAdapterConfiguration: Pydantic@model_validatorthat enforces required config and validates it against the adapter-specific schema.load(self) -> IKeyValueAdapter: Instantiates and returns the configured adapter, or delegates toGenericLoader.load()forcustom.
- Purpose: Select and load a KV adapter implementation based on
KeyValueServiceConfiguration(Pydantic model)- Purpose: Top-level configuration that loads a
KeyValueService. - Fields:
kv_adapter: KeyValueAdapterConfiguration
- Methods:
load(self) -> KeyValueService: ConstructsKeyValueService(adapter=...).
- Purpose: Top-level configuration that loads a
Configuration/Dependencies
- Depends on:
pydantic(BaseModel,ConfigDict,model_validator)naas_abi_core.engine.engine_configuration.EngineConfiguration_GenericLoader.GenericLoadernaas_abi_core.engine.engine_configuration.utils.PydanticModelValidator.pydantic_model_validatornaas_abi_core.services.keyvalue.KeyValueServicenaas_abi_core.services.keyvalue.KeyValuePorts.IKeyValueAdapter
- Adapter implementations are imported lazily during
KeyValueAdapterConfiguration.load():- Redis:
naas_abi_core.services.keyvalue.adapters.secondary.RedisAdapter.RedisAdapter - Python:
naas_abi_core.services.keyvalue.adapters.secondary.PythonAdapter.PythonAdapter
- Redis:
- Pydantic models in this module set
extra="forbid"for adapter config schemas (unknown fields are rejected).
Usage
from naas_abi_core.engine.engine_configuration.EngineConfiguration_KeyValueService import (
KeyValueServiceConfiguration,
)
cfg = KeyValueServiceConfiguration.model_validate(
{
"kv_adapter": {
"adapter": "redis",
"config": {"redis_url": "redis://localhost:6379"},
}
}
)
kv_service = cfg.load() # KeyValueService instance configured with RedisAdapterCaveats
- For
adaptervalues other than"custom",configis required; missing config triggers anAssertionError. - For
"redis"and"python",configis validated against adapter-specific Pydantic schemas; invalid or extra fields are rejected. - If
adapteris"custom", loading is delegated toGenericLoader.load(); the required shape/behavior depends onGenericLoaderimplementation (not defined here).