From 1b7ff1c046680175c52f88b0c47749b88d41ea2b Mon Sep 17 00:00:00 2001 From: Carlos Date: Tue, 13 Oct 2026 12:15:52 +0200 Subject: [PATCH 1/2] Bump version to 2.4.0 --- CHANGELOG.md | 1 + pyproject.toml | 2 +- .../errst2lib/secrets_adapters.py | 70 +++++++++++++++++++ src/err-stackstorm/errst2lib/version.py | 2 +- src/err-stackstorm/html/index.html | 2 +- 5 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 src/err-stackstorm/errst2lib/secrets_adapters.py diff --git a/CHANGELOG.md b/CHANGELOG.md index f2f60e2..84e3e44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [2.4.0] Unreleased ### Added + - Federated login for multiple instances of errbot using distinct stackstorm instances. ### Changed diff --git a/pyproject.toml b/pyproject.toml index a043d06..7abe7e2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta" [project] name = "err-stackstorm" -version = "2.3.2" +version = "2.4.0" authors = [{ name="Err-stackstorm maintainers", email="nzlosh@yahoo.com" }] keywords = [ "errbot", diff --git a/src/err-stackstorm/errst2lib/secrets_adapters.py b/src/err-stackstorm/errst2lib/secrets_adapters.py new file mode 100644 index 0000000..b27fd74 --- /dev/null +++ b/src/err-stackstorm/errst2lib/secrets_adapters.py @@ -0,0 +1,70 @@ +# coding:utf-8 +import abc +import logging + +LOG = logging.getLogger(__name__) + + +class AbstractSecretsAdapterFactory(metaclass=abc.ABCMeta): + @abc.abstractmethod + def instantiate(store_type): + raise NotImplementedError + + +class SecretsAdapterFactory(AbstractSecretsAdapterFactory): + @staticmethod + def instantiate(store_type): + LOG.debug("Establish connection with secret store service. '{}'".format(store_type)) + return {"vault": VaultSecretsAdapter}.get(store_type, ClearTextSecretsAdapter) + + +class AbstractSecretsAdapter(metaclass=abc.ABCMeta): + @abc.abstractmethod + def setup(self, *args, **kwargs): + raise NotImplementedError + + @abc.abstractmethod + def set(self, name, secret, namespace): + raise NotImplementedError + + @abc.abstractmethod + def get(self, name, namespace): + raise NotImplementedError + + @abc.abstractmethod + def teardown(self, user): + raise NotImplementedError + + +class VaultSecretsAdapter(AbstractSecretsAdapter): + """ + Vault secrets store. kv read/write/list and wrap/unwrap. + """ + + def __init__(self): + import hvac + self.client = hvac.Client() + + def __str__(self): + return str(self.associations) + + def setup(self): + # supported credentials are token or approle. + backend = cfg.get("secrets", {}).get("backend") + if backend: + raise NotImplementedError + + def set(self, name, secret, namespace=""): + self.associations[name] = secret + return True + + def get(self, name, namespace=""): + return self.associations.get(name) + + def delete(self, name, namespace=""): + if name in self.associations: + del self.associations[name] + + def teardown(self): + pass + diff --git a/src/err-stackstorm/errst2lib/version.py b/src/err-stackstorm/errst2lib/version.py index ea16adc..f463f49 100644 --- a/src/err-stackstorm/errst2lib/version.py +++ b/src/err-stackstorm/errst2lib/version.py @@ -1 +1 @@ -ERR_STACKSTORM_VERSION = "2.3.2" +ERR_STACKSTORM_VERSION = "2.4.0" diff --git a/src/err-stackstorm/html/index.html b/src/err-stackstorm/html/index.html index aa786ff..a608de0 100644 --- a/src/err-stackstorm/html/index.html +++ b/src/err-stackstorm/html/index.html @@ -6,7 +6,7 @@