Rex
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Rex/TaskList/Base.pm view on Meta::CPAN
push @server, sub {
if ( !Rex::Group->is_group($group) ) {
Rex::Logger::info( "No group $group defined.", "error" );
exit 1;
}
return map {
if ( ref $_ && $_->isa("Rex::Group::Entry::Server") ) {
$_->get_servers;
}
else {
Rex::Group::Entry::Server->new( name => $_ )->get_servers;
}
} Rex::Group->get_group($group);
};
}
}
}
else {
for my $entry (@_) {
push(
@server,
(
ref $entry && $entry->isa("Rex::Group::Entry::Server")
? $entry
: Rex::Group::Entry::Server->new( name => $entry )
)
);
}
}
}
}
my %task_hash = (
func => $func,
server => [@server],
desc => $desc,
no_ssh => ( $options->{"no_ssh"} ? 1 : 0 ),
hidden => ( $options->{"dont_register"} ? 1 : 0 ),
exit_on_connect_fail => (
exists $options->{exit_on_connect_fail}
? $options->{exit_on_connect_fail}
: 1
),
before => [],
after => [],
around => [],
after_task_finished => [],
before_task_start => [],
name => $task_name,
executor => Rex::Interface::Executor->create,
connection_type => Rex::Config->get_connection_type,
);
if ( $self->{DEFAULT_AUTH} ) {
$task_hash{auth} = {
user => Rex::Config->get_user || undef,
password => Rex::Config->get_password || undef,
private_key => Rex::Config->get_private_key || undef,
public_key => Rex::Config->get_public_key || undef,
sudo_password => Rex::Config->get_sudo_password || undef,
};
}
if ( exists $Rex::Commands::auth_late{$task_name} ) {
$task_hash{auth} = $Rex::Commands::auth_late{$task_name};
}
$self->{tasks}->{$task_name} = Rex::Task->new(%task_hash);
return $self->{tasks}->{$task_name};
}
sub get_tasks {
my $self = shift;
return grep { $self->{tasks}->{$_}->hidden() == 0 }
sort { $a cmp $b } keys %{ $self->{tasks} };
}
sub get_all_tasks {
my $self = shift;
my $regexp = shift;
return grep { $_ =~ $regexp }
keys %{ $self->{tasks} };
}
sub get_tasks_for {
my $self = shift;
my $host = shift;
my @tasks;
for my $task_name ( keys %{ $self->{tasks} } ) {
my @servers = @{ $self->{tasks}->{$task_name}->server() };
if ( ( grep { /^$host$/ } @servers ) || $#servers == -1 ) {
push @tasks, $task_name;
}
}
my @ret = sort { $a cmp $b } @tasks;
return @ret;
}
sub get_task {
my ( $self, $task ) = @_;
return $self->{tasks}->{$task};
}
sub clear_tasks {
my $self = shift;
$self->{tasks} = {};
}
sub get_desc {
my $self = shift;
my $task = shift;
return $self->{tasks}->{$task}->desc();
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.396 second using v1.00-cache-2.02-grep-82fe00e-cpan-1925d2aa809 )