remove job types from netdisco-daemon-fg

This commit is contained in:
Oliver Gorwits
2014-04-24 21:33:01 +01:00
parent 349bddf609
commit ccdeca600c

View File

@@ -18,12 +18,12 @@ use App::Netdisco;
use Dancer qw/:moose :script/; use Dancer qw/:moose :script/;
warning sprintf "App::Netdisco %s backend", ($App::Netdisco::VERSION || 'HEAD'); 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'; use App::Netdisco::Daemon::LocalQueue ':all';
# needed to quench AF_INET6 symbol errors # needed to quench AF_INET6 symbol errors
use NetAddr::IP::Lite ':lower'; use NetAddr::IP::Lite ':lower';
use List::Util 'sum';
use Role::Tiny::With; use Role::Tiny::With;
use MCE::Signal '-setpgrp'; use MCE::Signal '-setpgrp';
use MCE; use MCE;
@@ -46,42 +46,41 @@ sub build_tasks_list {
# NB MCE does not like max_workers => 0 # NB MCE does not like max_workers => 0
my $tasks = []; my $tasks = [];
setting('workers')->{pollers} = 2
if !defined setting('workers')->{pollers};
setting('workers')->{interactives} = 2
if !defined setting('workers')->{interactives};
push @$tasks, { push @$tasks, {
max_workers => 1, max_workers => 1,
user_begin => worker_factory('Manager'), user_begin => worker_factory('Manager'),
} if setting('workers')->{pollers} or setting('workers')->{interactives}; } if num_workers() > 0;
push @$tasks, { push @$tasks, {
max_workers => 1, max_workers => 1,
user_begin => worker_factory('Scheduler'), user_begin => worker_factory('Scheduler'),
} if setting('housekeeping'); } if setting('housekeeping');
push @$tasks, { my @logmsg = ();
max_workers => setting('workers')->{pollers}, foreach my $key (keys %{setting('job_type_keys')}) {
user_begin => worker_factory('Poller'), my $val = setting('job_type_keys')->{$key};
} if setting('workers')->{pollers};
push @$tasks, { setting('workers')->{$val} = 2
max_workers => setting('workers')->{interactives}, if !defined setting('workers')->{$val};
user_begin => worker_factory('Interactive'),
} if setting('workers')->{interactives};
info sprintf "MCE will load: %s Manager, %s Scheduler, %s Poller, %s Interactive", push @logmsg, setting('workers')->{$val} ." $key";
((setting('workers')->{pollers} or setting('workers')->{interactives}) ? 1 : 0), 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('housekeeping') ? 1 : 0),
(setting('workers')->{pollers} || 0), (join ', ', @logmsg);
(setting('workers')->{interactives} || 0);
return $tasks; return $tasks;
} }
sub num_workers { sub num_workers {
return (setting('workers')->{pollers} + setting('workers')->{interactives}); return sum( 0, map { setting('workers')->{$_} }
values %{setting('job_type_keys')} );
} }
sub worker_factory { sub worker_factory {