Skip to content

Commit 67ea4a7

Browse files
Consolidate all COS objects in one location (#330)
## Issue We are instantiating `TracingEndpointRequirer` in the `abstract_charm.py` file, but the remaining COS objects in `relations/cos.py` ## Solution Move instantiation of `TracingEndpointRequirer` in `relations/cos.py`
1 parent ac0fd3f commit 67ea4a7

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

src/abstract_charm.py

+1-10
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import typing
99

1010
import ops
11-
from charms.tempo_coordinator_k8s.v0.tracing import TracingEndpointRequirer
1211

1312
import container
1413
import lifecycle
@@ -33,9 +32,6 @@ class MySQLRouterCharm(ops.CharmBase, abc.ABC):
3332
_READ_WRITE_X_PORT = 6448
3433
_READ_ONLY_X_PORT = 6449
3534

36-
_TRACING_RELATION_NAME = "tracing"
37-
_TRACING_PROTOCOL = "otlp_http"
38-
3935
def __init__(self, *args) -> None:
4036
super().__init__(*args)
4137
# Instantiate before registering other event observers
@@ -71,10 +67,6 @@ def __init__(self, *args) -> None:
7167
)
7268
self.tls = relations.tls.RelationEndpoint(self)
7369

74-
self.tracing = TracingEndpointRequirer(
75-
self, relation_name=self._TRACING_RELATION_NAME, protocols=[self._TRACING_PROTOCOL]
76-
)
77-
7870
@property
7971
@abc.abstractmethod
8072
def _subordinate_relation_endpoint_names(self) -> typing.Optional[typing.Iterable[str]]:
@@ -159,8 +151,7 @@ def _tls_certificate(self) -> typing.Optional[str]:
159151
@property
160152
def tracing_endpoint(self) -> typing.Optional[str]:
161153
"""Otlp http endpoint for charm instrumentation."""
162-
if self.tracing.is_ready():
163-
return self.tracing.get_endpoint(self._TRACING_PROTOCOL)
154+
return self._cos_relation.tracing_endpoint
164155

165156
def _cos_exporter_config(self, event) -> typing.Optional[relations.cos.ExporterConfig]:
166157
"""Returns the exporter config for MySQLRouter exporter if cos relation exists"""

src/relations/cos.py

+13
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from charms.grafana_k8s.v0.grafana_dashboard import GrafanaDashboardProvider
1212
from charms.loki_k8s.v1.loki_push_api import LogProxyConsumer
1313
from charms.prometheus_k8s.v0.prometheus_scrape import MetricsEndpointProvider
14+
from charms.tempo_coordinator_k8s.v0.tracing import TracingEndpointRequirer
1415

1516
import container
1617
import relations.secrets
@@ -46,6 +47,9 @@ class COSRelation:
4647
MONITORING_USERNAME = "monitoring"
4748
_MONITORING_PASSWORD_KEY = "monitoring-password"
4849

50+
_TRACING_RELATION_NAME = "tracing"
51+
_TRACING_PROTOCOL = "otlp_http"
52+
4953
def __init__(self, charm_: "abstract_charm.MySQLRouterCharm", container_: container.Container):
5054
self._grafana_dashboards = GrafanaDashboardProvider(charm_)
5155
self._metrics_endpoint = MetricsEndpointProvider(
@@ -62,6 +66,9 @@ def __init__(self, charm_: "abstract_charm.MySQLRouterCharm", container_: contai
6266
},
6367
},
6468
)
69+
self._tracing = TracingEndpointRequirer(
70+
charm_, relation_name=self._TRACING_RELATION_NAME, protocols=[self._TRACING_PROTOCOL]
71+
)
6572

6673
self._charm = charm_
6774
self._container = container_
@@ -91,6 +98,12 @@ def exporter_user_config(self) -> ExporterConfig:
9198
listen_port=self._EXPORTER_PORT,
9299
)
93100

101+
@property
102+
def tracing_endpoint(self) -> typing.Optional[str]:
103+
"""The tracing endpoint."""
104+
if self._tracing.is_ready():
105+
return self._tracing.get_endpoint(self._TRACING_PROTOCOL)
106+
94107
@property
95108
def relation_exists(self) -> bool:
96109
"""Whether relation with cos exists."""

0 commit comments

Comments
 (0)