Schema-based Operator Relation Libraries
Project description
sborl - Schema-based Operator Relation Libraries
This library provides a base for creating relation endpoint libraries for use with charmed operators and Juju. It tries to make creating Pythonic implementations of a relation interface protocol straightforward and approachable, while encouraging good patterns such as using schema-based interface protocol validation, providing helpers for testing charms using your library, and surfacing problems with relations in a clean way.
Example
An example endpoint class and usage might look like:
class RandomURLRequirer(sborl.relation.EndpointWrapper):
INTERFACE = "random-url"
ROLE = "requires"
SCHEMA = Path(__file__) / "schema.yaml"
LIMIT = 1
@property
def url(self):
if not self.is_ready():
return None
relation = self.relations[0]
return self.unwrap(relation)[relation.app]["url"]
class MyCharm(ops.charm.CharmBase):
def __init__(self, *args):
super().__init__(*args)
self.random_url = RandomURLRequirer(charm=self, endpoint="random-url-provider")
self.framework.observe(self.random_url.on.ready, self._log_url)
def _log_url(self, event):
log.info(f"Got random URL: {self.random_url.url}")
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sborl-0.0.6.tar.gz
(7.9 kB
view details)
File details
Details for the file sborl-0.0.6.tar.gz
.
File metadata
- Download URL: sborl-0.0.6.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.6.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6909215e1e6d3d003457b5fb838c5d083a532bea21dfc6eaa1a1e7b7086df15 |
|
MD5 | d308b9b68ce2b271ad503bb9cb1d401c |
|
BLAKE2b-256 | 7d13783e234c2e73973ad07bbf8cb448957778dc3f51938d6460dcb2a43e6fdb |