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

chore: update charm libraries #171

Merged
merged 1 commit into from
Sep 18, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading