Merge remote-tracking branch 'origin/topic/jsiwek/reorg-followup'

This commit is contained in:
Seth Hall 2011-08-25 16:44:31 -04:00
commit fc5f22cb5d
234 changed files with 295 additions and 104 deletions

View file

@ -1,7 +1,7 @@
# Load the core cluster support.
@load ./main
@if ( Cluster::node != "" )
@if ( Cluster::is_enabled() )
# Give the node being started up it's peer name.
redef peer_description = Cluster::node;
@ -26,17 +26,17 @@ redef peer_description = Cluster::node;
## Set the port that this node is supposed to listen on.
redef Communication::listen_port_clear = Cluster::nodes[Cluster::node]$p;
@if ( Cluster::nodes[Cluster::node]$node_type == Cluster::MANAGER )
@if ( Cluster::local_node_type() == Cluster::MANAGER )
@load ./nodes/manager
@endif
@if ( Cluster::nodes[Cluster::node]$node_type == Cluster::PROXY )
@if ( Cluster::local_node_type() == Cluster::PROXY )
@load ./nodes/proxy
@endif
@if ( Cluster::nodes[Cluster::node]$node_type == Cluster::WORKER )
@if ( Cluster::local_node_type() == Cluster::WORKER )
@load ./nodes/worker
@endif
@endif
@endif
@endif

View file

@ -1,3 +1,4 @@
@load base/frameworks/control
module Cluster;
@ -9,6 +10,7 @@ export {
} &log;
type NodeType: enum {
NONE,
CONTROL,
MANAGER,
PROXY,
@ -53,8 +55,8 @@ export {
## This function can be called at any time to determine what type of
## cluster node the current Bro instance is going to be acting as.
## :bro:id:`is_enabled` should be called first to find out if this is
## actually going to be a cluster node.
## If :bro:id:`Cluster::is_enabled` returns false, then
## :bro:enum:`Cluster::NONE` is returned.
global local_node_type: function(): NodeType;
## This gives the value for the number of workers currently connected to,
@ -80,15 +82,15 @@ function is_enabled(): bool
function local_node_type(): NodeType
{
return nodes[node]$node_type;
return is_enabled() ? nodes[node]$node_type : NONE;
}
event remote_connection_handshake_done(p: event_peer)
{
if ( nodes[p$descr]$node_type == WORKER )
++worker_count;
}
event remote_connection_closed(p: event_peer)
{
if ( nodes[p$descr]$node_type == WORKER )
@ -100,10 +102,9 @@ event bro_init() &priority=5
# If a node is given, but it's an unknown name we need to fail.
if ( node != "" && node !in nodes )
{
local msg = "You didn't supply a valid node in the Cluster::nodes configuration.";
event reporter_error(current_time(), msg, "");
Reporter::error(fmt("'%s' is not a valid node in the Cluster::nodes configuration", node));
terminate();
}
Log::create_stream(CLUSTER, [$columns=Info]);
}
}

View file

@ -8,6 +8,8 @@
##! This is where the cluster manager sets it's specific settings for other
##! frameworks and in the core.
@load base/frameworks/notice
@prefixes += cluster-manager
# Load the script for local site configuration for the manager node.

View file

@ -1,3 +1,4 @@
@load base/frameworks/notice
@prefixes += cluster-worker

View file

@ -1,5 +1,7 @@
@load ./main
@load base/frameworks/communication/main
@load base/frameworks/communication
@if ( Cluster::node in Cluster::nodes )
module Cluster;
@ -79,3 +81,5 @@ event bro_init() &priority=9
}
}
}
@endif