only load worker plugins for the action

This commit is contained in:
Oliver Gorwits
2017-09-06 20:56:26 +01:00
parent 1f9740c0e2
commit 411918e3f8
2 changed files with 14 additions and 9 deletions

View File

@@ -7,10 +7,9 @@ use Module::Load ();
use Dancer ':syntax'; use Dancer ':syntax';
# load worker plugins for our workers # load worker plugins for our workers
# NOTE: this package is loaded for all actions whether backend or netdisco-do
sub load_worker_plugins { sub load_worker_plugins {
my $plugin_list = shift; my ($action, $plugin_list) = @_;
foreach my $plugin (@$plugin_list) { foreach my $plugin (@$plugin_list) {
$plugin =~ s/^X::/+App::NetdiscoX::Worker::Plugin::/; $plugin =~ s/^X::/+App::NetdiscoX::Worker::Plugin::/;
@@ -18,12 +17,17 @@ sub load_worker_plugins {
if $plugin !~ m/^\+/; if $plugin !~ m/^\+/;
$plugin =~ s/^\+//; $plugin =~ s/^\+//;
$ENV{PLUGIN_LOAD_DEBUG} && debug "loading Netdisco plugin $plugin"; next unless $plugin =~ m/::Plugin::${action}(?:::|$)/i;
eval { Module::Load::load $plugin };
debug "loading worker plugin $plugin";
Module::Load::load $plugin;
} }
} }
load_worker_plugins( setting('extra_worker_plugins') || [] ); sub import {
load_worker_plugins( setting('worker_plugins') || [] ); my ($class, $action) = @_;
load_worker_plugins( $action, setting('extra_worker_plugins') || [] );
load_worker_plugins( $action, setting('worker_plugins') || [] );
}
true; true;

View File

@@ -2,12 +2,11 @@ package App::Netdisco::Worker::Runner;
use Dancer qw/:moose :syntax/; use Dancer qw/:moose :syntax/;
use Dancer::Factory::Hook; use Dancer::Factory::Hook;
use App::Netdisco::Worker;
use aliased 'App::Netdisco::Worker::Status'; use aliased 'App::Netdisco::Worker::Status';
use Try::Tiny; use Try::Tiny;
use Moo::Role; use Moo::Role;
use Module::Load ();
use Scope::Guard 'guard'; use Scope::Guard 'guard';
use namespace::clean; use namespace::clean;
@@ -33,6 +32,9 @@ sub run {
unless ref $job eq 'App::Netdisco::Backend::Job'; unless ref $job eq 'App::Netdisco::Backend::Job';
$self->job($job); $self->job($job);
my $action = $job->action;
Module::Load::load 'App::Netdisco::Worker', $action;
my @newuserconf = (); my @newuserconf = ();
my @userconf = @{ setting('device_auth') || [] }; my @userconf = @{ setting('device_auth') || [] };
@@ -57,7 +59,6 @@ sub run {
my $guard = guard { set(device_auth => \@userconf) }; my $guard = guard { set(device_auth => \@userconf) };
set(device_auth => \@newuserconf); set(device_auth => \@newuserconf);
my $action = $job->action;
my @phase_hooks = grep { m/^nd2_${action}_/ } my @phase_hooks = grep { m/^nd2_${action}_/ }
@{ (setting('_nd2worker_hooks') || []) }; @{ (setting('_nd2worker_hooks') || []) };