Skip to main content

OpenStorPlugin

pipeline status coverage report codecov

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.
  • ControllerPlugin base class — Ready-to-extend controller with install / uninstall lifecycle, idempotent Authentik provider & application creation, Docker deployment orchestration, and bind-mount management.
  • ControllerHooks — Callback interface (save_config) letting ControllerPlugin persist 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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openstoreplugin-0.1.0-py3-none-any.whl (35.9 kB view details)

Uploaded Python 3

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

Hashes for openstoreplugin-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8be3dc27741fef55452fe0e2049bf552f6fec40a423c6c3be08ac758b4ec4e85
MD5 feb9f3a90bf15131163d0b522975d69f
BLAKE2b-256 69cc043a8ec0a905bb2eb1fb9e9947bb1ab9466cf309333051642bb82b8fa8e7

See more details on using hashes here.

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

Hashes for openstoreplugin-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a18f1844fc4304e854abbcfd2b2291bd3d1b10f02cb37191491dfbfae3b681d7
MD5 23e7a772787874707900715dadc93118
BLAKE2b-256 dd668f11e7b941332d9b703c063e1e3ce89e2f96aa953e78e85bad41bdfe511d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page