From 232b064a92b1b3de5f58109f41ddc783df6ab842 Mon Sep 17 00:00:00 2001 From: Iliia Khaprov Date: Thu, 22 May 2025 10:21:32 +0200 Subject: [PATCH] Add CQ and QQ Observer CLI plugins from boot steps Do not hard code them, also preserve user-provided plugins list Type fix by @kura (cherry picked from commit 2d029649a2337d9221ae3837c1e0055a7a833398) # Conflicts: # deps/rabbit/src/rabbit_observer_cli.erl --- deps/rabbit/src/rabbit_observer_cli.erl | 16 ++++++++++++++++ .../src/rabbit_observer_cli_classic_queues.erl | 11 ++++++++++- .../src/rabbit_observer_cli_quorum_queues.erl | 11 ++++++++++- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/deps/rabbit/src/rabbit_observer_cli.erl b/deps/rabbit/src/rabbit_observer_cli.erl index 77c102d1f6e3..6ad651da3e43 100644 --- a/deps/rabbit/src/rabbit_observer_cli.erl +++ b/deps/rabbit/src/rabbit_observer_cli.erl @@ -10,7 +10,23 @@ -export([init/0]). init() -> +<<<<<<< HEAD application:set_env(observer_cli, plugins, [ rabbit_observer_cli_classic_queues:plugin_info(), rabbit_observer_cli_quorum_queues:plugin_info() ]). +======= + %% prepare observer_cli.plugins for add_plugin/1 + application:set_env(observer_cli, plugins, application:get_env(observer_cli, plugins, [])). + +%% must be executed after observer_cli boot_step +add_plugin(PluginInfo) -> + case application:get_env(observer_cli, plugins, undefined) of + undefined -> %% shouldn't be there, die + exit({rabbit_observer_cli_step_not_there, "Can't add observer_cli plugin, required boot_step wasn't executed"}); + Plugins when is_list(Plugins) -> + application:set_env(observer_cli, plugins, Plugins ++ [PluginInfo]); + _ -> + exit({rabbit_observer_cli_plugins_error, "Can't add observer_cli plugin, existing entry is not a list"}) + end. +>>>>>>> 2d029649a (Add CQ and QQ Observer CLI plugins from boot steps) diff --git a/deps/rabbit/src/rabbit_observer_cli_classic_queues.erl b/deps/rabbit/src/rabbit_observer_cli_classic_queues.erl index 985dfab9a12a..6db3393de562 100644 --- a/deps/rabbit/src/rabbit_observer_cli_classic_queues.erl +++ b/deps/rabbit/src/rabbit_observer_cli_classic_queues.erl @@ -7,11 +7,20 @@ -module(rabbit_observer_cli_classic_queues). --export([plugin_info/0]). +-export([add_plugin/0, plugin_info/0]). -export([attributes/1, sheet_header/0, sheet_body/1]). -include_lib("rabbit_common/include/rabbit.hrl"). +-rabbit_boot_step({?MODULE, + [{description, "Classic queues observer_cli plugin"}, + {mfa, {?MODULE, add_plugin, []}}, + {requires, [rabbit_observer_cli]}, + {enables, routing_ready}]}). + +add_plugin() -> + rabbit_observer_cli:add_plugin(plugin_info()). + plugin_info() -> #{ module => rabbit_observer_cli_classic_queues, diff --git a/deps/rabbit/src/rabbit_observer_cli_quorum_queues.erl b/deps/rabbit/src/rabbit_observer_cli_quorum_queues.erl index 1fe8efd9faf6..1c9b72a0cea1 100644 --- a/deps/rabbit/src/rabbit_observer_cli_quorum_queues.erl +++ b/deps/rabbit/src/rabbit_observer_cli_quorum_queues.erl @@ -7,11 +7,20 @@ -module(rabbit_observer_cli_quorum_queues). --export([plugin_info/0]). +-export([add_plugin/0, plugin_info/0]). -export([attributes/1, sheet_header/0, sheet_body/1]). -include_lib("rabbit_common/include/rabbit.hrl"). +-rabbit_boot_step({?MODULE, + [{description, "Quorum queues observer_cli plugin"}, + {mfa, {?MODULE, add_plugin, []}}, + {requires, [rabbit_observer_cli]}, + {enables, routing_ready}]}). + +add_plugin() -> + rabbit_observer_cli:add_plugin(plugin_info()). + plugin_info() -> #{ module => rabbit_observer_cli_quorum_queues,