From ccdeca600cd3d8576dc999d458179b834dd6380e Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Thu, 24 Apr 2014 21:33:01 +0100 Subject: [PATCH] remove job types from netdisco-daemon-fg --- Netdisco/bin/netdisco-daemon-fg | 41 ++++++++++++++++----------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/Netdisco/bin/netdisco-daemon-fg b/Netdisco/bin/netdisco-daemon-fg index ccb18a94..8b3e9ec9 100755 --- a/Netdisco/bin/netdisco-daemon-fg +++ b/Netdisco/bin/netdisco-daemon-fg @@ -18,12 +18,12 @@ use App::Netdisco; use Dancer qw/:moose :script/; warning sprintf "App::Netdisco %s backend", ($App::Netdisco::VERSION || 'HEAD'); -# callbacks and local job queue management +# local job queue management use App::Netdisco::Daemon::LocalQueue ':all'; # needed to quench AF_INET6 symbol errors use NetAddr::IP::Lite ':lower'; - +use List::Util 'sum'; use Role::Tiny::With; use MCE::Signal '-setpgrp'; use MCE; @@ -46,42 +46,41 @@ sub build_tasks_list { # NB MCE does not like max_workers => 0 my $tasks = []; - setting('workers')->{pollers} = 2 - if !defined setting('workers')->{pollers}; - setting('workers')->{interactives} = 2 - if !defined setting('workers')->{interactives}; - push @$tasks, { max_workers => 1, user_begin => worker_factory('Manager'), - } if setting('workers')->{pollers} or setting('workers')->{interactives}; + } if num_workers() > 0; push @$tasks, { max_workers => 1, user_begin => worker_factory('Scheduler'), } if setting('housekeeping'); - push @$tasks, { - max_workers => setting('workers')->{pollers}, - user_begin => worker_factory('Poller'), - } if setting('workers')->{pollers}; + my @logmsg = (); + foreach my $key (keys %{setting('job_type_keys')}) { + my $val = setting('job_type_keys')->{$key}; - push @$tasks, { - max_workers => setting('workers')->{interactives}, - user_begin => worker_factory('Interactive'), - } if setting('workers')->{interactives}; + setting('workers')->{$val} = 2 + if !defined setting('workers')->{$val}; - info sprintf "MCE will load: %s Manager, %s Scheduler, %s Poller, %s Interactive", - ((setting('workers')->{pollers} or setting('workers')->{interactives}) ? 1 : 0), + push @logmsg, setting('workers')->{$val} ." $key"; + push @$tasks, { + max_workers => setting('workers')->{$val}, + user_begin => worker_factory($key), + } if setting('workers')->{$val}; + } + + info sprintf "MCE will load: %s Manager, %s Scheduler, %s", + (num_workers() ? 1 : 0), (setting('housekeeping') ? 1 : 0), - (setting('workers')->{pollers} || 0), - (setting('workers')->{interactives} || 0); + (join ', ', @logmsg); return $tasks; } sub num_workers { - return (setting('workers')->{pollers} + setting('workers')->{interactives}); + return sum( 0, map { setting('workers')->{$_} } + values %{setting('job_type_keys')} ); } sub worker_factory {