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

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)

Source distribution for openstoreplugin 0.1.0
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)

Table of built distributions (wheels) for openstoreplugin 0.1.0
File Interpreter ABI Platform Actions
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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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