diff --git a/lib/App/Netdisco/Worker/Loader.pm b/lib/App/Netdisco/Worker/Loader.pm index c9cf8208..7d76f43c 100644 --- a/lib/App/Netdisco/Worker/Loader.pm +++ b/lib/App/Netdisco/Worker/Loader.pm @@ -49,7 +49,9 @@ sub load_workers { and exists vars->{'workers'}->{'internal'}->{$phase}; my $internal = vars->{'workers'}->{'internal'}; - foreach my $namespace (keys %{ $internal->{$phase} }) { + # the namespace of an internal worker is actually the worker name so must + # be sorted in order to "preserve" the plugin load order + foreach my $namespace (sort keys %{ $internal->{$phase} }) { foreach my $priority (keys %{ $internal->{$phase}->{$namespace} }) { push @{ $workers->{$phase}->{'__internal__'}->{$priority} }, @{ $internal->{$phase}->{$namespace}->{$priority} }; diff --git a/lib/App/Netdisco/Worker/Plugin.pm b/lib/App/Netdisco/Worker/Plugin.pm index 64bab424..d9fb5895 100644 --- a/lib/App/Netdisco/Worker/Plugin.pm +++ b/lib/App/Netdisco/Worker/Plugin.pm @@ -108,7 +108,7 @@ register 'register_worker' => sub { push @{ vars->{'workers'}->{$workerconf->{action}} ->{$workerconf->{phase}} ->{$workerconf->{namespace}} - ->{$workerconf->{priority}} }, $worker; + ->{$workerconf->{priority}} }, { conf => $workerconf, go => $worker }; }; sub _find_matchaction {