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
Metadata
Release files for openstoreplugin 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| openstoreplugin-0.1.0.tar.gz | 28.3 kB | Without provenance | Details for openstoreplugin-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| openstoreplugin-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for openstoreplugin-0.1.0-py3-none-any.whl |
Total release size: 64.3 kB
Release files / openstoreplugin-0.1.0.tar.gz
| Download URL | openstoreplugin-0.1.0.tar.gz |
|---|---|
| Size | 28.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8be3dc27741fef55452fe0e2049bf552f6fec40a423c6c3be08ac758b4ec4e85
|
|
BLAKE2b-256 checksum How to use checksums |
69cc043a8ec0a905bb2eb1fb9e9947bb1ab9466cf309333051642bb82b8fa8e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.14.7 Linux/6.1.0-37-amd64
|
Release files / openstoreplugin-0.1.0-py3-none-any.whl
| Download URL | openstoreplugin-0.1.0-py3-none-any.whl |
|---|---|
| Size | 35.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a18f1844fc4304e854abbcfd2b2291bd3d1b10f02cb37191491dfbfae3b681d7
|
|
BLAKE2b-256 checksum How to use checksums |
dd668f11e7b941332d9b703c063e1e3ce89e2f96aa953e78e85bad41bdfe511d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.14.7 Linux/6.1.0-37-amd64
|
Security for openstoreplugin 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.