From b849e8f76985de51e3a34ebaf18f32da1d0d181c Mon Sep 17 00:00:00 2001 From: Yaarit Hatuka Date: Mon, 24 Nov 2025 04:07:09 +0000 Subject: [PATCH] mgr/callhome: turn service events off by default The flag `enable_service_events` is now set to False. Also, move the description field to the payload. Resolves: rhbz#2408379 Signed-off-by: Yaarit Hatuka (cherry picked from commit b8b31e9c1fc6820a756f417a274e90138f3f3689) --- src/pybind/mgr/call_home_agent/module.py | 8 ++++---- src/pybind/mgr/call_home_agent/report.py | 6 +++++- src/pybind/mgr/call_home_agent/report_service.py | 11 +++++++---- .../mgr/call_home_agent/report_status_alerts.py | 2 +- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/pybind/mgr/call_home_agent/module.py b/src/pybind/mgr/call_home_agent/module.py index 55e6a90c314..0f2cb9eb892 100644 --- a/src/pybind/mgr/call_home_agent/module.py +++ b/src/pybind/mgr/call_home_agent/module.py @@ -251,10 +251,10 @@ class CallHomeAgent(MgrModule): desc='Time interval in seconds to allow a cooldown between level 2 upload snap requests' ), Option( - name='disable_service_events', + name='enable_service_events', type='bool', default=False, - desc='Disable service events' + desc='Enable service events' ), ] @@ -376,7 +376,7 @@ class CallHomeAgent(MgrModule): setattr(self, opt['name'], self.get_module_option(opt['name'])) self.log.debug(f" {opt['name']} = {getattr(self, opt['name'])}") - self.proxies = {'http': proxy, 'https': proxy} if self.proxy else {} + self.proxies = {'http': self.proxy, 'https': self.proxy} if self.proxy else {} self.jwt_jti = self.get_jwt_jti() @@ -991,7 +991,7 @@ class CallHomeAgent(MgrModule): except Exception as e: return HandleCommandResult(retval=1, stderr=str(e)) else: - return HandleCommandResult(stdout=f'country code is set to {country_code}') + return HandleCommandResult() finally: self.refresh_options() # This will always run, no matter what. diff --git a/src/pybind/mgr/call_home_agent/report.py b/src/pybind/mgr/call_home_agent/report.py index 706c8e87d66..225d5a4d6e8 100644 --- a/src/pybind/mgr/call_home_agent/report.py +++ b/src/pybind/mgr/call_home_agent/report.py @@ -109,7 +109,11 @@ class Report: data=json.dumps(report), proxies=self.agent.proxies, timeout=60) - self.agent.log.debug(f"Report response: {resp.text}") # TODO: remove keys + try: + self.agent.log.debug(f"Report response: {json.dumps(self.agent._filter_report(resp.json()))}") + except: + self.agent.log.debug(f"Report response text: {resp.text}") + resp.raise_for_status() ch_response = resp.json() diff --git a/src/pybind/mgr/call_home_agent/report_service.py b/src/pybind/mgr/call_home_agent/report_service.py index fd29ecf5dcc..43e8d3b23d6 100644 --- a/src/pybind/mgr/call_home_agent/report_service.py +++ b/src/pybind/mgr/call_home_agent/report_service.py @@ -15,7 +15,7 @@ class ReportService(Report): event = EventService(self.agent).generate(report_times, self.alerts) self.add_event(event) self.agent.log.debug("Generated service event:") - self.agent.log.debug(json.dumps(self.data)) # TODO: remove keys from the output + self.agent.log.debug(json.dumps(self.agent._filter_report(self.data))) return self.data class EventService(EventGeneric): @@ -50,8 +50,10 @@ class EventService(EventGeneric): alert_subject = alert_name + ((':' + alert_instance) if alert_instance else '') alert_subject = alert_subject[:140] # Call home 'code' field is limited to 140 characters. - description = json.dumps(alerts_sorted, sort_keys = True, indent=4) - description = description[:10000] + # Use this in case of having body.description in addition to + # body.payload.description as the former has a 10K characters limitation. + # description = json.dumps(alerts_sorted, sort_keys = True, indent=4) + # description = description[:10000] now = time.time() @@ -71,7 +73,6 @@ class EventService(EventGeneric): "timestamp": int(now), # time in seconds "transid": int(now * 1000) # time in milliseconds }, - "description": description, # semi described, 10K character limit "object_instance_virtual_id": self.agent.ceph_cluster_id, "object_instance": self.agent.ceph_cluster_id, "object_type": "ceph", @@ -93,6 +94,8 @@ class EventService(EventGeneric): ############### "payload": { "ceph_versions": versions, + "description": alerts_sorted, # semi described, 10K character limit + "error_code": alert_subject, # the same as body.code above "software": { "diagnostic_provided": True, "ibm_ceph_version": "9.0.0" if self.agent.target_space == "prod" else "8.0.0" diff --git a/src/pybind/mgr/call_home_agent/report_status_alerts.py b/src/pybind/mgr/call_home_agent/report_status_alerts.py index 4413d671ae1..b22f2e15636 100644 --- a/src/pybind/mgr/call_home_agent/report_status_alerts.py +++ b/src/pybind/mgr/call_home_agent/report_status_alerts.py @@ -81,7 +81,7 @@ class EventStatusAlerts(EventGeneric): return f"{main_ts}+{tz}" def service_events(self, alerts: list) -> None: - if self.agent.disable_service_events: + if not self.agent.enable_service_events: return # Service Events (opening a support case) -- 2.47.3