2121% %
2222
2323-export ([discover_cluster_nodes /0 , backend /0 , node_type /0 ,
24- normalize /1 , format_discovered_nodes /1 , log_configured_backend /0 ]).
24+ normalize /1 , format_discovered_nodes /1 , log_configured_backend /0 ,
25+ register /0 , unregister /0 , maybe_register /0 , maybe_unregister /0 ]).
2526-export ([append_node_prefix /1 , node_prefix /0 ]).
2627
2728-define (DEFAULT_BACKEND , rabbit_peer_discovery_classic_config ).
@@ -72,6 +73,64 @@ discover_cluster_nodes() ->
7273 normalize (Backend :list_nodes ()).
7374
7475
76+ -spec maybe_register () -> ok .
77+
78+ maybe_register () ->
79+ Backend = backend (),
80+ case Backend :supports_registration () of
81+ true ->
82+ register ();
83+ false ->
84+ rabbit_log :info (" Peer discovery backend ~s does not support registration, skipping registration." , [Backend ]),
85+ ok
86+ end .
87+
88+
89+ -spec maybe_unregister () -> ok .
90+
91+ maybe_unregister () ->
92+ Backend = backend (),
93+ case Backend :supports_registration () of
94+ true ->
95+ unregister ();
96+ false ->
97+ rabbit_log :info (" Peer discovery backend ~s does not support registration, skipping unregistration." , [Backend ]),
98+ ok
99+ end .
100+
101+
102+ -spec register () -> ok .
103+
104+ register () ->
105+ Backend = backend (),
106+ rabbit_log :info (" Will register with peer discovery backend ~s " , [Backend ]),
107+ case Backend :register () of
108+ ok -> ok ;
109+ {error , Error } ->
110+ rabbit_log :error (" Failed to register with peer discovery backend ~s : ~p " ,
111+ [Backend , Error ]),
112+ ok
113+ end .
114+
115+
116+ -spec unregister () -> ok .
117+
118+ unregister () ->
119+ Backend = backend (),
120+ rabbit_log :info (" Will unregister with peer discovery backend ~s " , [Backend ]),
121+ case Backend :unregister () of
122+ ok -> ok ;
123+ {error , Error } ->
124+ rabbit_log :error (" Failed to unregister with peer discovery backend ~s : ~p " ,
125+ [Backend , Error ]),
126+ ok
127+ end .
128+
129+
130+ % %
131+ % % Implementation
132+ % %
133+
75134-spec normalize (Nodes :: list () |
76135 {Nodes :: list (), NodeType :: rabbit_types :node_type ()} |
77136 {ok , Nodes :: list ()} |
@@ -90,7 +149,6 @@ normalize({ok, {Nodes, NodeType}}) when is_list(Nodes) andalso is_atom(NodeType)
90149normalize ({error , Reason }) ->
91150 {error , Reason }.
92151
93-
94152-spec format_discovered_nodes (Nodes :: list ()) -> string ().
95153
96154format_discovered_nodes (Nodes ) ->
0 commit comments