Skip to content

Commit 7747dca

Browse files
authored
opentelemetry-opamp-client: rename Callbacks to OpAMPCallbacks (#4355)
1 parent 56e1f39 commit 7747dca

File tree

7 files changed

+28
-25
lines changed

7 files changed

+28
-25
lines changed

opamp/opentelemetry-opamp-client/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
- Breaking change: callback class `Callbacks` renamed to `OpAMPCallbacks`
11+
([#4355](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4355))
12+
1013
## Version 0.1b0 (2026-03-23)
1114

1215
- Initial implementation

opamp/opentelemetry-opamp-client/src/opentelemetry/_opamp/__init__.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
3636
Since OpAMP APIs, config options or environment variables are not standardizes the distros are required
3737
to provide code doing so.
38-
OTel Python distros would need to provide their own Callbacks subclass that implements the actual
38+
OTel Python distros would need to provide their own OpAMPCallbacks subclass that implements the actual
3939
change of whatever configuration their backends sends.
4040
4141
Please note that the API is not finalized yet and so the name is called ``_opamp`` with the underscore.
@@ -48,13 +48,13 @@
4848
import os
4949
5050
from opentelemetry._opamp.agent import OpAMPAgent
51-
from opentelemetry._opamp.callbacks import Callbacks
51+
from opentelemetry._opamp.callbacks import OpAMPCallbacks
5252
from opentelemetry._opamp.client import OpAMPClient
5353
from opentelemetry.sdk._configuration import _OTelSDKConfigurator
5454
from opentelemetry.sdk.resources import OTELResourceDetector
5555
5656
57-
class MyCallbacks(Callbacks):
57+
class MyCallbacks(OpAMPCallbacks):
5858
def on_message(self, agent, client, message):
5959
if message.remote_config is None:
6060
return
@@ -93,7 +93,7 @@ def _configure(self, **kwargs):
9393
"""
9494

9595
from opentelemetry._opamp.agent import OpAMPAgent
96-
from opentelemetry._opamp.callbacks import Callbacks, MessageData
96+
from opentelemetry._opamp.callbacks import MessageData, OpAMPCallbacks
9797
from opentelemetry._opamp.client import OpAMPClient
9898

99-
__all__ = ["Callbacks", "MessageData", "OpAMPAgent", "OpAMPClient"]
99+
__all__ = ["MessageData", "OpAMPAgent", "OpAMPCallbacks", "OpAMPClient"]

opamp/opentelemetry-opamp-client/src/opentelemetry/_opamp/agent.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import threading
2222
from typing import Any, Callable
2323

24-
from opentelemetry._opamp.callbacks import Callbacks, MessageData
24+
from opentelemetry._opamp.callbacks import MessageData, OpAMPCallbacks
2525
from opentelemetry._opamp.client import OpAMPClient
2626
from opentelemetry._opamp.proto import opamp_pb2
2727

@@ -85,15 +85,15 @@ def __init__(
8585
self,
8686
*,
8787
interval: float = 30,
88-
callbacks: Callbacks,
88+
callbacks: OpAMPCallbacks,
8989
max_retries: int = 10,
9090
heartbeat_max_retries: int = 1,
9191
initial_backoff: float = 1.0,
9292
client: OpAMPClient,
9393
):
9494
"""
9595
:param interval: seconds between heartbeat calls
96-
:param callbacks: Callbacks instance for receiving client events
96+
:param callbacks: OpAMPCallbacks instance for receiving client events
9797
:param max_retries: how many times to retry a failed job for ad-hoc messages
9898
:param heartbeat_max_retries: how many times to retry an heartbeat failed job
9999
:param initial_backoff: base seconds for exponential backoff

opamp/opentelemetry-opamp-client/src/opentelemetry/_opamp/callbacks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def from_server_message(
4747
)
4848

4949

50-
class Callbacks(ABC):
50+
class OpAMPCallbacks(ABC):
5151
"""OpAMP client callbacks with no-op defaults.
5252
5353
All methods have no-op defaults so that subclasses only need to

opamp/opentelemetry-opamp-client/tests/opamp/test_agent.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818

1919
from opentelemetry._opamp.agent import OpAMPAgent, _safe_invoke
2020
from opentelemetry._opamp.agent import _Job as Job
21-
from opentelemetry._opamp.callbacks import Callbacks, MessageData
21+
from opentelemetry._opamp.callbacks import MessageData, OpAMPCallbacks
2222
from opentelemetry._opamp.proto import opamp_pb2
2323

2424

25-
class _NoOpCallbacks(Callbacks):
25+
class _NoOpCallbacks(OpAMPCallbacks):
2626
pass
2727

2828

@@ -48,7 +48,7 @@ def test_agent_start_will_send_connection_and_disconnetion_messages():
4848
mock_message.flags = 0
4949
client_mock.send.return_value = mock_message
5050

51-
cb = mock.create_autospec(Callbacks, instance=True)
51+
cb = mock.create_autospec(OpAMPCallbacks, instance=True)
5252
agent = OpAMPAgent(interval=30, client=client_mock, callbacks=cb)
5353
agent.start()
5454
# wait for the queue to be consumed
@@ -100,7 +100,7 @@ def test_agent_send_warns_without_worker_thread(caplog):
100100
def test_agent_retries_before_max_attempts(caplog):
101101
caplog.set_level(logging.DEBUG, logger="opentelemetry._opamp.agent")
102102

103-
cb = mock.create_autospec(Callbacks, instance=True)
103+
cb = mock.create_autospec(OpAMPCallbacks, instance=True)
104104
client_mock = mock.Mock()
105105
connection_message = mock.Mock()
106106
connection_message.HasField.return_value = False
@@ -136,7 +136,7 @@ def test_agent_retries_before_max_attempts(caplog):
136136
def test_agent_stops_after_max_attempts(caplog):
137137
caplog.set_level(logging.DEBUG, logger="opentelemetry._opamp.agent")
138138

139-
cb = mock.create_autospec(Callbacks, instance=True)
139+
cb = mock.create_autospec(OpAMPCallbacks, instance=True)
140140
client_mock = mock.Mock()
141141
connection_message = mock.Mock()
142142
connection_message.HasField.return_value = False
@@ -171,7 +171,7 @@ def test_agent_stops_after_max_attempts(caplog):
171171

172172

173173
def test_agent_send_enqueues_job():
174-
cb = mock.create_autospec(Callbacks, instance=True)
174+
cb = mock.create_autospec(OpAMPCallbacks, instance=True)
175175
client_mock = mock.Mock()
176176
msg = mock.Mock()
177177
msg.HasField.return_value = False
@@ -194,7 +194,7 @@ def test_agent_send_enqueues_job():
194194

195195

196196
def test_on_error_called_without_on_message_for_error_response():
197-
cb = mock.create_autospec(Callbacks, instance=True)
197+
cb = mock.create_autospec(OpAMPCallbacks, instance=True)
198198
client_mock = mock.Mock()
199199

200200
error_response = opamp_pb2.ServerErrorResponse(
@@ -224,7 +224,7 @@ def test_on_error_called_without_on_message_for_error_response():
224224

225225

226226
def test_on_error_not_called_without_error_response():
227-
cb = mock.create_autospec(Callbacks, instance=True)
227+
cb = mock.create_autospec(OpAMPCallbacks, instance=True)
228228
client_mock = mock.Mock()
229229

230230
server_msg = opamp_pb2.ServerToAgent()
@@ -255,7 +255,7 @@ def test_dispatch_order_with_error():
255255
error_response=error_response,
256256
)
257257

258-
class OrderTrackingCallbacks(Callbacks):
258+
class OrderTrackingCallbacks(OpAMPCallbacks):
259259
def on_connect(self, agent, client):
260260
call_order.append("on_connect")
261261

@@ -286,7 +286,7 @@ def test_dispatch_order_without_error():
286286

287287
server_msg = opamp_pb2.ServerToAgent()
288288

289-
class OrderTrackingCallbacks(Callbacks):
289+
class OrderTrackingCallbacks(OpAMPCallbacks):
290290
def on_connect(self, agent, client):
291291
call_order.append("on_connect")
292292

@@ -311,7 +311,7 @@ def on_error(self, agent, client, error_response):
311311

312312

313313
def test_report_full_state_flag_triggers_full_state_send():
314-
cb = mock.create_autospec(Callbacks, instance=True)
314+
cb = mock.create_autospec(OpAMPCallbacks, instance=True)
315315
client_mock = mock.Mock()
316316

317317
conn_msg = opamp_pb2.ServerToAgent()

opamp/opentelemetry-opamp-client/tests/opamp/test_callbacks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414

1515
from unittest import mock
1616

17-
from opentelemetry._opamp.callbacks import Callbacks, MessageData
17+
from opentelemetry._opamp.callbacks import MessageData, OpAMPCallbacks
1818
from opentelemetry._opamp.proto import opamp_pb2
1919

2020

2121
def test_subclass_override_subset():
22-
class MyCallbacks(Callbacks):
22+
class MyCallbacks(OpAMPCallbacks):
2323
def __init__(self):
2424
self.connected = False
2525

opamp/opentelemetry-opamp-client/tests/opamp/test_e2e.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import pytest
2121

2222
from opentelemetry._opamp.agent import OpAMPAgent
23-
from opentelemetry._opamp.callbacks import Callbacks
23+
from opentelemetry._opamp.callbacks import OpAMPCallbacks
2424
from opentelemetry._opamp.client import OpAMPClient
2525
from opentelemetry._opamp.proto import opamp_pb2
2626

@@ -33,7 +33,7 @@
3333
def test_connection_remote_config_status_heartbeat_disconnection(caplog):
3434
caplog.set_level(logging.DEBUG, logger="opentelemetry._opamp.agent")
3535

36-
class E2ECallbacks(Callbacks):
36+
class E2ECallbacks(OpAMPCallbacks):
3737
def on_message(self, agent, client, message):
3838
logger = logging.getLogger(
3939
"opentelemetry._opamp.agent.opamp_handler"
@@ -104,7 +104,7 @@ def on_message(self, agent, client, message):
104104
def test_with_server_not_responding(caplog):
105105
caplog.set_level(logging.DEBUG, logger="opentelemetry._opamp.agent")
106106

107-
cb = mock.create_autospec(Callbacks, instance=True)
107+
cb = mock.create_autospec(OpAMPCallbacks, instance=True)
108108

109109
opamp_client = OpAMPClient(
110110
endpoint="https://localhost:4399/v1/opamp",

0 commit comments

Comments
 (0)