OpenStorPlugin
Features
BaseConfig— Config model with Jinja2 interpolation — Pydantic models whose string fields are automatically resolved against a shared config dictionary. Supports chained variables, nested access, inheritance, strict/lenient modes, and per-field opt-out.@task()decorator — Declare typed, documented tasks on your controller. Tasks are auto-discovered and validated against the method signature at runtime.ControllerPluginbase class — Ready-to-extend controller withinstall/uninstalllifecycle, idempotent Authentik provider & application creation, Docker deployment orchestration, and bind-mount management.ControllerHooks— Callback interface (save_config) lettingControllerPluginpersist configuration changes back into the store, passed in at construction.DockerEngineConnector— Manage containers, networks, inspect, and exec commands against a local Docker daemon.AuthentikConnector— Create OAuth2 providers and applications via the Authentik API.- Smarthost models — Typed configuration models for Traefik, Authentik, LDAP, and Docker services.
- Jinja2 sandbox — Config templates are rendered in a sandboxed environment that blocks unsafe attribute access (dunder, method calls).
Installation
pip install openstoreplugin
Usage
Define your application configuration by subclassing BaseConfig:
from openstoreplugin import BaseConfig, ControllerPlugin
from openstoreplugin.models import ApplicationConfiguration, OpenStoreConfigModel
class MyAppConfig(ApplicationConfiguration):
"""Override or extend the base config."""
pass
class MyController(ControllerPlugin):
"""Your custom controller logic."""
def _install(self, time_to_start: int) -> None:
# Your install logic here
pass
def _uninstall(self, cleanup_volumes: bool) -> None:
# Your uninstall logic here
pass
store_config = OpenStoreConfigModel(...)
app_config = MyAppConfig(...)
controller = MyController(app_config, store_config, hooks=MyControllerHooks())
# List available tasks
for name, task in controller.get_tasks().items():
print(f"{name}: {task.description}")
# Execute a task
controller.execute_task("Install", time_to_start=120)
License
The project is released under the MIT License.
Project Status
NOTE
The project is currently in development phase. If you have any remark or question feel free to open an Issue
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
openstoreplugin-0.1.0.tar.gz
(28.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openstoreplugin-0.1.0.tar.gz.
File metadata
- Download URL: openstoreplugin-0.1.0.tar.gz
- Upload date:
- Size: 28.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/2.4.1 CPython/3.14.7 Linux/6.1.0-37-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8be3dc27741fef55452fe0e2049bf552f6fec40a423c6c3be08ac758b4ec4e85
|
|
| MD5 |
feb9f3a90bf15131163d0b522975d69f
|
|
| BLAKE2b-256 |
69cc043a8ec0a905bb2eb1fb9e9947bb1ab9466cf309333051642bb82b8fa8e7
|
File details
Details for the file openstoreplugin-0.1.0-py3-none-any.whl.
File metadata
- Download URL: openstoreplugin-0.1.0-py3-none-any.whl
- Upload date:
- Size: 35.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
poetry/2.4.1 CPython/3.14.7 Linux/6.1.0-37-amd64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a18f1844fc4304e854abbcfd2b2291bd3d1b10f02cb37191491dfbfae3b681d7
|
|
| MD5 |
23e7a772787874707900715dadc93118
|
|
| BLAKE2b-256 |
dd668f11e7b941332d9b703c063e1e3ce89e2f96aa953e78e85bad41bdfe511d
|