Rex-WebUI

 view release on metacpan or  search on metacpan

lib/Rex/WebUI/Model/RexInterface.pm  view on Meta::CPAN

		}
	}

	# expand server list into hashrefs, adding info from db if available
	# TODO: add db interface
	foreach my $server (@$servers) {

		$server = { name => $server};
	}

	return $servers;
}

sub load_rexfile
{
	my ($self, $rexfile) = @_;

  	$rexfile = $self->{rexfile} || "SampleRexfile" unless $rexfile;


	$Rex::TaskList::task_list = {};
	$self->{tasks} = undef;
	delete $self->{tasks};

	$self->{tasklist} = undef;
	delete $self->{tasklist};

	# Is rexfile already loaded?
	if (exists $self->{rexfiles}->{$rexfile}) {

		warn "Rexfile already loaded: $rexfile, use tasklist from cache";
		$Rex::TaskList::task_list = $self->{rexfiles}->{$rexfile};

		$self->{rexfile} = $rexfile;

		return 1;
	}

	# workaround namespace issues - Rex::CLI is handled already for this issue
	if (defined _hacky_do_rexfile($rexfile)) {

		warn "Loaded Rexfile: $rexfile";

		$self->{rexfile} = $rexfile;

		$self->{rexfiles}->{$rexfile} = $Rex::TaskList::task_list;

		return 1;
	}
	else {

		warn "Error loading Rexfile: $rexfile - $@";

		return $self->{rexfile} = undef;
	}
}

sub _hacky_do_rexfile
{
	my $filename = shift;
	my $rexfile = eval { local(@ARGV, $/) = ($filename); <>; };
	eval "package Rex::CLI; use Rex -base; $rexfile";

	if($@) {
		die("Error loading Rexfile: $@");
	}

	return $rexfile;
}

# I'm getting a weird conflict with Rex::Commands::run_task so I'm renaming this to something more obscure
sub do_run_task
{
	my ($self, $task_name, $server_name, $temp_logfile) = @_;

	Rex::Config->set_log_filename($temp_logfile) if $temp_logfile;

	my $result;

	try {
		$result = Rex::Commands::run_task("$task_name", on => $server_name);

		Rex::Logger::info("DONE");

		return $result;
	}
	catch {
		Rex::Logger::info("Task Failed: $_", 'error');
		return undef;
	};
}

sub options
{
	my ($self, $opts) = @_;

	$Rex::Logger::debug = $opts->{debug} if exists $opts->{debug};
	$Rex::Cache::USE    = $opts->{cache} if exists $opts->{cache};
}


1;



( run in 0.778 second using v1.01-cache-2.11-cpan-ceb78f64989 )