==========
Collective
==========

__copyright__ = 'this file is in the public domain'

The collective is code to query webservers of other bots. On enable the 
collective will fetch a list of nodes from the boot server.

Enable collective
~~~~~~~~~~~~~~~~~
::

  < dunk> !coll-enable
  < gozerbot> collective enabled

Disable collective
~~~~~~~~~~~~~~~~~~
::

  < dunk> !coll-disable
  < gozerbot> collective disabled

Boot the collective
~~~~~~~~~~~~~~~~~~~

This wil copy the collective nodes list from a given server:port combo.
::

  < dunk> !coll-boot r8.cg.nu:8088
  < gozerbot> collective at 11 nodes

Copy all nodes list from all known nodes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::

  < dunk> !coll-fullboot
  < gozerbot> 11 nodes checked .. current 13 nodes in list

See what nodes are active
~~~~~~~~~~~~~~~~~~~~~~~~~
::

  < dunk> !coll-status
  < gozerbot> 5 active nodes:  ivitor .. hzt .. qqa .. r8 .. Noa

Do a command on all the other collective bots
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::

  < dunk> !coll test?
  < gozerbot> 5 out of 10 (0.299097061157) -||hzt||- no infoitems known for
              test -||Noa||- testing... 1..2...3 .. soundcheck .. another test
              -||r8||- klaas .. mekker -||ivitor||- doetiehetofdoetiehetniet?!
              -||qqa||- blaet .. toet .. mekker2 .. iets .. b .. zo moet dat ..
              mekker .. blaat

Do a command on a specific collective node
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::

  < dunk> !coll-exec r8 version
  < gozerbot> (0.129984855652) -||r8||- GOZERBOT 0.5 HG revision 712

Add a node to the local collective list
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::

  < dunk> !coll-addnode local localhost:8888
  < gozerbot> local added

Remove a node from local collective list
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::

  < dunk> !coll-remove local
  < gozerbot> local removed
