# Module admin

- Description
- Data Types
- Function Index
- Function Details

Aministrative helper functions (mostly for debugging).

Copyright © 2008-2015 Zuse Institute Berlin

Version: $Id$

Authors: Thorsten Schuett (`schuett@zib.de`).

## Description

Aministrative helper functions (mostly for debugging)

## Data Types

### check_ring_deep_error()

    check_ring_deep_error() =
        {error,
         'in_node:',
         Node :: node:node_type(),
         'predList:',
         Preds :: nodelist:non_empty_snodelist(),
         'succList:',
         Succs :: nodelist:non_empty_snodelist(),
         'nodes:',
         Nodes :: nodelist:non_empty_snodelist(),
         'UnknownPreds:',
         UnknownPreds :: nodelist:snodelist(),
         'UnknownSuccs:',
         UnknownSuccs :: nodelist:snodelist()}

### erlang_timestamp()

    erlang_timestamp() =
        {MegaSecs :: non_neg_integer(),
         Secs :: 0..999999,
         MicroSecs :: 0..999999}

## Function Index

add_node/1 |
add_node_at_id/1 | add new Scalaris nodes on the local node.
add_nodes/1 |
add_nodes_at_ids/1 |
add_remaining_symmetric_nodes/0 | if you started a single firstnode.sh you can add the remaining symmetric r-1 nodes in the local VM, for example to interactively run a unittest scenario step by step.
check_leases/0 |
check_leases/1 |
check_ring/0 | Contact mgmt server and check that each node's successor and predecessor are correct.
check_ring_deep/0 | Contact mgmt server and check that each node's successor and predecessor lists are correct.
del_node/2 | Delete a single node.
del_nodes/2 | Deletes Scalaris nodes from the current VM.
del_nodes_by_name/2 |
diff_dump/2 |
get_dht_node_specs/0 |
get_dump/0 | returns communications information.
get_dump_bw/0 | returns communications information.
nodes/0 | contact mgmt server and list the known ip addresses.
number_of_nodes/0 |
print_ages/0 |
start/0 |
start_link/0 |
wait_for_stable_ring/1 |

## Function Details

### add_node_at_id/1

    add_node_at_id(Id :: rt_chord:key()) ->
                      pid_groups:groupname() | {error, term()}

add new Scalaris nodes on the local node

### add_node/1

    add_node(Options :: [tuple()]) ->
                pid_groups:groupname() | {error, term()}

### add_nodes/1

    add_nodes(Count :: non_neg_integer()) ->
                 {[pid_groups:groupname()], [{error, term()}]}

### add_nodes_at_ids/1

    add_nodes_at_ids(Keys :: [rt_chord:key()]) ->
                        {[pid_groups:groupname()], [{error, term()}]}

### add_remaining_symmetric_nodes/0

    add_remaining_symmetric_nodes() ->
                                     {[pid_groups:groupname()],
                                      [{error, term()}]}

if you started a single firstnode.sh you can add the remaining symmetric r-1 nodes in the local VM, for example to interactively run a unittest scenario step by step.

### get_dht_node_specs/0

    get_dht_node_specs() ->
                          [{Id :: term() | undefined,
                            Child :: pid() | undefined,
                            Type :: worker | supervisor,
                            Modules :: [module()] | dynamic}]

### del_nodes/2

    del_nodes(Count :: non_neg_integer(), Graceful :: boolean()) ->
                 Successful :: [pid_groups:groupname()]

Deletes Scalaris nodes from the current VM.

### del_nodes_by_name/2

    del_nodes_by_name(Names :: [pid_groups:groupname()],
                      Graceful :: boolean()) ->
                         {Successful :: [pid_groups:groupname()],
                          NotFound :: [pid_groups:groupname()]}

### del_node/2

    del_node(X1 ::
                 {Id :: term() | undefined,
                  Child :: pid() | undefined,
                  Type :: worker | supervisor,
                  Modules :: [module()] | dynamic},
             Graceful :: boolean()) ->
                ok | {error, not_found | no_partner_found}

Delete a single node.

### wait_for_stable_ring/1

    wait_for_stable_ring(NrOfNodes :: non_neg_integer()) -> ok

### check_ring/0

    check_ring() -> {error, string()} | ok

Contact mgmt server and check that each node's successor and predecessor are correct.

### check_ring_deep/0

    check_ring_deep() -> ok | check_ring_deep_error()

Contact mgmt server and check that each node's successor and predecessor lists are correct.

### check_leases/0

    check_leases() -> boolean()

### check_leases/1

    check_leases(TargetSize :: pos_integer()) -> boolean()

### number_of_nodes/0

    number_of_nodes() -> non_neg_integer() | timeout

### get_dump/0

    get_dump() ->
                {Received :: comm_logger:stat_tree(),
                 Sent :: comm_logger:stat_tree(),
                 erlang_timestamp()}

returns communications information. the comm-layer logs for each message-tag how many message were sent and how large were these messages in total. get_dump/0 returns a map from message-tag to message-count and message-size and a timestamp when the measurement was started.

### get_dump_bw/0

    get_dump_bw() ->
                   {Received :: [{atom(), float(), float()}],
                    Sent :: [{atom(), float(), float()}]}

returns communications information. similar to get_dump/0 it returns message statistics per message-tag, but it scales all values by the elapsed time. so it returns messages per second and bytes per second for each message-tag

### diff_dump/2

    diff_dump(Before :: comm_logger:stat_tree(),
              After :: comm_logger:stat_tree()) ->
                 [{Tag :: atom(),
                   Size :: integer(),
                   Count :: integer()}]

### start_link/0

    start_link() -> {ok, pid()}

### start/0

    start() -> ok

### nodes/0

    nodes() -> list()

contact mgmt server and list the known ip addresses

### print_ages/0

    print_ages() -> ok

Generated by EDoc, Feb 29 2016, 16:12:16.