|
34 | 34 | -export([ |
35 | 35 | get_config_version/1, |
36 | 36 | get_config_members/1, |
| 37 | + get_config_full_members/1, |
| 38 | + get_config_witness_members/1, |
37 | 39 | get_config_witnesses/1, |
38 | 40 | is_data_replica/2, |
39 | 41 | is_witness/2 |
@@ -296,6 +298,19 @@ get_config_members(#{version := 1, membership := Members}) -> |
296 | 298 | get_config_members(_Config) -> |
297 | 299 | []. |
298 | 300 |
|
| 301 | +-spec get_config_full_members(Config :: config() | config_all()) -> [#raft_identity{}]. |
| 302 | +get_config_full_members(#{version := 1, membership := Members, witness := Witnesses}) -> |
| 303 | + [#raft_identity{name = Name, node = Node} || {Name, Node} <- Members -- Witnesses]; |
| 304 | +get_config_full_members(Config) -> |
| 305 | + get_config_members(Config). |
| 306 | + |
| 307 | +-spec get_config_witness_members(Config :: config() | config_all()) -> [#raft_identity{}]. |
| 308 | +get_config_witness_members(#{version := 1, membership := Members, witness := Witnesses}) -> |
| 309 | + MembersMap = maps:from_keys(Members, []), |
| 310 | + [#raft_identity{name = Name, node = Node} || {Name, Node} = Witness <- Witnesses, maps:is_key(Witness, MembersMap)]; |
| 311 | +get_config_witness_members(_Config) -> |
| 312 | + []. |
| 313 | + |
299 | 314 | -spec get_config_witnesses(Config :: config() | config_all()) -> [#raft_identity{}]. |
300 | 315 | get_config_witnesses(#{version := 1, witness := Witnesses}) -> |
301 | 316 | [#raft_identity{name = Name, node = Node} || {Name, Node} <- Witnesses]; |
@@ -363,7 +378,9 @@ normalize_config(#{version := 1} = Config) -> |
363 | 378 | normalize_config(#{version := Version}) -> |
364 | 379 | % All valid configurations will contain at least their own version; however, |
365 | 380 | % we do not know how to handle configurations with newer versions. |
366 | | - error({unsupported_version, Version}). |
| 381 | + error({unsupported_version, Version}); |
| 382 | +normalize_config(#{}) -> |
| 383 | + error(no_version). |
367 | 384 |
|
368 | 385 | %%------------------------------------------------------------------------------ |
369 | 386 | %% RAFT Server - Public APIs |
|
0 commit comments