support action::namespace for netdisco-do

This commit is contained in:
Oliver Gorwits
2017-11-23 22:16:50 +00:00
parent 0bb15f36b9
commit 3db242cbe8
3 changed files with 19 additions and 2 deletions

View File

@@ -109,7 +109,7 @@ my $exitstatus = 0;
foreach my $host (@hostlist) {
my $dev = $host ? get_device($host->addr) : undef;
if ($dev and not (blessed $dev and $dev->in_storage) and $action ne 'discover') {
if ($dev and not (blessed $dev and $dev->in_storage) and $action !~ m/^discover/) {
info sprintf "%s: error - Don't know device: %s", $action, $host->addr;
next;
}
@@ -139,7 +139,7 @@ foreach my $host (@hostlist) {
$job->log("error running job: $_");
};
if ($job->log eq 'failed to report from any worker!') {
if ($job->log eq 'failed to report from any worker!' and not $job->only_namespace) {
pod2usage(
-msg => (sprintf 'error: %s is not a valid action', $action),
-verbose => 2,

View File

@@ -14,6 +14,7 @@ foreach my $slot (qw/
device
port
action
only_namespace
subaction
status
username
@@ -36,6 +37,15 @@ has '_statuslist' => (
default => sub { [] },
);
sub BUILD {
my ($job, $args) = @_;
if ($job->action =~ m/^(\w+)::(\w+)$/i) {
$job->action($1);
$job->only_namespace($2);
}
}
=head1 METHODS
=head2 summary

View File

@@ -36,6 +36,13 @@ register 'register_worker' => sub {
# check to see if this namespace has already passed at higher priority
return if $job->namespace_passed($workerconf);
# support part-actions via action::namespace
if ($job->only_namespace and $workerconf->{phase} ne 'check') {
return unless $workerconf->{namespace} eq lc( $job->only_namespace )
or (($workerconf->{phase} eq 'early')
and ($job->device and not $job->device->in_storage));
}
my @newuserconf = ();
my @userconf = @{ setting('device_auth') || [] };