Skip to content
This repository has been archived by the owner on Oct 8, 2024. It is now read-only.

Commit

Permalink
chore: update charm libraries (#171)
Browse files Browse the repository at this point in the history
  • Loading branch information
observability-noctua-bot authored Sep 18, 2024
1 parent 1628ec1 commit d60ee06
Showing 1 changed file with 27 additions and 72 deletions.
99 changes: 27 additions & 72 deletions lib/charms/traefik_route_k8s/v0/traefik_route.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,75 +2,16 @@
# Copyright 2022 Canonical Ltd.
# See LICENSE file for licensing details.

r"""# Interface Library for traefik_route.
This library wraps relation endpoints for traefik_route. The requirer of this
relation is the traefik-route-k8s charm, or any charm capable of providing
Traefik configuration files. The provider is the traefik-k8s charm, or another
charm willing to consume Traefik configuration files.
## Getting Started
To get started using the library, you just need to fetch the library using `charmcraft`.
```shell
cd some-charm
charmcraft fetch-lib charms.traefik_route_k8s.v0.traefik_route
```
To use the library from the provider side (Traefik):
```yaml
requires:
traefik_route:
interface: traefik_route
limit: 1
```
```python
from charms.traefik_route_k8s.v0.traefik_route import TraefikRouteProvider
class TraefikCharm(CharmBase):
def __init__(self, *args):
# ...
self.traefik_route = TraefikRouteProvider(self)
self.framework.observe(
self.traefik_route.on.ready, self._handle_traefik_route_ready
)
def _handle_traefik_route_ready(self, event):
config: str = self.traefik_route.get_config(event.relation) # yaml
# use config to configure Traefik
```
To use the library from the requirer side (TraefikRoute):
```yaml
requires:
traefik-route:
interface: traefik_route
limit: 1
optional: false
```
```python
# ...
from charms.traefik_route_k8s.v0.traefik_route import TraefikRouteRequirer
class TraefikRouteCharm(CharmBase):
def __init__(self, *args):
# ...
traefik_route = TraefikRouteRequirer(
self, self.model.relations.get("traefik-route"),
"traefik-route"
)
if traefik_route.is_ready():
traefik_route.submit_to_traefik(
config={'my': {'traefik': 'configuration'}}
)
r"""# [DEPRECATED!] Interface Library for traefik_route.
This is a DEPRECATED version of the traefik_route interface library.
It was dropped and no longer maintained under `traefik-route-k8s-operator`, which will soon be archived.
traefik_route v0 is now maintained under `traefik-k8s-operator`.
Please fetch the new library with `charmcraft fetch-lib charms.traefik_k8s.v0.traefik_route`.
```
"""
import logging
from typing import Optional
Expand All @@ -88,7 +29,7 @@ def __init__(self, *args):

# Increment this PATCH version before using `charmcraft publish-lib` or reset
# to 0 if you are raising the major API version
LIBPATCH = 10
LIBPATCH = 11

log = logging.getLogger(__name__)

Expand Down Expand Up @@ -157,6 +98,12 @@ def __init__(
external_host: The external host.
scheme: The scheme.
"""
log.warning(
"The ``traefik_route v0`` library is DEPRECATED "
"and no longer maintained under ``traefik-route-k8s-operator``. "
"``traefik_route v0`` is now maintained under ``traefik-k8s-operator``. "
"Please fetch the new library with ``charmcraft fetch-lib charms.traefik_k8s.v0.traefik_route``."
)
super().__init__(charm, relation_name)
self._stored.set_default(external_host=None, scheme=None)

Expand Down Expand Up @@ -254,8 +201,10 @@ def is_ready(self, relation: Relation) -> bool:

def get_config(self, relation: Relation) -> Optional[str]:
"""Renamed to ``get_dynamic_config``."""
log.warning("``TraefikRouteProvider.get_config`` is deprecated. "
"Use ``TraefikRouteProvider.get_dynamic_config`` instead")
log.warning(
"``TraefikRouteProvider.get_config`` is deprecated. "
"Use ``TraefikRouteProvider.get_dynamic_config`` instead"
)
return self.get_dynamic_config(relation)

def get_dynamic_config(self, relation: Relation) -> Optional[str]:
Expand Down Expand Up @@ -290,6 +239,12 @@ class TraefikRouteRequirer(Object):
_stored = StoredState()

def __init__(self, charm: CharmBase, relation: Relation, relation_name: str = "traefik-route"):
log.warning(
"The ``traefik_route v0`` library is DEPRECATED "
"and no longer maintained under ``traefik-route-k8s-operator``. "
"``traefik_route v0`` is now maintained under ``traefik-k8s-operator``. "
"Please fetch the new library with ``charmcraft fetch-lib charms.traefik_k8s.v0.traefik_route``."
)
super(TraefikRouteRequirer, self).__init__(charm, relation_name)
self._stored.set_default(external_host=None, scheme=None)

Expand Down Expand Up @@ -356,7 +311,7 @@ def is_ready(self) -> bool:
"""Is the TraefikRouteRequirer ready to submit data to Traefik?"""
return self._relation is not None

def submit_to_traefik(self, config: dict, static: dict=None):
def submit_to_traefik(self, config: dict, static: Optional[dict] = None):
"""Relay an ingress configuration data structure to traefik.
This will publish to the traefik-route relation databag
Expand Down

0 comments on commit d60ee06

Please sign in to comment.