ClusterHelper.RoleStore behaviour (ClusterHelper v1.0.0)

Copy Markdown View Source

Port (behaviour) for role data storage.

Implementations provide persistent storage for role↔node mappings and node membership tracking per scope.

The default implementation is ClusterHelper.ETSStore.

Summary

Callbacks

Returns all nodes that have at least one role in the scope.

Removes all role entries for a node in a scope.

Removes a single role from a node in a scope.

Returns all roles for the local node in the given scope.

Returns all nodes that have the given role in the scope.

Returns all roles for the given node in the scope.

Initialises the store (creates tables, etc.).

Inserts roles for a node in a scope.

Types

node_name()

@type node_name() :: node()

role()

@type role() :: term()

scope()

@type scope() :: atom()

Callbacks

all_nodes(scope)

@callback all_nodes(scope()) :: [node_name()]

Returns all nodes that have at least one role in the scope.

delete_node(node_name, scope)

@callback delete_node(node_name(), scope()) :: :ok

Removes all role entries for a node in a scope.

delete_role(node_name, scope, role)

@callback delete_role(node_name(), scope(), role()) :: :ok

Removes a single role from a node in a scope.

get_my_roles(scope)

@callback get_my_roles(scope()) :: [role()]

Returns all roles for the local node in the given scope.

get_nodes(role, scope)

@callback get_nodes(role(), scope()) :: [node_name()]

Returns all nodes that have the given role in the scope.

get_roles(node_name, scope)

@callback get_roles(node_name(), scope()) :: [role()]

Returns all roles for the given node in the scope.

init()

@callback init() :: :ok

Initialises the store (creates tables, etc.).

insert_roles(node_name, scope, list)

@callback insert_roles(node_name(), scope(), [role()]) :: :ok

Inserts roles for a node in a scope.